校招 未知部门 / 硬件工程师 / 一面/二面/三面

[面试日期] 2024-07-25 [面试时长] 未知
[学校背景] 电子科技大学 | 985 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>面试真题 | 蔚来嵌入式一二三面面经</h2> <p><em>来源为牛客付费专栏,以下仅收录公开可见内容,付费部分未收录。</em></p> <p>@[toc]</p> <blockquote> <p>一面</p> </blockquote> <h1>static作用,局部static和全局static区别</h1> <p>在C或C++编程语言中,<code>static</code>关键字有几个不同的作用,具体取决于它被使用的环境。以下是<code>static</code>的一些常见用法和它们的区别:</p> <ol> <li> <p><strong>局部静态变量</strong>:</p> <ul> <li>当<code>static</code>关键字用于一个局部变量(通常是函数内的变量),它改变了该变量的存储期为整个程序的生命周期,而不是函数调用的局部作用域。这意味着变量在函数调用结束后不会消失,其值会保留到下一次函数调用。</li> <li>局部静态变量在首次创建时会被初始化,并且只会初始化一次。</li> </ul> </li> <li> <p><strong>全局静态变量</strong>:</p> <ul> <li>全局静态变量是指在函数外部定义的静态变量。这种变量的生命周期同样是整个程序的运行期,但与局部静态变量不同,全局静态变量的作用域仅限于定义它的文件内部。也就是说,它们在其他文件中是不可见的,具有内部链接。</li> <li>这可以用于模块化编程,防止不同模块间的全局变量名冲突。</li> </ul> </li> <li> <p><strong>静态函数</strong>:</p> <ul> <li>当<code>static</code>关键字用于函数定义时,它限制了该函数的作用域,使其只能在定义它的文件内部被调用。这同样有助于避免不同文件中的函数名冲突,并且有助于模块化设计。</li> </ul> </li> </ol> <p>总结区别:</p> <ul> <li><strong>作用域</strong>:局部静态变量在函数内部,全局静态变量在文件内部。</li> <li><strong>生命周期</strong>:两者都是静态存储期,即整个程序运行期间。</li> <li><strong>初始化</strong>:局部静态变量和全局静态变量都只会被初始化一次。</li> <li><strong>可见性</strong>:局部静态变量仅在函数内部可见,全局静态变量仅在定义它的文件内部可见。</li> </ul> <blockquote> <p>面试官可能会询问这个问题来评估你对C/C++中变量和函数作用域、生命周期以及链接的理解。</p> </blockquote> <h1>TCP三次握手</h1> <ul> <li><a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzUyOTY5NzkwNg%3D%3D%26mid%3D2247499454%26idx%3D5%26sn%3Da3262920648ca4ea7bd0b9e9aa1796e8%26chksm%3Dfa5fa3a3cd282ab59af5d386c0a388af32ad85992897d57debfe0da0020cf31a57ed0f3c4a54%26token%3D55088038%26lang%3Dzh_CN%23rd">通信协议 | 三次握手、七次握手、四次挥手 </a></li> </ul> <h1>Linux虚拟内存</h1> <ul> <li><a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzUyOTY5NzkwNg%3D%3D%26mid%3D2247499454%26idx%3D3%26sn%3D03a3e2f0c7e31c7a7f5ced8a9cc220e9%26chksm%3Dfa5fa3a3cd282ab5358c1f2b6d07e4f3952081d77a0b1fe1217724aaecf64fc9bab9648f3abc%26token%3D55088038%26lang%3Dzh_CN%23rd">底软驱动 | Linux虚拟内存管理,MMU机制,原来如此</a></li> <li><a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzUyOTY5NzkwNg%3D%3D%26mid%3D2247499454%26idx%3D4%26sn%3D00ee40493ac8464615646a225ae9f4a5%26chksm%3Dfa5fa3a3cd282ab54af79d636b01b65b72eb5e6259621d341215468a2f02871ffdca45749501%26token%3D55088038%26lang%3Dzh_CN%23rd">底软驱动 | Linux虚拟内存</a></li> </ul> <p>想象一下,我们的计算机内存(RAM)就像是一个书架,而书架上的空间是有限的。但是,你有很多书(程序和数据)需要存放。虚拟内存就像是你家里的其他空间,比如地板、桌子或者墙壁,你可以把书放在这些地方,然后在需要的时候再把它们放回书架上。</p> <p>在Linux系统中,虚拟内存是这样工作的:</p> <ul> <li> <p><strong>页表</strong>:这就像是一个目录,告诉你每本书(数据)应该放在哪里。每个程序都有自己的目录,这样它们就不会混淆。</p> </li> <li> <p><strong>分页</strong>:操作系统把内存分成很多小块,每一块就像是一个小型书架,可以单独管理。</p> </li> <li> <p><strong>交换空间</strong>:当书架上没有足够的空间时,你可以把一些不常用的书放到其他地方,比如地下室(磁盘空间)。这就是交换空间。</p> </li> <li> <p><strong>需求分页</strong>:只有在你需要阅读某本书时,操作系统才会把它从地下室拿上来。这样可以节省书架上的空间。</p> </li> <li> <p><strong>写时复制</strong>:如果有两本书看起来一样,但是你知道其中一本很快就会被修改,操作系统会等到修改发生时才复制这本书,这样可以节省空间。</p> </li> <li> <p><strong>内存映射</strong>:这就像是把书架直接连接到你的图书馆,这样你就可以直接从图书馆读取书籍,而不需要把它们搬到书架上。</p> </li> <li> <p><strong>透明大页</strong>:有时候,一本书很大,需要占用很多小型书架。操作系统可以使用更大的书架来存放这些大书,这样可以减少书架的数量。</p> </li> <li> <p><strong>内存回收</strong>:如果书架上的空间不够了,操作系统会检查哪些书不常用,然后把它们放回地下室,为其他书腾出空间。</p> </li> <li> <p><strong>内核同页合并</strong>:如果发现两本书的内容是一样的,操作系统会把它们合并成一本书,这样就可以节省书架上的空间。</p> </li> </ul> <h1>指针引用区别</h1> <blockquote> <p>区别:</p> </blockquote> <p>1.指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。</p> <p>2.有const指针,但是没有const引用。</p> <p>3.指针可以有多级,但是引用只能是一级(int** p;合法,而int&amp;&amp; a;不合法)。</p> <p>4.指针的值可以为空,但是引用的值不可以,并且引用在定义的时候必须初始化。</p> <p>5.指针的值在初始化后可以改变,即指向其它的存储单元,而引用在初始化后就不会再改变了,从一而终。</p> <p>6.sizeof引用得到的是所指向的变量(对象)的大小,而sizeof指针得到的是指针本身的大小。</p> <p>7.指针和引用的自增++运算意义不一样。</p> <blockquote> <p>相同点:</p> </blockquote> <p>1.都可以对变量就行修改。</p> <p>2.都是地址的概念,指针指向一块内存,它的内容是所指内存的地址,引用是某块内存的别名。</p> <blockquote> <p>何时使用:</p> </blockquote> <p>1.当考虑到存在不指向任何对象的可能,这时候应该使用指针。</p> <p>2.当需要在能够在不同的时刻指向不同的对象,这个时候使用指针。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么应该使用引用。</p> <p>3.当重载某个操作符时,应该使用引用。</p> <h1>C++内存分区</h1> <blockquote> <p>这个可以好好看看,大厂真的爱考。</p> </blockquote> <ul> <li><a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fblog.csdn.net%2Fweixin_45264425%2Farticle%2Fdetails%2F140450245">底软驱动 | C++内存相关</a></li> </ul> <h1>new/delete和malloc/free区别</h1> <ul> <li><a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fblog.csdn.net%2Fweixin_45264425%2Farticle%2Fdetails%2F140403897%3Fspm%3D1001.2014.3001.5501">new/delete和malloc/free区别:动态内存管理</a></li> </ul> <h1>职业规划</h1> <p>面对嵌入式公众面试中关于职业规划的问题,一个全面而积极的回答可以展现你的目标导向性、对行业的热情以及对个人成长的规划。以下是一个参考回答,你可以根据自己的实际情况进行调整:</p> <p>面试官您好,非常感谢有这个机会分享我的职业规划。在我看来,嵌入式系统作为连接物理世界与数字世界的桥梁,正日益成为推动技术创新和产业升级的关键力量。因此,我的职业规划紧密围绕着在嵌入式领域深耕细作,不断提升自己的专业技能与项目经验,力求成为该领域的专家型人才。</p> <p><strong>短期目标(1-3年)</strong>:</p> <ul> <li><strong>技术深化</strong>:首先,我计划通过深入学习嵌入式系统的基础理论,包括微控制器架构、嵌入式操作系统(如RTOS)、硬件接口与通信协议等,建立起坚实的技术基础。同时,积极参与实际项目,将理论知识应用于实践,通过解决具体问题来提升自己的问题分析与解决能力。</li> <li><strong>技能拓展</strong>:除了技术深度,我也将注重技能广度的拓展,比如学习并掌握一些前沿技术,如物联网(IoT)、人工智能在嵌入式系统中的应用等,以适应行业发展的需求。</li> <li><strong>建立网络</strong>:积极参与行业会议、技术论坛及开源项目,与同行交流学习,建立广泛的人脉网络,为未来的职业发展铺路。</li> </ul> <p><strong>中期目标(3-5年)</strong>:</p> <ul> <li><strong>专业定位</strong>:在积累了一定经验后,我希望能够找到自己最感兴趣且擅长的细分领域,比如汽车电子、医疗设备、智能家居等,进行更深入的研究和实践,逐步成为该领域的专家。</li> <li><strong>项目管理</strong>:同时,我也期望能够承担更多项目管理的职责,学习并掌握项目管理的知识与方法,提升团队协作与项目管理能力,带领团队完成更具挑战性的项目。</li> </ul> <p><strong>长期目标(5年以上)</strong>:</p> <ul> <li><strong>领导与影响</strong>:在职业生涯的后期,我希望能有机会担任技术负责人或团队领导的角色,不仅要在技术上持续引领创新,还要在团队建设和人才培养方面发挥重要作用,为公司乃至整个行业培养更多优秀的嵌入式工程师。</li> <li><strong>持续学习</strong>:技术日新月异,我将始终保持对新技术、新趋势的敏感度,通过不断学习来保持自己的竞争力,为行业的发展贡献自己的力量。</li> </ul> <p>总之,我的职业规划是围绕嵌入式领域,通过不断学习与实践,逐步成长为一名技术精湛、视野开阔、具有领导力的专业人才。我相信,通过不懈的努力和持续的学习,我能够实现这些目标,并在嵌入式领域创造属于自己的价值。</p> <h1>为什么选择蔚来</h1> <p>选择来蔚来汽车做嵌入式工程师,可能基于多个方面的考虑,这些考虑因素涵盖了个人职业发展、技术兴趣、行业前景、企业文化以及工作内容的吸引力等。以下是一些可能的原因:</p> <ol> <li> <p><strong>行业前景广阔</strong>:随着新能源汽车和智能网联汽车技术的快速发展,汽车行业正经历着前所未有的变革。蔚来汽车作为新能源汽车领域的领军企业之一,具有广阔的市场前景和无限的发展潜力。选择在这样的公司工作,能够参与到汽车行业的未来发展中,个人职业成长也将更加迅速。</p> </li> <li> <p><strong>技术领先与创新</strong>:蔚来汽车在新能源汽车、自动驾驶、智能互联等领域投入了大量研发资源,并取得了一系列重要成果。作为嵌入式工程师,你将有机会接触到最前沿的技术和解决方案,参与到创新产品的研发过程中,不断提升自己的技术水平和专业能力。</p> </li> <li> <p><strong>团队与企业文化</strong>:蔚来汽车注重团队建设和企业文化的营造,鼓励员工创新、协作和分享。在这样的工作环境中,你将能够与一群志同道合的伙伴共同奋斗,享受到团队合作的乐趣和成就感。同时,蔚来汽车也非常注重员工的个人发展和成长,提供丰富的培训资源和晋升机会,帮助你实现职业目标。</p> </li> <li> <p></p> </li> </ol>
AI 推荐面试题