jovan的2021秋招总结
个人背景
大家好,我的秋招已经告一段落了,写下一些总结,记录下这三个月的面试经历,希望能帮助到后面找工作的伙伴们。暑期实习:拿到了OPPO、MTK、美团、京东等offer,最后去了oppo实习了三个多月,在其中有输出,也有成长。秋招提前批、正式批:因为只想在广深工作,所以秋招只投递公司共20家。被挂简历的企业:(华为、英特尔、tplink、autox)。投递后没有消息的:(小马、tcl、寒武纪、vivo)。获得公司offer的有:大疆(sp 签约~)、Arm china(sp)、小米(sp)、荣耀(sp)、联发科、美团、紫光展锐、全志科技、星宸科技(sp)、科大讯飞、CVTE、诺瓦科技(sp)。总体来说投的公司不是很多,但有面试的情况下的offer率为100%,希望我的面经和专栏能帮到后来者吧!
学习经历
我在大一的时候加入了一个老师的实验室,在里面开始玩玩stm32单片机,实验室是做飞控项目的。在大一到大二的时候基本都在这里面度过,也学到了很多嵌入式的相关知识。大二疫情期间开始学习RTOS、linux,也陆续自己做过一些小项目。加入了一个的学生创业团队,开始打一些比赛,挑战杯、、互联网+、ican等。大三开始基本就不打比赛了,继续学习嵌入式相关的内容。
实习经历
春招实习投了几个厂:OPPO、联发科、京东、阿里、网易、CVTE等。其中拿到了OPPO、联发科、京东的offer。最后在oppo的穿戴软件部门实习了三个月的时间,在其中的工作内容主要是跟OPPO WATCH2智能手表相关,上班状态基本是双休,工作日偶尔加班(因为我是实习生)。用到的技能有linux\RTOS、LVGL、C/C++、python等。
面试经历
接下来就是面试的记录总结啦,由于当初比较懒,基本上都是以记录题目为主,所以大部分题目没有写下自己的答案。
联发科面试 oc
联发科提前批一面 30分钟 8.2
1.为什么不留在oppo?2.说下中断和轮询3.平时学嵌入式有看什么书4.介绍电视线 balabala 两种工作的情况5.问我 更倾向于哪种6.音频 视频 外设的驱动7.框架性回答一个嵌入式系统启动到结束的过程8.反问
联发科提前批二面 30分钟 8.9
1.说说实习三个月的感受2.switch_context的底层原理 (freertos)
讲了下切换的场景,pendsv函数的实现,switch_context里面关于pcb_current指针的逻辑等。
3.实习做的偏应用层,为什么要学习freertos呢4.面试官讲讲电视线的情况,业务做得好可能要两年,成为专家要四年。5.有学过linux/安卓吗 学过linux 写过一些驱动6.这些驱动是在开发板上写的还是在pc上模拟的?7.有什么想问我
总结
联发科提前批的面试给我的感觉是比较简单,面试氛围比较轻松。二面的时候面试官问了一个freertos的问题后,我回答得较好,然后直接就说后面不想怎么问了,后面也是第一个谈薪的offer。
星宸科技 oc
星宸科技技术面 一小时 8.12
- C语言基础 sizeof 指针、数组的大小
- 局部变量存在哪里,malloc的变量在哪里
- Linux怎么搜索所有.so文件
- 平时有没有用github
- 双向链表和单链表
- Cpp的map、list、vector的底层数据结构
- 多态的实现
- 静态链接和动态链接
- 动态链接的代码在数据段和代码段的分配
- 项目管理的场景,你需要一个接口,需要别的部门的人来提供,他以很忙为由推脱,你这边也很急,要怎么处理?角色调换,又该怎么处理?
- 介绍一个最成功的项目
- Gdb的指令
- Linux驱动的ioctl
- 内核向应用层获取数据用哪个接口
- 讲下i2c
- 有什么想问我
星宸科技HR 半小时 8.17
- 为什么不想留在oppo
- 能接受几点下班?
- 介绍下我们公司
- 怎么看待互联网和半导体行业
- 介绍最成功的一个项目,遇到了什么困难,领导不喜欢怎么办
- 介绍最成功的一个比赛,遇到了什么困难
- 在建模比赛中怎么分工,谁作为领导的角色
- 期望的工作强度是怎样的
- 家在哪里
- 期望薪资
- 有什么想问我?
总结
hr面后过两天就发意向书了,九月份谈薪的时候开的跟mtk差不多,拒掉后hr再提薪了一次,后再拒。不过面试的体验还是很好的!
大疆
大疆一面 一小时 8.19
- 自我介绍
- Linux创建线程有没有设置过调度相关的参数
主要考察第二个参数:属性对象主要包括是否绑定、是否分离、堆栈地址、堆栈大小、优先级。默认的属性为非绑定、非分离、缺省的堆栈、与父进程同样级别的优先级。
- linux 线程调度的几种方法
Linux系统的三种调度策略: 一、SCHED_OTHER:分时调度策略(Linux线程默认的调度策略)。 二、SCHED_FIFO:实时调度策略,先到先服务。该策略简单的说就是一旦线程占用CPU则一直运行,一直运行直到有更高优先级任务到达或自己放弃。 三、SCHED_RR:实时调度策略,时间片轮转。给每个线程增加了一个时间片限制,当时间片用完后,系统将把该线程置于队列末尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。
- Linux中的条件变量怎么用? 以及虚假唤醒的总结
- 接上面条件变量 Cond wait后还持锁么
- 硬件中断触发的全过程、堆栈的保存
进入异常步骤: 1. 处理器在当前堆栈上把xPSR、PC、LR、r12、r3~r0八个寄存器自动依次入栈。 2.读取向量表(如果是复位中断,更新SP值) 3. 根据向量表更新PC值 4. 加载新PC处的指令(2、3、4步与1步同时进行) 5.更新LR为EXC_RETURN(EXC_RETURN表示退出异常后返回的模式及使用的堆栈)。 退出异常步骤: 1.
根据EXC_RETURN指示的堆栈,弹出进入中断时被压栈的8个寄存器。 2.
从刚出栈的IPSR寄存器[8:0]位检测恢复到那个异常(此时为嵌套中断中),若为0则恢复到线程模式。 3.
根据EXC_RETURN,选择使用相应SP。
- 讲下MMU的相关知识
- 多线程、多进程的方式
- 共享内存的底层原理
- 线程和进程的理解
- 调用一个函数后,会返回到哪里?
这里应该是想问栈帧的变化
- 程序在内存中的分配
- 未初始化的变量打印出来是什么值
全局的初始化为0 局部变量未知
- 编译和链接的过程
- 平时有没有用GDB
- 讲下为什么断点调试可以停在那里
软件断点在X86系统中就是指令INT 3,它的二进制代码opcode是0xCC。当程序执行到INT3指令时,会引发软件中断。操作系统的INT3中断处理器会寻找注册在该进程上的调试处理程序。从而像Windbg和VS等等调试器就有了上下其手的机会。17. Mmap的使用 了解页表么
- TCP创建sever的过程
- I2c、SPI讲下,i2c主从能互换不
- 为什么不考研
- 有什么想问我
大疆二面 半小时 8.26
- 自我介绍
- Oppo实习的内容
- 四轴飞行器有几个自由度 6
- 控制往左偏航 四个电机需要怎么操作
- 遥控用的什么协议
- 讲下另一个项目
- 为什么项目用udp不用tcp
- 讲下I2c和spi
- Ic是怎么读写数据的
- I2c速率有哪些 跟什么有关
大疆三面 半小时 9.3
- 自我介绍
- 介绍最有挑战性的一个项目 问了相关问题
- 你的优势跟劣势
- 最想从事哪方面的工作
- 有了解大疆的产品吗
- 跟自己做的飞行器有什么不同
- 有什么想问我
总结
dji的一面问得比较多比较深入,后面两面就感觉比较水了,三面类似于hr面。面试官级别很高,是一个dji机器学习团队的leader,压力随之而来,所以面起来有点磕磕碰碰的。10.23hr电话谈薪 sp,思考了两天后决定拒掉arm中国,签约大疆,去追逐自己的梦想hhh,总而言之,希望自己能够在dji学有所成!
荣耀 oc
荣耀一面 半小时 8.21
- 问笔试的题目,第一题还能怎样优化
- 说下实习时候测试的心得
- 毕业设计想做什么
- 打算怎么开展
- 从获得的奖项中选一个去讲
- 有什么想问我
荣耀二面 半小时 8.22
- 在oppo实习负责的内容
- 实习开发过程中遇到了什么困难
- 工作地点的意向?
- 更希望做上层应用还是底层?
- 你在学校做的项目是在实验室做的还是自学的?
- 有什么想问我
荣耀综合面 9.7
- 对加班的看法
- 华为和荣耀 oppo的比较
- 大学怎么克服困难
- 给自己的大学生涯打几分? 为什么
- 有独自旅游的经历吗
- 对996的看法
- 工作部门的意向
- 有什么问我
- 紫光一面 40分钟对加班的看法
- 华为和荣耀 oppo的比较
- 大学怎么克服困难
- 给自己的大学生涯打几分? 为什么
- 有独自旅游的经历吗
- 对996的看法
- 工作部门的意向
- 有什么问我
总结
荣耀的面试体验总体来说一般,技术类问题也没问很多,综合面的女面试官在面试的时候还在嚼口香糖,有点不是很礼貌,另外公司加班氛围特别重,所以对荣耀并没有太多的兴趣。
紫光 oc
紫光一面 40分钟 8.24
- 技术面第一次见女面试官~
- 四轴飞行器项目中负责了哪些内容
- 讲一下电子量产工具项目
- 这个项目的需求是什么?市面上已经有了吗
- 实习过程中做了什么
- 对工作的意向,有没有哪些内容是比较想做的
- 有什么问我
紫光二面 40分钟 8.29
- 自我介绍
- 介绍第一个项目~
- 气压计的精度 5cm
- 介绍第二个项目
- 介绍实习内容
- 面试官对实习做的产品很感兴趣 balabala蛮久
- 说一下 Const的作用
- 说一下 const int *p和 int const *p
- 有什么问我 10.面完就告知通过了
总结
面试体验还不错,两轮面试的面试官都比较有耐心,二面面试官对实习做的东西比较感兴趣以及认可,但因为紫光是交叉面试,最后都是扔到池子里等人捞,所以最后没有适合的部门捞就没后续了。
CVTE oc
CVTE提前批技术面 1个多小时 8.25
- 对c厂有什么了解
- 介绍自己
- 实习负责的内容
- 有什么成长?
- 找工程师review代码有什么心得?
- GPIO能配置成什么功能
- IO输入输出有哪几钟
- Cpp指针和引用的区别
- Malloc和new的区别
- Sizeof和strlen的区别
- 了解什么总线? I2c和SPI
- I2c一次最多能挂载多少设备
- 中断能传参吗?
- 手撕代码 排序+二分查找
- Linux由哪几个部分组成
- Linux有哪几种设备
- Linux查看内存状态的命令
- 讲下网络设备?
- 哪些是字符设备,他们有什么共同点
- 内核态和用户态的区别
- 有什么想问我
CVTE提前批 HR面 9.2
- 现在手上有几个offer
- 期望的工作时间和薪资
- 理想是什么?
- 为什么会有这个理想
- 平时获取知识的来源
- 家庭情况
- 对你影响最大的一个人
- 假如给你30k、40k的月薪 你会怎么做
- 有什么想问我
总结
cvte面试通过后,还需要去实习七天才发offer,我没去,所以没有拿到有具体薪资的offer。也算是一次证明自己的过程吧,毕竟是实习的时候第一家面试的公司,当初被拒绝,现在也回拒一次,扯平!
科大讯飞 oc
科大讯飞一面 半小时 8.25
- Linux ./ 到main函数的过程
- 科大讯飞的语音识别你用过,怎么用的
- Oppo实习负责的内容
- 一个.c文件到运行的四个过程
- 堆和栈的区别
- 讲下linux的虚拟地址和物理地址
- 动态库和静态库的区别
科大讯飞二面 20分钟 8.28
- 项目中的代码量
- 实习的代码量
- 大一时候为什么选择嵌入式呢
- 面试官介绍智能家居的部门
- 还有什么问题问我
科大讯飞Hr 20分钟 9.1
- 能不能接受先到合肥工作 (我报的深圳base)
- 在oppo工作的感受
- 工作中遇到过什么困难
- 为什么不考虑留下?
- 现在还有哪几个offer
- 还有什么问我?
总结
科大讯飞的面试给我的感觉,就是面试官时间比较紧张,不能跟我进行过多的交流,所以问的问题比较少,但是面试过程中也能感受到被尊重,给面试体验打个合格分数吧,最后也是果断的拒了。
Arm china oc
ARM 一面 一个小时 9.8
- 自我介绍
- 介绍项目
- Linux的启动过程
- 怎么看.ko文件的信息
lsmod 查看已经安装好的模块, 也可以查看/proc/modules文件的内容.实际上,lsmod读命令就是通过查看/proc/modules的内容来显示模块信息的. modinfo 显示模块信息 modprobe不需要指定路径,它会到默认路径下寻找模块。 rmmod 卸载模块,但是内核会认为卸载模块不安全,可以添加命令强制卸载。 depmod检查系统中模块之间的依赖关系,并把依赖关系信息存于/lib/modules/2.6.18-1.2798/modules.dep中。insmod 加载模块,需要指定完整的路径和模块名字。
- 你觉得有什么品质是这个岗位需要的
- 熟悉什么数据结构
- 单链表和双链表的区别
- 什么时候需要用结构体 如何定义
- 指针在32、64位操作系统占多少字节 为什么
我们一般需要64个0或1的组合就可以找到内存中所有的地址,而64个0或1的组合,就是64个位,也就是8个字节的大小,因此,我们只需要8个字节就可以找到所有的数据。所以,在64位的计算机中,指针占8个字节。同理,在32位的计算机中,指针占4个字节。
- 说说Static、extern
- 变量存在什么区域
- 数组越界访问会有什么后果
- 函数调用栈的变化过程
- 堆和栈上变量的生存周期
- 检查一个32位整形变量的bit10是否为1的几种方法
- 了解arm的 trustzone架构吗
- Cotex-m的中断过程
- 说说Cache
- Write back和writer through的区别
- 说说cache line 不一致的问题
当时讲的跟这里差不多https://blog.csdn.net/jasonchen_gbd/article/details/79462064
- 线程和进程的区别
- 线程的同步方法
- 有什么问我
ARM 二面 9.24 一小时
- 对加减密算法有没有了解
- 怎么定义一个常量字符串
- 堆和栈的区别
- 说说四轴飞行器项目
- 说说pid
- 操作堆空间有哪些函数?
- Malloc和calloc的区别
答:共同点就是: 都为了分配存储空间, 它们返回的是 void *类型,也就是说如果我们要为int或者其他类型的数据分配空间必须显式强制转换; 不同点是:malloc一个形参,因此如果是数组,必须由我们计算需要的字节总数作为形参传递用malloc只分配空间不初始化,也就是依然保留着这段内存里的数据, calloc 2个形参 ,因此如果是数组,需要传递个数和数据类型而calloc则进行了初始化,calloc分配的空间全部初始化为0,这样就避免了可能的一些数据错误。
- Strcpy和memocpy区别
- Do while(0)的好处
答:这样,宏被展开后,上面的调用语句才会保留初始的语义。do能确保大括号里的逻辑能被执行,而while(0)能确保该逻辑只被执行一次,就像没有循环语句一样。总结:在Linux和其它代码库里的,很多宏实现都使用do/while(0)来包裹他们的逻辑,这样不管在调用代码中怎么使用分号和大括号,而该宏总能确保其行为是一致的。
- Static的作用
- 栈溢出和堆溢出
- 如何求一个结构体数组的大小
- 在头文件分别定义static变量和普通变量会怎样?
ARM 三面 9.24 一小时
- alice介绍部门、工作、员工发展
- 有没有了解过测试理论
- 白盒和黑盒了解吗
- 汇编指令:smc和hvc了解吗
- 了解arm架构中异常的同步中断和异步中断吗
- Fiq和普通中断有什么区别
- 讲一下栈帧
过程跟这里差不多https://blog.csdn.net/ylyuanlu/article/details/18947951
- 实习过程中有什么收获?学到了什么
ARM 四面 9.26 45分钟
- 自我介绍 上海的面试官
- 职业规划?
- 应聘这个岗位的优缺点是什么?
- 大学期间的代码量
- 说说四轴飞行器项目的难点 遇到最大的问题
- 说说pid控制算法
- 说说多线程多进程
- 说下互斥锁和条件变量
- 条件变量的使用时:如果生产者唤醒消费者的时候 消费者未准备好?
- 熟悉arm架构吗 熟悉m还是a系列多点
- M系列和a系列中断的处理过程?
- 函数调用一般用哪几个通用寄存器?
- 函数返回时用到哪个寄存器?
- 函数的返回值在什么时候入栈?
- 有什么问题问我
总结
四轮面试官体验都非常不错。唯一的遗憾就是openday当天没有去深圳现场看看,面试过程中感受到arm对技术的要求还是比较高的,对arm架构的问题问得也比较深入,薪资也很有竞争力,在所有offer中是第二高的。是一轮体验相当好的面试,虽然最后没去,但在这里也祝arm china越来越好 !
诺瓦科技 oc
诺瓦 一面 40分钟 9.11
- 自我介绍
- 介绍一个单片机项目
- cortex m3和m4区别
- I2c的时序 空闲时scl的电平
- I2c可以接多少个设备
- 讲下交叉编译
- 讲下makefile由哪几个部分组成
- GPIO有哪几种模式
- 程序编译后存放在哪几个区域 堆和栈的区别
- 给出一个结构体 求结构体的字节数
- 说下反转链表的思路
- 如何给地址0x67A9上的值赋为0xAA66
- 讲下内存泄漏
- 讲下链表和数组的区别
- 平时有哪些调试手段
- 有没有意愿留在实习单位
- 有什么问我
诺瓦 二面 40分钟 9.14
- 自我介绍
- 介绍四轴飞行器项目
- 介绍写程序期间遇到过的困难
- 为什么要选择pid双环 单环不可以吗
- 介绍实习的工作
- 遇到了什么困难
- 解决这个困难对你有什么提升?
- 对诺瓦有什么了解
- 想做什么方向的工作,假如让你做mcu裸机开发愿不愿意?
- 有什么问我
总结
诺瓦深圳的面试难度偏向简单,深圳base的规模较小,而且只有12薪,开的base还算可以,但是各方面还是比大厂差了一些,面试体验还是不错的!
全志科技 oc
全志科技一面 半小时 9.16
- 自我介绍
- 如何实现一个队列
- Insmod会调用驱动的哪个函数
- 网络协议了解吗 tcp在第几层
- 数据结构是自学的还是有相关课程
- 栈和队列的特点
- 用的内核的什么版本
- 用设备树的话驱动如何编写
- 写过哪些驱动
- Linux项目给你带来的提升是什么
- 最成功的一件事
- Freertos怎么学的 任务切换的原理?
- 除了任务切换对freertos其他底层了解吗
- 有什么想问我
全志科技hr 半小时 10.8
- 自我介绍
- 大学最成功的经历
- 大学最挫败的经历
- 大学最有成长的比赛
- 大学关系最好的三个人
- 舍友怎么评价我
- 怎么选offer 薪资 公司 地域进行排序
- 现在有哪些offer?
- 全志如果发offer,开多少才考虑不去arm?
- 有什么问我
总结
对于全志的感觉就是,这是一家不错的公司,网上被骂的声音较少,然后就是校招流程有些慢,也没有提前批。开的薪资也算中规中矩。
小米 oc
小米一面 9.24 35分钟
- 介绍实习负责内容
- 分别介绍项目
- 问了pid相关的
- 介绍i2c的读写时序
- 数组和指针的联系
- 堆和栈的区别
- 线程和进程的区别
- 介绍他们部门 手机部门做安卓驱动部分
- 反问
小米二面 9.26 40分钟
- 介绍下实习做的内容
- 说下程序的内存分布
- 说下堆和栈的区别
- 说下栈溢出
- 说下多进程和多线程
- 共享内存的使用注意事项
- 手写swap和strcpy
- 说下malloc的底层原理
参考链接:https://www.cnblogs.com/zpcoding/p/10808969.html
- 说下ioctl的实现原理 内核态和用户态怎么交互
- 说说copy to user的底层原理
- 说下缺页中断
- 有什么问我
总结
对小米的印象就是,提前批投得慢,后面到正式批才捞我,最后也是顺利通过,开的价格也比较有诚意,sp最高档,但是相比其他手机厂和arm、大疆就低了不少,毕竟小米工作强度也低一些。面试体验以及流程的推进上还是体验不错的。
美团 oc
美团一面 80分钟 9.30
- 自我介绍
- 面试官介绍无人配送产品线
- 花了很长时间依次介绍实习经历、三个项目经历。
- 分别补充项目其中的创新点
- 讲讲pid控制算法
- 讲讲freertos任务调度的原理
- 讲讲如何写一个字符设备驱动
- 讲讲static的作用
- 如果在类里面定义static变量 和在函数内定义的一样吗
- 讲讲堆栈区别
- 讲讲volatile
美团二面 50分钟 10.8
- 自我介绍
- 介绍实习的输出
- 介绍实习项目的架构、freertos的应用
- 介绍实习遇到的问题及解决办法
- 介绍linux的电子量产工具项目
- 介绍项目的用途及目标
- 介绍实习过程中技术上最大的收获
- 为什么做的项目都是c语言的,c++部分少?
- 为什么不考虑来北京呢
- 反问环节
总结
面试过程中能够感受到美团的面试官对技术是有一定要求的,两轮面试时间也花费了不少时间,可惜美团的加班氛围让我心生敬畏,并且无人配送的base在北京,所以表示了强烈的留在深圳的意向。估计大概率不发offer了。
个人总结
以上就是我个人的成长经历的介绍,以及秋招的面试经历,希望能对大家有所帮助!给后来的小伙伴的建议就是:1.秋招开始得越早越好,多投递自己喜欢的企业,提前批尽量不要错过。2.大三或研二的小伙伴最好在暑期能够有一份不错的大厂实习经历,这样就算不考虑转正,也能在秋招中增加了很多argue的筹码。3.不要让自己卡在笔试上,leetcode刷给两百道题足以应付大部分笔面试中的算法题了,这里推荐先刷剑指offer的经典题,再刷些别的。4.嵌入式的学习方面,时间充裕的话,理想的路线我觉得是从mcu->RTOS->linux。
最后:如果这篇文章对您有帮助的话,可以点个赞加关注,我将会持续更新嵌入式软件相关的知识和学习笔记、面经的答案等,希望大家也能同样喜欢。
面试过程中被问的问题答案已经陆续在我的专栏中更新,有兴趣的同学可以订阅:
https://www.nowcoder.com/creation/manager/columnDetail/0OD4Nm
作者在2022年校招阶段经历了接近上百场c/c++以及嵌入式软件工程师面试,最终如愿入职了大疆的自动驾驶部门的嵌入式软件工程师。此专栏为作者在整理的嵌入式软件工程师面试过程中常见的面试题目,专栏内容会涵盖绝大部分嵌入式工程师、软件工程师的常见知识,里面的知识点以及答案都是作者经过学习、实践、求证得到的。专栏会一直更新,有疑问的小伙伴可以在评论区评论或者私信我加入交流群,有问题我业余时间会认真回复!