嵌入式工程师秋招记录

以下是对自己秋招,包括实习经历的一些记录,总结自己找工作的大致历程,也希望能给后来的同学起到一些参考作用。

实习和秋招,我投递的岗位都是嵌入式软件工程师。但是,自己在实验室做的项目,参加过的比赛等等,其实都是没用过linux操作系统的,用的只是裸机,对嵌入式方向的理解比较浅。我在研二的时候开始自学嵌入式linux,跟着韦东山老师的网课,才有了更深的理解。

秋招之前还参加过一些实习的笔试面试,记得四月参加华为实习的机考,被狠狠打脸,一题都不会,之后才是投入更多精力刷leetcode,这对后续秋招准备也起到很大作用。最终是在暑期去了海康威视做嵌入式软件实习,应用方向的。不过实习一个月左右就返校了,其实感觉对秋招的帮助不是很大,反而是占用了很多刷题时间,现在想想那段时间真的很累,脑力体力劳动都需要,不过好在公司安排住宿,报销来回车费。

个人感觉,要真正深入学嵌入式linux,必须是对操作系统有比较深的学习,这一点自己做的不是很好。本科测控,硕士控制工程,没有学过操作系统等等的计算机专业基础课,后续都是为了秋招应试来学了操作系统,数据结构与算法,计算机网络这些课,理解的也不够深入,是个人的短板。

现在嵌入式工程师的校招,也是都要考察编程的,不论是笔试还是面试(真的是越来越卷了,和纯软件区别不大)。我参加过的面试中,除了大疆没有手撕代码,其他几乎所有大小公司都会有要求,然而对于我,或者是部分非计算机科班的同学来说,编程水平和训练是不够的。我是从四月开始刷leetcode和牛客,主要还是刷leetcode,网上也有很多大牛总结的刷题经验。我跟的是“代码随想录”,博主carl在B站也有讲解算法的视频,有微信公共号,还有知识星球,每天都有很多同学打卡,分享和记录自己的刷题经验。

嵌入式相关的面试经验,可以参考“嵌入式与linux那些事”公共号,有整理好的面试经验文件。博主仲很不错,有问题和博主讨论,也都很热心的回答,给本人的秋招起到了很大的帮助。

21年秋招,芯片类的岗位薪资暴涨,嵌入式方向的岗位也沾了一点光,总体的薪资待遇比之前预期的要高。拿到的offer:百度、之江实验室、TCL、华为、大疆、联想、三一重工。最终选择大疆。新的一年继续努力,希望未来在跟广阔的平台上更进一步。

以下是秋招笔试面试的部分记录(都是每次笔试面试后记录的,有的回忆不是很全):

百度 北京 嵌入式linux(提前批,没有笔试)

7.27 一面,1h

1.问项目,还问了神经网络的算法。

2.static,vailate,const关键字。

3.栈和队列。

4.数组和链表。

代码:

1.合并两个链表,按顺序。

2.去除字符串里面的空格。

7.27 马上二面,1.5h

1.还问项目,问里面的难点,还问了一下本科的毕设,因为写在简历上。

2.也问了static关键字,函数里用static定义的变量,存在哪个区?

3.malloc,在函数里定义一个很大的数组,应该直接定义还是用malloc?

代码:

1.复制链表。

2.判断计算机是大端还是小端。

3.两数之和,leetcode第一题。

4.Linux使用多线程,实现软件定时功能。聊了很久,写了一点伪代码,最好在面试官引导下,说出来他想要的解决方法

7.30 三面,30min

部门经理面试这样,技术问题没怎么问,大致介绍了项目,问了难点,怎么解决,平时怎么学习,未来职业规划,还问了一些场景问题,比如团队做项目,怎么效率更高,对小度音响有了解吗,认为研发技术上有哪些难点。


华为 上海无线 嵌入式软件工程师

9.11 笔试

1.有向无环带权图,找关键路径。

2.内存分配算法。

3.两个数组,给定规则,求最长有连续关联数据的子数组。

9.24 一面,45min

1.介绍项目,问软件部分的结构框架

2. static关键字

3.大小端,字节对齐,问网络通信一般是什么字节序?

4.存储结构,堆和栈的区别,还有哪些存储区?

5.宏函数和内联函数的区别。#define在编译的那个环节使用?

6.问指针问题,给出四行代码,问含义

int *p[10]

int (*p)[10]

int* (*p)[10]

int (*p)[10](int*)

7.手撕一个代码,给定数组和一个整数k,问有多少长度至少为2且元素和为k的倍数的子数组。开始写的方法暴力,后面和面试官讨论说出来思路。

当天过了一小时二面,45min

1.介绍项目

2.大小端

3.字节对齐问题,给一个结构体

struct{

char a;

char b;

int c;

}

问在32位机器上,使用sizeof()多大,我说8字节,面试官说还可能是12字节,如果是这种情况:

struct{

char a;

int c;

char b;

}

4.数据结构,问满二叉树,完全二叉树,BST二叉搜索树,说自己的理解和区别。

5.快排,冒泡排序的时间复杂度,什么情况下快排时间复杂度比冒泡高?

6.手撕一个代码,二叉树路径总和位sum的路径有多少,不一定从根节点开始,但一定从上向下。用两层递归写出来。

7.问对无线通信有什么了解。

9.26 三面,20min

1.自我介绍,大致说一下项目。

2.看你项目经历很丰富,竞赛奖项,自己认为收获最大的是哪个项目经历?

3.竞赛时作为团队负责人,认为带一个团队最重要的是什么,遇到过什么问题,怎么解决?个人利益和团队利益冲突了怎么办?

4.生活中遇到过什么困难?

5.朋友多吗?遇到困难会和朋友倾诉吗?事后自己有什么感想?

6.海康实习在杭州,无线在上海,能接受来上海吗?

7.对华为的了解和看法

8.反问


大疆 上海 嵌入式工程师

8.1 笔试

单选多选简答编程。

8.24 电话一面,50Min

介绍项目,问了项目的freeRTOS操作系统怎么分线程任务的,怎么实现同步互斥,问了一些项目没听懂的地方

问有没有做过linux相关的项目,我说跟着网上的课程做过一个小项目。

开始提问linux操作系统:

1.静态库里面定义了一个静态变量,线程A访问并改变,线程B再访问这个变量,这个值是改变的吗?

2.两个进程的内核空间是共享的吗?

3.如果两个进程,都要去调用一个设备驱动,设备驱动里面定义的变量是在内核态吗?

如果进程A访问并改变了这个变量,那么进程B再访问,是不是读到改变之后的值?

4.进程A执行,发生一个中断,中断发了一个信号,会让更高优先级的进程B执行,这时候中断结束,应该返回进程A还是进入进程B?

5.还问了自旋锁和互斥锁区别?

6.问了虚拟地址怎么转换到物理地址?

7.问了一下海康威视的实习。

8.有没有用过大疆的产品。

9.3 二面,30min

主要根据项目问,没问八股面经

1.问传感器测力的原理,应变片怎么把力转换成电信号,我画了图给他看。

2.扣了一下我用的AD转换芯片的问题,问转换完成一次时间是多少,问主控芯片频率,大概意思就是是否来得及读取信号?

3.还问了数字滤波后信噪比改善多少。追问怎么知道真值的,我说自己设计的标定平台,加上指定大小和方向的力,算的是一个相对值,后面需要解耦计算的。

4.还问了项目有没有用操作系统,我说用了freeRTOS。

5.反问。

9.11 三面,20min

是一个硬件工程师,做技术的,但没问技术问题

1.自我介绍,大致介绍了一下项目。

2.为什么想要加大疆?

3.问对大疆的产品有什么了解,有没有用过,哪些功能印象深刻,觉得有哪些技术上的难点?

4.自身的优势,自己想从事哪方面工作?

5.嵌入式和硬件关联很大,如果一共硬件工程师做的硬件出问题,把锅甩给你,你会怎么做?

6.有没有了解过大疆的工作氛围?

7.反问


网易 杭州 C++工程师

笔试

四个编程题,基本都写出来了

1,1,1,0.8

8.29 一面,55min

内容偏八股,比较常规。平台有问题,电话面试,就没有写题目了

介绍项目

1.进程,线程区别,优缺点,通信方式。

2.中断相关问题。

3.死锁的必要条件,怎么处理死锁。

4.栈和堆有什么区别。

5.内核的调度方式。

6.TCP,UDP,稳定性,区别,适用场景。

7.路由相关问题。

8.反问。

8.31 二面,47min,很多不会,挂了

1.问TCP,UDP使用,在项目里面有没有用过,怎么用,三次握手,四次挥手,为什么断开连接是四次?

2.问一方断开,另一方还连接的情况,是否可以长期存在?调用什么函数断开连接?有没有只断开一方连接的函数?

3.问三次握手为什么ACK信号是SYN信号值+1?

4.问项目里面,软件代码问题,怎么调试?

5.问阻塞,非阻塞,epoll,多路复用。

6.问到TCP服务器客户端编程,怎么处理多个客户端?

7.问到http搜索百度,有哪些过程?

8.问swap分区?

9.问ps看进程执行状态,问D代表什么意思。

10.问linux文件系统。

11.问0-3G用户空间有哪些内容。


美团 北京 车载部门,硬件/车载总线工程师

8.15 笔试

笔试,四个编程,一个多选

1,0.64,0.36,0

8.23 一面,50min,很顺利(面试官还加了微信)

1.,介绍项目,还大致介绍了一下海康威视的实习,问linux驱动模型。

2.问驱动程序里面,如果有一个buffer,在不同场景下需要定义不同大小,怎么办?

3.反问

写了两个题目,都做出来了

1.二叉树最大深度 NC13

2.重排链表,然后和面试官说了自己的思路 NC2

这两题在牛客题库里面都有

8.26 二面,30min,挂

写题:自己定义双向链表,构造,插入,删除操作,没什么好写的

问题:

聊项目,还问了本科毕设项目,大致说了一下

1.问C++多态。

2.问会不会数字信号处理的算法,傅里叶变换什么的。

3.问传引用和传指针区别。

4.问智能指针。

5.反问

TCL 深圳 C++软件工程师(嵌入式方向)

笔试

60个选择,45Min

一面,40min

主要问项目相关的东西,不算深挖,详细介绍的目前实验室的项目,也大致介绍了本科的毕业设计

面试官介绍了一下TCL的部门,软件,驱动,硬件,AI算法等等,记名字不算很清楚

说到软件和硬件部门不在一个城市(惠州,深圳什么的),说我软硬件都会,有很大优势

二面,15min

1.介绍项目。

2.问C和C++更熟悉哪个。

3.malloc分配的内存在哪里。

4.有做项目的收获,挑战,怎么学习新知识。

5.反问。


联想 北京 软件工程师

笔试

联想笔试,40选择+1编程(自己实现string类,写构造函数,析构函数,拷贝构造函数,重载运算符)

面试,25min

1.介绍项目。

2.单片机启动程序,在执行main之前的是什么。

3.keil怎么使用库。

4.内核和应用数据交互方法。

5.kmalloc()和用户态的malloc()有什么区别。

6.问了堆和栈的区别,static关键字。问到malloc()后不释放会怎样。

7.问了解哪些数据结构,然后问怎么把链表倒叙输出。

8.二分查找。

9.左++和右++,优先级哪个高,问a = 5; a = ++a;和a = 5; a = a++;最后a是多少。

10.问懂不懂python。

11.面试官介绍了一下部门。

12.反问。

之江实验室 杭州 驱动工程师

笔试

两道编程,具体内容忘了,比较简单。

面试,40min

唯一遇到的要求做PPT在腾讯会议上展示的,主要介绍在校做的实验室项目,有3位老师和1位HR听我演说,全程40分钟左右,总体氛围感觉比较轻松,后续问了一些问题,反问。

#百度##华为##美团##联想##TCL##之江实验室##面试题目#
全部评论
楼主薪资咋样
2 回复 分享
发布于 2022-02-19 21:05
感谢分享!
2 回复 分享
发布于 2022-02-22 16:29
那个嵌入式linux博主怎么讨论,买了他的专栏也加不上
1 回复 分享
发布于 2023-10-30 11:12 河南
请问up在研究生什么时间段开始实习的?
点赞 回复 分享
发布于 2022-03-13 15:57
感谢博主 想问一下我想暑假去海康实习 当一段实习经历可以吗 然后再找华为的实习 现在研一下
点赞 回复 分享
发布于 2022-03-28 09:32
请问联想是嵌入式软件工程师吗
点赞 回复 分享
发布于 2022-09-04 22:34 江苏
感谢楼主分享
点赞 回复 分享
发布于 2022-10-26 00:12 山西

相关推荐

#牛客AI配图神器#每次裸面后都是悔恨没有好好准备1. 什么是操作系统的进程管理?它的主要任务是什么?2. 描述Linux中的文件权限管理机制。3. 什么是虚拟化技术?它的应用场景有哪些?4. 描述嵌入式系统中的中断处理机制。5. 什么是网络地址转换(NAT)?它的作用是什么?6. 描述操作系统中的内存管理策略。7. 什么是实时操作系统(RTOS)的特点?8. 描述嵌入式系统中的串行通信协议。9. 什么是软件开发生命周期(SDLC)?10. 描述嵌入式系统中的调试技术。11. 什么是网络流量控制?常见的流量控制机制有哪些?12. 描述TCP/IP模型的各层功能。13. 什么是云计算?它的基本服务模型有哪些?14. 描述嵌入式系统中的PWM(脉宽调制)技术。15. 什么是操作系统中的优先级调度?16. 描述嵌入式系统中的电源优化技术。17. 什么是数据结构?常见的数据结构有哪些?18. 描述嵌入式系统中的实时数据处理。19. 什么是软件架构?它的设计原则有哪些?20. 描述嵌入式系统中的时钟管理。21. 什么是网络安全中的***?它的工作原理是什么?22. 描述嵌入式系统中的固件设计原则。23. 什么是分布式系统?它的优势和挑战是什么?24. 描述操作系统中的线程模型。25. 什么是数据包?它在网络通信中的作用是什么?26. 描述嵌入式系统中的RFID技术。27. 什么是操作系统中的死锁检测?28. 描述嵌入式系统中的温度传感器工作原理。29. 什么是多任务处理?它的实现方式有哪些?30. 描述网络中的负载均衡技术。31. 什么是容器化技术?它与虚拟化的区别是什么?32. 描述嵌入式系统中的图像处理技术。33. 什么是软件版本控制?常见的版本控制工具有哪些?34. 描述操作系统中的用户态和内核态。35. 什么是信息安全中的加密算法?常见的加密算法有哪些?36. 描述嵌入式系统中的无线通信协议。37. 什么是API(应用程序接口)?它的作用是什么?38. 描述操作系统中的系统资源管理。39. 什么是边缘计算?它的应用场景有哪些?40. 描述嵌入式系统中的自检机制。问题答案已经整理到专栏中了,关注我分享更多知识。https://daxprogram.com/
点赞 评论 收藏
分享
下面就根据我的实际情况,来和大家分享一下技术方面的经验吧。对于Linux方面的知识,就很遗憾没办法帮助到各位了(我就是个小菜鸡/(ㄒoㄒ)/~~)在这里我就只简单提一下需要准备哪些方面的知识,因为把所有内容都写在同一个帖子里太长了。C语言无论是嵌入式单片机还是嵌入式Linux,C语言都是必考的内容,可以说C语言是嵌入式软件工程师吃饭的家伙,相信C语言的重要性不用多说。C语言这块的话,随着不断复习,自己的一个熟练程度也会越来越高,所以最重要的就是多看多练。对于嵌入式工程师来说C语言基本上是要完全掌握并且熟练使用的,下面就先列出在笔试面试中C语言需要掌握的/比较重要的知识点:运算符优先级输入输出操作原码、反码、补码预处理关键字堆栈数组指针函数字符串结构体、联合体内存分配主要是这几个大的方向,输入输出是必须要熟练的,因为在笔试编程题里面是几乎必须要用到的,这个部分可以去刷算法题来熟悉一下。关键字所有的关键字都要了解,像是static、volatile、extern、sizeof都是比较常考的。堆栈和指针都是重中之重,一定要全面完整地学习。像是大题的话往往是考算法、数据结构以及对字符串的一系列操作。C++如果有时间的话最好去学一下,就封装、继承、多态之类的,所以推荐把其他部分内容复习完以后还有多时间的话可以学一学C++方面的一些知识。单片机单片机这部分主要是针对你在项目中常用的芯片,一般来说大部分人是以STM32为主。我就针对STM32来说说有哪些重要的知识点:GPIO中断定时器通信接口在这些里面最常被问到的就是中断和通信接口。其中通信接口主要就是IIC、SPI、UART。数据结构与算法数据结构对于嵌入式软件岗位来说,数据结构相对没有互联网行业的招聘那么重要,但还是属于必考的知识点。对于嵌入式岗位,数据结构可以选择性地学习,不用全部都学会,毕竟准备的时间是有限的,当然有充足的时间的话,当然建议都学会了,因为对于顶级大厂来说,数据结构是考核的相对重点。数据结构对于大多数不冲顶级大厂的同学来说,主要学数组、链表、队列、堆栈就可以了,至于二叉树之类的,在我整个秋招的过程中,几乎没有被问到。可能像是华为这种公司会考到。算法算法这部分建议去********或者牛客网刷一下题,起码刷个20道简单题,熟练一下做题的方法,输入输出这些,对字符串的操作这些,因为后面笔试基本上都会考两题大题,基本上刷个20题,稍微总结一下,然后加上平时的积累就问题不大了,如果想进华为这样的大厂,就要刷中等甚至困难的算法题了,这个看各位自己的取舍,也可以在牛客网上看看你想投的那家公司的笔试面试侧重点在哪里,比如说华为笔试就是考3道算法大题。网络网络这部分考得还是比较少的,有些公司会问,有些公司不问,如果是涂鸦智能这样做物联网的公司那肯定是会问的。这部分就需要知道一些基础,如果项目中有用到的话就需要将项目中用到的协议了解清楚,以及你在做这个项目的时候为什么要选择这个协议而不是另一个协议。我就在一个物联网项目中有使用到MQTT协议,那我就去单独学了这部分的知识,如果并没有项目涉及网络这一块的话就掌握一点基础知识就好了,即使不理解也死记硬背背下来,但是还是建议大家能在理解的基础上记忆,不然面试官稍微往深入问一点就答不出来了,最经典的两个问题:tcp和udp的区别三次握手四次挥手这部分内容比较少,就不单独展开来讲了,主要就是上面提到的两个问题,把那两个问题理解了去面试非网络领域的公司就没什么大问题了。操作系统操作系统这部分的基础知识是肯定要会的,尽管你可能像我这样在大学阶段只用过单片机,并且没在上面跑过uCOS或者FreeRTOS之类的实时操作系统的话强烈建议要去学一下这方面的知识,因为尽管是投的嵌入式单片机的岗位,往往也是要求会实时操作系统的。所以建议可以去学一下FreeRTOS或者RT-Thread之类的实时操作系统,有时间的话最好能够在自己的项目中实践一下,时间不够的情况下就把基础知识系统地先学一下。其次就是Linux,尽管投的是嵌入式单片机岗位,但嵌入式在广泛的一个定义里,大家还是默认是以Linux为主,所以Linux的基础知识也要会,因为有些公司在笔试的时候就会涉及到,这方面的话主要是要理解一些理论知识,知道线程进程,知道一些基础的指令,最好可以在ubuntu上写一个代码出来gcc编译一下。会这些Linux相关内容基本上就可以让你在笔试阶段不那么吃亏,当然只会这些是不足以支撑你去找一个纯Linux岗位的工作的。找工作流程对于大部分公司来说,招聘流程是这样的:投递简历→测评→技术笔试→技术一面(初试)→技术二面(复试)→HR面(终面)→offer谈薪。有部分公司是没有单独的HR面的,就是技术二面会换成综合面,前半段聊技术问题,后半段聊一些其他东西。一般来说技术一面的面试官是你将来入职后的同事,技术二面或者综合面试的面试官就是你将来入职后的主管。主要的流程就是这样,不同的公司会有不同的招聘流程,不过都是大差不差的。其他面经题目可以看这个牛油的总结,链接在下边https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
评论
48
340
分享

创作者周榜

更多
牛客网
牛客企业服务