樂鑫科技(提前批)
選擇填空60/編程40,基礎(chǔ)題不難,編程題兩道算法。
聯(lián)發(fā)科(提前批)
嵌入式軟件崗。臺企做射頻芯片,wifi/藍(lán)牙這種,臺灣第一,給的不高但有加班費,且大陸接觸不到核心技術(shù)。筆試C基礎(chǔ)選擇填空簡答翻譯/兩道編程。編程題是分割字符串,雙向鏈表查找非0節(jié)點并打印,現(xiàn)在看很簡單,C基礎(chǔ)我刷的《王道程序員面試寶典》。
一面純聊項目,并適當(dāng)引申問一些基礎(chǔ)知識,引申了:arm工作模式/靜動態(tài)鏈接的區(qū)別,最后一個項目我做的機器學(xué)習(xí),單純?yōu)榘l(fā)論文那種,沒說清楚,估計扣分了。又問非技術(shù)問題,和同學(xué)如何分工合作,與導(dǎo)師意見不一致怎么辦,第一次被問,答的很一般,但也不是說的差。整體感覺聊的還行,可是掛了,群里好多人都是這樣,可能是掐尖吧。
匯頂(提前批)
BSP/驅(qū)動崗。先問點iic,spi基礎(chǔ)知識,速率,工作模式。然后手撕memcpy,哪搞過這種純c編程,寫的漏洞百出,我自己都看不下去……又問我信號量組織方式,就讓你簡述,語言沒組織好,本身也不熟。果斷掛了。BSP方向最喜歡問單片機知識。
OPPO(提前批)
c/c++芯片方向。問哪些課學(xué)的不好,急中生智答中特……問哪些學(xué)的好,答ARM體系結(jié)構(gòu)。然后被逮住問:7種異常是什么(沒答全),中斷觸發(fā)到返回的具體行為(CM3權(quán)威指南里有),中斷嵌套如何實現(xiàn)(NVIC相關(guān)),中斷機制的具體實現(xiàn)(還在答中斷具體行為,他問的應(yīng)該是兩級向量表如何查找),中斷部分結(jié)束。
問單片機與嵌入式系統(tǒng)的最大區(qū)別在哪里,答嵌入式系統(tǒng)可以跑多任務(wù),然后逮住OS開始問。任務(wù)在內(nèi)存中的組織方式(TCB-用戶棧-用戶代碼),上下文切換時任務(wù)在內(nèi)存中是如何變動,任務(wù)調(diào)度點,優(yōu)先級反轉(zhuǎn)如何解決,任務(wù)搶占如何發(fā)生,通信機制。
問Linux開發(fā)驅(qū)動的流程,懵逼。又問c知識指針與引用的區(qū)別。然后讓我自己挑些會的說一說,答了點單指令多數(shù)據(jù)流,感覺不感興趣,又說了流水線沖突與解決,反問cache-miss什么情況,分支預(yù)測什么原理(高級計算機結(jié)構(gòu)課上內(nèi)容)??磥硇酒较蚩粗伢w系結(jié)構(gòu)的知識,課上學(xué)的終于有用了。
諾瓦科技(提前批)
做LED屏解決方案,感覺用的知識不深。筆試考了DMA與中斷傳輸?shù)谋容^,矩陣鍵盤檢測,計算算法的復(fù)雜度,甚至還有穩(wěn)壓電路的知識,做的不好。
面試讓畫項目框圖,畫亂了。硬是把我自己獨立完成全部軟件硬件的四軸飛行器項目說的好像是個假的一樣,我特么自己都服我自己。然后問C基礎(chǔ),我答的還行,但已經(jīng)無法補救。這次面試之后我開始把所有項目敘述和重點問題全部寫紙上,每天背一遍。
是的,你沒有看錯,我提前批5連掛,群里大佬都在討論去聯(lián)發(fā)科還是匯頂了,我一個菜雞什么話都插不上,心情和自信都已跌入谷底,真的就已經(jīng)卑微求offer了……
中興(正式批)
然后我就迎來了第一個正式批,清水河現(xiàn)場面。此時被鞭打多了也知道點引導(dǎo)話題了。專業(yè)面就問項目,問些概念和項目里的知識:什么叫軟硬實時,m4內(nèi)核雙堆棧機制,順便答了arm模式切換和上下文切換,bootloader,鏈接原理,說我是做了些東西的。一面當(dāng)天正好成都暴雨,路上積水連車都不敢走,到現(xiàn)場褲子鞋濕透,面試之后正好雨停?;叵胫鴮I(yè)面被肯定,我有一種感覺,從今日開始我要撥云見日。
二面英文自我介紹,崩,然后問我有offer嗎,投華為了嗎,然后就反復(fù)問我:為啥沒投華為,我還是不明白你為什么不投華為。問的我賊氣,我不投怎么了。后來在職學(xué)姐告訴我,應(yīng)該答不喜歡華為的文化,兩家是競爭關(guān)系。
洽談還是職業(yè)規(guī)劃等老生常談,他們南京的嵌入式主要是做設(shè)備驅(qū)動,機頂盒。沒有自研芯片,也就是說沒多少芯片的核心技術(shù)。我還是打算去芯片原廠的。談薪資就看獲獎經(jīng)歷什么的,本科的獎倒是不少,然并卵。說讓我考慮,后來拒了。
雖然中興拒了,但是在剛剛5連掛的時間節(jié)點上給了我寶貴的肯定,非常雪中送炭。
大華股份(提前批)
算法工程化崗。提前準(zhǔn)備了一些ucos移植,arm指令集流水線和靜態(tài)鏈接的知識,事實證明,準(zhǔn)備的方向很對,他很感興趣。
電話一面,問了ucos移植的細(xì)節(jié),提到了一種并發(fā)的指令集(沒用過),聊聊項目,又聊行業(yè)認(rèn)知,最后問我的優(yōu)勢劣勢分別是什么,答優(yōu)勢是對底層原理的理解和對編譯器的了解,劣勢是不懂Linux。他表示贊同,說我基礎(chǔ)不錯。信心終于提升一點。
電話二面。上來直接進入正題,自我介紹什么的都沒搞,直接問:信號量實現(xiàn)的底層原理,可不可以用一個全局變量代替信號量的計數(shù)值,答不可以信號量是臨界資源要進臨界區(qū),問怎么進臨界區(qū),答關(guān)中斷保存cpsr,他比較滿意。
然后問中斷機制,大概有多少中斷,可修改向量表嗎(通常不可,有例外),又問m4內(nèi)核的雙堆棧機制。BL指令的跳轉(zhuǎn)范圍(32MB)。
最后問靜態(tài)鏈接,深挖強弱符號的東西,最后說我對底層還是比較了解。
hr面就常規(guī),覺得契合與否,1246大小周能不能接受。杭州,6險1金有食堂,后來知道我有其他offer要給我提薪,沒讓提拒了(因為后來拿到了更合適的)。
大疆
筆試編程題依然空白,選擇填空基本拿滿。
一面就問項目,反復(fù)問上系統(tǒng)的必要性,估計是個搞os的根本不懂四軸,以前栽過,這次答圓了,又主動答了中斷機制,看他不是很感興趣。最后問我懂不懂os的內(nèi)存管理,答不懂,之后就是筆試編程為啥不做,答嵌入式對算法只是了解,項目里沒用到。
二面感覺和一面沒什么區(qū)別,還是自我介紹&&項目介紹,把四軸的控制流程說了一遍,他對四軸還是懂一點,但飛控算法沒問,難道大疆不該很看重這一塊嗎,把所有項目大概都問了一遍,無異常。然后問,你的劣勢在哪,答不會Linux,又問我圖像處理的算法,靠本科上課學(xué)的還沒忘干凈的知識答一點,中位數(shù)濾波,邊緣濾波,想深問,我說我只是了解。感覺他不很滿意。
二面掛了,掛的很不甘心,我的cpu原理知識還沒吐出來呢,靜態(tài)鏈接也沒問,arm這塊就問了個中斷機制?;貋矸此紴槭裁匆怀鲎约旱膬?yōu)勢,感覺自己所答還是很零散,中斷就中斷,os就os,指令集就指令集,串不起來。后來我找到一種組織的方式,能從中斷入手把arm架構(gòu),上下文模切換,指令流水和程序優(yōu)化串起來講,形成一個模板,只要問到其中某一個知識我就能把全部一串說出來,他感興趣自然再深問。漲了一波經(jīng)驗,掛的不虧。
寒武紀(jì)
上海系統(tǒng)軟件工程師。大疆掛面總結(jié)來的那套“模板”第一次實戰(zhàn)。
一面還是項目,挨個問簡歷里些寫的。IIC與SPI的不同(片選方式,異步同步),IIC讀寫方向如何區(qū)分(地址位最后一位的高或低)看我答出了比較滿意,說沒幾個答對的,驅(qū)動確實是我寫過的。然后問9軸數(shù)據(jù)的意義,答了姿態(tài)解算中隊數(shù)據(jù)的融合。然后就是雙堆棧機制與模式切換,任務(wù)調(diào)度點與任務(wù)在內(nèi)存中的組織方式(TCB-用戶棧-用戶代碼),優(yōu)先級反轉(zhuǎn)與解決,死鎖的原因,然后makefile語法一個。其他單片機小項目根本沒問??吹贸鰧ξ业幕卮鸷軡M意。然后手撕代碼環(huán)節(jié),特意找了個最簡單的給我,??驮}鏈表表示的兩數(shù)相加,撕半小時,通過率0%……他說會綜合考慮。
二面瘋狂問CPU知識,“模板”用上了。先問m4 的雙堆棧與上下文切換,17個寄存器的功能,LR的作用。順勢答為何中斷返回要LR中的值減4,然后指令流水、CPU知識就跟著出來了。又問分支預(yù)測發(fā)生在指令處理的哪個階段,cache的作用,回寫與寫透的區(qū)別,為什么設(shè)計三級緩存。
然后問信號量,進入臨界區(qū)的操作,為什么關(guān)中斷可以保護臨界區(qū),cpsr如何保存。
最后問靜態(tài)鏈接,預(yù)處理是什么編譯選項,-g是什么意思,如何使用ar生成庫文件,這塊不熟,會不會gdb(不會)。那就說說makefile一條指令的格式,.c生成.o什么選項,.o生成.elf什么選項,.o與.elf的區(qū)別聯(lián)系,舉個區(qū)別的例子。
然后開始討論行業(yè)認(rèn)知。為什么從事芯片行業(yè),美國制裁華為你怎么看,制程對芯片的影響,為什么中國制造業(yè)跟不上。感覺他很感興趣,當(dāng)場表示通過。
hr面就個人介紹挖了一下個人學(xué)習(xí)方法,社團經(jīng)歷,期望薪資等等,我問寒武紀(jì)是否加班,是不是1246大小周,她很震驚,不知道1246為何物,并說寒武紀(jì)不加班,干完就能走。
寒武紀(jì)兩位面試官的肯定給了我極大的自信,我也一度很想去,畢竟是國家隊的AI四小龍之一,技術(shù)實力毋庸置疑,關(guān)于為什么沒去,在芯原之行之后說。
矽力杰
南京嵌入式軟件崗。做電源模擬IC國內(nèi)第一,最近幾年開始做物聯(lián)網(wǎng)SoC,在南京計劃1年左右上市,使用M0內(nèi)核和開源協(xié)議棧,做解決方案,技術(shù)難度倒不特別深,現(xiàn)在射頻SoC廠商如雨后春筍一般冒出來,物聯(lián)網(wǎng)這塊看來市場很大,但是我本人不喜歡做物聯(lián)網(wǎng)。
我的流程非正常,筆試都沒寫電話聊完直接告訴我很合適很想讓我去,態(tài)度那叫一個好,hr面也是態(tài)度很好,沒有絲毫套路。最后問了我目前offer,我說大華的20k和寒武紀(jì)還沒談,她說會給我定一個有競爭力的薪資。
最后的薪資真的很有誠意,干的好1-2年給股票,另外還有很高的簽字費,承諾絕對不加班,不得已加班給加班費,算下來一年能拿很多對于南京嵌入式來說,還有股票簽字費不加班,我心動了。
最后夸一下這個廠,對待人才很有誠意,不像有的公司承諾給一個讓你“無法拒絕”的薪資然后白菜的一批,而且真不怎么加班,喜歡物聯(lián)網(wǎng)的同學(xué)可以考慮。
芯原微電子
成都算法工程化崗。筆試題量超大,是一個半小時的量但是只給你一小時,各種智力題和基礎(chǔ)知識,涵蓋c、os、編譯器和cpu知識,很多都是4選1答,只要你在一個方面有深入理解就行。我覺得很基礎(chǔ)但是實在寫不完。
專業(yè)面,npu的人面的也算是緣分。先說項目,直接畫個框圖給他,說的熟的不能再熟了。然后提問中斷機制,這就進入了我的“模板”,然后重點問了流水線效率問題,為什么中斷返回PC要減4,拿出試卷讓我答沒寫完的題。然后讓結(jié)合項目代碼分析如何避免流水線沖突(調(diào)整指令執(zhí)行順序,分支預(yù)測,增加部件),還好我頂住了,他們也開始感興趣了。
然后問靜態(tài)鏈接,也是熟的不能再熟的東西。其中一個面試官問我是否想去做編譯器,我說只做編譯器一個點有點狹窄我還是想著眼于整個系統(tǒng),后來知道他原來是編譯器組的leader。
然后和技術(shù)主管聊,當(dāng)時不知道是npu部門的leader(也是我現(xiàn)在的leader),聊些技術(shù)方向,未來期許,職業(yè)規(guī)劃,聊了比較久,他說不錯很優(yōu)秀。
然后英語面,爆炸。問我團隊工作中什么最重要,喜歡哪個城市為什么,說了啥不重要,重要看你會不會說英語,顯然我不會,估計是C。
hr面套路,優(yōu)缺點,已有什么offer什么崗位。
CEO面,我宣講時提了一個比較有深度的問題,他記得我。問為什么芯原做芯片定制而不是直接生產(chǎn)出來再賣,答案是減少積壓風(fēng)險,答錯。他宣講時就說今天要問,還是答錯了。
openday,搞了一整天,各條產(chǎn)品線負(fù)責(zé)人上來宣講,好困,芯原自研IP核有核心技術(shù),還是不錯,npu是前沿技術(shù),部門老大對我也比較看好,于是去了。就是薪資一般,一年漲薪至少10%看績效,不加班法定節(jié)假日3倍工資,周末和晚上加班沒有加班費(7點人都走光了)。
回來和我的老師討論offer問題,芯片行業(yè)老師還是最看好華為,可以說是業(yè)界第一。中策就是寒武紀(jì)、芯原、龍芯中科這種有技術(shù)實力但是盈利情況并不很好的國家隊公司,下策就是解決方案供提供商,他們的芯片技術(shù)自主權(quán)十分有限,拿大華來說,他們的圖像IP核都是買的華為的,芯原的,寒武紀(jì)的,芯原的異構(gòu)并行npu可以決定哪部分算法調(diào)度在哪個核上去跑,怎么從結(jié)構(gòu)上優(yōu)化網(wǎng)絡(luò),但是大華就只能根據(jù)我們的文檔去應(yīng)用,我們的嵌入式工程師還要去杭州總部指導(dǎo)他們的工程師,原廠工程師在下游方案提供商那里很吃香的。
在這些IP原廠中,我的老師覺得寒武紀(jì)定位不清晰,又做IP又產(chǎn)芯片又做云,現(xiàn)在還搞校企聯(lián)合,有些浮躁,財報也是大起大落的,目前特別依賴輸血。芯原就好一些,只對標(biāo)企業(yè)用戶,雖然也在虧損,但是定位清晰,有自己很多市場接受的產(chǎn)品,目前虧損主要是成本太大。但是在這個時間節(jié)點上國家肯定會拉高芯片行業(yè),寒武紀(jì)還沒倒呢芯原怕什么。決定之后寒武紀(jì)、大華、矽力杰就都拒了。
我所從事的是內(nèi)核移植和算法工程化崗,只做設(shè)備和驅(qū)動前途有限,這方面最后細(xì)說。
歡迎學(xué)弟學(xué)妹來我司從事自主IP核的研發(fā)。我司妹子多而且質(zhì)量高哦。
龍芯中科
北京嵌入式軟件崗。龍芯是國產(chǎn)CPU的巔峰,中科院計算所背景,技術(shù)是有但是盈利模式?jīng)]做成熟。介紹項目,老生常談,敘述中斷機制,bootloader,模板開啟引出流水線,他竟然沒深問。問我會不會gdb,答不會。又問了一個機器學(xué)習(xí)項目,看我敘述清晰也沒再問了(他不懂這塊)。問我對工作什么期許,聊聊崗位,已有什么offer什么崗位??此辉趺磫栁壹夹g(shù)問題我有點急,我直接說我基礎(chǔ)很好,所有簡歷里提到的您隨便問,他笑,看你這么自信我就不問了,等二面吧。后來24號簽了,也不準(zhǔn)備繼續(xù)了。
最后說一些我對嵌入式技術(shù)的見解:嵌入式系統(tǒng)本身就是微小的計算機系統(tǒng),只要二進制計算機不過時,嵌入式技術(shù)就不會消失。
我的老師經(jīng)常給我們強調(diào)“程序員的自我修養(yǎng)”和對底層原理的理解,現(xiàn)在技術(shù)更新?lián)Q代非??欤驴蚣苄嘛L(fēng)口,但是只要它跑在二進制計算機上,有些東西就是不會變的。所以理解計算機工作的本質(zhì),掌握“以不變應(yīng)萬變”的能力在嵌入式編程中尤為重要,“好的程序員對自己程序的每一個比特都了如指掌”。不僅是嵌入式方向,其他技術(shù)方向也是如此,著眼于系統(tǒng)才能立于金字塔頂部,在35歲之后避免職業(yè)瓶頸。
吹了一波嵌入式的重要,再談一點我個人對嵌入式未來的理解。傳統(tǒng)嵌入式MCU、os應(yīng)用編程、驅(qū)動開發(fā)其實已經(jīng)很成熟,比如linux驅(qū)動就已經(jīng)有成熟的框架,完全不需要你懂源代碼。
未來應(yīng)是ai的時代,云計算已經(jīng)比較成熟。
對于端級的ai,集成度基本已經(jīng)到了盡頭,目前最先進的制程是5nm,而在1nm的量級將會產(chǎn)生量子效應(yīng),也就是說,集成度的極限要到了。集成度上不去直接影響芯片的大小,端級ai不可能像服務(wù)器一樣搞好大一個主板,目前基本是用異構(gòu)多核的方式提升計算性能。
但是并行計算也有性能的瓶頸,算法中很多情況是下一步計算需要用到上一步的結(jié)果,有相關(guān)性的,沒法并行。這個計算的瓶頸,牽扯到流水線阻塞,cache命中率,IO操作等等,一定是底層架構(gòu)方面的問題,有我們嵌入式程序員廣闊的發(fā)展空間。
第二個熱點我覺得是5G相關(guān),這塊我不太了解,大致說說。首先是低功耗問題,商用對功耗非常敏感,這肯定和底層系統(tǒng)有關(guān),要裁剪硬件軟件。其次就是協(xié)議棧了,美國就怕這個才封了華為,由此可見重要程度。
往期好文合集
最 后
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!