哈喽,大家好,我是仲一。今天和大家分享的是一位优秀双非本科生上岸大疆的经历(羡慕哭了。。。)。
今年4月底的时候,这位学弟和我分享了他拿下oppo,京东,联发科实习offer的经历,当时我还发了朋友圈,为这位学弟感到开心。这也是第一位粉丝向我报喜,我映像很深刻。
找工作其实也没你想的那么难的,找不到合适的工作,可能是方法不对。
其实,很多大厂对于应届生的要求不会太高,最重要的,还是考察基础和综合素质。进入公司后,公司会有完善的培养体系,会把应届生当做白纸来培养。
面试也不要想的太难。在面试的时候,问题答上来了,面试就可以通过。而这些问题,是我们可以把控的,可以提前准备。
笔试面试的常考知识点我都整理好了,大家可以参考这个专栏。
不多说了,下面就分享下这位学弟的秋招经历。
个人背景
大家好,我的秋招已经告一段落了,写下一些总结,记录下这三个月的面试经历,希望能帮助到后面找工作的伙伴们。
背景:双非一本 本科。
大三暑期实习:拿到了OPPO、MTK、京东等offer,最后去了本分厂实习了三个多月,在其中有输出,也有成长。
秋招提前批、正式批:因为只想在广深工作,所以秋招只投递公司共20家,目前拿到了其中10家公司的offer,还有2家等结果。
被挂简历的企业:(华为、英特尔、tplink、autox)。
投递后没有消息的:(小马、tcl、寒武纪、vivo)。终面后在等待结果的有:(美团、紫光展锐)。
获得公司offer的有:大疆(sp 签约~)、Arm china、小米、荣耀、联发科、全志科技、星宸科技、科大讯飞、CVTE、诺瓦科技。
学习经历
我在大一的时候加入了一个老师的实验室,在里面开始玩玩stm32单片机,实验室是做飞控项目的。在大一到大二的时候基本都在这里面度过,也学到了很多嵌入式的相关知识。
大二疫情期间开始学习RTOS、QT,也陆续自己做过一些小项目。加入了一个的学生创业团队,开始打一些比赛,挑战杯、、互联网+、ican等。
大三开始基本就不打比赛了,继续学习嵌入式相关的内容,跟着韦东山老大哥的课程学习了linux的应用以及驱动方面的内容,也根据这些知识做了一个电子量产工具的项目。
实习经历
春招实习投了几个厂:OPPO、联发科、京东、阿里、网易、CVTE等。
其中拿到了OPPO、联发科、京东的offer。
最后在oppo的穿戴软件部门实习了三个月的时间,在其中的工作内容主要是跟OPPO WATCH2智能手表相关,上班状态基本是双休,工作日偶尔加班(因为我是实习生)。用到的技能有RTOS、LVGL、C、python等。
面试经历
接下来就是面试的记录总结啦,由于当初比较懒,基本上都是以记录题目为主,所以大部分题目没有写下自己的答案。
联发科面试 oc
联发科提前批一面 30分钟 8.2
- 为什么不留在oppo?
- 说下中断和轮询
- 平时学嵌入式有看什么书
- 介绍电视线 balabala 两种工作的情况
- 问我 更倾向于哪种
- 音频 视频 外设的驱动
- 框架性回答一个嵌入式系统启动到结束的过程
- 反问
联发科提前批二面 30分钟 8.9
- 说说实习三个月的感受
- switch_context的底层原理 (freertos)
讲了下切换的场景,pendsv函数的实现,switch_context里面关于pcb_current指针的逻辑等。
- 实习做的偏应用层,为什么要学习freertos呢
- 面试官讲讲电视线的情况,业务做得好可能要两年,成为专家要四年。
- 有学过linux/安卓吗 学过linux 写过一些驱动
- 这些驱动是在开发板上写的还是在pc上模拟的?
- 有什么想问我
总结
联发科提前批的面试给我的感觉是比较简单,面试氛围比较轻松。二面的时候面试官问了一个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再提薪了一次,后再拒。不过面试的体验还是很好的!
大疆oc+签约
大疆一面 一小时 8.19
- 自我介绍
- Linux创建线程有没有设置过调度相关的参数
主要考察第二个参数:
属性对象主要包括是否绑定、是否分离、
堆栈地址、堆栈大小、优先级。默认的属性为非绑定、非分离、缺省的堆栈、与父进程同样级别的优先级。
linux 线程调度的几种方法
Linux系统的三种调度策略:
- SCHED_OTHER:分时调度策略(Linux线程默认的调度策略)。
- SCHED_FIFO:实时调度策略,先到先服务。该策略简单的说就是一旦线程占用CPU则一直运行,一直运行直到有更高优先级任务到达或自己放弃。
- SCHED_RR:实时调度策略,时间片轮转。给每个线程增加了一个时间片限制,当时间片用完后,系统将把该线程置于队列末尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。
- Linux中的条件变量怎么用? 以及虚假唤醒的总结
- 接上面条件变量 Cond wait后还持锁么
硬件中断触发的全过程、堆栈的保存
进入异常步骤:
- 处理器在当前堆栈上把xPSR、PC、LR、r12、r3~r0八个寄存器自动依次入栈。
- 读取向量表(如果是复位中断,更新SP值)
- 根据向量表更新PC值
- 加载新PC处的指令(2、3、4步与1步同时进行)
- 更新LR为EXC_RETURN(EXC_RETURN表示退出异常后返回的模式及使用的堆栈)。
退出异常步骤:
- 根据EXC_RETURN指示的堆栈,弹出进入中断时被压栈的8个寄存器。
- 从刚出栈的IPSR寄存器[8:0]位检测恢复到那个异常(此时为嵌套中断中),若为0则恢复到线程模式。
- 根据EXC_RETURN,选择使用相应SP。
- 讲下MMU的相关知识
- 多线程、多进程的方式
- 共享内存的底层原理
- 线程和进程的理解
调用一个函数后,会返回到哪里?
这里应该是想问栈帧的变化
- 程序在内存中的分配
- 未初始化的变量打印出来是什么值
全局的初始化为0 局部变量未知 - 编译和链接的过程
- 平时有没有用GDB
- 讲下为什么断点调试可以停在那里
软件断点在X86系统中就是指令INT 3,它的二进制代码opcode是0xCC。当程序执行到INT
3指令时,会引发软件中断。操作系统的INT
3中断处理器会寻找注册在该进程上的调试处理程序。从而像Windbg和VS等等调试器就有了上下其手的机会。
- 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的看法
- 工作部门的意向
- 有什么问我
总结
荣耀的面试体验总体来说一般,技术类问题也没问很多,综合面的女面试官在面试的时候还在嚼口香糖,有点不是很礼貌,另外公司加班氛围特别重,所以对荣耀并没有太多的兴趣。
紫光 面试通过泡池子
紫光一面 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/jasonch... - 线程和进程的区别
- 线程的同步方法
- 有什么问我
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/ylyuanl...
- 实习过程中有什么收获?学到了什么
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/zpcod...
- 说下ioctl的实现原理 内核态和用户态怎么交互
- 说说copy to user的底层原理
- 说下缺页中断
- 有什么问我
总结
对小米的印象就是,提前批投得慢,后面到正式批才捞我,最后也是顺利通过,开的价格也比较有诚意,sp最高档,但是相比其他手机厂和arm、大疆就低了不少,毕竟小米工作强度也低一些。面试体验以及流程的推进上还是体验不错的。
美团 待开奖
美团一面 80分钟 9.30
- 自我介绍
- 面试官介绍无人配送产品线
- 花了很长时间依次介绍实习经历、三个项目经历。
- 分别补充项目其中的创新点
- 讲讲pid控制算法
- 讲讲freertos任务调度的原理
- 讲讲如何写一个字符设备驱动
- 讲讲static的作用
- 如果在类里面定义static变量 和在函数内定义的一样吗
- 讲讲堆栈区别
- 讲讲volatile
美团二面 50分钟 10.8
- 自我介绍
- 介绍实习的输出
- 介绍实习项目的架构、freertos的应用
- 介绍实习遇到的问题及解决办法
- 介绍linux的电子量产工具项目
- 介绍项目的用途及目标
- 介绍实习过程中技术上最大的收获
- 为什么做的项目都是c语言的,c++部分少?
- 为什么不考虑来北京呢
- 反问环节
总结
面试过程中能够感受到美团的面试官对技术是有一定要求的,两轮面试时间也花费了不少时间,可惜美团的加班氛围让我心生敬畏,并且无人配送的base在北京,所以表示了强烈的留在深圳的意向。估计大概率不发offer了。
个人总结
以上就是我个人的成长经历的介绍,以及秋招的面试经历,希望能对大家有所帮助!
给后来的小伙伴的建议就是:
- 秋招开始得越早越好,多投递自己喜欢的企业,提前批尽量不要错过。
- 大三的小伙伴最好在大三暑期能够有一份不错的大厂实习经历,这样就算不考虑转正,也能在秋招中增加了很多argue的筹码。
- 不要让自己卡在笔试上,leetcode刷给两百道题足以应付大部分笔面试中的算法题了,这里推荐先刷剑指offer的经典题,再刷些别的。
- 嵌入式的学习方面,时间充裕的话,理想的路线我觉得是从mcu->RTOS->linux。