备战秋招-指导篇
欢迎关注个人公众号摸鱼范式
数字IC设计笔试面试经验总结(2019年)
感谢知乎网友不息 不止
的授权转发
原文链接:https://zhuanlan.zhihu.com/p/88388020
0.前言
经过了几个月的跌跌撞撞,终于结束了自己的秋招。最近有师弟师妹私聊问我面试感悟,我仿佛又回想起几个月前带着不安困惑的心情,不断在网上搜集面试信息的自己,以及那些帮助过我的文章和回复。受此激励,我决定写下这段时间的求职经验总结,希望对往后的师弟师妹们有所帮助。
1.求职准备概述
由于数字IC设计工程师这个岗位,绝大多数公司都要求硕士及以上学历,所以我假设大家都是硕士研究生的学历。求职准备方面,我个人觉得可以分成日常积累和专项准备两部分。
所谓的日常积累,就是大家在进入高校之后,上过的课程、看过的书籍、读过的论文、做过的项目、经历过的实习、参加过的比赛等等,这些经历塑造了我们知识的深度和广度,奠定了我们的基本功。能在这里面的任何一项多取得一分成绩,以后就能在求职多一分优势。
所谓的专项准备就是在进入秋招季之前和这期间,为了应付笔试、面试所需要做的准备,这也是笔试面试经验的主要内容。
从时间上来看,企业秋招行程主要集中在8月下旬~10月上旬这段区间,但是考虑到需要提前准备一些相关知识和技巧,以及总结自己学习成果,我们的准备时间应该在6月份就要开始了。
从内容上来看,我们需要专门做一些常见的笔试面试题(在平时学习中很可能没有接触这么广),这部分详细内容可参见第2章;此外,我们还需要把自己的学习成果汇总起来,写一个项目/实习经历总结,制作一份跟岗位匹配的个人简历。
在简历内容方面,需要涵盖个人的教育经历,项目经历,实习经历,竞赛获奖,论文专利,个人总结等内容。突出项目/实习经历,包括参与了一个什么样的项目(是一个SoC设计或者是图像处理算法FPGA实现?有几个人一起做?);承担了哪方面的工作(某个IP的RTL设计/验证?);取得了怎样的成果(完成了某个功能?做出了面积或速度上的优化?)。
没有这方面经历的同学请花心思把自己做过的一些比较有技术含量的设计包装成某个项目的内容,但要注意与项目相关的非技术部分面试官也会顺便问问,比如项目背景之类的,这相当于一个考量综合素质和测谎的过程。
简历上的表述尽量客观化、专业化,多使用数字和专业术语,尤其是在介绍优化工作的成果或者负责的技术内容的时候要用数字和术语说明。在篇幅上,一页纸还是两页纸不重要,但要把重点内容放前面。
简历准备好后,准备一份800字左右的自我介绍,内容与简历基本保持一致,口语化表达,侧重项目/实习经历介绍,然后背下来。
最后专门做一个文档,把项目里面的设计思路和技术细节都写清楚,把系统框图和架构图都做好,有空多读几次,多画几次,因为即便是自己亲自做过的东西,不复习不练习,面试的时候还是会磕磕巴巴。
2.知识点整理
一般而言,专业面试里遇到的问题有两类,一种是专业基础知识,就是这个领域的人多多少少都应该知道的内容,比如ASIC设计的全流程是怎样的;低功耗方法;跨时钟域信号处理;时序分析等等。另一种则是专用领域知识,这部分内容来自于公司部门的业务方向,或者学生的项目/实习/竞赛经历,比如有的人对AMBA总线很熟;有的人做数字信号处理很强;有的人对计算机体系结构很了解等等。
在这一章我尽可能多地列出笔试面试中可能遇到的数字IC方面的专业基础知识点,但没有给出具体的解答,因为这些知识点可以在网上很容易就搜到,而且在第4章我会推荐几个知乎用户,他们的专栏里有很多笔试面试题的分析。另外我也会分享一个百度云链接,里面有我从网上搜集的笔试面试资料供大家参考。
2.1 跨时钟域信号处理类
- 亚稳态的定义是什么;
- MTBF(平均失效间隔时间)的概念;
- 同步电路与异步电路的比较;
- 两级DFF同步器的原理和代码,以及输入窄脉冲情况下的变化;
- 握手协议进行同步的原理和代码,并与方法4)在资源、速度、适用情况等方面进行比较;
- 异步FIFO的原理和代码,包括为什么需要同步读写指针,为什么要用格雷码,满空状态如何判断,为什么会有假满假空现象以及会对系统产生什么影响,FIFO深度如何选择等等;
- 异步复位同步释放的原理和代码,以及比较异步复位和同步复位的优缺点;
2.2 综合与时序分析类
这个分类不是特别严谨,我的理由是用DC做综合或者用PT做时序分析都是在服务器的环境下,所以就放在一起了。一个数字IC设计工程师应该要能够借助这两个工具评估自己的设计。
- ASIC设计流程,从spec到GDSII的全过程,以及每一步的意义和工具;
- 综合的概念,以及主要操作步骤;
- 综合的常用脚本,包括创建原时钟、分频时钟,设置时钟参数等等;
- Setup time和Hold time的概念;
- 静态时序分析(STA)的概念和优缺点;
- 用PT做STA所需要的数据和脚本,以及弄懂PT时序分析报告上的信息;
- 时钟抖动(jitter)和时钟偏移(skew)的概念,以及他们对时序分析的影响(更严格还是更宽松了?);
- 对一个“输入-DFF-组合逻辑-DFF-输出”的一个典型系统进行时序分析,计算该系统的最大运行频率(最小周期);
- 如何修复Setup违例和Hold违例;
2.3 低功耗方法
- 集成电路中功耗的来源;
- 动态功耗与哪些参数有关,开关功耗的公式,以及静态功耗与哪些参数有关;
- SoC系统中常用的低功耗技术,从体系结构级到器件工艺级都要能列出一种,比如划分不同电压域、时钟域,使用不同阈值的器件等等;
- RTL级的低功耗设计方法,重点是门控时钟,包括基于与门和基于锁存器的门控时钟结构的代码和优缺点比较;
2.4 计算机组成与设计类
这部分的内容稍微有点偏向专用领域,但是平头哥和比特大陆等公司的笔试题里出现了不少相关内容。
- 计算机中使用补码的意义;
- 超前进位加法器的原理和代码;
- 小数定点化的概念,包括对于一个确定的十进制小数,需要多少bit才能无损定点化;
- 基于IEEE-754标准的浮点数的表示;
- 计算机中的乘法和除法如何计算的(只需知道最简单的方法);
- 流水线设计的作用和优缺点;
- 处理器中结构冒险、数据冒险、控制冒险的概念和解决机制;
- cache的映射方法和写回策略有哪些;
2.5 常见编程题
今年在笔试环节让手撕代码的公司不少,状态机的设计方法一定要熟练。
- 奇数分频电路的代码,包括两种情况:使用带负沿触发的DFF(要求占空比50%),不使用带负沿触发的DFF;
- 按键去抖动电路的代码;
- 无毛刺时钟切换电路的代码;
- 用状态机实现的序列检测电路,比如“1011”检测;
3.面试经验
面试一般分为专业面试和综合面试两种,侧重各有不同,下面分别介绍。
3.1 专业面试
对于专业面试,个人感觉流程一般是:“你先自我介绍一下”→“你这个东西是怎么做的”→“来问你几个基础问题”→“你有什么要问我的吗”。
自我介绍环节,我个人的理解是口语化地展示简历上的内容,毕竟大多面试官都没有仔细看过你的简历,时间控制在3~5分钟左右,内容上要突出项目/实习经历。
接下来面试官一般会针对你简历上的内容,和刚才自我介绍的内容开始提问题。常见的问题如下。
问题1:“(针对项目)你这个电路/系统的架构/算法是咋样的画一画;数据是怎样传输/处理的说一说等等。”
分析1:这部分内容因人而异,有的人做SoC,有的人做算法实现,有的人做底层驱动,有的人做接口总线等等。我们评价面试的难度,一般就看这部分内容面试官能问得多深、多细,所以对于自己准备的项目尽量吃透。如果面试官把所有细节都问完后还要升级难度,就会扩展内容,比如你本来做的是一个低速接口,他会问你知不知道高速接口设计所需要的理论知识。
问题2:“你觉得你最满意的一个项目是什么?这个项目里面你觉得最难的部分是什么?”
分析2:有些同学可能有多个项目,面试官为了节省时间就问这种问题,让你自己选一个讲。另外面试官也可能不太懂你做的东西,就让你自己挑一个自我感觉最难的部分讲,借助你的讲解来判断这个项目的水平和你的功力。我提供一种回答思路,项目上选一个你最熟悉的讲;最难的内容可以是任何一个你做过的工作,为什么难可以解释成需要对某个架构/算法.协议了解透彻等等。
在简历上的内容聊完后,或者面试官对简历上的内容不太感兴趣,就会进入他的提问环节。可能有两种问题,第一类是公司的业务方向,如果我们根本没了解过,建议直接说没接触过不知道。第二类是基础知识,比如“来!小伙子问你一个异步信号处理的问题…”。这部分内容可以参见第2章。
最后有一个提问环节,此时建议问一些岗位、部门的内容,比如“这个岗位的工作内容是什么?需要用到哪些知识技能?”“部门的业务方向是什么?”。可相互增进一些了解。
3.2 综合面试
这部分可能会问一些个人特质、生活习惯、兴趣爱好、人际交往之类的问题,没有标准答案,我列出一些自己遇到过的。由于这些问题比较通用,具体的回答和分析大家可以去网上自己找。我个人的感觉是,要表现出自己积极主动、善于学习、乐于交流等特质。
问题1:请用几个词语描述一下自己;你的优点是什么?你的缺点是什么?
问题2:你跟同学/同事做项目时发生矛盾了会怎么处理?
问题3:描述一次最难忘的成功/失败经历。
问题4:平时一般看些什么书?为什么觉得这本书好?
问题5:你为什么想来我们公司?
4.推荐
以上很多内容我都只给列出了问题而没有给出答案,原因有两个,一是可以在百度上直接搜索关键词,有很多博客都写了相关技术分析,建议大家主动搜索,加深学习;二是知乎上已经有一些大神进行分析解答了,我也是结合两者来学习准备的。在此我推荐几个知乎上经常分享数字IC技术分析的用户以及一篇前年的面试总结。最后分享一个百度云链接,里面有几份比较全面的复习资料供大家参考。
(1)文章:数字IC验证面试经验及面试题总结(2017年)
大雄:数字IC验证面试经验及面试题总结(2017年)(https://zhuanlan.zhihu.com/p/29642469)
(2)用户:
@数字芯片实验室
,@IC君
,@NingHeChuan
数字芯片实验室
的文章下面分享了超级多各大公司的数字IC笔试题和解答,还有对设计、验证、后端各环节都有涉猎的知识讲解。
IC君
的文章虽然不直接面向笔试面试,但都是不错的技术分析,值得平时多学习学习。
NingHeChuan
有一篇“你要的FPGA&数字前端笔试题来了”非常全面详细地总结了各种笔试题目,对求职复习非常有帮助(已在网盘里)。还有一篇“你问我FIFO有多深”也是学习FIFO的好文章。
(3)百度云链接:https://pan.baidu.com/s/14sPuhITR7L6rpHzqkZCLhg 提取码:387n
最后希望我的这篇文章能对同学们有所帮助,祝愿大家都能拿到心仪的offer!
小编按:
@数字芯片实验室
,@IC君
,@NingHeChuan
除了知乎账号以外,也有微信公众号,扫描下面二维码可以关注他们