注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
【转载】从人人的一位学长那扒下来的,若有重复,请版主帮忙删除........
来源: 胡竞的日志
最近诸事不顺,所以决定听从某人建议赶在career fair之际写一点自己曾经的面试经历,积攒一点人品。
因为不是牛人,所以面经多是辛酸血泪史,不过还是希望能对大家有一点帮助。
Qualcomm
1. Digital Design Internal Interview (full-time)
Aug 2012 San Diego (on-site)
duration: 3 x 45min
这个据说是Qualcomm对待Digital Intern的一贯政策,所有Intern都要经过三场面试(两场Digital Design,一场Digital Verification),然后根据面试结果和team manager的review综合决定return offer. 因为是只面向内部Intern的面试,所以面试官都会问很多和intern期间工作有关的问题,而且比较深入。面试前我还特意找我的mentor聊了一下,明确了自己所做的project的意义,事实证明是很有必要的。
第一场是Digital Design,面我的是一个staff engineer,美国人。上来让我讲了一遍实习期间所做的project,问了啥记不清了。然后又让我挑自己在学校做过的project讲了讲。我重点讲了第二个627 project,感觉他尤其对里面有关async fifo的东西很感兴趣。轻松加愉快,一边面试一边聊天。他还给我讲了qualcomm的某些跟DVFS和cross clock domain的东西,还有他自己组做的东西(好像是跟security有关的chip,记不清了)。
涉及到的问题:
metastability: hand-shake logic, async fifo, double flip-flop (这个不能用在mult-bit的bus上)
how to reduce leakage power: low-vt/high-vt cells, power gating, body biasing (这个要用到triple-well,对technology的要求比较高)
clock divide by two/four
design一个可以把8个1bit数相加的电路,这个我曾经在cisco的面试上做过,不过很久前的事了已经忘记了。大概是先用几个1 bit adder分组相加,然后分别把s和cout相加。只做了个大概齐,他觉得差不多了就stop了
一个transistor sizing的很基础问题
一个ring oscillator的问题,问我如果inverter不是2:1 sizing会有什么结果。答案是duty cycle就不是50%了
写了一段带async reset的verilog
有一个分析timing diagram的问题不过记不清了
第二场是Digital Verification. 因为在学校没有学过任何关于正式verification的课,又对programming尤其是OOP极其生疏了,所以面之前就做好了被打击的准备。面我的是SOC verification组的一个印度manager. 这个印度人对我的course project完全不关心,只盯着我在qualcomm的project问。因为我的任务都是跟develop testbench有关的,但其实又并不需要真正了解整个testbench的architecture和所有细节,所以他每次稍一深入我都直接交枪。例如有关Vera interface driver的问题。还问了我有几种code coverage的类型,我也完全不记得。面试很艰难。即使早就有心理准备还是倍受打击。
涉及到的问题:
inheritance and polymophism,包括有关virtual function的基础问题
用c写个递归调用的函数。随便写了两笔直接I forgot了
how to swap two variables without using a temp,让我用c和verilog各写一个。verilog容易,c直接不会。网上可以查得到答案,加加减减之类的
算cache,算有几位是block offset有几位是set index有几位是tag之类的。完全没想到不做cpu的人也会来问我cache,纠结了很久也不知道是不是做对了。后来才意识到做SOC的人对cache也是非常感兴趣的
cache coherence protocol, 我说有MSI MOSI MOESI之类之类的,具体的就忘光了。就给他说了个basic idea
用perl写个parse文件的程序。具体function我不记得了我给他写的伪代码说我可以在网上现查function
画一个sequence detector的state machine,然后怎么测试最efficient,很常见的题
第三场回归Digital Design,不过已经比较累的所以发挥不如第一场好。面我的是个video team的manager。因为我之前做过MPEG decoding chip所以跟他还挺有共同话题。他照例对我那个627里面async fifo的东西很感兴趣,还问我为什么jamb latch可以降低metastability。我说原理我不清楚不过他可以加快regeneration rate,还给他画了那个regenerate的exponential的图。他对canary circuit也很感兴趣,问我为什么在一个core里要放四个canary circuit. 我说local process variation很大而且还有IR-dro站在高处学到更多的东西,我就问问他们对这个观点的看法还有可能性。或者我比较想进design team,问问他们觉得是design更有意思还是verification更有意思。
还有就是我会对有没有机会做到不同的工作感兴趣。比如我会问有没有rotation program,或者问他们有没有类似于换project和换组的经历。
关于选课和方向
经历最重要的当然是自己的intern. 一定要多写几行。
选课自然选能把project放到简历上的那种最好。对于digital VLSI而言最重要的是627 project了,几乎所有的interviewer都会对我的627 project感兴趣。其次是470,基本所有CPU GPU或者是SOC team的人都会对这个尤其感兴趣。对于470 project我推荐选择做multiprocessor, 就我面的几家公司而言已经没有人对instruction level parallelism感兴趣了,大家都倾向于问cache coherence之类的东西。而且做一个multiprocessor直接拿到627 project上是会有很大的发挥余地的。427 project基本没有人问。如果是面circuit design的话413 511之类的project也许会有用处,不过对于我的那些面试而言都是摆设了。
我比较遗憾没有上过的课:
482: 进了公司实习才发现即使你是做hardware的也要懂很多software,有机会应该多take几门CS的课。
373:因为公司的chip都会有很多比较通用的bus interface比如说AHB, AXI,又或者有很多软硬接口的问题比如interruption,这些内容都在373被覆盖到。现在貌似498里也出了一门类似的课,对于master而言是好消息
570:我对于high level的architecture了解太少了。
578:因为学校里能接触到formal的verification environment实在太少了,学这门课应该对找工作还是今后工作中都会有很大帮助。
我个人建议在master开始的时候就确定好自己的方向,这样可以上到最有利于自己发展的课,少走很多弯路。比如我master一整年在cadence里挣扎,结果去了公司发现完全跟cadence say goodbye了,这完全是浪费。
关于Digital VLSI方向,有这么几种:
Digital design: 进了公司就是写RTL, debug, 看waveform. 不过其实大公司不会让你有机会写很多code, 所以一定不会有course project那么exciting. 这样的面试参考qualcomm的internal interview, 虽然工作中不直接设计circuit但是需要懂很多circuit上的概念,所以面试中circuit level也被问的比较多的。
Digital verification: Verification Enigineer的需求永远是最大的。但实际上这种position并不需要你对RTL有太多深入的了解,只需要你会OOP,可以写C model可以写Verification environment就够了。从某种意义上来讲我认为这个position甚至更适合CS的同学。
Circuit design: 现在的大公司已经少有custom design了。在digital circuit方面一般只有很少的team和人在做memory和standard cell library. Position相对前两个少很多。对这方面的面试我几乎没有经验。
EDA: 做tool. 纯CS不解释。
就写这么多吧,以后想到了再补充。如果有不对的或者有争议的地方希望各大神们指出来。另外祝大家多拿interview多拿offer~
|