面试经验分享平台

将近几年的名企精品面试汇总、筛选、整理,再分享给大家
经验详情
Digital VLSI Job Interview Experience

最近诸事不顺,所以决定听从某人建议赶在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-drop. 面试的最后他问了我对哪个team感兴趣,我说我想去SOC integration team,不过回原组也可以。

涉及到的问题:

分析一个类似于flip-flop的电路的setup和hold time

让我把一段c code设计成hardware,画block diagram。里面大概有adder multiplier还有固定bit的shift之类,还需要几个flip-flop

又问了一遍sequence detector

 

 

2. ASIC Design Interview (intern)

Nov 2011 Ann Arbor (on-campus)

duration: 2 x 45min

应该是对我人生意义重大的一次面试了。在这之前几乎屡败屡战,甚至在一周前才刚刚被cirrus logic血虐。应该是我在所有interview里面最沉重压力最大的一次。

第一场是一个video team的manager. 面之前上linkedin研究了一下他的简历,发现他之前曾经做过MPEG,于是赶紧打开当时的第一个627project复习了一波。他果然看到我简历里的MPEG之后wow了一下,然后开始狂问。只可惜准备的再充分他有些问题也实在超出了我的理解范畴了T.T。不过看得出他还是挺满意的。

涉及到的问题:

write an async fifo in verilog

一道算fifo size的题,大概是给一个read的频率一个write的频率问fifo size多大才不会overflow

c++的inheritance和polymorphism,随便扯了两句就交枪了

sequence detector的state machine

synthesis之后有negative slack怎么办,我当时答的是在synthesis report里找critical path然后pipeline。后来意识到其实也可以调synthesis tool里面的compiling effort尝试

 

第二场是一个staff engineer,更侧重于circuit和logic level. 他见面就问我怎么take了这么多crazy course. 要是他看到我现在的resume估计就要呵呵了。面试就是一直在做题,不过大多比较容易。

涉及到的问题:

sram和dram区别,为什么sram可以low power

clock divide by 3 with 50% duty cycle

画kmap简化logic

其他的记不清了,有很多比较容易的logic design问题

 

 

 

Apple

1. Digital Verfication Interview (full-time)

Sep 2012 Cuppertino (on-site)

duration: 5x45min

对于一个on-site而言五轮面试算很少了,不过这个面试残忍就残忍在五场面试连在一起丝毫没有休息时间,基本都是第二个人敲第一个人的门然后进来直接开面。而且不像其他面试用纸笔,这个直接用房间里挂在墙上的白板。这意味着我三四个小时几乎一直站在小白板前面又写又画又讲,基本面到最后已经累得脑子都不转了。

因为是digital verification interview,所以可以明显感觉的跟qualcomm面试的不同。问题从architecture level延伸到logic level,但是没有一个人问circuit level的问题,包括transistor, low power design等等。而且甚至连面试官本身都是software出家根本不懂这些。

有意思的是这个interview从phone screen到on-site都不停有人在忽悠我说verification比design有意思。不过这个东西么。。还是要跟着自己感觉走啦。

不知道是因为当天面试安排太紧还是我最近状态太差,已经记不太清楚每个面试官问我的问题了。所以我先把每一场的大概情况写在前面然后把所有想的起来的问题写在一起。

第一场是个领我进门的印度哥,先是让我讲了一遍我在qualcomm做过的intern. 然后让我在小白板上画在qualcomm做过的testbench的block diagram. 然后我提到AHB bus的时候他又开始让我在小白板上画AHB bus的timing diagram. 第一场就画这个实在让我有点发懵,不过好在第一次画错了之后在他的提示下改回来了。之后他又问了我第二个627project. 我在小白板上画了25个core然后解释了半天L1 和distributed L2 cache是怎么工作的。

第二场是个美国人,umich毕业的。上来在我简历上找了半天427project然后笑了一下。我问为什么他说427project果然是多少年都没有变。然后我给他讲了qualcomm的intern和一些course project. 他居然对canary circuit感兴趣于是我就在小白板上讲了半天。不过他一点反应都没有,估计是后悔问我了。看我上过470所以问了一些算cache size的问题。之前在qualcomm interview的时候就吃过亏了所以来之前的飞机上特意把computer architecture的那些内容都复习了一遍,这回是派上用场了。印象深刻的是他问了我470的grade是多少,我十分悲剧的说得了B+. 过了一会他又问我627grade多少,我终于可以自豪的说得了A+了XD

第三场看着像个亚洲人,不过我没法判断他的国籍,也是umich毕业的。他和聿姐居然是一个team的以至于上来就问我认不认识Yu Wang. 还说他们used to work together. 他听说我上过两次627的时候有点吃惊,还问我为什么要上两遍。我说因为觉得可以做两个完全不同的project. 然后他很赞同的哦了一下开始转向问我的project们了。

第四场是个印度人。不过前三个人都是engineer, 但是第四个人是hiring manager. 我之前以为他是hr之类的人物结果发现还是technical的manager. 问的问题不是非常难,但是涉及的面很广,大概是想了解一下我各方各面的能力吧。

第五场是主管SOC design/verification的director. 像预想的一样我终于可以坐下来聊天了。他大概讲了一下apple SOC team发展的历史还有为什么要建设这个team. 大概是outsource给别人发现和预期不太一样而且还存在技术和创意泄密的问题。然后我讲了一下我自己的情况很想法。我说我比较想去比较顶层的team, 像SOC integration team, 因为这样可以学到更多东西。他说这是个interesting idea说可以做两年SOC然后看哪个core更感兴趣之类。然后我又问他有没有rotation program然后干两年换个组做不太一样的东西行不行。他说没有那么严格的rotation不过如果想换别的东西做可以随时提。最后我问了他是不是apple的技术也对员工十分保密。他说员工之间的commucation还是很多的基本没有保密,还给我举了个测试工程师提前看到新UI的例子。

涉及到的问题:

AHB bus timing diagram

sequence detector的state machine

给我画了一个clock timing diagram有input output和reference output. 让我用verilog写一个monitor可以当output和reference output不一样的时候输出error. 还是挺tricky的

然后又给我画了一个clock timing diagram有input和output让我直接用verilog写DUT

算cache size和address

问我470用的什么cache我说4-way, 他说为什么icache要用4-way而不是direct map。我分析了半天发现是该用direct map。不过仔细想想好像我当时就是写的direct map不过自己忘了而已

cache coherence protocol, 就问了个idea

用c写了一个巨简单的function

blocking/non-blocking

write an async fifo

write a divde-by-5 clock divider with 50% duty cycle

一个类似脑筋急转弯的题,x-y轴平面上有一个点,给我三个按钮每个按钮按了那个店都会有不同的反应。问我怎么才能尽量测全。题目比较开放大概是想考验我全面考虑问题的能力吧

有64条wire每条都有可能tie to vdd/gnd或者跟另外一条short,问我怎么设计这些wire的input才能最efficient的测出哪条有问题。我现编了个类似于binary search的办法居然还对了

感觉能回忆起来的很少,有想起来的再补吧

 

另外附上拿到这个on-site之前的phone screen. 我不把它叫phone interview因为它确确实实只是个screen而已。Interviewer拿着我的简历从上到下完完全全问了一遍。Technical skill只问了我在什么上面用过这个skill完全没有考察我的意图。最后问我对design还是verfication更感兴趣,我明确说了design. 他忽悠我了一遍说verification更有意思之后我还是坚持design. 他就直接bye了。我当时的想法是希望他要么能给我个design的on-site要么就把我拒了。结果给了我个verfication的on-site我也不知道是为什么了。

 

 

2. Digital Design/Verification Interview (full-time)

Sep 2012 Ann Arbor (phone interview)

duration: 45min

这个phone interview和上面说的那个正好是连着,不过其实两个team完全不知道在面同一个人。这个team在Austin,是做GPU design的。其实看到这个词就能说明我悲剧了。有两个人同时在电话上问我,一个是verfication的一个是design的。完全没有关心其他的project就盯着我的470project问。这基本是掐到我软肋了。所以没有消息也是正常的,应该算默拒了。

涉及到的问题:

算cache size

狂问我cache controller怎么写的,debug的时候遇到什么难关。我完全不记得了

让我介绍一个比较基本的pipeline processor

问我470的out of order processor怎么测的,我说当时我们对每个component都写了c golden brick。然后他问我c model里面有没有timing information我说没有因为pipeline和pipeline之间都是combinational logic所以没必要考虑clock

cache coherence protocol什么MSI MOSI MOESI的。我说我study过不过想不起来了

 

 

 

Cirrus Logic

Digital Design Interview (Co-op)

Oct 2011 Ann Arbor (phone interview)

duration: 45min

其实是两轮phone interview。第一面是我人生第一场job interview,出乎意料结果还不错。第二面惨败。是真真正正的惨败,甚至在很长一段时间都给我造成了阴影。

Cirrus Logic公司没有那么大,所以要求engineer懂得就要多。面试之前给我发的topic list就明确了在digital circuit,DSP和analog circuit里面至少要懂两样。对于我这个基本已经把DSP忘光了analog又刚开始学的人而言不悲剧也难了。

第一轮是个美国人manager,记得人还挺好说话的。问了问我project然后开始出technical问题。我最后问了一下他intern都做些啥,他还给我举了个intern在那边的例子。印象深刻的是最后我补了一句我还学了一点analog circuit,然后他说那下次应该问你一点analog. 我开玩笑的说如果我不补这句是不是cirrus logic就让我一面过了。

涉及到的问题:

blocking/non-blocking

z-transform

frequency/step response

把一个FIR filter implement成circuit

 

第二轮是个印度engineer. 真是最纠结的一场面试。当时似乎是为了做413通了一宵,第二天面试前10分钟才起床,整个人昏昏沉沉的。印度人问的问题从verilog到transistor到RC circuit再到DSP几乎没有一道我答对的。面试纠结了整整一个小时,在最后的二十分钟里我脑子里想的问题只有一个,就是怎么还不结束。中间电话还因为信号问题断了一次。断了之后我一度希望他就不要打过来了就这么把我拒了就好。结果他还打电话过来问我是不是故意挂他电话。所以可想而知AT&T有多坑爹

涉及到的问题:

blocking/non-blocking,然后他问我在always posedge clock block里写blocking assignments有什么后果。我当时直接就傻了跟他说我肯定不会这么写的。然后他还是要问我直接说不知道了

一个4-input NAND问哪个input最critical最好,其实是面试经典题了,不过当时我完全没听说过,题都没听懂

step/frequency response,比第一轮的那个要难,这回我蒙是蒙不出来了

一个RC circuit的问题,问怎么连是low pass怎么连是high pass。然后又问我oscillating rate神马的问题我完全不会算

 

 

 

Cisco

Digital Design Interview (Intern)

Oct 2011 Ann Arbor (on campus)

我个人觉得Cisco其实基本不招人。这个面试在当时算是我发挥最好的面试了,基本所有题都做对而且最后他还给了我一道bonus. 面完之后我还给那人发了封thank you letter. 结果是两个月的没有消息突然有一天给我发了封拒信来。那时候我已经在办Qualcomm的OPT了。

涉及到的问题:

很多基础的logic design的问题

8个bit相加的问题,在Qualcomm的internal interview里已经提到过了

 

 

 

Keithley Instrument

Digital Design Interview (co-op)

Oct 2011 Ann Arbor (phone interview)

一个做FPGA的小公司,但是给我留下了很深刻的印象。因为这个面试实在是太扯淡了。唯一一个不是那么technical的interview. 好像是有三个人同时在电话上面我。被默拒。

涉及到的问题:

怎么向美国高中生解释什么是电阻和电容。。我感觉当时面试官听到我答案之后的反应只能用呵呵来形容了

如果有customer来反映设备出了问题,你要怎么解决

怎么使用示波器的相关问题

怎么使用multi-meter

 

 

 

关于问面试官问题

其实我也没有什么正确答案,以下是我一般喜欢问的问题

最初都是没问题找问题问,就为了完成个任务让对方觉得自己对这个position有兴趣。比如让对方描述一下intern的工作状态。又或者有没有training, 有没有mentor之类。

后来慢慢的开始有自己想法了,这时候问的问题就确实有些用处。比如面试官一般很有可能就会是你将来的组员或者上司,所以我一般都喜欢先问对方是什么team, 如果做得东西我没听说过那就让他讲一下,如果听说过那就描述一下自己想象中这个team应该做的事情问问是不是和想象中有出入。这样可以判断自己是不是对那个team有兴趣。

我也会提出一些自己的想法,比如我想进SOC integration team因为可以站在高处学到更多的东西,我就问问他们对这个观点的看法还有可能性。或者我比较想进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~