嵌入式面经111题答案汇总(含技术答疑)_3大嵌入式项目源码分享—嵌入式Linux项目

全网最受欢迎的嵌入式面经

面经一共32篇文章,包含嵌入式面试高频必问考点,21w+同学学习,4900+订阅,非常适合在找工作面经薄弱的同学,订阅点击链接(承诺免费技术答疑): --> 《嵌入式/C++面试题解析大全》

1、简介

本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业工作经验,整理超全面111道嵌入式面试题目答案解析(承诺提供专栏内容免费技术答疑),本专栏内容主要有:

  • 面试过程口头提问的问题答案汇总,承诺提供免费技术答疑,以及其他的交流,如要怎么入门c++,简历如何写,算法题如何刷等等,实现校招全陪伴!

2、项目经验

如果你找的是单片机,那就只要单片机的项目,如果你是嵌入式linux,你可以最多写一个单片机项目,其他都要写嵌入式linux的项目。

如果你找嵌入式linux应用开发工作,也可以写linux驱动项目,但必须有一个应用层的项目。

如果你找嵌入式linux驱动开发项目,最好也要有一个应用层项目,突出你对多进程多线程那些知识点有所了解。

项目数量2-4个,此时就需要靠过往的经验积累了,如果确实没有项目,可以向身边做嵌入式的同学请教一下,快速掌握,同时也分享几个项目供参考:

2.1 基于人脸属性识别的嵌入式电影推荐系统(嵌入式人工智能项目、可提供源码)

1)情况:为解决“信息过载”问题,提出基于人脸属性识别的广告推荐系统。

2)目标:独立负责,摄像头捕捉人脸并预测年龄、性别,显示屏可输入用户职业,系统根据此三大信息推荐8部电影并在显示屏显示。

3)行动:搭建RK3399开发板开发环境,通过OpenCV获取摄像头图像,Dlib检测人脸,采用WRN神经网络预测年龄、性别,结合基于用户的协同过滤以及决策树模型进行电影推荐。使用PyQt5设计人机交互界面实现职业获取和电影信息显示。

4)成果:在RK3399开发板可实时获取被推荐人年龄、性别、职业,据此推荐8部电影并将其电影名字和海报图显示在屏幕上。

alt

2.2 基于Linux6818开发板的视频播放器(最好的入门项目,可提供源码)

本项目基于嵌入式linux6818开发板,制作一个音视频播放器。开发板移植安装好mplayer,我提前下载了5个mv,使用mplayer命令分别在5个视频里截取某一秒的画面,共得到5张图片,也就是所谓的视频缩略图,将5个缩略图显示在显示屏的右边,当作是播放列表,支持上下滑动浏览播放列表,点击其中某个图片,即可播放对应视频,并实现播放器常见的开始、停止、上下首、音量调节、进度调节、全屏、静音等功能。使用到多进程技术:有名管道、消息队列、信号量;使用到多线程技术:互斥锁、条件变量。

alt

2.3 基于Linux6818开发板的智能车库项目(进阶项目,可提供源码)

没错,也是粤嵌6818开发板,搭配触摸屏、USB摄像头、音响,模拟实现真实场景中的智能车库常见功能:

  • 实时视频监控
  • 自动识别车牌
  • 自动语音播报
  • 停车计费

需要使用到V4L2子系统,FrameBuffer子系统、OpenCV、多进程多线程编程、ALSA子系统、智能语音引擎、网络编程、数据库编程等。

alt

3、嵌入式111道高频面试题

八股文不在于量多,熟悉以下111道题就够啦

第一章 进程线程

1.1 进程线程的基本概念

  • 1.1.1 什么是进程,线程,彼此有什么区别⭐⭐⭐⭐⭐
  • 1.1.2多进程、多线程的优缺点⭐⭐⭐⭐
  • 1.1.3什么时候用进程,什么时候用线程⭐⭐⭐
  • 1.1.4多进程、多线程同步(通讯)的方法⭐⭐⭐⭐⭐
  • 1.1.5进程的空间模型⭐⭐⭐⭐
  • 1.1.6进程线程的状态转换图 什么时候阻塞,什么时候就绪⭐⭐⭐
  • 1.1.7父进程、子进程的关系以及区别⭐⭐⭐⭐
  • 1.1.8什么是进程上下文、中断上下文⭐⭐
  • 1.1.9一个进程可以创建多少线程,和什么有关⭐⭐

1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解

  • 1.2.1什么是线程同步和互斥⭐⭐⭐⭐⭐
  • 1.2.2线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐⭐⭐⭐
  • 1.2.3并发,同步,异步,互斥,阻塞,非阻塞的理解⭐⭐⭐⭐⭐

1.3 孤儿进程、僵尸进程、守护进程的概念

  • 1.3.1基本概念⭐⭐⭐⭐⭐
  • 1.3.2如何创建守护进程:⭐⭐
  • 1.3.3正确处理僵尸进程的方法⭐⭐⭐⭐

第二章 C/C++高频面试题

2.1 c和c++区别、概念相关面试题

  • 2.1.1 new和malloc的区别⭐⭐⭐⭐⭐
  • 2.1.2 malloc的底层实现⭐⭐⭐⭐
  • 2.1.3在1G内存的计算机中能否malloc(1.2G)?为什么?⭐⭐
  • 2.1.4指针与引用的相同和区别;如何相互转换?⭐⭐⭐⭐⭐
  • 2.1.5 C语言检索内存情况 内存分配的方式⭐⭐⭐
  • 2.1.6 extern”C” 的作用⭐⭐⭐
  • 2.1.7头文件声明时加extern定义时不要加 因为extern可以多次声明,但只有一个定义⭐⭐⭐⭐
  • 2.1.8函数参数压栈顺序,即关于__stdcall和__cdecl调用方式的理解⭐⭐⭐
  • 2.1.9重写memcpy()函数需要注意哪些问题⭐⭐
  • 2.1.10数组到底存放在哪里⭐⭐⭐
  • 2.1.11 struct和class的区别 ⭐⭐⭐⭐⭐
  • 2.1.12 char和int之间的转换;⭐⭐⭐
  • 2.1.13 static的用法(定义和用途)⭐⭐⭐⭐⭐
  • 2.1.14 static的用法(定义和用途)⭐⭐⭐⭐⭐
  • 2.1.15const常量和#define的区别(编译阶段、安全性、内存占用等) ⭐⭐⭐⭐
  • 2.1.16 volatile作用和用法 ⭐⭐⭐⭐⭐
  • 2.1.17有常量指针 指针常量 常量引用 没有 引用常量⭐⭐⭐
  • 2.1.18没有指向引用的指针,因为引用是没有地址的,但是有指针的引用⭐⭐⭐
  • 2.1.19c/c++中变量的作用域⭐⭐⭐⭐⭐
  • 2.1.20 c++中类型转换机制?各适用什么环境?dynamic_cast转换失败时,会出现什么情况?⭐⭐⭐

2.2 继承、多态相关面试题 ⭐⭐⭐⭐⭐

  • 2.2.1继承和虚继承 ⭐⭐⭐⭐⭐
  • 2.2.2多态的类,内存布局是怎么样的 ⭐⭐⭐⭐⭐
  • 2.2.3被隐藏的基类函数如何调用或者子类调用父类的同名函数和父类成员变量 ⭐⭐⭐⭐⭐
  • 2.2.4多态实现的三个条件、实现的原理 ⭐⭐⭐⭐⭐
  • 2.2.5对拷贝构造函数 深浅拷贝 的理解 拷贝构造函数作用及用途?什么时候需要自定义拷贝构造函数?⭐⭐⭐
  • 2.2.6析构函数可以抛出异常吗?为什么不能抛出异常?除了资源泄露,还有其他需考虑的因素吗?⭐⭐⭐
  • 2.2.7什么情况下会调用拷贝构造函数(三种情况)⭐⭐⭐
  • 2.2.8析构函数一般写成虚函数的原因⭐⭐⭐⭐⭐
  • 2.2.9构造函数为什么一般不定义为虚函数⭐⭐⭐⭐⭐
  • 2.2.10什么是纯虚函数⭐⭐⭐⭐⭐
  • 2.2.11静态绑定和动态绑定的介绍⭐⭐⭐⭐
  • 2.2.12 C++所有的构造函数 ⭐⭐⭐
  • 2.2.13重写、重载、覆盖的区别⭐⭐⭐⭐⭐
  • 2.2.14成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)?⭐⭐⭐⭐
  • 2.2.15如何避免编译器进行的隐式类型转换;(explicit)⭐⭐⭐⭐

第三章 网络编程

3.1 TCP UDP

  • 3.1.1 TCP、UDP的区别 ⭐⭐⭐⭐⭐
  • 3.1.2 TCP、UDP的优缺点⭐⭐⭐
  • 3.1.3 TCP UDP适用场景⭐⭐⭐
  • 3.1.4 TCP为什么是可靠连接⭐⭐⭐⭐
  • 3.1.5典型网络模型,简单说说有哪些;⭐⭐⭐
  • 3.1.6 Http1.1和Http1.0的区别⭐⭐⭐
  • 3.1.7 URI(统一资源标识符)和URL(统一资源定位符)之间的区别⭐⭐

3.2 三次握手、四次挥手

  • 3.2.1什么是三次握手⭐⭐⭐⭐⭐
  • 3.2.2为什么三次握手中客户端还要发送一次确认呢?可以二次握手吗?⭐⭐⭐⭐
  • 3.2.3为什么服务端易受到SYN攻击?⭐⭐⭐⭐
  • 3.2.4什么是四次挥手⭐⭐⭐⭐⭐
  • 3.2.5为什么客户端最后还要等待2MSL?⭐⭐⭐⭐
  • 3.2.6为什么建立连接是三次握手,关闭连接确是四次挥手呢?⭐⭐⭐⭐

第四章 常见算法

4.1 排序算法

  • 4.1.1各种排序算法的时间空间复杂度、稳定性⭐⭐⭐⭐⭐
  • 4.1.2各种排序算法什么时候有最好情况、最坏情况(尤其是快排) ⭐⭐⭐⭐
  • 4.1.3冒泡排序⭐⭐⭐⭐
  • 4.1.4选择排序⭐⭐⭐⭐
  • 4.1.5插入排序⭐⭐⭐⭐
  • 4.1.6希尔排序⭐⭐⭐⭐
  • 4.1.7归并排序⭐⭐⭐⭐
  • 4.1.8快速排序⭐⭐⭐⭐⭐
  • 4.1.9快排的partition函数与归并的Merge函数⭐⭐⭐

4.2 STL库相关

  • 4.2.1 vector list异同⭐⭐⭐⭐⭐
  • 4.2.2 vector内存是怎么增长的vector的底层实现⭐⭐⭐⭐
  • 4.2.3 vector和deque的比较⭐⭐⭐⭐
  • 4.2.4为什么stl里面有sort函数list里面还要再定义一个sort⭐⭐⭐
  • 4.2.5 STL底层数据结构实现⭐⭐⭐⭐
  • 4.2.6利用迭代器删除元素会发生什么?⭐⭐⭐⭐
  • 4.2.7 map是如何实现的,查找效率是多少⭐⭐⭐⭐⭐
  • 4.2.8几种模板插入的时间复杂度 ⭐⭐⭐⭐⭐

第五章 Linux操作系统常见面试题

5.1 Linux内核相关

  • 5.1.1 Linux内核的组成⭐⭐
  • 5.1.2用户空间与内核通信方式有哪些?⭐⭐⭐⭐⭐
  • 5.1.3系统调用read()/write(),内核具体做了哪些事情⭐⭐
  • 5.1.4系统调用的作用⭐⭐⭐⭐⭐
  • 5.1.5内核态,用户态的区别⭐⭐⭐⭐⭐
  • 5.1.6 bootloader内核 根文件的关系⭐⭐⭐⭐
  • 5.1.7 Bootloader多数有两个阶段的启动过程:⭐⭐⭐
  • 5.1.8 linux的内核是由bootloader装载到内存中的?⭐⭐⭐
  • 5.1.9为什么需要BootLoader⭐⭐⭐⭐
  • 5.1.10 Linux内核同步方式总结⭐⭐⭐⭐
  • 5.1.11为什么自旋锁不能睡眠 而在拥有信号量时就可以?⭐⭐⭐⭐
  • 5.1.12 linux下检查内存状态的命令⭐⭐⭐

5.2 其他操作系统常见面试题

  • 5.2.1大小端的区别以及各自的优点,哪种时候用⭐⭐⭐⭐⭐
  • 5.2.2 一个程序从开始运行到结束的完整过程(四个过程)⭐⭐⭐⭐⭐
  • 5.2.3什么是堆,栈,内存泄漏和内存溢出?⭐⭐⭐⭐
  • 5.2.4堆和栈的区别⭐⭐⭐⭐⭐
  • 5.2.5死锁的原因、条件 创建一个死锁,以及如何预防⭐⭐⭐⭐⭐
  • 5.2.6硬链接与软链接的区别;⭐⭐⭐⭐⭐
  • 5.2.7虚拟内存,虚拟地址与物理地址的转换⭐⭐⭐⭐
  • 5.2.8计算机中,32bit与64bit有什么区别⭐⭐⭐
  • 5.2.9中断和异常的区别⭐⭐⭐⭐⭐
  • 5.2.10中断怎么发生,中断处理大概流程⭐⭐⭐⭐
  • 5.2.11 Linux 操作系统挂起、休眠、关机相关命令⭐⭐
  • 5.2.12数据库为什么要建立索引,以及索引的缺点⭐⭐

第六章 单片机常见面试题

  • 6.1 CPU 内存 虚拟内存 磁盘/硬盘 的关系⭐⭐⭐
  • 6.2 CPU内部结构⭐⭐⭐⭐
  • 6.3 ARM结构处理器简析 ⭐⭐
  • 6.4波特率是什么,为什么双方波特率要相同,高低波特率有什么区别;⭐⭐⭐⭐
  • 6.5arm和dsp有什么区别⭐⭐
  • 6.6 ROM RAM的概念浅析⭐⭐⭐
  • 6.7 IO口工作方式:上拉输入 下拉输入 推挽输出 开漏输出⭐⭐⭐⭐
  • 6.8扇区 块 页 簇的概念⭐⭐⭐⭐
  • 6.9简述处理器在读内存的过程中,CPU核、cache、MMU如何协同工作?画出CPU核、cache、MMU、内存之间的关系示意图加以说明⭐⭐
  • 6.10请说明总线接口USRT、I2C、USB的异同点(串/并、速度、全/半双工、总线拓扑等)⭐⭐⭐⭐⭐
  • 6.11什么是异步串口和同步串口⭐⭐⭐⭐⭐
  • 6.12 I2C时序图⭐⭐⭐⭐⭐

alt

高级系列专栏:

安卓(安卓系统开发也要掌握)

嵌入式

#嵌入式##嵌入式转岗的难度怎么样##嵌入式笔面经分享##嵌入式岗知多少##许乔丹嵌入式面经#
全部评论
可以的,写的很好呢
点赞 回复 分享
发布于 04-22 23:32 北京

相关推荐

昨天 11:00
深圳大学 Web前端
一面 面试官非常专业问问题非常有条理,是在我介绍项目的中途插入一些扩展性问题或者基础性八股,一面无手撕1.介绍一下你对 HTTP 这个协议的一些理解2.HTTP2 的多路复用解决了并行发送的问题,但是在一条链路中并行发送 123 这些数据,它怎么知道哪些数据是属于第一个请求?哪些属于第二个请求?接收端它怎么知道当前收到这个数据包,它是属于一还是属于 2 还是属于3?3.有没有更深入一点的理解HTTP2 头部压缩是做什么?4.HTTP 的缓存机制5.项目实际项目之中是怎么去配置和怎么利用协商缓存和强缓存机制?实际项目中应该怎么去考量这个时间和过期机制?6.加载相关的优化业界是有哪些常见的优化方案?7.CDN详细说一下8.懒加载是怎么达到优化效果?以及它的核心理念是怎么样的?9.无限滚动那种场景除了你刚刚说的这个懒加载,这种长列表还有没有其他一些优化点呢?10.上面已经滚动到可视区以外的内容进行一个处理,具体是做了什么?(回收DOM)11.介绍一个你觉得最能体现你技术能力的一个功能或项目12.长列表的图片的延迟加载。用户他可能很快的往下滑,比如说他当前是属于第一屏。他下面的第二、第三屏,你们是先用占位的空间占着那个图片的位置。用户他可能一滑的话立马划过了,一下子到了第五、第六屏。那么第二、第三屏这些被他快速划过了,你们还会继续去加载渲染图片吗?(回答防抖优化)13.平时在开发项目和学习的过程中,你是有用 AI 吗?14.开发项目的流程之中有没有使用 AI 去帮你开发项目?会用哪些 AI 的工具呢?15.IDE 相关的有没有用?比如说 cursor 啊?平时 cursor 开发具体是怎么去用吗?比如说让它去给你开发项目的时候。16.用这种 cursor agent AI 给你开发这个过程之中,你觉得会有哪些坑?17.有没有了解过业界在编程使用 AI 的一些最佳实践或工作流?或者一些相关的配套的 skill MCP 还有实践经验来帮你更好的开发呢。18.除了开发之外,在哪些编程的节点或流程上,你觉得可以用 AI 继续进行一些辅助或者是提效的呢。19.在实际使用中或者你什么经验去怎么去review,或者是测试 AI 的产出,避免幻觉呢?20.有没有了解过多 agent 甚至是 team 模式?你觉得怎么利用多 agent 甚至是 agent 质检的这种模式在接入我们的开发流程之中呢?你觉得比较理想的,又能提高效率,又能提高 agent 的自身的代码质量的一个流程是怎么样?21.你平时是怎么去关注现在迭代很快的 AI 知识,或者是一些理论或一些实践22.有了解最近 Git上在编程方面有哪些比较火的一些项目吗?23.有没有自己搭一些openclaw?二面面试官也非常好1.实现流式传输,为什么选择RXJS,而不是用原生的event source? RXJS的核心价值是什么?2. SSE 和 Web SOCKET 有什么区别?3.流式输出的话在前端怎么渲染的?是逐字的去追加 DOM 呢?还是做缓冲区批量更新?有没有遇到一个频繁的DOM 更新导致的性能问题4.文件上传解析这部分前端主要负责的哪些部分?主要做了些什么?5.在这个项目中,你觉得前端部分和后端部分的工作量大概是什么比例?6.keepalive的作用7.typescript 的 type 和interface有什么区别?8.BFC是什么?9.从这个浏览器地址栏输入一个 URL 地址到页面呈现的一个过程10.webpack和vite11.算法题:防抖12.前面几次面试的不足点13.vue、node更擅长哪一块?14.职业发展方向?15.AI 的这个辅助编码和独立编码怎么看16.让你快速上手react ,会有一些什么方式三面实习经历为什么会考虑前端开发自学前端的学习路径选一个有挑战性的项目讲讲,有没有可以优化的点学习 AI 大概多久了skill 跟 MCP 有什么区别有开发过 skill 吗openclaw怎么实现用户需求的个人规划实现一个谷歌、百度首页搜索框要注意哪些点?算法:找一个链表中间的节点、找一个链表倒数第n个节点已oc,祝大家早日上岸
点赞 评论 收藏
分享
评论
4
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务