嵌入式工程师秋招记录
以下是对自己秋招,包括实习经历的一些记录,总结自己找工作的大致历程,也希望能给后来的同学起到一些参考作用。
实习和秋招,我投递的岗位都是嵌入式软件工程师。但是,自己在实验室做的项目,参加过的比赛等等,其实都是没用过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##之江实验室##面试题目#