本次参加的是华为海思的暑期实习生招聘面试:
华为的实习生面试是分区域集中进行的,5月9号北京地区集中面试,一天内将面试流程走完,一面是技术面,一面通过之后会安排二面,没过就可以直接走人了,二面也是问技术相关或者闲扯几个问题。然后就是回去等通知了,过了的话就等着部门捞吧。
进去面试官让先自我介绍:这部分自己的介绍没有很好的抓住重点没理清逻辑,最好应该把自己的介绍跟自己要投的岗位结合起来。
接下来问了自己比较熟悉的项目,并要求在草稿纸上画出来讲一下:我画了项目的系统框图,是边画边讲的,然后面试官问自己主要做的工作是哪一部分,然后我介绍了自适应均衡模块,面试官让讲一下自适应均衡的原理,我结合公式讲了和框图讲了实现原理,但可能表达的有些繁琐,不够简洁,最后面试官让我用一到两句简短的话讲一下我自适应均衡的原理,但我没有总结的很好,讲了两句面试官打断我停了。
然后面试官说问我一些基础的问题:
1)FPGA里边如何实现异步数据同步的问题,我说用FIFO或双口RAM,面试官问还有其他办法吗,我说我就知道这两个,接着问为什么fifo可以实现异步,我说读写时钟可以不同,面试官说内部原理呢,我说没有了解过
面试官让我现场写出一个带使能端的D触发器Verilog代码,并分析其时序特点。随后,又深入问了STA中setup和hold的区别,还要求我解释打两拍同步器消除亚稳态的原理。整个过程技术性很强,也考察了表达和逻辑思维能力。
面试官问的面试题: 用 Verilog 写一个带使能的同步复位 D 触发器。
描述 blocking 和 non-blocking 赋值的区别及使用场景。
写一个多位加法器/分频器/FSM。
时序分析与STA:
什么是 setup 和 hold?违反会产生什么问题?
时钟偏移(skew)对电路有什么影响?
如何判断路径是setup path还是hold path?
综合与后端相关:
什么是门控时钟?为什么要使用它?
综合时 latch 被锁存住是怎么回事?如何避免?
如果后端告诉你 timing fail 了,你怎么debug?
亚稳态与时钟域跨越:
什么是亚稳态?怎么避免?
为什么打两拍能解决亚稳态问题?
项目与工程经验:
讲讲你参与过的一个 RTL 项目,模块划分和关键难点。
你有没有debug过仿真中波形异常?怎么定位的?