avatar-decorate
不会code的菜鸡 level
获赞
289
粉丝
308
关注
1
看过 TA
1247
北京大学
2024
嵌入式软件开发
IP属地:北京
暂未填写个人简介
私信
关注
1. 结构体大小如何计算?2. 宏OFFSET的作用是什么?如何求出结构体中一个成员的内存偏移量?3. 结构体内存对齐问题,如何解决因为对齐产生的内存碎片?4. C++容器:vector和map的了解。5. C++构造函数和析构函数的理解,析构函数的作用,构造函数的种类,移动构造函数。6. 虚函数、纯虚函数、虚函数表。7. C++虚函数表的具体内容。8. 函数回调的实现原理。9. C++的四种类型转换。10. C++智能指针。11. strcpy和strncpy的区别,手写strcmp,实现memcpy。12. 堆栈溢出和内存泄漏,排查和避免方法。13. 数据结构的介绍。14. 迭代器的作用,常见容器的底层实现。15. 平衡二叉树的特点。16. 变量声明和定义的区别,extern关键字。17. 多态的概念和实现。18. C++继承关系。19. C/C++区别。20. 动态链接和静态链接。21. STL容器的使用。22. 虚函数实现多态的原理。23. 内存管理:如何管理1G内存?如何实现动态内存分配?24. 共用体的作用。25. 类定义在64位上占多少字节?加入虚析构函数后的情况。26. 头文件重复包含解决方法。27. 深拷贝和浅拷贝的区别。28. 多线程如何保证线程安全。29. 链接过程中涉及的文件类型。30. 如何将左值强制转换成右值。以上问题答案整理到下方专栏中  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
转发
1.嵌入式从技术来分,分为有操作系统和没操作系统的,有操作系统的是未来的主流。2.嵌入式从职业上分为:一.嵌入式硬件u工程师二.嵌入式驱动工程师三.嵌入式软件工程师四.嵌入式系统工程师嵌入式硬件工程师是最最底层的,通常要接触很多设备,同时还要精通电路图,和电路的设计。说的通俗一点,硬件工程师,把这个项目的各个设备把线给连起来,方便后面的程序编写。嵌入式驱动工程师,就是写这些设备的驱动,你硬件工程师把线连起来了,你得编程吧,你就负责驱动这些设备的程序吧。有些项目,需要在操作系统上驱动设备,那你就要会用这个操作系统,在操作系统上,驱动这些设备,其实大多是都是靠移植。嵌入式软件工程师,非常精通C语言,如果在操作系统上,还得精通数据结构和操作系统,也得会一些常用的算法,有点类似于,让你在安卓或者IOS系统下做一个APP。小编对于嵌入式软件了解的不是很多,有讲错的地方请指出。嵌入式系统工程师,这个如果你很厉害,会写操作系统,那你工资是很高的,但也得付出很多的精力去学习。一般情况下我们都是靠移植,毕竟咋没有华为,苹果,谷歌的实力啊。一般在大公司才会分的这么细,大公司做一个项目,每个人需要干什么会分的很细很细的。举个例子,你们公司要做一个扫地机器人,那么你或者你们这些人组成一个团队,负责扫地机器人的电机驱动的板级支持包编写。那你或者你们这个团队就是负责嵌入式驱动。如果你在小公司,那就说不准了,老板肯定想你会的更多,这样子就不要招更多的人了,但小公司往往工资不比大公司少,毕竟能者多劳,但累确实挺累的。如果读者们还是不清楚嵌入式是什么,或者说嵌入式想学什么,那么小编建议大家学习嵌入式先看一些数电模电,电子专业的书籍,有了一定基础之后,买一块51单片机开发板,从最简单的裸机开始学习,会是一个不错的选择,51单片机学的差不多了,做一个小项目。难一点的基于51单片机的蓝牙指纹开锁系统,简单一点的做一个基于51单片机温度控制系统。51都会了。在买一个32位的学习板,这个跟51比起来,要全部学会还是有点难度的,学的差不多了也可以考虑做一些项目,这个关于嵌入式的学习方向,我以后还会专门写一篇文章来介绍的。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
转发
经过这次和同学的交流,我自己也学到了很多。因为嵌入式方面的很多东西我也不懂,我也算学习了。站在我个人角度来看,结合以前的学习体验。我觉得嵌入式开发比互联网软开(比如Java后端)还是要难一些的,比如我们搞Java开发的,再怎么说,基本也都是用户态的东西,但嵌入式很多东西都深入到了内核态,所以难度肯定是有的,表现在几个方面吧:首先,嵌入式它偏底层,软、硬件都要懂,对能力要求本来就要高不少;其次,嵌入式开发的学习门槛也要高一些,而且像 Linux平台下的开发流程,很多人都不习惯,摸不清;再者,嵌入式学习的正向反馈可能比较慢,尤其是前期学习阶段,导致没有什么成就感,也就坚持不下去了,所以往往就弃坑了。但是话说回来,做IT的就是这样,越往底层对人能力的锻炼就越高,所以对于能力来说是在升维,所以反过来,如果嵌入式做得好的,我觉得来做互联网问题也不大,到时候就属于降维打击了。总体学习思路总体来说,还是可以把嵌入式学习分为三个大的阶段:首先基础学习阶段,这就包括通用编程基础(C语言、数据结构/算法、操作系统、计网、计组、Linux系统基础)和基本的硬件基础,扎实地掌握这两大基础,是后续持续发展和不断进步的动力源泉。其次就是嵌入式应用编程阶段,或者说系统平台编程阶段。因为一般会以特定的嵌入式平台和特定的嵌入式操作系统为依托,熟悉这个系统平台上的编程方法和流程。以常见的ARM+Linux平台为例,需要掌握从内存管理到多任务编程、文件I/O、网络编程,甚至图形化界面编程等几个大的方面。最后就是深入嵌入式底层开发阶段,最常见的就是内核开发和驱动开发,这些统属于内核态开发范畴,所以需要对操作系统内部机制有所涉猎和理解,在此基础上需要掌握从系统移植到内核开发、驱动开发的各个细节,这是成神之路。大体思路是这样,接下来看一下详细的学习路线和知识点梳理。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
转发
1、从未在纸上或者白板上写过代码这是求职者最容易犯的大错之一。绝大多数编程面试都会安排在纸上或白板上。而与电脑上大量的编码练习相比,绝大多数求职者极少在纸上或白板上进行编码练习。用惯了IDE(或是文本编辑器)的求职者会在如何保持纸间良好代码规范这第一步上磕磕碰碰。众所周知,编码规范是编程面试的必要条件。而且,在纸上写代码的时候,没有编译器帮你指出明显的编译时错误。此外,在专家组前方的白板上编码时,绝大多数求者会感到不安。所以面试前,做些纸上或白板上的编码练习吧。2、不要硬记代码很多毕业新生会去背一些常见问题的答案。好比很多程序员都知道如何“用C中的位运算来交换两数”。但并不是所有人都知道那段代码真正做了些什么,又是如何完成这项任务的。死记硬背并不是编程面试的捷径。即便你侥幸答对了一两题,如果不了解基础概念还是无法通过整个面试。关键要了解编程背后的概念,重点并不在于你知道多少种语言,而在于你有多了解这些语言。3、与面试官极少交流觉得题目有问题或是有其他疑问时,最好和面试官谈谈。即便不知道某个特定问题的答案,比起静静坐着或是谈些与该问题全然无关之物,诚实的承认不知道会更好。你还可以讲讲其他与原来问题相关的话题,并告诉他们你在这个话题上很擅长。4、对电话面试无准备近来很多公司在让求职者参与下一轮面试前会安排电话面试以便初步评定。电话面试与面对面面试有很大不同,电话面试要求良好的听说技巧。保证在回答前认真听问什么。面试官也许会给你一段代码并让你基于这段代码回答一些问题。参加电话面试前手里有只笔,有张纸很重要。还有,不要用精准的书面用语回答所有问题,因为那样的话,面试官也许会觉得你答题时一直在完全搬照网上资料。5、代码凌乱不要低估代码规范的重要性。不管你多博闻强识,多有创造力,记得他们是在为你的编程技巧评定。面试官下任何结论前都要先读懂你的代码,如果你代码很凌乱,面试官也许压根就不想看。面试官只是一方面,规范编码还有助于求职者写出正确的程序。相比一团糟的代码,规范编码出bug的可能性更小。6、对思路避而不谈面试官会对你解决问题的方法很感兴趣。他们不期望你能解决所有提出的问题,但希望你能给出正确的思路。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
转发
错误1 不准备经历方面的问题一定要多花时间回忆你过去的相关经历,包括你参与的项目,你遇到的各种困难,以及如何解决的这些难题。你的回答会影响面试官对你技术能力的印象,所以一定要回顾和整理一下你过去的项目经历。错误2 依赖于事先背诵的答案试图通过事先背诵一些答案,然后在面试派上用场是一个非常不好的方法。首先,恰好能用上你背的答案的概率微乎其微,其次,这样的准备会花费你大量的时间和精力,而没有真正能力上的提高。记住,你在现场发挥的越好、越真实,你身上的价值就越高。错误3 缺乏对面试的模拟这是很显然的,做很多事情前你都要准备和模拟一下,防止意外的情况发生。程序员面试也是一样的,如果你正在准备一个程序员面试,你应该找一些可以和你一起准备的程序员,你们一起模拟面试的场景,互相提问。错误4 没有展现思考的过程如果你在回答问题时很长时间不说话,就会让人理解为你无法解答这个问题。你不提供一个思考的过程,面试官就无法了解你的想法,不知道你是在思考还是被难住了。如果你和面试官一直交谈,他就会了解你的想法,看到你的思维过程,这是很重要的。而且当你的思路有偏差时,面试官还可以引导你回到正确的解决方案中来。错误5 写代码离不开编辑器如果你要参加一个技术型的面试,面试官通常会要求你在白板/白纸上写代码,而不是在电脑上。所以,你不能过度依赖于代码编辑器,因为在那里它会帮你补充代码、显示出你的语法错误等。赶快拿出笔和纸,写下你的代码,当你满意自己在纸上写的程序的时候,再把它输入到电脑,让编译器验证它正确与否。错误6 没有养成良好的编程习惯不要因为你仅仅写了一个可以执行的程序,就以为自己已经做得很好了。你还要注意在程序中有没有重复的代码、混乱的数据结构、过度的空格等等。要像在实际的开发中一样,设计更有逻辑性的数据结构、有更好的框架、代码更整洁和易读。错误7 不进行测试当你的程序写完后,花点时间检查一下你的代码,以确保其中没有bug。如果是在用笔和纸来练习,就要把程序再写到编辑器中,让编译器帮助你检查。错误8 总是着急忙慌在解决问题时不要着急,否则只会导致更多的错误,显得你很粗心。要有条理和准确的的做事,经常回头看看你的代码,如果有错误就改正它们。这样做,其实完成项目的时间会更短,而且错误会更少。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
转发
1.在嵌入式系统中,什么是闪存(Flash Memory)?2.嵌入式系统中的I2C通信协议是什么?3.在嵌入式系统中,什么是Bootloader(引导加载程序)?4.嵌入式系统中的PWM(脉宽调制)是什么?5.在嵌入式系统开发中,什么是RTOS调度器(Scheduler)?6.在嵌入式系统中,什么是中断控制器(Interrupt Controller)?7.嵌入式系统中的CAN通信协议是什么?8.在嵌入式系统开发中,什么是裸机编程(Bare Metal Programming)?9.在嵌入式系统中,如何进行实时任务调度和优先级管理?10.请解释一下嵌入式系统中的中断嵌套和中断优先级的概念。11.请解释一下嵌入式系统中的GPIO口、PWM和定时器的概念和应用场景。12.在嵌入式系统开发中,什么是嵌入式Linux?它与传统的裸机系统有什么区别?13.讲一下C语言和C++语言的区别和特点。14.C语言中的指针是什么?请解释一下指针的作用和用法。15.C++中的引用是什么?请解释一下引用和指针的区别。16.什么是C语言中的结构体?请解释一下结构体的定义和使用。17.C++中的类是什么?请解释一下类的定义和面向对象的概念。18.在C语言中,如何动态分配内存?请解释一下malloc和free函数的使用。19.在C++中,如何实现多态性?请解释一下虚函数和纯虚函数的概念。20.C语言中的宏定义是什么?请解释一下宏定义的作用和用法。21.C++中的命名空间是什么?请解释一下命名空间的作用和用法。22.在C语言中,什么是文件操作?请解释一下文件的打开、读写和关闭操作。23.请解释一下操作系统中的进程间通信(IPC)和线程间通信的概念和方式。24.操作系统中的调度算法有哪些?请解释一下常见的调度算法和其特点。25.操作系统中的页表是什么?请解释一下页表的作用和实现方式。26.操作系统中的内核是什么?请解释一下内核的概念和功能。27.请解释一下操作系统中的异常和中断的区别和联系。29.请解释一下操作系统中的同步和互斥的概念和实现方式。30.对于嵌入式开发工程师来说,如何进行持续学习和职业规划?**************************************  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
转发
我从进入职场开始,就一直听到一个很fancy的词叫“work-life balance”(工作-生活 平衡),但是好像也是从进入职场开始,就从没实现work life balance。并且我发现自己掉入了一个“陷阱”里:越是追求平衡,越是对工作和生活的边界有严格的要求,麻烦的是,这种标准对他人起不到任何限制,反而是让我自己陷入了一种愤怒的情绪中,非常难受。我经常会抱怨:“为什么不能尊重我的个人时间?”“为什么下班还要找我?”后来,我放弃了对平衡的严苛追求,因为那其实也是一种“执念”。不能改变他人,换个环境也不会改善很多,只是一层层给自己上枷锁。我做了这些心态上的调整:1. 工作里不再有求必应工作消息不再每个都秒回(当然会根据消息类型和紧迫性/是否有预案等综合考虑)。在职场,建议大家都不要觉得自己过于重要。每天成千上万的事情发生,少做一件并不会怎么样。把所有工作的事情紧迫性都降低,当然这之前建议最好能想清楚预案是什么。当一件事情没有预案的时候,可能就是这个系统的问题,需要让公司层面解决,千万不要把压力给到自己。你可以给很多建议,但是要清楚自己能做到哪一步。2. 制定生活的时间表,而不是工作时间表你想过你完美的一天是什么样的吗?如果每天都是从工作的todolist开始的,那你人生80%的时间就是被别人的事情推着走的。想要美好生活,就要给生活留时间和精力,事实上想要得到任何东西都要付出,要有取舍。即使是散步,看书,发呆这样的小事,如果对我来说也是很重要的美好时刻,重要性肯定是不亚于工作的!3. All-in 生活就是真的从心态上转变,把工作当成生活的一部分,并且只是很小一部分而已。对大多数人而言,工作肯定是主要收入来源,无可厚非,但除此之外,你的生活中是不是也可以找到其他收入来源,或者当你逐渐培养起一个新的能力,这个能力能否给你带来收入?这些大部分人没有想过。眼前的噪音太大,就会忘记思考重点在哪,所以我们都活成忙碌的人,成为一个个相似的零件,然后又陷入焦虑。以上的思考,仅仅从我个人出发的一些分享,并且我也真实受益于这样的心态。如果你热爱工作,热爱职场,那这些对你来说可能没有帮助;但如果你很清楚自己想追求更丰满的生活,或许可以参考一二。有问题的友友可以直接问我,我知道都会回答 9️⃣2️⃣2️⃣6️⃣5️⃣7️⃣5️⃣0️⃣8️⃣#牛客在线求职答疑中心##如果可以选,你最想从事什么工作#  嵌入式知识图谱-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/0ER4Xm
0 点赞 评论 收藏
转发
牛客网
牛客企业服务