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