首页 > 2023嵌入式--行业分析与面试实践
头像
言2020
编辑于 2022-08-16 15:08
+ 关注

2023嵌入式--行业分析与面试实践 已认证

欢迎和楼主一起聊一聊:扣扣群:741541091。群里有楼主送上的秋招助力,多家公司的简历内推投递渠道以及学习资源,定时定期答疑解惑,更新秋招日历。

个人基本情况

LZ是从南理工机械转机电的测控技术与仪器,然后读研的时候转浙大的微电子学,18年开始做ARM Linux系统开发,主要是裁剪系统和提高实时性可靠性。在校经历方面,项目经历比较久,虽然没实习但也算得到面试官认可,比赛论文相对并不出色。去年毕业后去了ARM从事嵌入式安全系统开发。

行业分析

往年卷互联网卷算法,近年卷IC。嵌入式在我看来是一个不温不火的行业,它是芯片行业重要的一环,是产品落地不可或缺的一部分,但是往往薪资竞争能力不足。有些人觉得嵌入式是越老越吃香,也许过去硬件设计是吃经验的,但是嵌入式应用软件开发的门槛很低,在国产化的一些A核M核RISV核CPU的文档都中文化的情况下,高中生都可以学习相关的编程,LZ大学掌握的技能完全不够市面上公司的应聘要求。不是每个应届生都能在找工作的时候已经经历丰富的项目经验,而应用软件开发也是一些普通软件开发者花点时间就能转型的。所以想在嵌入式行业拿到高薪,有几个方向考虑:

  • 大厂的自动驾驶或AI+IOT,这个是个很卷的赛道,应届985硕50以上
    个人感觉 AI的会IOT技术 竞争力 > IOT懂AI理论,从公司的角度,前者我觉得是核心
  • 操作系统,这个国内的公司有限,应届985硕45以上
  • 芯片公司,芯片公司上市的很多,吃不上最好的也能喝点剩下的,应届985硕40以上
  • 普通嵌入式软件开发,应届985硕30以上

lz所说的这几个是目前能拿到高薪(结合我那年和去年的估计)的嵌入式岗位,这些岗位都对学校专业技能要求很高。比赛论文,读研的项目都很看重,实习的经历都很重要。

简历

我相信一个优秀的求职者简历是不断迭代,为不同的公司量身定制,结合岗位需求强调不同方向的能力,譬如岗位要求操作系统,那项目就得重点体现你有没有开发过操作系统。嵌入式开发有点像一个产品的迭代过程,所以在写项目的时候需要闭环,即需求设计开发验证完整的过程,即便没参与某些环节我也建议你了解一下补上。提一句当时我帮同学改过简历后都顺利拿到offer了 :)

对简历有什么想法可以进群交流。

面试准备

算法题如今也卷的不行,虽然lz入职后很少用到,实在忘了Google找个算法模板套就好了,所谓面试造火箭工作拧螺丝,嵌入式开发中链表栈树掌握好开发能解决大部分问题了,但没办法想要脱颖而出,常规的动归、bfs、dfs、排序还是机考必备,这个没什么好说的。
面经方面,linux、计算机系统、操作系统(调度、文件系统、内存等)、计算机网络、数电、ARM CPU架构和指令集、C/C++、汇编、存储器、串口接口等。
附上曾经指导师弟入门ARM Linux的思维导图,师弟已经拿了平头哥的ssp了
图片说明
我推荐Linux学习这块买一个正点原子的开发板,如果不想花钱,白嫖他们的公开资源也行:正点原子

在我秋招时,以下是我当时掌握的相关能力,供大家参考。

  • 只会C++做简单题和一些中等题,会用容器,不懂类封装继承等,面试问到就说不会
  • 会写C,了解一点汇编和架构的知识
  • 知道Linux驱动,设备树怎么改,手册怎么看,驱动怎么编,Linux是怎么上电的,驱动开发这一块还算熟练毕竟读研开发了接近两年,会写Linux多进程多线程软件,系统调用内存方面都涉及
  • 大学的时候学过一点单片机,如51,msp430,stm32。但是后面就不学了
  • 会用电子实验的设备,会基础实验操作,看得懂电路图和PCB ,会焊接0402以上的电路
  • 了解传感器工作原理,尤其是陀螺和加表,对于各种通信接口也算了解个大概,知道一些物联网协议像MQTT

面试经历

LZ无实习经历,在2020年秋招的时候有大把的时间投简历面公司,那时候嵌入式在我看来一点也不卷,工作很好找的,刷了很多offer但最后有印象的就地平线、ARM、OPPO、华为鸿蒙等。当下比较火的像思特微、壁仞在那时候还是潜力股,LZ是一个不愿意冒风险的人,也不是多厉害的人,学历能力都有所欠缺,也没有实习经历,比赛论文,属于佛的那种,业内T1的公司很难进,但求职还是很稳健的。在我看来,确定好自己的需求很重要,不然最后很难挑。挑完还很容易后悔。

以下是我基于我的面试经历对行业公司的整理和排序,仅一家之言。

T1

大疆、视源、乐鑫、十四所

LZ心目中不错的公司,相对竞争比较激烈,也有双985像十四所就比较难进

华为2012鸿蒙

那年offer发的晚(典),HC少到发指,15优先给科班,下一届我师弟师妹就很好拿offer了。

技术试面:
手撕代码:大数相乘
进程和线程的区别
static/fork等
技术二面:    --表现一般,非常慌
1.项目最难的地方
2.文件系统的制作过程
3.内核裁剪的过程及提升
4.手撕代码,dfs,LC79,边界处理有瑕疵
5.Python掌握的怎么样
主管面
对待压力最大的事
是否接受外派出国
怎么看待华为的
发的论文学术研究主要是哪些方面
为什么转到了微电子
商业卫星和军工的区别

没参与的

因为当时太佛错过,工作后多方了解觉得不错的:Intel Nvidia 平头哥 壁仞,以及自驾的公司参考2023年秋招,想加入自动驾驶行业的你需要关注这些公司

T2

ARM

嵌入式不能没有ARM,就像西方不能失去耶路撒冷。来ARM,学架构,ARM(安谋科技)秋招8.15正式开始。有需要内推的可以找我!

一面主要问问项目,指令集差异,操作系统阻塞与轮循,arm的认知,虚拟化的了解,IP开发经验等等
二面:openday线下,聊项目为主

OPPO-C/C++

提前批,共三轮,很水的面试,oppo给zju开的属实不低,通信业务部门感觉是纯软,工资高的,base出了问题我不想去深圳。

一面问项目和会的技能,以及C与C++区别等内容,会不会python等,嘴瓢说到了vivo不知道影响大不大
二面:主要聊一聊职业规划和技术走向,对其他领域的理解,对项目的熟悉和团队经历,团队的磨合性问题及技术问题。
三面:offer情况,面对压力、团队磨合、印象深刻的项目、期待工作地点等内容

汇顶

两小时三轮面试,有手撕代码,也不难,非常顺利拿到的第一个offer,画的饼也不错,可惜sp发早了,后面argue也没涨太多。

一面技术面:strlen,sizeof以及char*,考察函数传参,考察自己写memcpy
二面HR面:团队协作的项目,女朋友,薪水,过往面试经历
三面主管面:个人性格,i2c,spi驱动,base城市,对岗位的期待,个人职业规划,如何看待压力

瑞芯微

面经忘了,当时base在福州,没考虑,面试体验印象中还不错。

紫光

小华为,不知道现在卷不卷了,听说有点动荡。

一面聊聊项目,啥能力都没问
二面,聊聊技术和软开的内容

思科

数据交换中心,四人面了两个多小时,有英语面,总的来说看重学历和综合素质,手撕的代码不难,后来offer顺位第二,没想到那个部门只招一人,另一个物联网部门捞我,开的也是均价,很想要我但是不argue遂拒。

一面:四人
项目内容,关于Uboot功能,多进程架构等
Python的list、元组和字典等区别
项目代码怎么编译,编译器是啥,IDE是啥,怎么进行调试的
编译器编译代码的四个阶段
动态库和静态库的区别及优缺点
C++的STL了解得怎么样
C语言怎么定义一个输出年份天数的宏定义
代码编译出现undefined symbol怎么办
平时怎么查看代码的,git用过哪些命令
代码量怎么样,总计代码量
说说中断的理解
说说对于IPC进程间通信的理解
arm启动的第一条命令和地址是什么
手撕代码,32位数的bit反转,考察位操作,写的有瑕疵
英文对话:你在项目中工作,你如何进行邮件联系工作人员,你们项目的分工
了解DMA吗
了解哪些总线协议
块设备和字符设备的区别

长江存储

业内很厉害的一家公司,面试也很底层

项目面试,主要问三取二的nand,对eMMC的理解,对坏块管理位置,对程序代码段数据段的理解,对他们做的eMMC是否感兴趣等。
1.int的长度由什么决定
2.cache是什么,有什么作用
3.寄存器修饰的关键字的理解
4.arm处理器的模式
5.中断处理流程,中断的现场保护保护什么
6.kmalloc和vmalloc的区别,内核怎么分配128M连续内存
7.TLB是什么
8.原子操作的底层是怎么实现的

之江实验室

有点像研究所,听实验室同学说,可以选择躺也可以选择卷,工作体验和在学校很相似。

NXP-苏州

二面说漏嘴已经和ARM签两方,面试官摆的比较快。同学base在苏州,工作很舒服。不想去一线可以重点考虑一下。

地平线bsp

提前批,四轮面试,三面给一道大编程题开发一个驱动,还挺难的,offer argue后很高。但是19年裁员很厉害,所以我没敢去。现在情况应该好多了。

一面技术/主管面:ARM启动流程,内存配置偏移地址方式,设备树的优势及起源等
二面技术面:讨论系统驱动开发,信号原理、互斥资源的解决方法,进程间通信,三取二相关,大量数据传递给应用层问题(map)
三面主管面:
用过哪些嵌入式控制芯片
内核了解吗?
有了解过64位arm吗
物理内存的管理方式
段页是x86的,arm怎么实现的
kmalloc最大能分配多少
slab是什么
内核的L1 L2 L3缓冲
TLB是干嘛的,什么功能
进程调度算法
fifo和一个什么的对比
C++的虚函数是干嘛的,多态和覆盖的区别,虚函数的底层怎么实现的
内核同步的机制
自旋锁和互斥量mutex的区别
自旋锁底层怎么实现的
C语言的数据段里面包含哪些部分
全局变量和局部变量存储在内存的哪个区域
malloc最小分配的大小,malloc(1)分配多大
malloc分配多大的内存的时候会需要向内核申请
malloc和free的使用你觉得有哪些注意的
你学的微电子学了解FPGA吗
写过哪些驱动?

寒武纪

1.虚拟地址与物理地址
2.内核如何分配内存给进程
3.进程的资源分为哪些?漏了代码段
4.多进程如何共享硬件中断
5.进程和线程的区别
6.内核态中断和线程同步的方式,不能用信号量
7.uboot的作用
8.arm启动进入操作系统的步骤
9.const变量在程序的哪个段
10.驱动中断的响应包括哪些内容
11.双核的ARM在uboot里面用了吗

T3

中兴

可以试试蓝剑

一面:TCP/IP协议,ARM及其他芯片的上电过程
二面:HR聊聊家庭情况个人性格,薪资,兴趣爱好,过往面试的企业
部门匹配面:
1.项目中职责
2.中断的传递过程,信号量监听的函数
3.驱动的开发过程
4.网卡收集数据传递给上层应用的过程,网卡型号及接口
5.网络服务器的高速并发处理,降低传输时延
6.内存管理的方式,什么是内存管理,其作用是什么
7.内核如何管理内存的页
8.TCP/IP协议是否了解,Linux怎么做网络路由
9.个人的优势
10.文件系统的制作和优化方式,不同文件系统格式内核是如何管理的
11.操作系统的任务调度方式,你的进程是怎么提高实时性或者优先级的
12.nice的默认优先级大小,取值范围
13.内核的裁剪和配置方式
14.数据库是否支持并发,数据库ID是否可以任意数据类型,数据库一定要ID吗
15.如何管理数据库的脏数据,掉电未写完的数据
16.视频的编解码方式
17.进程和线程的区别
蓝剑1面
1.你的文件系统轻量化及接口怎么取舍的,文件路径怎么搜索的
2.Nor和Nand的区别,什么使用选用Nor什么时候选用Nand
3.sqlite表的编排方式
4.对ipc的理解,socket并发通信理解
5.对进程上下文的理解(答错了,说成中断上下文了)
6.三取二的过程以及做了什么
7.对swap的理解和认识
蓝剑2面-部门匹配面
1.你印象最深的及最难的项目是什么,其中的收获
2.你怎么做星上操作系统的可靠性和稳定性评估的
3.你觉得嵌入式行业的最大挑战和瓶颈是什么,以及以后的发展趋势?
4.你的三取二做的是什么
5.你开发这些串口驱动,其中主要参与了哪些工作,编写驱动要注意哪些内容
6.你的文件系统如何做到轻量化的,UBI和EXT4区别在哪为什么EXT4不适合NAND Flash(这个没回答的上来)
7.对进程间通信的理解,socket或者ipc如何提高实时性;
8.你的操作系统怎么做到实时性的?(基于抢占)
9.你的软件运行在用户态,怎么架构的?
10.NAND的数据怎么确认是读取问题和硬件问题。
11.对操作系统的理解,以及最深入的内容?
12.内核态与用户态之间的交互方式?(不太好回答)

滴滴

1.CAN和UART区别,CAN是帧结构吗
2.CAN芯片怎么写的,数据怎么与内核交互的,属于网络设备还是字符设备
3.你觉得最体现你项目能力的是哪个部分,你在其中参与的核心解决的难题是啥,你给我说说三取二的原理,以及你遇到什么困难。
4.描述你的项目我来复述并评估拟堆项目的理解,项目背景和项目分工以及你的主要工作和难点
5.动态库和静态库的区别,后缀格式,以及函数的相对地址区别
6.堆和栈的区别,函数栈、线程栈的区别
7.你在微电子学与固体电子学专业里面,你觉得自己能力算中上还是最好的那一批?
8.最开始的:自我介绍,说你最大的和别人不同的
9.有名管道的父节点和子节点
10.共享内存的使用注意事项:回答锁和不能随意释放

海康、大华

杭州体面厂

VIVO

提前批很早,后面没有参与正式批

TP

要双985

全部评论

(10) 回帖
加载中...
话题 回帖