avatar-decorate
不会code的菜鸡 level
获赞
1178
粉丝
873
关注
1
看过 TA
4014
北京大学
2024
嵌入式软件开发
IP属地:北京
暂未填写个人简介
私信
关注
面试中无非几个流程:1、笔试:主要是考核C/C++的知识,单片机基础知识,Linux。这三大模块,我就简述一些吧。比如C语言的结构体和联合体区别,单链表和双向链表,使用指针需要注意什么,判断大小端模式,写strcpy函数的编程,递归的题目,单片机考一些指令,中断,还有一些硬件知识,Linux考查TCP建立服务器的流程,TCP与UDP的区别,线程与进程的区别。2、技术面试:我的技巧是,首先你做自我介绍,然后也要说明你对这个岗位的知识有在学校自学,然后就接着说让我简述一下自己的项目,我的项目是5个,你就说大概功能和流程就行了。(这里其实就是不断输出,让面试官接不了话,一般我自我介绍完都得5分钟以上)然后就到面试官问你问题了,这里有个重点要注意,面试官只会问你简历里的,所以简历写你会的就好啦。遇到问题大概阐述:(我就记得一些重要)1static关键字的作用?2结构体和联合体的区别?3指针使用需要注意什么?4指针和数组区别?5简述一下双向链表?6c++的三大特性?7然后问你项目了,我主要是STM32单片机,就会问你通信协议(usart,iic,spi,can,iis),问你项目中传感器的型号,工作原理,使用的协议,传输数据格式,速率等等。问你是否用过什么操作系统(Linux,ucos,freeRTOS等),这个是加分项,然后会问一些TC/iP,UDP的协议,进程与线程区别,还有一些电机PID,FOC算法,或者视觉opencv等等。(可能是两轮技术面试)3、hr终面(问福利,谈薪资)一样是自我介绍,然后跟hr聊一些家庭背景,说一下自己优缺点,其实重点在于体现你素养与礼貌就可以了。然后谈薪资,首先你得了解你这个岗位的水平,与它招聘要求,要求越高肯定越高,一定得有定位,你开太低亏了,太高别人觉得你好高骛远,一定得了解行情再虚报一点点再砍价。总结:无论哪种嵌入式工程师,语言,程序代码都是完成需求的工具,最后留下来的是原理,协议,框架,思维才是最重要,祝大家找到理想的工作,身体健康。具体可以参考一下大佬的面经进行学习  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
分享
1. UART通信的波特率设置方式。2. I2C与SPI的优缺点。3. CAN协议的工作原理及应用场景。4. STM32中GPIO引脚配置为输入或输出模式的步骤。5. FreeRTOS中任务间通信的实现方式。6. RT-Thread中定时器的实现及与FreeRTOS的区别。7. 嵌入式系统中的低功耗设计方法。8. 中断优先级的概念及设置方式。9. 裸机环境下多任务调度的实现。10. DMA(直接内存访问)的工作原理及优点。11. 嵌入式系统中的内存管理策略。12. STM32中PWM信号调制的实现。13. 环形缓冲区的定义及使用场景。14. 简单状态机的实现方法。15. 栈与队列的区别及应用。16. TCP/IP协议的基本工作原理。17. 嵌入式系统中文件系统的实现方式。18. 嵌入式开发中的调试与故障排查方法。19. RTOS中的信号量的定义与使用。20. 简单嵌入式Web服务器的实现步骤。21. 嵌入式系统中外设初始化的步骤。22. STM32中外部中断的配置方法。23. 嵌入式系统中的电源管理策略。24. 数据采集与处理的实现方法。25. 嵌入式系统中的固件升级方式。26. 错误与异常处理的方法。27. RTOS中多线程通信的实现方式。28. 嵌入式系统中的状态保持概念。29. 嵌入式系统中的蓝牙通信实现。30. 嵌入式系统中时钟配置与管理的步骤。答案附在面经中  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
分享
1. STM32的ADC采样如何配置和使用?2. FreeRTOS中的信号量和互斥量有什么区别?3. 在嵌入式系统中,如何处理内存泄漏问题?4. 如何在STM32中实现定时器中断?5. 如何使用DMA提高数据传输效率?6. 如何在FreeRTOS中实现任务间通信?7. 什么是环形缓冲区,如何实现?8. 如何在嵌入式系统中实现多线程?9. UART的波特率是如何设置的?10. 如何在STM32中使用外部中断?11. 在RT-Thread中,如何创建和管理线程?12. 如何使用SPI进行传感器数据读取?13. 如何在嵌入式系统中实现电源管理?14. CAN总线的工作原理是什么?15. 如何在IIC通信中处理设备地址冲突?16. 如何在FreeRTOS中使用软件定时器?17. 如何实现一个简单的任务调度器?18. 如何在嵌入式系统中实现RTOS的上下文切换?19. 什么是FIFO和LIFO,分别适合什么场景?20. 在嵌入式系统中,如何处理异常和错误?21. 如何在STM32中实现PWM控制电机?22. 如何在FreeRTOS中实现消息队列?23. 如何使用CRC校验数据完整性?24. 如何在IIC通信中实现主从模式?25. 如何在嵌入式系统中优化代码性能?26. 如何实现一个简单的状态机?27. 如何在STM32中使用ADC进行温度测量?28. 如何在FreeRTOS中处理任务优先级?29. 什么是回调函数,如何在嵌入式系统中使用?30. 如何在嵌入式系统中实现文件系统?更多知识关注大佬面经  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
0 点赞 评论 收藏
分享
赤石大王:白菜是22k?问的还挺难的
查看20道真题和解析
0 点赞 评论 收藏
分享
1. Linux系统启动流程是怎么样的(GRUB引导)?加载BIOS–>加载MRB主引导记录–>加载GRUB主引导程序–>加载内核–>内核启动(加载完内核后,GRUB 将控制权转交给内核,开始执行操作系统的启动流程。内核会初始化硬件、文件系统和设备驱动,并执行初始化进程(init)以启动用户空间的系统服务和进程。)2. 嵌入式系统启动流程(Uboot)CPU 启动:当嵌入式设备开机后,CPU 会执行预定义的启动流程。这个流程通常包括初始化 CPU 寄存器、加载引导代码到内存中等。引导设备加载:CPU 会从预定义的启动设备(如闪存、SD 卡、网络等)中加载引导加载器(u-boot)的镜像文件到内存中。这个镜像文件通常是通过 JTAG、串口、网络等方式加载到设备中。u-boot 初始化:加载完 u-boot 镜像后,CPU 将控制权交给 u-boot,u-boot 开始执行。u-boot 会初始化设备硬件、外设、内存等,并设置一些系统参数和环境变量。引导加载:u-boot 会根据预定义的引导顺序(如配置文件中的引导顺序)从指定的启动设备中加载操作系统内核镜像到内存中。这个内核镜像可以是 Linux 内核、Android 内核或其他操作系统内核。内核启动:加载完内核镜像后,u-boot 将控制权传递给操作系统内核,开始执行内核启动流程。内核会初始化硬件、文件系统、设备驱动等,并启动用户空间的初始化进程。uboot引导内核启动主要向内核传递三个参数R0,R1,R2,第一个参数R0,默认为0。第二个参数,R1,CPU ID,告诉内核板载CPU的型号。第三个参数R2,告诉内核映像文件存在什么地方,板子还剩多少内存空间。这些参数的传递都是以tag_list的方式传递的。3. linux系统各个组成Linux系统主要由以下几个组成部分构成:内核(Kernel):Linux内核是操作系统的核心,负责管理硬件资源、提供系统调用接口、调度进程、管理内存等核心功能。Shell:Shell是用户与Linux内核交互的界面,它接收用户输入的命令并将其传递给内核执行。常见的Shell包括Bash、Zsh、Fish等。文件系统(File System):Linux文件系统负责管理计算机存储设备上的文件和目录,常见的文件系统包括Ext4、Btrfs、XFS等。GNU工具集:GNU工具集是一组由GNU计划开发的开源工具,包括文本编辑器(如Emacs)、编译器(如GCC)、调试器(如GDB)等,这些工具提供了丰富的功能,使得Linux系统能够进行各种开发和管理任务。图形用户界面(Graphical User Interface,GUI):GUI是一种通过图形化界面与计算机交互的方式,Linux系统中常见的GUI包括X Window System(X11)和Wayland等。应用程序:Linux系统支持运行各种应用程序,包括办公软件、开发工具、娱乐软件等,用户可以根据需求安装和使用不同的应用程序。4. Linux系统遇到意外崩溃的情况怎么办?发生崩溃时,应该会出现崩溃信息,根据崩溃信息去查找解决问题分析日志文件:日志文件是排查系统崩溃的重要工具,通过分析系统日志文件可以查找系统崩溃的原因;常见的日志文件目录:/var/log/syslog、/var/log/messages、/var/log/kern.log等 查看日志的方法检查硬件问题,可以检查内存、硬盘、cpu等硬件组件是否正常工作,可以通过sudo lshw 查看更新驱动程序和内核排除软件问题:如果系统在特定的应用程序或操作期间死机,尝试确定是否是由于特定的软件问题引起的。在这种情况下,尝试重新安装、更新或卸载相关软件。执行系统维护:定期执行系统维护操作,如清理临时文件、优化磁盘空间、检查文件系统等,以确保系统处于良好状态。Linux系统死机5. Linux驱动基础   驱动程序需要先注册设备和驱动,以进行设备的控制和管理。可以通过Linux内核提供的API如platform_driver_register或misc_register来注册设备和驱动。设备的初始化和资源分配在驱动程序中进行设备的初始化和资源的分配,包括内存分配、IO端口映射、中断注册等。可以使用内核提供的函数如kmalloc、ioremap等进行相应的操作。设备的IO操作和中断处理驱动程序需要实现设备的IO操作和中断处理函数。根据设备的不同接口和功能,可以使用内核提供的IO操作函数如readl、writel等进行读写操作,以及注册和处理中断的函数如request_irq、irq_handler等。设备的释放和注销在驱动程序退出或设备不再使用时,需要进行设备的释放和注销,包括资源的释放、中断的注销等。可以使用内核提供的函数如kfree、iomem_unmap等进行相应的操作。Linux驱动程序的调试方法6. 编译Linux内核流程获取源代码:首先,你需要获取 Linux 内核的源代码。你可以通过官方网站下载稳定版本的源代码,也可以使用版本控制系统如 Git 获取。安装编译工具链:在编译 Linux 内核之前,你需要安装适用于目标架构的编译工具链。这通常包括 GCC 编译器、GNU Make、以及其他必要的开发工具。配置内核:进入 Linux 内核源代码目录,在终端中运行 make menuconfig 命令,这会打开一个配置菜单,你可以在这个菜单中选择内核的编译选项。在这个配置菜单中,你可以配置各种内核功能、设备驱动、文件系统支持等。进行编译:配置完内核后,使用 make 命令进行编译。你可以使用 -j 参数指定并行编译的进程数量,以加快编译速度。例如:make -j4。安装内核:编译完成后,使用 make modules_install install 命令安装内核。这会将编译好的内核文件复制到适当的位置,并更新启动加载程序(如 GRUB)的配置文件。重启系统:完成安装后,重新启动系统并选择新编译的内核启动。以上内容摘自牛客官方专刊《c++/嵌入式面经专栏》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看6道真题和解析
0 点赞 评论 收藏
分享
1. 描述C++程序到可执行程序的四个过程。2. 说明面向对象的特性。3. 区分静态多态和动态多态。4. 解释动态多态和静态多态的原理,并比较它们的效率。5. 什么是智能指针?6. `shared_ptr` 是否线程安全?7. 解释深拷贝和浅拷贝的区别。8. 比较 `i++`、`++i` 和 `++(i++)` 的行为。9. 解释右值引用、移动语义以及其底层原理。10. `vector` A 存储在哪里?`A.push_back(1)` 中的 `1` 存储在哪里?11. `vector` 的 `clear` 和 `push_back` 的时间复杂度及其原因。12. STL 容器是否线程安全?为什么?13. 线程和进程的区别。14. 计算线程创建的最大数量的公式。15. 什么是协程?协程是否有创建数量的限制?16. 什么是死锁?17. 每个线程需要 100 把锁,如何避免死锁?18. 解释 `thread_local` 的用法和作用。19. 什么是野指针?如何避免野指针?20. 解释 `new`、`delete` 和 `malloc`、`free` 的区别和常识。21. 虚函数、虚函数表和虚指针的概念是什么?22. 面向对象的基本特征。23. 解释死锁的四个必要条件。24. 区分内联函数和宏定义。25. 动态链接和静态链接的区别。26. 编译过程的各个阶段是什么?27. 如何找到两个无环链表的公共节点?28. 如何在无序的浮点数数组中找到中位数?29. 快速排序的原理及其优化方式。30. 列出三种智能指针及其特点。31. 解释左右值的概念。32. 描述三种特殊构造函数。33. `i++` 和 `++i` 是左值还是右值?34. 什么是完美转发?35. 右值能否取到地址?问题答案已经整理到专栏中了,关注我分享更多知识。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看35道真题和解析
0 点赞 评论 收藏
分享
1. 野指针以及怎么避免2. new、delete和malloc、free的常识3. 虚函数和虚函数表以及虚指针4. 面向对象的特征5. 三个智能指针6. i++和++i以及分别是左值还是右值7. 完美转发8. 右值能否取到地址9. 移动语义10. C语言怎么实现链表11. 驱动下半部分需要做些什么?12. 怎么把gpio注册成中断13. 按键gpio需要把中断配置成什么样的,怎么触发,怎么捕获状态,怎么实现长按14. 应用层不用read怎么拿到驱动层的数据,通知或触发形式15. 信号在驱动层触发应用层可以捕获到吗16. 什么是input子系统,识别到事件之后是怎么给应用层的17. CAN是一个什么信号,详细说说18. IIC通信有几根线?分别是什么19. 差分信号在走线的时候要注意什么20. 编译的过程21. Makefile最终是使用什么把可执行文件编译出来的22. 用什么命令把c文件生成可执行文件23. Makefile添加依赖库怎么操作24. 为什么通过apt-get去下载依赖库,有没有其他方式25. 32位系统一个指针变量占几个字节26. 如何将32位的变量最后一位置127. 程序的启动方式,编译过程28. 单片机内存调度机制29. 任务间的数据交互,怎么实现30. 串级PID详细说说问题答案已经整理到专栏中了,关注我分享更多知识。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看30道真题和解析
0 点赞 评论 收藏
分享
1. C++11有哪些新特性?2. 函数有哪些常见的传参方式,有何区别?3. 指针和引用有什么区别?4. 指针常量和常量指针有何区别?5. 常见的内存泄漏发生场景有哪些?6. 常见的内存泄漏检测工具有哪些?7. 虚拟内存和物理内存的区别是什么?8. 内存空间有哪些区域?分别是做什么的?9. 段页式内存管理有何优点?10. 说一下智能指针的类型及其区别。11. 内联函数是什么?和宏有何区别?它有什么优缺点?12. 什么是多态的底层原理?13. C++空类的大小是多少?如果空类内含有虚函数,类的大小又是多少?14. 讲讲内存对齐。15. 虚函数可以是模板函数吗?16. 虚函数可以内联吗?17. 32位Linux系统的寻址空间是多大?进程能申请的内存有这么大吗?18. Linux系统中调试崩溃问题的流程是?19. 栈溢出一般是由哪些原因导致?20. static关键字有什么用?static变量修饰全局、函数内和类内变量时,分别在什么时候进行初始化?21. 初始化列表有什么好处?哪些成员变量必须通过初始化列表初始化?22. 什么是右值引用?说一下什么是移动语义及使用场景?23. malloc/free和new/delete有什么区别?24. std::vector和std::list有什么区别?讲一下vector动态扩展的原理。25. Vector动态扩展时,编译器为什么不先判断一下原有空间后面的内存是否空闲?26. std::unordered_map和std::map的区别是什么?它们的底层数据结构是什么?27. priority_queue优先级队列的底层数据结构是什么?操作的时间复杂度是什么?28. 红黑树与AVL树有什么区别?与堆有什么区别?29. 如果让你用一维数组模拟一个大根堆,你怎么实现?30. C++编译过程分为哪几步?动态链接和静态链接的区别是?问题答案已经整理到专栏中了,关注我分享更多知识。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看30道真题和解析
0 点赞 评论 收藏
分享
1. 解释一下C++中的多态性。2. 什么是模板?它有什么用?3. 你能描述一下类型擦除吗?4. 命名空间的嵌套有什么好处?5. 析构函数可以重载吗?6. volatile和const的区别是什么?7. 虚继承的概念是什么?8. 异常安全性有哪些级别?9. 描述析构函数的调用顺序。10. std::vector是如何实现的?11. 如何实现单例模式?12. nullptr的作用是什么?13. std::list的优缺点是什么?14. std::unordered_map的实现原理是什么?15. 函数重载和运算符重载有什么不同?16. std::deque的特性是什么?17. 如何处理内存泄漏?18. 如何实现自定义异常类?19. std::shared_ptr的自定义删除器是什么?20. std::move的具体作用是什么?21. std::bind的用途是什么?22. std::optional的使用场景是什么?23. std::variant的特点是什么?24. 如何解决std::shared_ptr的循环引用?25. 如何实现自定义内存分配器?26. std::mutex的作用是什么?27. 条件变量的工作原理是什么?28. 如何实现观察者模式?29. std::string的移动构造函数有什么作用?30. static_cast和dynamic_cast的区别是什么?问题答案已经整理到专栏中了,关注我分享更多知识。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看30道真题和解析
0 点赞 评论 收藏
分享
1. 进程和线程有什么区别?2. 循环控制条件关键字goto被经常使用,但是goto的使用场合为什么受到局限?3. 字节对齐的理解,什么是字节对齐?4. 堆与栈的区别?5. 关键字const有什么含义?6. 已知一个数组table,用一个宏定义,求出数据的元素个数。7. 递归函数定义没有问题,递归深层次后易引发什么问题?8. TCP与UDP有啥区别?9. 内存泄漏和内存溢出是什么?10. 静态全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?11. 进程之间通信的途径有哪些?12. 循环控制条件关键字goto的使用场景有哪些?13. I2C最多可以挂多少个设备?14. volatile关键字的作用?15. 字节对齐的两种方式。16. 关键字static的作用是什么?17. 局部变量和全局变量可以重名吗?18. 内存布局中有哪些段?19. do……while和while有什么区别?20. 一个32位的机器,该机器的指针是多少位?21. const关键字使用有哪些?22. malloc()与calloc分配空间有什么不一样?23. 程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里。24. 死锁的处理方式有哪些?25. 死锁的4个必要条件。26. 引用与指针有什么区别?27. 循环控制条件关键字goto的使用场景有哪些?28. 实现循环的方式?29. sizeOf()与strlen()的区别?30. 预处理的作用是什么?31. 编译器的作用?32. 无限循环如何用C编写死循环?33. 堆和栈。34. static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?35. 产生死锁的原因是什么?36. 线程是否具有相同的堆栈?37. 循环控制条件关键字goto被经常使用,但是goto的使用场合为什么受到局限?38. 关键字const有什么含义?39. 预编译,何时需要预编译?40. 内存泄漏和内存溢出是什么?更多题目可以参考专栏  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看40道真题和解析
0 点赞 评论 收藏
分享
1. C++中的智能指针(如std::shared_ptr和std::unique_ptr)有什么区别?2. 解释一下C++中的RAII(资源获取即初始化)原则。3. C++中的friend关键字有什么作用?它如何影响封装性?4. 什么是C++中的Lambda表达式?它的应用场景有哪些?5. C++中的构造函数和析构函数有什么区别?6. 什么是C++中的“移动语义”?它如何提高性能?7. C++中的std::function和函数指针有什么区别?8. 解释一下C++中的“深拷贝”和“浅拷贝”。9. C++中的static关键字有什么作用?在类中如何使用?10. 什么是C++中的“虚函数表”(vtable)?11. C++中的std::shared_ptr的引用计数机制是怎样的?12. 如何在C++中实现一个简单的策略模式?13. C++中的std::array的优缺点是什么?14. 解释一下C++中的“异常处理机制”。15. C++中的模板特化(template specialization)是什么?如何使用?16. 什么是C++中的“命名空间”?它的作用是什么?17. C++中的std::map是如何实现的?18. 如何在C++中实现多重继承?有何注意事项?19. C++中的const关键字有什么作用?如何使用?20. 解释一下C++中的“拷贝构造函数”和“赋值运算符”。21. C++中的std::string的实现原理是什么?22. 什么是C++中的“类型推导”?23. C++中的volatile关键字有什么作用?24. 如何在C++中实现一个简单的状态模式?25. 解释一下C++中的“智能指针的循环引用”问题。26. C++中的std::atomic是什么?它的使用场景有哪些?27. 什么是C++中的“内联函数”?它的优缺点是什么?28. C++中的std::thread如何创建和管理线程?29. 解释一下C++中的“构造函数委托”。30. C++中的std::string_view是什么?它的使用场景有哪些?答案附在面经中  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看30道真题和解析
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务