嵌入式软件工程师2021面试指南

作者简介

2021应届本二,目前年薪20,在某行业头部大厂从事嵌入式多媒体开发(音视频应用方向)。

由于没有耀眼的学历,学习的资料和企业实际应用有些偏差,2020年大三时秋招处处碰壁,当时最高只有10k,于是抛开薪资选择了一个自认为不错的方向进行实习。

努力终有回报,实习半年,毕业三个月后,拿到了当前行业几乎所有头部公司的offer。其中包括海康、大华、宇视、新华三、紫光、萤石、华晨等等。

面试前准备

资料推荐

嵌入式软件工程师2021面试指南_第1张图片
这份面试指南涵盖了95%以上应届生面试可能遇到的问题,如果真的想拿高薪,那么建议你好好研究。
你可以去csdn上付费,也可以联系到他免费给你(别问我要)。

要不要刷笔试题、力扣

摘要:要刷笔试题,力扣刷不刷看你要面的公司考不考。

笔试题因人而异,基本上应届生没有漂亮的项目经验,所以应届生的面试中几乎所有公司都会让你做题,由于我有实习经历,而且项目我做了一大半,简历丰富,所以我没有刷题。
还有一点就是收集信息,比如某公司一共几轮面试,有几轮笔试面试,笔试题难度。这个需要你找到一些相应的社群去了解,比如下面的图
嵌入式软件工程师2021面试指南_第2张图片
嵌入式软件工程师2021面试指南_第3张图片
这个群是我找资料的时候加的,都是应届面试的同学,要加的话找那个资料的主人。

如果你的学校比较好,有计划冲击华为、微软那些公司,那么你就需要提早准备起来。

由于没有好好准备笔试,电话面试问到项目问媒体层知识乱杀,人家邀请我到线下给我做了套22年的笔试题,我有挺多做错的,尴尬的很。不过笔试做不出来也没啥大问题,offer该给还是给,薪资压点

企业资讯获取

  • 1、学校资源
    学校、学院就业网站,宣讲和招聘信息,招聘会等
  • 2、企业官网
    大中型企业招聘官网、公众号。
  • 3、招聘APP
    我用的boss,其实都可以,但建议用当下比较火的
  • 4、社群资源

嵌入式软件工程师2021面试指南_第4张图片
在这种应届生面试的社群里,你可以知道某地的嵌入式类型公司哪些比较好,有什么坑,有没有笔试,薪资标准等等资讯,我非常推荐大家找找看相关社群

简历制作

很多细节在我推荐的那个面经里面有
嵌入式软件工程师2021面试指南_第5张图片
这里我讲讲我的心得,如何针对性的去写个人技能
首先要确定自己的方向,比如

  • 做路由相关,那么你就要着重写上网络相关的知识
  • 做应用相关,就着重写应用相关的知识
  • 做驱动相关,那么就着重写驱动相关

道理大家都懂,首先写上自己会的,然后再找到你想要的方向的龙头企业,以它作为参考去写你的简历
以下面这个为例
嵌入式软件工程师2021面试指南_第6张图片
你的简历应该如下

  • 熟练掌握C/C++,具有良好的编程规范
  • 熟练掌握linux应用层编程,文件IO、标准IO、多线程、多进程、SOCKET网络编程
  • 熟悉H264、ACW、PCM等常用音视频编码标准
  • 熟悉RTP、RTSP传输协议
  • 了解RTP、PS封装
  • 具有XX平台XX年开发经验

这么样的简历完全匹配,能够匹配行业龙头企业的要求,那么行业中游企业的要求也可以满足

再举一个例子
嵌入式软件工程师2021面试指南_第7张图片
简历如下

  • 熟练掌握C/C++,具有良好的编程规范
  • 熟悉Makefile/shell脚本编写
  • 熟练掌握linux应用层编程,文件IO、标准IO、多线程、多进程、SOCKET网络编程
  • 熟悉XXX版本内核
  • 了解xx汇编、xx汇编,能够通过反汇编快速定位并解决问题
  • 具有XX平台XX年开发经验

两个例子写的很粗糙,大家懂意思就行,根据自己的方向写上相关知识点

不会怎么办?
总归有不会的,学就是了。简历匹配可以让你有一个面试的机会,能学到什么程度面试聊到什么程度就可以了,面试官知道你不会就不会再为难你。
简历上的东西你多少得说出来,如果简历写上了你一点答不出来就GG。

先有面试机会再说

去不去外包

网上讨论很多大家自行参考,我直接说我的结论
如果实在没有选择了,可以去外包。缺钱的话,可以第二第三份公司选择外包,不缺钱,有选择的余地就不去

建议在最开始面试可以先投外包进行面试练习

跟华为搭边的百分之九十都是外包

面试

自我介绍

一开始肯定让你自我介绍开场

  • 1、如果学校好就介绍一下自己哪个学校毕业的;学校不好就说自己是xx级毕业生
  • 2、在学校做的项目,做的比赛/项目
    这一点尤其重要, 介绍你项目的同时要给出面试官问你的空间。比如说,“在项目中我解决xxx问题/xxxbug定位/学会xxxx知识”,如果面试官顺着你说的问你,你将这些准备好的问题正确的回答上,算一个好开头
  • 3、阐述你对他们公司这个方向很感兴趣,想在这个方向进一步去钻研

技术面试

面试官对你项目的了解肯定不如你,所以主动权在你手上
如果一开始介绍项目的时候,面试官没有顺着你给出的点来问,那么一般情况如下

  • 1、介绍一下项目框架、逻辑、项目做了多久

  • 2、你在项目中的职责,贡献的代码量

  • 3、具体问项目中某一个模块的实现

  • 4、再具体到某一个技术点

  • 5、有的面试可能不会限于你简历上的,会循环34问到你不会为止
    还可能有,面试官遇到啥问题搞不定,要做什么需求,然后问你的思路

  • 6、你在项目中解决的最难的bug

    重要,体现你的能力。在别人说加打印的时候,你聊栈溢出;别人说项目逻辑的时候,你聊整体框架问题

  • 7、和同组成员如何合作(代码管理)

  • 8、代码风格

  • 9、零散的问一点基础知识,如C相关内容

  • 10、反问。建议问工作内容,要不要经常出差

上面列出的12涉及到的细节一定不能被问倒,最开始的几个问题都是来判断这个项目是不是你做的,一旦被问倒,说明你没做过

回答的注意点如下

  • 1、不要结结巴巴,这样会让面试官觉得你沟通、表达能力不行
  • 2、不要问什么答什么,比如问到你线程detach,你聊完了可以聊聊关于线程属性、遇到的bug,线程和进程对比。
    问什么答什么会让面试官感觉很累,如果他说一个技术点,你把这个技术点比较重要的内容说出来,他对你的好感就会增加
  • 3、不要说的太流利,太过于流利会让人感觉你在背书,适当停顿假装思考
  • 4、答不上就说不会,不要硬答
  • 5、答不上的内容你可以引申一下,比如面试官问我项目中有没有用到cache,我说没有,然后讲了一下cache是什么,有什么用,可能可以使用的场景,相关的还有一个violiate关键字
    这样就算没答出来还是可以化被动为主动
  • 6、不经意间体现你的优点,比如介绍项目框架的时候你是怎么思考的,怎么样可以增强项目的扩展性;你发现了哪里的代码设计的不好,为什么;如何团队合作;如何定位bug;项目的不足

总的来说,面试的时候要主动一点,面试官没义务去发掘你的亮点,在面试的过程中尽可能的展示自己

面试的过程也是你考察公司的过程,包括面试官的风度、问题的专业程度等

苏州科达的面试官是给我感觉最好的,问题有深度,你不会了还给你台阶,全程友善。
行业某龙头给我压力面试,每次问道我不会的,挖个坑我踩了,就搁那笑,气死我了!

具体技术细节在我推荐的面试资料里,大家自行学习,我会在后面的目录列出我被问到比较多的问题

面经中的部分内容如下
嵌入式软件工程师2021面试指南_第8张图片

HR面

有的公司HR面会刷人的,面试前可以问问看群里的人,不要犯病一般都没问题

之前一个哥们,被问未来规划,他来一句要去创业,然后挂在HR面

HR面的可能问题如下

  • 1、什么时候入职

  • 2、籍贯,异地的话,为什么决定来这个城市发展
    我一般回答女朋友在这(不管有没有都可以说)

  • 3、未来规划
    我一般回答在当前方向深耕两三年,先成为项目中的骨干成员(别犯病)

  • 4、如果和领导观点冲突怎么办
    一般要回答,视野不同,领导在行业更久看的一定更远,保留意见,比较领导和自己看待问题的方法(一般公司想要服从的人,但是也有例外,大疆就喜欢激进的)

  • 5、决定在公司待多久
    我一般回答,贵公司在行业内属于领导地位,我希望在贵公司长远发展,我也喜欢这座城市,女朋友在这,家里条件不错,有计划结婚后在公司附近买房

  • 6、父母是做什么的
    就是问家庭条件,是不是会在这座城市长久发展,我一般都是往家庭条件不错的方向回答

  • 7、为什么从上一家公司离职
    别说上家公司坏话,我回答是项目完结没有新项目,现在闲了,人员流动较大,项目组就只有我一个人

  • 8、能不能接受加班
    不管它要不要求加班你都说能接受,明确说不能接受会让人觉得你没有抗压能力(决定养老除外)
    目标公司是否加班可以通过网络获取,我也传了一份2021年公司加班情况表,可以免费下载

  • 9、反问

    五险一金,住房、餐补、通信、交通等补贴,补贴是否包含在工资里

大概问题就是上面列的,总结就是往积极的方向回答,不要说负面内容

我的面试经历

由于我确定了自己的方向,投的细分行业公司问的都差不多,所以直接合起来讲了

嵌入式软件工程师2021面试指南_第9张图片
我感觉一面有点压力面试的意思,每一个点追着我问,问到我不会为止,一般面试是半小时,超过半小时就没什么问题了。比如这家公司一面问了很久,二面就问了20多分钟然后开始类似hr面试的问题,三面HR,之后发offer。

下面总结一下这段时间被问到的问题,从简介绍

基础

由于我简历的重点是项目,所以基础问的少,项目经历不够丰富的应届生自行通过我推荐的面经进行学习

负数是怎么存在内存里的
在计算机中,数据都是以正数的补码的形式存在的。正数的补码是其本身,负数则是以其本身的正数的补码的形式存在的。

有没有遇到过bus error
没遇到过,但是我知道他的起因和排查方法

进程的虚拟内存空间实际上是对物理地址的一个映射,通过mmu实现,页表管理,操作系统和编译器会用内存对齐来做优化,通常就是4字节对齐,所以int,float这种类型的起始地址都是4的倍数,而short的起始地址是2的倍数,double的起始地址是8的倍数,假如此时对一个不是4倍数的地址a进行解引用 (int *) a,就可能会出现总线错误,这个出现的情况还要具体看是哪一种操作系统。总线错误一般不会出现,出现的情况多半是使用了指针的强制转换

栈溢出怎么查
gdb、hexdump看反汇编,然后我介绍arm寄存器,怎么看堆栈信息

线程detach
自动回收资源,然后我介绍线程其他属性,讲了线程栈溢出
面试官追问,你们的项目线程栈大小多少
可以使用ulimit -s查看,我们使用的是8M
为什么是8M
用的是默认大小,为什么默认是8M我不知道

口述一个函数指针

char *strcpy(char *dest, const char *src);
{
	xxxxxxxxx
}

int main()
{
	char *(*pFunc)(char *dest, const char *src);
	pFunc = strcpy
}

项目中的使用是不同层之间函数传递。比如媒体层的算法触发上报函数就是通过将应用层给的函数绑定回调实现

typedef 与#define宏的区别
如果是都定义char *
然后对 a,b操作
typedef会将两个变量都定义为char *
define只会定义a,b是char型

大小端,如何判断大小端
经典面试题,然后我补充了要区分大小端的使用场景,比如要考虑通信双方字节序不同,socket网络字节序默认大端等等

文件IO和标准IO区别,哪个带缓冲

线程、进程区别,使用场景

媒体层知识

由于我是做音视频媒体层的,所以这部分知识问的比较多,相关知识点我整理在了我的博客,大家可以根据链接学习

YUV格式,422p转420p怎么转
详解YUV数据格式
此外还和面试官讨论了RGB转YUV的效率问题

sensor和主控的连接方式
控制信息用I2C,数据信息通过MIPI传递。提了一嘴,这个东西是做驱动关注的,我只知道大概,细节不懂。

ISP模块和缩放模块的数据交互
在缩放模块的配置中,有一个video buffer,我们设置的是2,通过类似队列的方式进行交互。

ISP、缩放、算法、编码模块里面有什么可以配置的属性

每个算法分别通过什么指标进行成功的判断

编码出来的视频、音频结构体中分有哪些参数

音频帧的概念

codec编出来的音频断续怎么办

驱动相关,不会

264、265区别,264知道哪些nalu type及应用场景

OSD的实现
项目中使用工具将图片转成二进制实现,内存拷贝方式,我还介绍了操作字库的方式实现

视频编码的原理
消除视频冗余的方法及原理

码率控制相关内容
音视频中的码率控制
QP、bitrate调高调低的作用
给面试官讲了我们码率调优方面遇到的问题,主码流次码流分别用了多少码率

RTP中的时间戳
我是用的RTSP是从live555移植的,RTP封包中的时间戳是根据h264的频率/码率来计算的
其他的时间戳一般是底层的驱动返上来的,媒体层也可以做

PS、RTP封包
PS流详解
RTSP详解

画面花屏,出现拖影、快效应原因及解决方法

项目

项目做了多久

你贡献了多少行代码
我说的七千左右

选择的芯片,芯片的资源
比如ddr多大,系统分区怎么分,flash多大
芯片是否提供dsp用于编码,内置还是外置的codec

每个模块的细节实现

你在项目中做过哪些模块,哪些代码是你写的

你的项目一共开了几个线程
这个问题被我朋友预测到了,我假装惊讶然后一条一条捋一遍,接着他就问每个线程的细节实现

电机人形追踪,将电机移动步长和画面像素点进行匹配

设置区间,多次测试,给出经验值

代码怎么管理
git,然后我介绍了常用的git指令,
权限是都开放的吗
我说我们只有两个人,把大伙都整乐了

我回答出所有问题之后,他们暂时没得问了,我就讲了一下对这个项目的思考
如,每个模块可能存在的问题,我们项目没有做到位的地方,可能产生延迟的地方,和面试官讨论整个项目框架,如何搭建方便扩展功能

代码风格问题
参考华为的规范。
函数命名,结构体加ST,枚举EN,全局g,函数传参传地址不传值等等,还有海康用的do while(0),不用goto,用函数封全局来跨文件交互而不用extern等等

谈薪资

需要横向对比,知道目标公司的薪资标准。可以通过公司里认识的人了解,或者问就业相关社群里有没有人了解的
嵌入式软件工程师2021面试指南_第10张图片
在我看来

  • 双非本正常水平年12~15
    即月8~10
  • 双飞本比较优秀年18~20
    即月10~15
  • 双非硕比较优秀年20~25
    即月15~18
  • 211、985硕年25以上
    即月20以上

今年(2021)的时代背景是,国家宏观调控,互联网受到打压(蓝色、黄色logo企业上市受阻),美国制裁,中国大力发展芯片行业。资金流入芯片行业,所以嵌入式人才会被高薪挖走,行业人才出现缺口,于是其他的厂不得不跟着提高应届薪资标准来抢人。

对于薪资大家还是要理性看待,除了学历、能力,市场也是一方面。

最后

志晖君在一个采访里说过,他并非天才,只是提前做规划,然后全部完成了而已。

作为一个本二,本身不占什么优势,我是大四秋招实习了半年多,在第二年的秋招才拿到一份年20的大厂offer。这可能只是别人上一年的起点。我想说的就是,大家不要因为自身条件不够好就妄自菲薄,抓住每一个你能抓住的机会,提前规划,然后实现。

祝大家能够进入自己理想的公司,拿到自己想要的offer

你可能感兴趣的:(帅哥,面试,职场和发展)