面试真题 | 蔚来嵌入式一二三面面经

@[toc]

一面

static作用,局部static和全局static区别

在C或C++编程语言中,static关键字有几个不同的作用,具体取决于它被使用的环境。以下是static的一些常见用法和它们的区别:

  1. 局部静态变量

    • static关键字用于一个局部变量(通常是函数内的变量),它改变了该变量的存储期为整个程序的生命周期,而不是函数调用的局部作用域。这意味着变量在函数调用结束后不会消失,其值会保留到下一次函数调用。
    • 局部静态变量在首次创建时会被初始化,并且只会初始化一次。
  2. 全局静态变量

    • 全局静态变量是指在函数外部定义的静态变量。这种变量的生命周期同样是整个程序的运行期,但与局部静态变量不同,全局静态变量的作用域仅限于定义它的文件内部。也就是说,它们在其他文件中是不可见的,具有内部链接。
    • 这可以用于模块化编程,防止不同模块间的全局变量名冲突。
  3. 静态函数

    • static关键字用于函数定义时,它限制了该函数的作用域,使其只能在定义它的文件内部被调用。这同样有助于避免不同文件中的函数名冲突,并且有助于模块化设计。

总结区别:

  • 作用域:局部静态变量在函数内部,全局静态变量在文件内部。
  • 生命周期:两者都是静态存储期,即整个程序运行期间。
  • 初始化:局部静态变量和全局静态变量都只会被初始化一次。
  • 可见性:局部静态变量仅在函数内部可见,全局静态变量仅在定义它的文件内部可见。

面试官可能会询问这个问题来评估你对C/C++中变量和函数作用域、生命周期以及链接的理解。

TCP三次握手

Linux虚拟内存

想象一下,我们的计算机内存(RAM)就像是一个书架,而书架上的空间是有限的。但是,你有很多书(程序和数据)需要存放。虚拟内存就像是你家里的其他空间,比如地板、桌子或者墙壁,你可以把书放在这些地方,然后在需要的时候再把它们放回书架上。

在Linux系统中,虚拟内存是这样工作的:

  • 页表:这就像是一个目录,告诉你每本书(数据)应该放在哪里。每个程序都有自己的目录,这样它们就不会混淆。

  • 分页:操作系统把内存分成很多小块,每一块就像是一个小型书架,可以单独管理。

  • 交换空间:当书架上没有足够的空间时,你可以把一些不常用的书放到其他地方,比如地下室(磁盘空间)。这就是交换空间。

  • 需求分页:只有在你需要阅读某本书时,操作系统才会把它从地下室拿上来。这样可以节省书架上的空间。

  • 写时复制:如果有两本书看起来一样,但是你知道其中一本很快就会被修改,操作系统会等到修改发生时才复制这本书,这样可以节省空间。

  • 内存映射:这就像是把书架直接连接到你的图书馆,这样你就可以直接从图书馆读取书籍,而不需要把它们搬到书架上。

  • 透明大页:有时候,一本书很大,需要占用很多小型书架。操作系统可以使用更大的书架来存放这些大书,这样可以减少书架的数量。

  • 内存回收:如果书架上的空间不够了,操作系统会检查哪些书不常用,然后把它们放回地下室,为其他书腾出空间。

  • 内核同页合并:如果发现两本书的内容是一样的,操作系统会把它们合并成一本书,这样就可以节省书架上的空间。

指针引用区别

区别:

1.指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。

2.有const指针,但是没有const引用。

3.指针可以有多级,但是引用只能是一级(int** p;合法,而int&& a;不合法)。

4.指针的值可以为空,但是引用的值不可以,并且引用在定义的时候必须初始化。

5.指针的值在初始化后可以改变,即指向其它的存储单元,而引用在初始化后就不会再改变了,从一而终。

6.sizeof引用得到的是所指向的变量(对象)的大小,而sizeof指针得到的是指针本身的大小。

7.指针和引用的自增++运算意义不一样。

相同点:

1.都可以对变量就行修改。

2.都是地址的概念,指针指向一块内存,它的内容是所指内存的地址,引用是某块内存的别名。

何时使用:

1.当考虑到存在不指向任何对象的可能,这时候应该使用指针。

2.当需要在能够在不同的时刻指向不同的对象,这个时候使用指针。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么应该使用引用。

3.当重载某个操作符时,应该使用引用。

C++内存分区

这个可以好好看看,大厂真的爱考。

new/delete和malloc/free区别

职业规划

面对嵌入式公众面试中关于职业规划的问题,一个全面而积极的回答可以展现你的目标导向性、对行业的热情以及对个人成长的规划。以下是一个参考回答,你可以根据自己的实际情况进行调整:

面试官您好,非常感谢有这个机会分享我的职业规划。在我看来,嵌入式系统作为连接物理世界与数字世界的桥梁,正日益成为推动技术创新和产业升级的关键力量。因此,我的职业规划紧密围绕着在嵌入式领域深耕细作,不断提升自己的专业技能与项目经验,力求成为该领域的专家型人才。

短期目标(1-3年)

  • 技术深化:首先,我计划通过深入学习嵌入式系统的基础理论,包括微控制器架构、嵌入式操作系统(如RTOS)、硬件接口与通信协议等,建立起坚实的技术基础。同时,积极参与实际项目,将理论知识应用于实践,通过解决具体问题来提升自己的问题分析与解决能力。
  • 技能拓展:除了技术深度,我也将注重技能广度的拓展,比如学习并掌握一些前沿技术,如物联网(IoT)、人工智能在嵌入式系统中的应用等,以适应行业发展的需求。
  • 建立网络:积极参与行业会议、技术论坛及开源项目,与同行交流学习,建立广泛的人脉网络,为未来的职业发展铺路。

中期目标(3-5年)

  • 专业定位:在积累了一定经验后,我希望能够找到自己最感兴趣且擅长的细分领域,比如汽车电子、医疗设备、智能家居等,进行更深入的研究和实践,逐步成为该领域的专家。
  • 项目管理:同时,我也期望能够承担更多项目管理的职责,学习并掌握项目管理的知识与方法,提升团队协作与项目管理能力,带领团队完成更具挑战性的项目。

长期目标(5年以上)

  • 领导与影响:在职业生涯的后期,我希望能有机会担任技术负责人或团队领导的角色,不仅要在技术上持续引领创新,还要在团队建设和人才培养方面发挥重要作用,为公司乃至整个行业培养更多优秀的嵌入式工程师。
  • 持续学习:技术日新月异,我将始终保持对新技术、新趋势的敏感度,通过不断学习来保持自己的竞争力,为行业的发展贡献自己的力量。

总之,我的职业规划是围绕嵌入式领域,通过不断学习与实践,逐步成长为一名技术精湛、视野开阔、具有领导力的专业人才。我相信,通过不懈的努力和持续的学习,我能够实现这些目标,并在嵌入式领域创造属于自己的价值。

为什么选择蔚来

选择来蔚来汽车做嵌入式工程师,可能基于多个方面的考虑,这些考虑因素涵盖了个人职业发展、技术兴趣、行业前景、企业文化以及工作内容的吸引力等。以下是一些可能的原因:

  1. 行业前景广阔:随着新能源汽车和智能网联汽车技术的快速发展,汽车行业正经历着前所未有的变革。蔚来汽车作为新能源汽车领域的领军企业之一,具有广阔的市场前景和无限的发展潜力。选择在这样的公司工作,能够参与到汽车行业的未来发展中,个人职业成长也将更加迅速。

  2. 技术领先与创新:蔚来汽车在新能源汽车、自动驾驶、智能互联等领域投入了大量研发资源,并取得了一系列重要成果。作为嵌入式工程师,你将有机会接触到最前沿的技术和解决方案,参与到创新产品的研发过程中,不断提升自己的技术水平和专业能力。

  3. 团队与企业文化:蔚来汽车注重团队建设和企业文化的营造,鼓励员工创新、协作和分享。在这样的工作环境中,你将能够与一群志同道合的伙伴共同奋斗,享受到团队合作的乐趣和成就感。同时,蔚来汽车也非常注重员工的个人发展和成长,提供丰富的培训资源和晋升机会,帮助你实现职业目标。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

ARM/Linux嵌入式真题 文章被收录于专栏

让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论

相关推荐

9 101 评论
分享
牛客网
牛客企业服务