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

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务