7.2 面試真題 & 詳解
昨晚接到的通知,今天下午兩點(diǎn)到匯眾大廈面試,本來下午有中興的面試的,沒辦法去了,一點(diǎn)從知春路坐城鐵出發(fā),20分鐘后到了西二旗,然后往南走找上地七街,在路口就是。到了后發(fā)現(xiàn)已經(jīng)有好幾個(gè)在等著了,居然有四五個(gè)認(rèn)識(shí)的,等到兩點(diǎn)鐘進(jìn)去后填了一個(gè)表,進(jìn)去后發(fā)現(xiàn)里面居然又有好幾個(gè)北航的。好像下午一共有兩批人,兩點(diǎn)一批,三點(diǎn)多一批,每批十幾個(gè),在填登記表的時(shí)候看到上面都有各自的分?jǐn)?shù),我的是39分,不高,不過在這批人里是最高的,看到有29分的。在會(huì)議室里填完表,然后便開始了漫長(zhǎng)的等待,期間還接到華為3com的面試通知,看著人一個(gè)個(gè)被叫走,三點(diǎn)半面的那批人都來了,有的還被叫去了,還沒輪到我,我去問了一下,發(fā)現(xiàn)好像是把我給遺忘了。ft,按照rp守恒定律,一面的時(shí)候該順利些吧。
一面我的是個(gè)小伙兒,挺精神的,聽其說話思維比較敏捷。開始先讓我介紹做過的項(xiàng)目,包括項(xiàng)目中使用的FPGA、DSP芯片等等,bla bla了一番,對(duì)做過的東西畫了一下其系統(tǒng)框圖,解釋了一下,然后讓我舉我設(shè)計(jì)過的最復(fù)雜的一個(gè)例子,我說做過的東西都是一塊一塊的,沒有特別復(fù)雜的(汗~~太實(shí)在了吧),不過我對(duì)FPGA設(shè)計(jì)的一些概念還是挺清楚的,然后便隨便舉了一個(gè)TDM時(shí)分復(fù)用的東西,說完這些他就開始問了一些基本的概念問題,比如如何分析系統(tǒng)的時(shí)鐘頻率,以及保持時(shí)間的問題,他解釋說FPGA中一般不存在保持時(shí)間的問題,因?yàn)槠鋍LOCk skew沒有那么大。還問了一個(gè)時(shí)序約束的概念,multi-cycle path,以及如何用DPRAM設(shè)計(jì)一個(gè)FIFO,我問了一下是同步還是異步的,補(bǔ)充說異步FIFO要用gray碼計(jì)數(shù)器,然后他便問了一下為何要用 gray計(jì)數(shù)器。總之一面感覺還是比較順利,問的問題大多是我比較熟悉的,主要是我也沒有那么牛的項(xiàng)目經(jīng)驗(yàn),沒有詳細(xì)的問項(xiàng)目的內(nèi)容。等了一會(huì)兒就開始二面,然后便開始郁悶了。二面我的應(yīng)該是個(gè)頭頭,有單獨(dú)一個(gè)房間作辦公室,人還是很nICe 的,就是問的問題一點(diǎn)都不nice。剛開始看了一下我的簡(jiǎn)歷,看到項(xiàng)目經(jīng)歷上時(shí)間有重復(fù)的部分,便問了一下,然后便開始問一些FPGA方面的東西,問我們選擇FPGA的時(shí)候考慮的因素有哪些,ASIC 設(shè)計(jì)的流程,這些都比較easy,從頭到圍說了一下,期間還問為何用aLTEra 的芯片,沒用Xilinx的,說到功能仿真的時(shí)候還問了一下如何產(chǎn)生測(cè)試向量的,并讓舉了一個(gè)例子,然后我便舉了一個(gè)例子說明了一下。到現(xiàn)在為止還算基本順利,然后便郁悶了。
考官問我對(duì)latch是如何看的,并讓畫一個(gè)latch的圖,ft,前一陣子筆試的時(shí)候還畫過,結(jié)果一緊張,給忘了,然后又讓畫D觸發(fā)器的圖,更ft了,本來想復(fù)習(xí)一下的,結(jié)果借了幾本數(shù)電的數(shù),上面都沒找到,就沒再去查,這下郁悶了吧?次耶嫴怀鰜恚阕尞嬕幌翿S觸發(fā)器的圖,寫一下真值表,這個(gè)還是很easy的。接著問了一下建立時(shí)間不夠的話會(huì)出現(xiàn)什么問題,如何解決,也就是如何處理亞穩(wěn)態(tài)現(xiàn)象。我說用兩級(jí)同步,F(xiàn)IFO,握手,然后便讓畫一下握手實(shí)現(xiàn)的過程。以前對(duì)這個(gè)倒是清楚,可是沒真正用過這種方法,不過最終還是說清楚了。然后又問如何進(jìn)行低功耗設(shè)計(jì),這我哪知道啊,我說要盡量降低時(shí)鐘頻率,用門控時(shí)鐘之類的,在這個(gè)問題上又折騰了半天,問為何時(shí)鐘頻率高功耗會(huì)大,我說門反復(fù)反轉(zhuǎn)會(huì)產(chǎn)生較大的電流,然后他又問這電流如何產(chǎn)生的.....唉,功力不夠,以前都是知道這些,可是沒有從最底層的CMOS結(jié)構(gòu)的角度來分析這些問題,感覺他是給了我一些提示,不過畢竟對(duì)這種太底層的東東不熟悉,沒領(lǐng)悟過來。然后又問了一下FIFO的設(shè)計(jì),如何設(shè)計(jì)一個(gè) FIFO,然后重點(diǎn)問的是如何確定一個(gè)FIFO的深度。在考卷上就有這個(gè)問題,他說沒見過考題,看來他們挺重視這個(gè)問題的,在這個(gè)問題上又折騰了半天,回答的不令人滿意,腦袋都開始糊涂了。說完這個(gè)后他問我還有沒有問題問他,我說最關(guān)心的是這次面試的結(jié)果如何(汗~~太直接了),他說這也得由第一輪的結(jié)果來決定現(xiàn)在也沒法告訴我結(jié)果。然后我問這次北京招60人,是否有一些大的項(xiàng)目要作,他解釋說Intel剛跳過去的副總裁算了一下目前的工作量跟人員的比例,得出結(jié)論需要再招60人,而他又有這個(gè)權(quán)利,然后便開始招了.....他說招這么多人進(jìn)來肯定個(gè)人有各自的工作,不會(huì)說有人閑著學(xué)不到東西的情況。最后說通過了會(huì)還有兩輪面試,一輪是HR的,一輪是見他們的高級(jí)主管,我問是否是英文面試,他說是全中文的,當(dāng)然如果英文好要求用英文也可以,他們主管在美國(guó)待的時(shí)間比較長(zhǎng),英文還是比較流利的。
想了一下,沒有問的了,便告別了。他們有的第二輪問的比較少,甚至就沒有多少技術(shù)問題,不知道為啥問我這么多啊,面別的公司問的多點(diǎn)沒關(guān)系,就當(dāng)攢面經(jīng)了,可威盛可是我很想加入的公司,寧可不要面經(jīng),直接給offer得了總結(jié)整個(gè)過程,發(fā)現(xiàn)基本功還是最重要的,項(xiàng)目經(jīng)驗(yàn)在其次,成績(jī)他們好像壓根沒看。以前一直覺得基本功還可以,現(xiàn)在發(fā)現(xiàn)還差的遠(yuǎn)了。一個(gè)周之內(nèi)應(yīng)該會(huì)有結(jié)果了吧,感覺二面發(fā)揮的差了點(diǎn),被B4也沒啥好說的了,當(dāng)然或許rp攢的足夠好,接到三面通知也還是有可能的吧。
經(jīng)驗(yàn)2:
via上海(旭上電子)一直是我非常心儀的公司,在招聘網(wǎng)上看到了招聘信息,就投了簡(jiǎn)歷,非常幸運(yùn),得到了科大筆試的機(jī)會(huì),并且成功的進(jìn)入到了第三面,見到了hr經(jīng)理。但是由于自己發(fā)揮不好或是其它一些原因,并未收到via的offer。雖然沒有能夠成功,但還是決定寫一下筆經(jīng)和面經(jīng),談?wù)勛约旱母惺,希望?duì)大家有點(diǎn)好處。
言歸正傳,在chinahr上投了簡(jiǎn)歷一段時(shí)間后,就得到了筆試的機(jī)會(huì)。網(wǎng)上篩選簡(jiǎn)歷時(shí), via會(huì)要求你填寫一些open question,比如為什么選擇via,你為什么認(rèn)為自己能勝任該職位,你是否對(duì)自己的職業(yè)生涯有所規(guī)劃等等問題,這說明via招聘員工是非常認(rèn)真的,所以同樣他也希望你能認(rèn)真對(duì)待,這畢竟是一個(gè)雙向選擇。
這里要非常贊一下via的筆試。他們的筆試工作做的很仔細(xì),via 的四個(gè)區(qū)域公司,北京、上海、杭州、深圳的筆試一天之內(nèi)全部搞定。具體安排如下:上午10是北京威盛的筆試,下午13點(diǎn)開始上海威盛的筆試,16點(diǎn)開始杭州和深圳威盛的筆試。筆試時(shí)間統(tǒng)一為兩個(gè)小時(shí),每一次筆試都會(huì)發(fā)給你一本試題集,每一本試題集大概都有20套試題,涵蓋了各分公司的所有筆試題,比如,架構(gòu),軟件開發(fā),硬件開發(fā)等,非常詳細(xì),你在做完了你所申請(qǐng)職位的試題之后,你還可以做其它職位的試題,前提是只要你夠牛...,這樣估計(jì)會(huì)有加分的。
說說我做的架構(gòu)(architecture design)的試題吧,總體來說,比較簡(jiǎn)單:
1 是一道編程題,有三個(gè)整數(shù),求中間大小的那個(gè)數(shù);
2 是一道改錯(cuò)題,是關(guān)于用指針能否返回malloc分配的內(nèi)存的題。
void getmemory(char *p, int num)
{ p = (char *)malloc(sizeof(char)* num) }
然后是main函數(shù)中的getmemory(str,100); strcpy(str,"hello");
3 是一個(gè)幾何計(jì)算題,很簡(jiǎn)單,列出兩個(gè)二元一次方程就可以解出來;
4 是一道智力題,問有一個(gè)93*36的長(zhǎng)方形,全部由1*1的單位正方形組成,問長(zhǎng)方形的一條對(duì)角線要穿越多少單位正方形;
答案似乎是93+36-1
5 問gpu的渲染流水線當(dāng)中,哪一個(gè)步驟可以刪除 (clip)掉一個(gè)三角形,并且要用d3d的函數(shù)具體指出,(對(duì)于大多數(shù)習(xí)慣于opengl的同學(xué)來說,估計(jì)不那么容易回答吧)
6 問為什么遠(yuǎn)處的物體相對(duì)較小,而近處的物體相對(duì)較大?
我是從小孔成像和透視原理來分析的,并且聯(lián)想到了mipmap的原理;
7 題目說明了什么是little endian和big endian,問怎么判斷一個(gè)cpu采用的哪種處理方式
8 問gpu為什么比cpu 跑的快?1 gpu的并行處理 2 gpu的超常流水線
9 問你處理在課堂里學(xué)過的圖形學(xué)教材外,還看過哪些圖形學(xué)的書?
這個(gè)看個(gè)人發(fā)揮了依我看,architect主要集中在圖形幾何、cpu,gpu架構(gòu)和pipeline上,對(duì)c和數(shù)據(jù)結(jié)構(gòu)考的不多。
隨后就是耐心的等待,然后接到上海的電話,通知面試,這里要非常感謝我的同學(xué)mengfei,是他幫我接的電話,而且告知我面試的信息,非常謝謝。
面試時(shí)候不需要帶任何資料,因?yàn)樗麄冇心愕暮?jiǎn)歷和筆試試卷。這里簡(jiǎn)單說下via的面試流程,一共三輪面試,兩輪技術(shù)面,一輪hr面,全部在一天之內(nèi)完成,過幾天給最后通知這個(gè)要贊他們的高效,不過,也直接導(dǎo)致面試官非常的疲憊。
第一個(gè)技術(shù)主管比較瘦,帶著眼鏡,很和藹,一直提醒我放松,當(dāng)我遇到問題時(shí),很耐心的引導(dǎo)我解決,是我比較想跟著做事的那種人。不過比較bt,問了大概12道題。
1 第一道筆試題 是編程求三個(gè)整數(shù)的中間大小的那個(gè)數(shù),我用數(shù)組來求的,似乎他不太滿意,但是他仍回答說在數(shù)目比較小的情況下,用數(shù)組也是可行的
2 問了我圖形學(xué)渲染流水線的問題,我答的不錯(cuò),他也贊賞有嘉
3 因?yàn)槲易鲞^紋理映射,問了我紋理映射有哪些,提到cubic 紋理,沒答上來。
4 問紋理有哪些濾波方法,我答了trilinear和biliear,但anisotropic忘記了。又問了trilinear和bilinear有什么用,答曰:tri用于解決mipmap,bi用于解決縮放問題
5 接著問什么是mipmap... 這我還是了解的,就說是遠(yuǎn)近繪制精度問題,然后又問,
如果是1024*1024的分辨率,遠(yuǎn)處是2.5lod,近處應(yīng)該是多少?nod,這個(gè)我不知道。
6 我簡(jiǎn)歷上寫了 數(shù)學(xué)還不錯(cuò),于是他說,我們來做幾道數(shù)學(xué)題吧...
問了我泰勒級(jí)數(shù),開始忘記寫倒數(shù)那一項(xiàng)了,在他引導(dǎo)下 分析出來了
7 泰勒級(jí)數(shù)后,他又說再來道智力題吧,問我如果有十級(jí)臺(tái)階的題,一次只能走一步或兩步,看有多少種走法;我沒做過,就給他分析,先后分析出了用組合的方法和遞歸方法,但沒有具體實(shí)現(xiàn),他很詫異,說,一般的人都只會(huì)用遞歸,然后我們?cè)谝龑?dǎo)他采用組合的方法,你居然先用組合,再想到遞歸,問我是不是以前做過,呵呵,我當(dāng)然否認(rèn)了。
8 問了我matlab一些東西,如二值化函數(shù),沒答上來,估計(jì)他以前用過;圖形學(xué)不用的
9 我簡(jiǎn)歷上寫了shader,他就問了shader中有哪些架構(gòu)(好像是這樣的),然后問我asmshader和hlsl shader的區(qū)別,我就說是低級(jí)語言和高級(jí)語言的差別;
10 問了我python有哪些數(shù)據(jù)結(jié)構(gòu),為什么用python不用perl和ruby;
11 另外就是我一些 項(xiàng)目上的東西,比如我們的marker為什么用圓形的。
他比較厲害,我一提我們做的東西,他就能理解到,而且能說出我們大概所采用的方法,強(qiáng)
12 int 和unsigned int的結(jié)合運(yùn)算比如unsigned 1和int -3比較大小的問題;第二個(gè)面試官似乎對(duì)我不是很感興趣,只是問了我pipeline和texture的問題,然后問了unified shader model。剩下的時(shí)間主要是他講他們部門的工作,asm shader和compiler的東西,dx10啊,我在認(rèn)真聽,但是我們之間沒多少具體技術(shù)上的交流,一切都很平淡。可能也直接導(dǎo)致了最后的 failure。
第三面就是和hr面談,氣氛還是一直很融洽的,可惜沒給我offer,談到了工資和戶口的問題還有今年是簽幾年的合同。都比較詳細(xì)的,并且盡量回答你所問的問題。非常nice的一個(gè)人結(jié)果一般在兩三天之內(nèi)就會(huì)出。
等待的過程是痛苦的,但是沒offer的消息更痛苦...
面試問題:
1 是一道編程題,有三個(gè)整數(shù),求中間大小的那個(gè)數(shù);
2 是一道改錯(cuò)題,是關(guān)于用指針能否返回malloc分配的內(nèi)存的題。
void getmemory(char *p, int num)
{ p = (char *)malloc(sizeof(char)* num) }
然后是main函數(shù)中的getmemory(str,100); strcpy(str,"hello");
3 是一個(gè)幾何計(jì)算題,很簡(jiǎn)單,列出兩個(gè)二元一次方程就可以解出來;
4 是一道智力題,問有一個(gè)93*36的長(zhǎng)方形,全部由1*1的單位正方形組成,問長(zhǎng)方形的一條對(duì)角線要穿越多少單位正方形;
答案似乎是93+36-1
5 問gpu的渲染流水線當(dāng)中,哪一個(gè)步驟可以刪除 (clip)掉一個(gè)三角形,并且要用d3d的函數(shù)具體指出,(對(duì)于大多數(shù)習(xí)慣于opengl的同學(xué)來說,估計(jì)不那么容易回答吧)
6 問為什么遠(yuǎn)處的物體相對(duì)較小,而近處的物體相對(duì)較大?
我是從小孔成像和透視原理來分析的,并且聯(lián)想到了mipmap的原理;
7 題目說明了什么是little endian和big endian,問怎么判斷一個(gè)cpu采用的哪種處理方式
8 問gpu為什么比cpu 跑的快?1 gpu的并行處理 2 gpu的超常流水線
9 問你處理在課堂里學(xué)過的圖形學(xué)教材外,還看過哪些圖形學(xué)的書?
經(jīng)驗(yàn)3:
面試當(dāng)天早上到北京,上午面世via,晚上的車回大連。在同學(xué)宿舍無聊啊,也沒有mm陪,咱也寫一個(gè)面經(jīng)吧,哈哈。我應(yīng)聘的是 linux driver development這個(gè)職位。
約好9點(diǎn),大概9:15的樣子被喊過去,面試我的是一個(gè)高高瘦瘦的特斯文的gg,給人的感覺還是很nice的。不過不知道我的試卷去了哪里,找不到,還好有成績(jī)記錄,看到那個(gè)gg寫在我的簡(jiǎn)歷上,40分哈哈,我心想,居然了還有面世機(jī)會(huì)。先是就簡(jiǎn)歷問,問我作過的那份實(shí)習(xí)相關(guān)的咚咚,我作的是一個(gè)視頻系統(tǒng)的porting吧,他就問我那塊板子的處理器架構(gòu),然后問我移植的難點(diǎn),問題,以及如何解決的。俺一一作了回答。
接著問我對(duì)linux內(nèi)核方面的東西,這是俺地強(qiáng)項(xiàng),我就跟他說,內(nèi)核對(duì)于寫驅(qū)動(dòng)是如何的重要,如果不懂內(nèi)核肯定寫不出高質(zhì)量的安全的驅(qū)動(dòng)程序,同時(shí)也暗示via是大公司,有的driver是要加入kernel的。應(yīng)該招聘對(duì)內(nèi)核比較懂得人做 driver,這位gg問我知道via哪些driver被加入了內(nèi)核,寒一個(gè),不知道。
接著問我2.6內(nèi)核和2.4內(nèi)核的區(qū)別,俺回答,差別太大了,從服務(wù)器應(yīng)用到嵌入式應(yīng)用幾乎都作了重大的改進(jìn),服務(wù)器方面現(xiàn)在可以支持32顆cpu,嵌入式方面由于改進(jìn)了的調(diào)度算法和可搶占內(nèi)核,使得系統(tǒng)的相應(yīng)能力大幅度提高。他接著問進(jìn)程調(diào)度方面有哪些重大改進(jìn),我又介紹了一下o(1)調(diào)度算法,同時(shí)贊了一下2.6內(nèi)核改進(jìn)的驅(qū)動(dòng)模型。這一段感覺答得還是不錯(cuò)的,聊得時(shí)間也挺長(zhǎng)的,這個(gè)gg說我的經(jīng)歷還是蠻適合他們公司的,呵呵。
接著寫了兩個(gè)小程序:一個(gè)是在a.h里面定義一個(gè)整形變量,并且在b.c和c.c中include這個(gè)頭文件,我一看他在頭文件中定義變量就指出這樣定義是不可以的,這個(gè)gg說是不可以,那么會(huì)在什么地方出現(xiàn)問題,編譯還是在連接,有點(diǎn)暈竟然回答在編譯的時(shí)候,后來在給他分析問什么會(huì)是在編譯的時(shí)候出現(xiàn)問題時(shí)發(fā)現(xiàn)應(yīng)該是在連接的時(shí)候進(jìn)行符號(hào)解析出現(xiàn)重復(fù)的變量定義錯(cuò)誤,立馬改正,好好gg這個(gè)時(shí)候比較肯定我的分析。另外一道題就是分析static這個(gè)關(guān)鍵詞了,老掉牙的問題了,呵呵,不羅嗦了。接下來就是拿了一段關(guān)于mpeg方面的英文介紹讓我翻譯一下,也比較簡(jiǎn)單。我在翻譯的時(shí)候偷偷的在看他寫對(duì)我的面試評(píng)價(jià),好像提到c語言了,hoho。
中間讓我出去了幾分鐘,可能是在寫面世評(píng)語吧,我就等了幾分鐘,然后帶我去了另一個(gè)房間是他的主管,一個(gè)好像對(duì)技術(shù)不是那么在行,可能是大boss,另外一個(gè)看起來應(yīng)該是個(gè)技術(shù)很強(qiáng)的人,不過不nice。
對(duì)我從大連跑到北京面世贊賞了一番,我暈。并且問我有沒有和同學(xué)一道過來,還特意幫我查了一下他們部門在大連就我一個(gè)人過來面試,又說我不容易,ft。
還是讓我介紹項(xiàng)目相關(guān)的東西。又被我?guī)е兜絻?nèi)核了,問了我一些相關(guān)的問題,又是2.6的和2.4的差別,包括兩種內(nèi)核的定時(shí)時(shí)鐘的精度,2.4的 10ms,2.6的1ms都是基本的東西,又問我如何定時(shí)小于1ms,我說這個(gè)只能用循環(huán)了,但是那位技術(shù)gg似乎認(rèn)為用循環(huán)并不適宜,我告訴他我就知道這種方法,他也沒有告訴我更好的辦法,ft。還問了內(nèi)核中的自旋鎖方面的東西,我就介紹了一下自旋鎖的發(fā)展史,比較了一下semaphore和自旋鎖的差。中間那個(gè)大boss居然說我40 分相當(dāng)高了,而且技術(shù)gg似乎也點(diǎn)頭稱是。不知道平均分如何。
最后又問我會(huì)不會(huì)腳本編程,會(huì)不會(huì)automake,我只好老實(shí)回答只用過make,c語言用的比較不錯(cuò)。還問有沒有研究過framebuffer,我說沒有用過,不過原理有所了解,應(yīng)該很簡(jiǎn)單,就是將顯卡內(nèi)存映射到用戶空間,對(duì)映射內(nèi)存的讀寫就是操作顯卡內(nèi)存,可以顯著的提高效率,技術(shù)gg在我說的過程中說了好幾個(gè)是是,呵呵。
最后那個(gè)大boss問我有沒有得過什么獎(jiǎng)項(xiàng)或者引以為豪的項(xiàng)目經(jīng)歷。唉,俺啥獎(jiǎng)都沒有得過,引以為豪的項(xiàng)目經(jīng)歷說得還是與他們職位無關(guān)的,技術(shù)gg說我在自己的專業(yè)領(lǐng)域可能作的會(huì)更出色,ft,俺是學(xué)機(jī)電的。這樣就結(jié)束了,呵呵大boss還是很友善的,起身握手送別,連稱不錯(cuò)不錯(cuò),呵呵。并且告訴我一個(gè)星期內(nèi)給消息,我晚上可以回大連了。
ps:在附近上班的一個(gè)哥們中午請(qǐng)我吃飯的,吃飯回來的路上,風(fēng)沙那個(gè)大阿。我說北京真是不及在大連生活舒服,他說最好把這些軟件公司都搬到大連去,去大連上班比較好。呵呵
面試問題:
先是就簡(jiǎn)歷問,問我作過的那份實(shí)習(xí)相關(guān)的,問我那塊板子的處理器架構(gòu),然后問我移植的難點(diǎn), 接著問我對(duì)linux內(nèi)核方面的東西;接著問我2.6內(nèi)核和2.4內(nèi)核的區(qū)別; 最后又問我會(huì)不會(huì)腳本編程,會(huì)不會(huì)automake,我只好老實(shí)回答只用過make,c語言用的比較不錯(cuò)。