個人背景介紹
我是Semon,本科就讀于一所211院校的電子信息專業(yè),之后保研本校,所研究的方向為嵌入式軟開。
本科階段
本科的時候主要是基礎的學習,學習c語言,然后接觸了51單片機,之后再學習STM32。那個時候stm32也沒有現(xiàn)在很火的cubemx啥的,底層什么的都是自己照著例程配,雖然學習的很艱難,但是真的會學到很多東西(所以說建議大家還是多看看底層代碼,不要太過依賴這種一鍵配置的SDK,很多時候面試官都會考驗基本功)。
在學校中先后參加了藍橋杯大賽(省二,沒有認真準備,不過藍橋杯沒有國獎都不好意思寫簡歷上)、電子設計大賽(省二,當時做的是一個無線充電小車,沒有什么編程難度,主要就是硬件電路的設計,無線充電模塊也是買的,這么緊張的時間內(nèi)做好這樣的一個設計還是挺肝的,當時對自己也有很大的提升)、互聯(lián)網(wǎng)+大賽(用的學校的科研項目,主要就是利用紅外測距,返回距離,然后各種應用。這方面技術應用太多了,創(chuàng)新也不夠,市場需求就別說了,互聯(lián)網(wǎng)+本質上還是商業(yè)化多一點的,所以直接校二。
不得不說參加各種比賽是對自己相關知識的錘煉,在項目中你可以很簡單的發(fā)現(xiàn)自己的各種不足,并且由于是固定的ddl,也會push你抓緊一切時間提升,雖然過程比較艱辛,但是可以非常好的鍛煉自己的相關技能。企業(yè)當然也希望有這種參賽經(jīng)歷的學生,不僅僅是技術上的,也會是團隊合作、項目統(tǒng)籌等方面的經(jīng)驗優(yōu)勢。
研究生階段
讀研期間,我負責多個老師的橫向項目,接觸FPGA、ZYNQ等平臺,進行更加深入的底層驅動開發(fā),同時也設計Linux操作系統(tǒng)以及應用層開發(fā),總體來說項目都有涉及。
項目包括一個基于ZYNQ的視頻檢測系統(tǒng),視頻的采集是通過5640攝像頭的mipi接口,涉及到攝像頭的iic初始化、攝像頭數(shù)據(jù)的傳輸方式、攝像頭數(shù)據(jù)流的格式和轉換、數(shù)據(jù)的存儲等待;
將數(shù)據(jù)存儲到板卡上后由操作系統(tǒng)端進行讀取,這又涉及到PL和PS的交互、操作系統(tǒng)的配置、設備樹配置和內(nèi)核的剪裁、操作系統(tǒng)的啟動流程等等;最后在軟件方面還有圖像的增強、相關物體的檢測以及一些算法的優(yōu)化。
在項目的過程中,我會將項目的各個功能進行模塊分類,一個個完成,因為導師也有開組會的習慣,所以我基本每周將工作進度,遇到的問題以及下周要做的事都寫成word,這樣也是有好處的,有的時候做著做著之前的點就忘了怎么解決了,可以回顧一下看看以前的想法,說不定就做出突破了。
在這個過程中,也碰到許多因為代碼移植、板卡配置等等遇到的問題,一般都是看看例程代碼,網(wǎng)上尋求相似問題解答等等,在一步步嘗試中加深這個模塊的理解,并且解決問題。在一個個發(fā)現(xiàn)問題-解決問題的流程中逐步掌握知識點。
這個項目不管是應用層還是底層都有所涉及,并且由于是自己所負責的項目,相關的細節(jié)也了熟于心,基本面試情況下大多數(shù)面試官都是針對這個項目進行提問,所以在一次次提問中還可以對項目進行優(yōu)化和查漏補缺。
在簡歷中我也加了一段對stm32的底層相關的項目,控制電機驅動芯片使得小車進行運動,涉及到時鐘、中斷、看門狗、spi、uart、編碼器閉環(huán)控制等等,也算一個完整的項目并且也有系統(tǒng)的板卡測試過程,也是自己主要負責并且走完流程的項目。
主要上一個項目偏應用層,再加一個項目偏底層一點,到時候都能說。
對于這個項目,面試官可能更加注重底層邏輯的開發(fā),比如時鐘的配置、相關總線、spi、uart初始化、中斷配置及實現(xiàn)等等,這些在做的過程中遇到的都是需要掌握的,簡歷上的項目要么你不寫,要寫一定要100%掌握。
在研一末也進入一家小公司進行三個月的實習(糊涂啊實習千萬要去大公司),之后幡然悔悟研二末想找實習卻忙的要死且形式突變。
在我看來一份實習經(jīng)歷還是很重要的,要沖提前批和大廠那就肯定要一份優(yōu)秀的實習經(jīng)歷(就今年來說),而且實習能夠學到很多在學校中學不到的東西,也能更好的從產(chǎn)品端看項目,同樣水準下面試官也肯定更加傾向于有實習經(jīng)歷的面試者。
在讀研期間也獲得了一個A類賽事國獎、兩篇發(fā)明專利(但是兩個專利都是去年年末投出去的,掛出來沒多久,還在審核中,雖然問題不大但是拿不到結果,就比較難受,只能說說)以及一篇中文核心,也算是收獲比較多的。
我也看過很多我身邊同學的相關簡歷,在項目上的不足主要就是:
1、沒能突出自己所做的重要工作,沒能突出自己工作的技術棧。這樣的講述通常都會讓面試官覺得你的項目平平無奇,并且面試官也無從下口;
2、通常對項目追求量而不追求質;項目的質和量一般不能兩全,有的人寫了很多的項目,并且拿簡單項目湊數(shù),且都用一樣的篇幅描述,面試官一方面會質疑你的專業(yè)水平,另一方面也會對簡歷的排版有所詬病。
在我看來,簡歷最好詳略得當,一般2-3個項目就好了。有實習經(jīng)歷就兩個項目,沒有實習經(jīng)歷就三個項目,并且詳略得當(你要考慮,因為面試官可能沒有時間全部問完你的所有項目,所以經(jīng)常的問題就是:這幾個項目中你最熟悉哪一個,詳細介紹一下項目分工、項目介紹、項目開發(fā)思路(原理論證、方案對比、項目架構)、創(chuàng)新點難點、具體實現(xiàn)等。所以你要選擇一個項目多寫一點并且多準備一點,其他可以省略一點)。
對我來說就是寫兩個項目,ZYNQ做的比較多的工作就寫上面,然后用較多的篇幅描述這個項目;之后小車的項目就排在后面,稍微簡略一點描述一下。
對于項目的內(nèi)容,突出你項目所需要解決的問題,你項目中用到的哪些技術棧以及技術難點,你項目的相關創(chuàng)新點等等,并且保證寫上去的東西你都會,并且都能夠清晰的被面試官捕捉到,這樣其實下意識的面試官會詢問你你在簡歷上寫著的技術棧,有所準備的話就可以完美應對了。
同時面試嘛,也是循序漸進不斷補充自己的時候,在這個過程中不斷的面試、發(fā)現(xiàn)問題、解決問題、更新簡歷以及自己的庫,才能夠越來越游刃有余。
秋招情況
今年的情況不用多說,大家也都清楚,只能說寒冬已至,相比于去年,各公司的hc是驟降,而且今年也是擴招的第一年,畢業(yè)人數(shù)也大大增加了。
我的簡歷情況大概就是:本碩211+國獎+實習經(jīng)歷+論文專利+相關的三段項目經(jīng)歷,在今年4月份開始準備投著找實習(有點晚了,三月份就可以開始了),當時就投了霍尼韋爾、聯(lián)發(fā)科和華子,華子簡歷掛,聯(lián)發(fā)科一面掛,霍尼韋爾給了機會(但是不想去)。
我意識到大事不妙,斟酌一下放棄了實習,直接準備秋招。
對了這里可以提一下,獲取校招信息可以有這些途徑,比如哪些公司開始提前批了,哪些公司開始正式批了,我可以投哪些公司的在哪些城市的哪些崗位等。其中有:??途W(wǎng)(校招歷程,??蜕弦矔衕xd專門整理更新校招的資訊,搜索一下就好了)、各種微信群、QQ群、學校官網(wǎng)(會有公司進校招聘等等)、企業(yè)官網(wǎng)、各種微信公眾號。建議能用內(nèi)推碼就用內(nèi)推碼,在??途W(wǎng)有很多內(nèi)推碼分享,各大公司都有。
秋招我從六月份提前批開始投,到九月末正式批總的算下來有差不多40家公司(我也是懶狗,而且小公司都不碰就沖中大廠),提前批沖了十幾個廠,一大半都簡歷直接掛,今年hc比較少,大多招人提前批都招滿了,之后正式批我就不碰大廠了,本碩211沒有競爭力。
時間先后,提前批投遞了:中電10所、TP-LINK、博通集成、集創(chuàng)北方、禾賽科技、中科芯58所、聯(lián)發(fā)科、芯動、大華linux c、安路科技、睿創(chuàng)微納、蔚來嵌軟、樂鑫科技、聯(lián)影微電子。正式批投遞了:聯(lián)蕓、磐啟、大疆嵌入式、復旦微電子、思威特、??低?、靈動微電子、寒武紀、聯(lián)想、矽力杰、RIGOL、蘇州國芯、聚辰、合芯、NXP、海光、TP-LINK、思科、聯(lián)合汽車、芯動、華為、新華三、兆易創(chuàng)新、freetech杭州、旺宏微電子、三維通信、星猿哲科技、集度、達發(fā)科技、豪威科技、oppo、Alibaba、商湯科技、小米
這些公司情況大多是:
了無音訊:中電10所、TP-LINK、集創(chuàng)北方、大華linux c、安路科技、磐啟、靈動微電子、寒武紀、聯(lián)想、RIGOL、聚辰、思科、芯動、華為、旺宏微電子、三維通信、豪威科技、oppo、Alibaba、商湯科技
有筆試無面試:芯動、大華linux c、蔚來嵌軟、思威特、思科、新華三、兆易創(chuàng)新、freetech杭州、小米、海光
意向書及薪資:
樂鑫上海site:sp,38W + 飯補每天50,12%公積金,必加班
聯(lián)影微電子上海:32W+,大大大大大白菜
博通集成上海:排序不等了
睿創(chuàng)微納:26W左右,福利工資一般,還加班
矽力杰:32w,還有10W簽字費,統(tǒng)一價,據(jù)說不加班,965
聯(lián)合汽車:26W左右(加上蘇州補貼3W,什么飯補高溫補貼等等),很休閑但是工資低
蘇州國芯:總包35W左右,據(jù)說是薛定諤的加班
旺宏微電子:總包34W左右,加班,小而精的公司
旗芯微:總包36W左右,公司成立沒多久,不過有自己的產(chǎn)品,會加班
值得一提的是,今年許多人崗位都是沖提前批得到的(我得到的意向書一半是提前批),除非是沒有提前批的中大廠,今年少量hc中的大頭還是提前批。
因為去年我?guī)熜智镎薪?jīng)驗就是提前批不要投大廠,會刷簡歷,等正式批可以有機會進面,所以我今年提前批就稍微試了一下大廠,沒想到今年提前批進不去,正式批又沒hc更進不去,大廠道路直接斷了。
另外今年很多公司提前批現(xiàn)在都沒開獎,就別說正式批的什么的了。前幾天觀望中興開獎,壓工資挺狠的,哎要是去年,哪里敢這么低的啊。只能說生不逢時,希望明年各位能夠好找一點。
個人準備
因為導師比較放的松,我也就早早的摸魚開始準備了。每個人對這個學習的方法是不一樣的,我就喜歡看教學視頻。
我從去年9月開始,先看某站的C語言基礎及C語言深究,之后再看數(shù)據(jù)結構與算法(這個我也順帶看大話數(shù)據(jù)結構這本書,還是很不錯的),接著過一遍C++基礎(畢竟自己用C比較多,但是C++還是要掌握的,筆試面試都會遇到題目),然后就是計算機組成結構、計算機網(wǎng)絡和操作系統(tǒng)等的學習。這些都學完差不多是今年的4、5月份了。
刷題的話其實去年9月份只要有空我就會做leetcode的每日一題,然后在系統(tǒng)性學完專業(yè)基礎知識之后,5-6月份大部分的時間就都花在網(wǎng)上刷題了。我就在Leetcode上瘋狂刷題了(劍指offer+力扣hot100必刷),字符串、數(shù)組、指針、函數(shù)、算法、二叉樹、鏈表、堆棧等等都刷過,而且不會的收藏一下,有空再看一遍。
算法能力的提升是一個長期積累的過程!做題厲害的并不是聰明,而是踏踏實實的努力。今年我也發(fā)現(xiàn)很多中大廠都喜歡現(xiàn)場筆試并且手撕代碼,而許多大廠,比如字節(jié)、阿里等甚至四輪技術面四次手撕代碼,這個還是很看重基礎的,所以大家還是要多練多刷題。
重復,死磕,到會為止。用很多的時間做這件事不虧的,這些都是基礎,重中之重。對于嵌入式來說其實對手撕算法并沒有太大的要求,但是現(xiàn)在行業(yè)內(nèi)卷太嚴重了,大家都在刷,你不刷就直接被淘汰了。
對于專業(yè)知識,一方面我主要還是針對項目進行學習,要知道每次面試100%會深挖你的項目,很多的八股其實都是順著你的項目帶出來的,就是考察這個項目是不是你做的,你在當中負責的部分是否完全熟悉。
首先就是對于項目的方方面面,細節(jié)都摸得很清楚,能夠做到問什么都能夠回答出來。同時對于項目延申出的一些知識點也需要掌握清除,防止面試官問到(在面試的過程中肯定也會遇到?jīng)]準備到的,還是要好好總結,查漏補缺)。
對于自己的項目,如果是stm32底層開發(fā)就看底層代碼,如何配置時鐘的,如何配置外設,spi、uart、iic等,如何配置中斷,進入中斷的。
如果是linux應用相關的,就是看驅動配置、設備樹配置、內(nèi)核和文件系統(tǒng),看看操作系統(tǒng),多線程等等,最后還要歸納一下項目的困難點,對于這些困難你怎么思考的,你從項目中學到了什么,如果是自己從頭做到尾的還是很好概括的。
另一方面就是各類面經(jīng)以及大佬們整理好的資料啦,就照著過,然后該背就背(感謝仲一整理的《嵌入式軟件工程師筆試面試指南》,這對我真的很重要?。τ谟龅降牟磺宄模热缭O備驅動、底層開發(fā)等等問題,就在網(wǎng)上找視頻或者教學資料,比如韋東山老師的課程、野火的linux課程,有什么不會的直接看章節(jié)過一遍學一學。
其實基本到面試階段就學的差不多了,對于我來說,我是喜歡在看面經(jīng)、資料以及面試過程中,遇到不清楚的不會的,就記錄一下。我專門新建一個word,分類操作系統(tǒng)、計算機網(wǎng)絡、C語言、嵌入式底層、應用及LINUX、算法等,然后在里面添加模糊的不會的知識點,有時間就過一下,至少你要做到,前一次面試官問到的不會的知識點,下一個面試官問到你會作答,一個人在一個坑掉兩次那就很不應該了。
當然在我看來,最重要的是自己要多學多思考,在里面加入自己的正確的理解,面試官當然希望聽到正確的答案,但是對于有著自己個性化解釋的正確答案更加能夠吸引面試官。
對了對于面試官來說關于項目會問:
1、讓你描述工作經(jīng)驗和項目,看看你說的是否和簡歷上一致;
2、看你簡歷上項目里用到的技術,比如SPI,驗證你是否做過項目,同時看你是否了解,然后針對這些技術深入挖掘;
3、針對某個項目,不斷深入地問一些技術上的,深入核實你的項目細節(jié)問題,或者從不同側面問一些技術實現(xiàn),主要看你前后回答里面是否有矛盾;
4、針對某技術,問些項目里一定會遇到的問題,通過這類問題,核實你們是否真的做過這個項目。
在一些比較開放性的問題中,也可以在自己經(jīng)歷的基礎上進行稍微的美化,能夠體現(xiàn)自己動手能力很強、肯干活、會的東西比較多、團隊合作精神比較好、責任心強、抗壓強、有主見等等。
秋招實況
霍尼韋爾實習面
主管面
自我介紹
深挖項目,介紹框架,思路,具體實現(xiàn),你做了什么工作
如何配置ov5640,你是在Linux下配置的,怎么操作的?
iic配置,因為5640使用的SCCB協(xié)議,和iic差不多,所以就是通過5640的寫地址0x78直接進行sccb寄存器參數(shù)的配置。因為是在linux下進行配置,所以需要對設備5640在設備樹下對設備號進行初始化,并連接相關的驅動文件,之后在操作系統(tǒng)開機初始化之后就可以對相應內(nèi)核進行配置,當我們的可執(zhí)行文件訪問5640時,就可以對他進行直接的初始化并調(diào)用它)
什么是DMA,DMA傳輸?shù)母袷??(直接存儲訪問,格式?jīng)]答出來)
你是怎么進行操作系統(tǒng)(OS)剪裁的?步驟?(設備樹配置,編譯源碼)
如果采集圖像輸入輸出速率不匹配怎么辦?出現(xiàn)幀撕裂等問題怎么辦?
因為在視頻傳輸中很容易出現(xiàn)讀寫不匹配帶來幀撕裂的問題,其實就是在傳輸?shù)倪^程中,還沒被從端讀取輸出的數(shù)據(jù)又被主端重新寫入新的數(shù)據(jù)了。所以我是使用的雙幀緩存,開辟兩個空間并且讀寫端互斥訪問兩個空間,做到一個空間同一時刻只能被讀或者被寫,這樣可以保證幀撕裂不再發(fā)生;對于速率不匹配,一個就是減少圖像的大小,減少幀率來減小數(shù)據(jù)量,另外一個就是一般主端或者從端總有一個傳輸速度是固定的,所以傳輸?shù)淖畲笏俣纫彩枪潭ǖ模瑢α硪欢诉M行代碼上的優(yōu)化以尋求速度的匹配
什么是volatile變量,有什么用?
一個定義為volatile的變量是說這變量可能會被意想不到地改變,加了這個關鍵字,編譯器就不會對他優(yōu)化。精確地說就是,編譯器在用到這個變量時必須每次都小心地重新讀取這個變量在內(nèi)存中的值,而不是使用保存在寄存器里的備份
了解我們公司么?
(不了解,主管介紹)
你準備實習多長時間?
三個月,主管直接發(fā)笑,時間太短了
反問
一面主管面,二面hr面(hr面過了很久了已經(jīng)忘了。。。)總體來說還是很舒適的,霍尼韋爾也是個很好的平臺,外企工作強度也不高。
睿創(chuàng)蘇州提前批
自我介紹
項目相關:介紹項目背景、開發(fā)思路、框架、具體實現(xiàn);
你覺得你項目過程中讓你覺得困難的地方是什么?怎么解決的?
這個問題主要看公司以及你的崗位,如果你是招聘的應用層開發(fā),那就聊一下驅動配置,設備樹配置以及文件系統(tǒng)相關的困難點,怎么解決的;如果你是應聘的底層開發(fā),那主要聊一下底層邏輯,中斷相關怎么實現(xiàn)的,相關的通信的底層實現(xiàn)。主要還是體現(xiàn)出你對項目問題的思考,你的解決方法的切入點還有你對項目的掌握能力。
介紹一下static
靜態(tài)局部變量,在函數(shù)中定義,若不初始化則為0,只占用一個空間,只能在函數(shù)中被修改、靜態(tài)全局變量只能在該文件中使用及修改,其他同上、靜態(tài)函數(shù)只能在該文件中被使用,其他文件不能調(diào)用該函數(shù)
進程一般有哪幾個區(qū)?
靜態(tài)區(qū)、代碼區(qū)、堆、棧
靜態(tài)變量存儲在哪個區(qū)?
靜態(tài)區(qū)
為什么靜態(tài)變量和一般變量在一個區(qū),作用卻不同(編譯器對static怎么做)?
靜態(tài)變量就初始化一次,只占用一個內(nèi)存空間,編譯器在讀到static之后就會對他賦予不同的作用域,使得它只能在作用域內(nèi)有效,如果作用域之外的文件調(diào)用它,就會報錯顯示沒有初始化該函數(shù)/變量
講一下多線程間的通訊手段
管道、信號、全局變量
死鎖是什么?怎么發(fā)生的?如何解決?
多個進程在運行過程中因爭奪資源而造成的一種僵局
學校的成績?
前10%
你了解我們公司么?為什么選擇我們公司?
偏向于底層驅動還是應用層?
反問
HR面
自我介紹
在學校的成績排名?獲得過什么獎項?
你覺得別人對你的最多的評價是什么?說三個詞?
你覺得你有哪些優(yōu)點?
你在公司實習過,有什么收獲?
上學期間有什么讓你特別印象深刻的事么?
之后會留在蘇州進行工作么?
你愿意提前實習么?
有沒有面過其他公司?有特別想去的公司么?
你的未來規(guī)劃(職場、生活等等)
有沒有女朋友(怎么每個hr都喜歡問這個)
你選擇公司的比較看重的點是什么?
你的期望薪資是多少?
反問:培訓、住房、薪資
上市公司,最主要的亮點就是有雙休,平常不加班,所以工資給的不是很高,適合養(yǎng)老。面試友好,面試官親切。
聯(lián)發(fā)科嵌入式軟開提前批
一面(50分鐘)
面試官非常和藹,先自我介紹,之后前期話題主要圍繞著項目提出各種發(fā)散性問題,包括項目分工、項目介紹、項目開發(fā)思路(原理論證、方案對比、項目架構)、創(chuàng)新點難點、具體實現(xiàn)等。項目是自己做的回答起來就不成問題。面試后期基本上是夾雜著少量技術問題的聊天,筆試題沒做對的面試前要搞懂(可能會問,但是我沒有被問)。
項目中的難點在哪里,你在項目過程中遇到了哪些困難,怎么克服的?
有沒有參加什么比賽?
老師推薦,在第一時間作為隊長報名比賽,使用的是自己正在進行項目的半成品。在一個月的準備時間中,大部分時間用來優(yōu)化算法及硬件設備,其余時間整理文檔及演講素材,最后幾輪比賽后也很榮幸獲得國家二等獎的獎項。我比較享受比賽緊迫的氛圍,在這種情況下可以讓自己進行項目的突破,這種成就感是不可替代的。在這個過程中我也學到了許多,獲得的獎項也是對我努力的認可。
在學校的成績怎么樣?
前10%
你為什么選擇這家公司進行實習(有實習經(jīng)歷的話)?
老師橫向項目,要求去公司實習完成項目
·為什么選這個site?
你還投了/面了哪些公司
對聯(lián)發(fā)科的了解
反問
二面(30分鐘)
自我介紹
狂問項目
和之前差不多,基本根據(jù)我的簡歷一條一條問
為什么static可以讓其他文件訪問不了靜態(tài)函數(shù)
靜態(tài)變量就初始化一次,只占用一個內(nèi)存空間,編譯器在讀到static之后就會對他賦予不同的作用域,使得它只能在作用域內(nèi)有效,如果作用域之外的文件調(diào)用它,就會報錯顯示沒有初始化該函數(shù)/變量
形參存儲在哪個區(qū)?
棧
為什么選擇聯(lián)發(fā)科
怎么平衡生活和工作
接受加班么
反問
發(fā)哥不多說了,面試官很親切,二面后掛
中科芯58所提前批
一面
自我介紹
你在做這個項目時遇到的最困難的事是什么,怎么克服的?
你在項目中負責什么工作?你做了什么,取得了什么成果?
負責項目的全部流程開發(fā),主要是項目原理證明、軟件實現(xiàn)、算法優(yōu)化、硬件實現(xiàn)以及相關測試工作,最后所設計的產(chǎn)品達到了預期的性能,產(chǎn)出一篇中文核心,兩篇發(fā)明專利
你項目中用到了FPGA,你了解么,會寫verilog么?
因為項目中FPGA用的不是很多,都是照著例程修改的,所以可能不是很熟練。會寫會讀verilog
你項目用的板子的ARM核是什么核,介紹一下?
A53
看你還剪裁系統(tǒng)了,操作步驟是什么?
設備樹配置、源碼編譯
用過幾年的stm32?
兩年
STM32上你比較熟悉哪幾個模塊?
IO模塊、SPI模塊、UART模塊、中斷、時鐘配置、看門狗等等
IO口的開漏輸出和推挽輸出有什么區(qū)別?
兩者對于低電平的輸出相同,對于高電平的輸出不同。推挽輸出:可以輸出高,低電平,直接連接數(shù)字器件; 開漏輸出:輸出端相當于三極管的集電極. 要得到高電平狀態(tài)需要上拉電阻才行
介紹一下SPI傳輸,有幾個口?
四個,SCK時鐘線,CS片選信號線以實現(xiàn)單主機控制多從機的操作,MISO主機接受從機發(fā)送,MOSI主機發(fā)送從機接收
知道SPI的DMA么?
不是很了解,沒有碰到過
你項目中使用SPI做什么操作?怎么用SPI控制多個從機?
使用片選信號進行選擇,多個從機連接相同的SCK、MISO、MOSI、CS,CS默認全拉高,當想要某個從機工作時,拉低該從機的CS腳,就可以選中從機進行spi傳輸
你了解ARM底層和內(nèi)核么?
了解一些,在本科階段有相關的課程
大端格式和小端格式的區(qū)別;
小端:低字節(jié)存在內(nèi)存的低位,高字節(jié)存在內(nèi)存的高位。大端和小端相反
你了解我們公司么?
不了解,主管介紹
你是哪里人,為什么選擇來我們這工作?
面試之后就拒了,白嫖加班,加班狠給錢少,要求多,這就是研究所。面完一面趕緊拒了,具體可以移步知乎,全是黑料。
樂鑫提前批
一面
自我介紹
在這簡歷的四個項目中你最熟悉哪一個?整體介紹一下,畫框圖。
·在這個項目中你主要負責哪個部分?
詳細講一下接收到圖像數(shù)據(jù)之后你的算法工作。
5640采集到的圖像會存儲在PS端的DDR中,程序會讀取DDR中的圖像數(shù)據(jù),對一幀圖像進行相關的增強等的算法操作,之后提取相應灰度均值,之后釋放這幀圖像的存儲空間,接下來進行下一幀圖像的相關信息的提取,直到提取512幀的數(shù)據(jù),即512大小的一維數(shù)組,再對數(shù)組進行后續(xù)的算法開發(fā)得到結果
為什么幀數(shù)選取是512幀?為什么選用兩種方法進行估計?
為了迎合傅里葉變換,最簡單的FFT實現(xiàn)基于一個折半的遞歸。如此,我們當然需要點的個數(shù)為2的次冪。但是FFT其實對點數(shù)并沒有強制限定。即使點數(shù)不是2的冪,也可以增加一些0點湊出一個2的冪,然后進行運算,如此不影響算法的執(zhí)行,但是會影響算法計算的速度以及效率
系統(tǒng)的精確度?你覺得在什么樣的情況下輸出的準確度會降低?
因為我們所設計的系統(tǒng)是和圖像處理以及圖像像素強度有關,所以在圖像采集過程中外部光照的經(jīng)常變化,或者是被測者的突然移動都會影響檢測精度,但是我們也考慮到了這一點,通過優(yōu)化算法,我們所設計的系統(tǒng)可以在正常情況下的誤差可以達到2以下,在外部干擾情況下誤差達到5以下
在操作系統(tǒng)上你做了什么工作?懂內(nèi)核和文件系統(tǒng)么?
搭建SDK環(huán)境、搭建交叉編譯環(huán)境、在環(huán)境下進行C的編寫以及交叉編譯、配置設備樹及文件系統(tǒng)、操作系統(tǒng)的移植;內(nèi)核和文件系統(tǒng)在項目的開發(fā)中都有所涉及
公司的實習主要做什么?簡單介紹一下。
主要是負責一個MCU項目的開發(fā),需要完成項目的原理分析、需求分析、器件采購清單、產(chǎn)品初步實現(xiàn)、產(chǎn)品測試、最終實現(xiàn),最后輸出相關報告;過程中也需要和部門其他同時進行交流合作,共同完成項目的開發(fā)
你覺得公司實習和學校中科研有什么差別?
主要就是自由度和科研角度吧,在學校學習的時間可以自己分配,很自由也沒人監(jiān)管,在公司的話有固定的工作時間;在學??蒲兄饕菍椖康拈_發(fā),更加偏向理論開發(fā),其實不用擔心成本或者相關技術或者什么的,老師都會把關,在公司中產(chǎn)品的開發(fā)需要涉及方方面面,要多和同事上級溝通,更加偏向產(chǎn)品化
知道stm32的上電順序么?
不怎么了解
知道操作系統(tǒng)的上電順序么?
FSBL內(nèi)部RAM--SSBL內(nèi)部ROM--(外部ROM)內(nèi)核--根文件系統(tǒng)--用戶程序
講述項目職責
反問
二面技術面
自我介紹
在這簡歷的四個項目中你最熟悉哪一個?介紹一下
項目涉及到哪些技術棧?你是負責哪些方面的?
攝像頭視頻數(shù)據(jù)是如何傳輸?shù)模扛袷绞鞘裁矗?/h5>
攝像頭是MIPI接口,配置后輸出RAW格式圖像,在FPGA端將數(shù)據(jù)轉換為32位數(shù)據(jù)流,之后轉為RGB888格式,然后通過VDMA存儲到DDR中
你是如何平衡傳輸中輸入輸出速率不匹配的問題?
上面有
在存儲過程中用到了多幀轉換,簡單介紹一下。
就是開辟兩個存儲空間,一個讀一個寫,兩個空間互斥訪問
PS端和PL端是如何互聯(lián)的?
在ZYNQ板卡上有多個高速的HP口用于連接PS端和PL端
主要是用什么語言?(c語言),在代碼中用到多線程了么
用到了,雙線程,一個現(xiàn)場進行圖像的讀取以及存儲,另一個線程對存儲的圖像進行圖像分析以及數(shù)據(jù)提取,兩個線程有先后關系,所以設置了同步鎖。
簡單介紹一下多線程和多進程的關系。
進程是計算機中的程序關于某數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結構的基礎。或者說進程是具有一定獨立功能的程序關于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。線程則是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
聊家常
哪里人,為什么選擇公司,了解產(chǎn)品么
反問
技術、職責、工作時間等等
二面
對項目以及自己的個人情況進行了解
三面HR面
自我介紹
之前的技術面試怎么樣,感覺和崗位適配度高么?
為什么選擇上海這個site?
你在上海有家人么?
你是本碩都是一個學校的,是保研的么?
那你為什么保研本校呢,考慮到了什么?
你大學研究生生活以來覺得最有成就感的事是什么?
用三個詞語形容一下你自己
·(詞語中說到了認真負責)有具體事情可以證明你認真負責么?
在現(xiàn)實中喜歡交際么?朋友對你的評價大多是怎樣。
你單身么?
平??词裁磿??課外書還是技術相關的書?
對一種新接觸到的技術,你一般是如何開始學習的?
對未來的職業(yè)有所規(guī)劃么?
期望薪資是多少?
你投遞了多少家公司?有幾個offer?投遞的上海的公司有幾家?
有什么特別傾向的公司么?影響你選擇公司的因素有哪些?
反問。
已拿到提前批意向書,總體感覺還不錯。
博通集成
技術面+筆試
手搓代碼:鏈表中刪除一個元素(LEETCODE原題)
個人自我介紹
這幾個項目你哪個項目做的最久最大?簡單介紹一下;
在這個項目中你是那部分花的時間最多?
在開發(fā)流程中大概是算法優(yōu)化占用的時間比較多,當然這也包括優(yōu)化--測試--優(yōu)化的過程,因為我們的產(chǎn)品其實對外部光照以及測試者移動都很敏感,稍微的變化就會產(chǎn)生一定的干擾,所以為了減小這些干擾帶來的相關變化,我們查閱很多資料,并在此基礎上提出了自己的優(yōu)化算法,然后設計詳盡的測試流程對算法進行測試,在測試中優(yōu)化,最終得到現(xiàn)在所呈現(xiàn)的產(chǎn)品結果
你實現(xiàn)項目的流程是怎樣的,直接硬件實現(xiàn)么?
項目具體流程大概是需求分析、原理分析、算法推導、模擬仿真、板卡選型、軟件實現(xiàn)、硬件實現(xiàn)、測試優(yōu)化,在前期工作做好之后,我們一開始是依靠PC機進行相應的算法實現(xiàn)及優(yōu)化的,因為從運行效率、相關復雜度來說,PC端的測試要簡潔很多。當PC端測試的差不多,算法優(yōu)化完成時,再進行硬件的移植
你算法中的xxx是怎么實現(xiàn)的,xxx為什么這么做;
你是怎么想到要這樣優(yōu)化算法的?
看了很多論文,復現(xiàn)了很多論文中提到的方法,進行相應的優(yōu)劣對比,考慮問題所在,在一次次實驗和測試中對方法進行優(yōu)化,使得算法在不同情景下具有普遍性
QT是怎樣實現(xiàn)的,有哪些組件?
Qt 中的每個控件都由特定的類表示,每個控件類都包含一些常用的屬性和方法,所有的控件類都直接或者間接繼承自 QWidget 類。實際開發(fā)中,我們使用 Qt 提供的這些控件,通過交互的方式實現(xiàn)控件下編寫的相關代碼。label、按鈕等等
QT中信號和槽的關系;
一對一、一對多、多對一
操作系統(tǒng)的移植主要做了哪些操作;
首先根據(jù)PL端的內(nèi)核配置創(chuàng)建源代碼工程,生成初始設備樹,之后對設備樹進行個性化的配置,增加設備,之后對相應的庫文件以及驅動文件進行配置,設置為SD卡啟動,最后進行源碼編譯,然后移植到SD卡中即可
設備樹上怎么配置來讓系統(tǒng)連接設備的;
添加設備號,編寫驅動程序,將設備掛載到板卡上
文件系統(tǒng)的作用?為什么添加文件系統(tǒng);
文件系統(tǒng)實現(xiàn)對磁盤空間的統(tǒng)一管理,一方面文件系統(tǒng)對磁盤空間進行統(tǒng)一規(guī)劃,另外一方面文件系統(tǒng)提供給普通用戶人性化的接口。
對C還是C++了解的多一點?
解釋一下volatile,什么時候會用到它?
防止編譯器優(yōu)化,并行設備的通用寄存器,多個線程訪問的非自動變量
實參會保存在哪個區(qū)里面;
靜態(tài)區(qū)
簡述static在c語言中的應用;
對于函數(shù)中的靜態(tài)變量:初始化一次,只能在函數(shù)中改變及使用;靜態(tài)全局變量及函數(shù):只能在該文件中使用
結構體和結構體指針的區(qū)別,用什么好;
內(nèi)存占用的區(qū)別,結構體需要占用內(nèi)部所有元素大小的字節(jié),指針只需要占用指針大小的字節(jié);我選擇指針,空間占用小,在知道指針大小的情況下一般不會發(fā)生調(diào)用問題
為什么會想來上海工作
期望薪資;
反問
二面HR面
自我介紹
之前的面試怎么樣?對公司有什么期待?
因為公司在多個城市都有分部,你會傾向于某個城市么?
你了解我們公司的產(chǎn)品么?希望未來是往底層還是應用層發(fā)展?
最近投了幾家公司了?有幾個offer?
現(xiàn)階段有沒有很想去的公司?
一般選擇公司會考慮什么因素?
在學校的成績?nèi)绾危?/p>
是否單身?
有沒有租房經(jīng)驗?
對薪資有什么期望?
反問(住房、工作時間、調(diào)薪方式等等)
博通集成加班好像也很嚴重,但是給的薪資還是不錯的,一面直接三個面試官,一個項目,一個問基礎,一個看你手搓代碼,輪番轟炸。已經(jīng)有意向書。
禾賽科技
技術面+筆試
手搓代碼:atoi函數(shù)實現(xiàn)。
自我介紹;
哪個項目你做的最久最熟悉?簡單介紹一下。
Zynq技術手冊看了多少?了解到了什么部分的技術知識?
看得不多,主要是一些我項目用到的,比如說DDR存儲器、PS-PL高速連接、VDMA、相關IP核的了解等等
項目主要負責哪些方面?
整個流程
PS和PL端如何互通?
之前介紹過
設備樹和內(nèi)核如何配置?如何工作?
之前介紹過
操作系統(tǒng)啟動流程?
之前介紹過
Bootloader有幾個部分?
FSBL和SSBL,first stage 和 second stage
介紹一下stm32的項目?
STM32用了多長時間,熟悉什么?
之前介紹過
什么是中斷?
中斷是CPU對系統(tǒng)發(fā)生的某個事件作出的一種反應。)中斷現(xiàn)場保護那些東西?(保護現(xiàn)場主要是把一些重要的寄存器如PSW、工作寄存器和SFR等的內(nèi)容壓入堆棧。
PIC和PIE了解么?
這個真不了解
SPI總線介紹,有幾種工作模式?
有四種工作模式,在數(shù)據(jù)采集時,主要看時鐘線實在上升沿還是下降沿,還有相位區(qū)別0或者90
進程和線程相關;
(1)一個進程死了不影響其他進程,一個線程崩潰很可能影響到它本身所處的整個進程。2) 創(chuàng)建多進程的系統(tǒng)花銷大于創(chuàng)建多線程。3)多進程通訊因為需要跨越進程邊界,不適合大量數(shù)據(jù)的傳送,適合小數(shù)據(jù)或者密集數(shù)據(jù)的傳送。多線程無需跨越進程邊界,適合各線程間大量數(shù)據(jù)的傳送。并且多線程可以共享同一進程里的共享內(nèi)存和變量。)
介紹一下編譯的幾個步驟?如何理解交叉編譯?
預處理、編譯、匯編、鏈接;對于不同平臺,在其他平臺使用這個程序就需要交叉編譯,選擇其他平臺的源碼進行編譯鏈接,一般針對PC-ARM,因為arm并沒有那么多的資源承載編譯匯編所需要的相關庫
介紹一下虛擬內(nèi)存、物理內(nèi)存(內(nèi)存的基本單位是什么)
虛擬內(nèi)存是對物理內(nèi)存的一種抽象,它介于應用程序與物理內(nèi)存之間。應用程序是面向虛擬內(nèi)存編寫的,而不再是面向物理內(nèi)存編寫的。應用程序在運行時只能使用虛擬地址CPU負責將虛擬地址翻譯成物理地址,操作系統(tǒng)負責設置虛擬地址到物理地址的映射。
為什么用虛擬內(nèi)存?虛擬內(nèi)存如何映射到物理內(nèi)存?
整個系統(tǒng)就運行統(tǒng)剛啟動的時候還是運行在物理內(nèi)存上的,內(nèi)核也被全部加載到了物理內(nèi)存。內(nèi)核會記錄進程的虛擬內(nèi)存分配情況,但是并不會馬上分配物理內(nèi)存建立頁表映射,而是讓進程先運行著。
進程運行的時候,CPU都是通過MMU訪問虛擬內(nèi)存地址的,MMU會用頁表去解析虛擬內(nèi)存,如果找到了其對應的物理地址就直接訪問,如果頁表項是空的,就會觸發(fā)缺頁異常,在缺頁異常中會去分配物理內(nèi)存并建立頁表映射。
然后再重新執(zhí)行剛才的那條指令,然后CPU還是通過MMU訪問內(nèi)存,由于頁表建立好了,這下就可以訪問到物理內(nèi)存了。
當物理內(nèi)存不足的時候,內(nèi)核還會把一部分物理內(nèi)存解除映射,把其內(nèi)容存放到外存中,等其再次需要的時候再加載回來。
這樣,一個進程運行的時候并不需要立馬加載其全部內(nèi)容到物理內(nèi)存,進程只需要少量的物理內(nèi)存就能順利地運行,于是系統(tǒng)運行進程的吞吐量就大大提高了。
在公司實習有什么感受?主要負責什么?
主要負責項目的開發(fā),產(chǎn)品的制作和測試;感受就是在公司中制作的產(chǎn)品會更加考慮到產(chǎn)品的成本、相關技術的橫縱向比較以及如何突出自身產(chǎn)品的優(yōu)點,畢竟面向商業(yè)化,和平常學校做項目不一樣。在公司自己只要負責研發(fā)這一塊,其他的期間采購、測試環(huán)境搭建等等會有其他人負責,每個人負責范圍劃分清除,各司其職。同時在公司也會有明確的計劃和ddl,也會要求總結,效率會更高,也方便和其他部門溝通。
你比較傾向于負責哪一塊的內(nèi)容?
反問
一面面了好久好久,問了好多好多,面試官很穩(wěn)柔,我回答不出來他還說沒關系沒關系,感覺自己可能幾個問題沒回答出來,掛了。
蘇州國芯(線下面試筆試)
筆試1小時
c基礎、嵌入式基礎、操作系統(tǒng)、四道編程題
技術面試(三位面試官)
自我介紹
你這些項目中哪個項目做的最久最熟悉?
簡單介紹一下項目(原理、框架、硬件軟件、實現(xiàn)結果)
簡述一下zynq板卡的構成;
PL+PS,PL為可編程邏輯端,PS為操作系統(tǒng)端,ARM內(nèi)核,兩者通過高速線相連,外設會分別連接在PL和PS端
板卡上你主要負責哪些技術棧;底層還是應用層偏多?
STM32的底層,ZYNQ的底層和應用層,這些在簡歷上都有所體現(xiàn);底層偏多
軟件是你自己實現(xiàn)的么?簡述流程;
是的
數(shù)據(jù)的采集和傳輸是如何實現(xiàn)的?
ZYNQ的PL端連接MIPI接口的5640,當5640被iic初始化之后,進行數(shù)據(jù)的采集,數(shù)據(jù)采集格式為RAW格式,在PL端進行數(shù)據(jù)流轉換,轉為32bit數(shù)據(jù)流,再變?yōu)?4bit數(shù)據(jù)流即RGB888格式,之后通過高速的HP口 存儲到PS端的DDR中。
系統(tǒng)如何應對輸入輸出不匹配的問題?
你系統(tǒng)使用雙幀緩存,流程如何,怎么實現(xiàn)互斥訪問的?
PS端和PL端依靠什么進行通信?如何實現(xiàn)的?
怎么使用PS端讀取ddr中的內(nèi)容
因為DDR的物理地址是知道的,大概就是0x10000000開頭,然后順序存儲數(shù)據(jù),在linux下需要用mmap()函數(shù)將寄存器物理地址映射為用戶空間的虛擬地址,即將寄存器的那段內(nèi)存映射到用戶空間,將文件描述符 fd (即ddr內(nèi)存掛載的設備,進行open)指定文件的物理內(nèi)存區(qū)至調(diào)用進程的用戶空間虛擬內(nèi)存區(qū),之后函數(shù)返回最后文件映射到用戶空間的地址,在程序中就可以直接操作該地址,對地址指針進行讀操作即可。
PS端使用的什么芯片?你在上面運行LINUX系統(tǒng)了么?
ARM-A53,運行了xilinx公司開發(fā)的petalinux系統(tǒng),自己編譯的
Linux內(nèi)核你是用的現(xiàn)成的還是自己依靠源碼編譯的?具體流程如何?
源碼編譯的,網(wǎng)上下載源碼-》搭建交叉編譯環(huán)境-》加載PL端相關ip核的工程文件-》配置內(nèi)核和相關的文件庫、驅動,在SD卡啟動-》配置設備樹-》對工程進行make編譯-》將相關文件移動到SD卡中-》辦卡啟動即可
Linux下你是怎么驅動攝像頭的?對設備驅動了解多少?
linux下對攝像頭的啟動只需要完成iic的配置,之后攝像頭傳輸數(shù)據(jù)會經(jīng)過PL端數(shù)據(jù)轉換后存儲到ddr中;5640攝像頭需要作為設備掛載到板卡上,就需要在設備樹中對該設備進行設備號、設備地址的配置,并且要連接上相應的驅動,這樣才可以在程序中對攝像頭進行初始化及調(diào)用。
設備樹是如何配置的?有什么用?
設備樹是節(jié)點和屬性的簡單樹結構。屬性是鍵值對,節(jié)點可以包含屬性和子節(jié)點樹的節(jié)點,描述了linux內(nèi)核或其他軟件系統(tǒng)(如u-boot)用于初始化硬件的參數(shù)。
一些優(yōu)點包括:無需重新編譯任何源代碼即可輕松更改系統(tǒng)配置、可以輕松添加對新硬件的支持、可以使用include語句重用現(xiàn)有的.dts文件,并可以覆蓋以前定義的功能。)
你熟悉QT么?
具體用到了什么功能?
什么是交叉編譯?
操作系統(tǒng)啟動流程;
cache是如何實現(xiàn)的;
stm32用多少的時鐘,spi用多少的時鐘;
64M和2M
項目的spi是怎么實現(xiàn)的,有什么功能,如何對多從機進行控制;
uart通信是怎么實現(xiàn)的,報文格式是什么?
uart是一種通用的異步收發(fā)器,是一種串行通信方式,數(shù)據(jù)在傳輸過程中逐一傳輸。對于串口通信最重要的就是五個量,起始位、數(shù)據(jù)位,停止位,校驗位以及波特率,設置時需要對他們進行初始化。使能相應的串口時鐘和GPIO時鐘-》初始化串口的TXD和RXD所在的GPIO-》初始化串口-》使能串口。通信采用modubus協(xié)議,包括1字節(jié)地址、1字節(jié)功能碼、1字節(jié)寄存器、4字節(jié)數(shù)據(jù)、2字節(jié)校驗
介紹一下中斷,你項目中用到了什么中斷?中斷依據(jù)是什么?
定時器中斷,定時進入程序,檢測編碼器數(shù)值是否有誤,有誤就進入中斷服務子程序,進行相應的補償,最后回到主程序
如果項目跑飛了怎么辦
在程序中加看門狗
看門狗的實現(xiàn);
STM32內(nèi)置看門狗,可用來檢測和解決由軟件錯誤引起的故障;當計數(shù)器達到給定的超時值時,觸發(fā)一個中斷(僅適用于窗口型看門狗)或產(chǎn)生系統(tǒng)復位。獨立看門狗(IWDG)由專用的低速時鐘(LSI)驅動,即使主時鐘發(fā)生故障它也仍然有效。使用自由運行的遞減計數(shù)器,時鐘由獨立的RC振蕩器提供(可在停止和待機模式下工作),看門狗被激活后,則在計數(shù)器計數(shù)至0x000時產(chǎn)生復位,所以在程序中使得該計數(shù)器計數(shù)到0之前進行看門狗復位,程序就可以正常運行;如果程序跑飛了,看門狗計數(shù)到0,自動復位程序,程序就可以繼續(xù)執(zhí)行了。
反問:
技術棧、適合什么崗位
HR面
哪里人?以后想在那里進行工作,為什么?
是否單身?
期望薪資是多少,有什么判斷依據(jù);
研究生期間有什么最有成就感的事情?簡述一下;
你有西安的實習經(jīng)歷,為什么會去西安?
在實習中學到了什么?負責什么?
在剛剛的技術面中覺得自己和崗位適配度高么?
比較想從事底層還是應用層的開發(fā)?
有考慮其他公司么?現(xiàn)在有幾個offer?
除了嵌入式,你還有考慮到其他的崗位么?
影響你選擇公司的主要因素有哪些?
hr簡述公司情況、調(diào)薪方式、公積金、住房補貼等等
反問。
沒啥好說的,三個技術面試官,面完ok。給的很多,有雙休,剛剛上市還算ok。聽別人說是薛定諤的加班,僅供參考。
集度(百度下自動駕駛企業(yè))
自我介紹
介紹自己的項目(最熟悉的)
你在當中做了什么東西?有哪些成果?
camera和dp驅動是自己做的嗎?
移植過程中出現(xiàn)了哪些什么問題?
講述一下上電之后linux啟動的流程;
小車驅動項目主要完成了什么?
控制電機驅動芯片使得小車進行運動,涉及到時鐘、中斷、看門狗、spi、uart、編碼器閉環(huán)控制等等
spi有幾條線?怎么控制多從機的?兩個參數(shù)有什么用?
SPI速度是多少;
2M
怎么配置uart的?
上面介紹過
在實習中負責什么工作?
上面介紹過
怎么定義常量的?
#define或者const。
1、define是預編譯指令,const是普通變量的定義,define定義的宏是在預處理階段展開的,而const定義的只讀變量是在編譯運行階段使用的。
2、const定義的是變量,而define定義的是常量。define定義的宏在編譯后就不存在了,它不占用內(nèi)存,因為它不是變量,系統(tǒng)只會給變量分配內(nèi)存。但const定義的常變量本質上仍然是一個變量,具有變量的基本屬性,有類型、占用存儲單元。所以編程時在使用const和define都可以的情況下盡量使用常變量來取代宏。
3、const定義的是變量,而宏定義的是常量,所以const定義的對象有數(shù)據(jù)類型,而宏定義的對象沒有數(shù)據(jù)類型。所以編譯器可以對前者進行類型安全檢查,而對后者只是機械地進行字符替換,沒有類型安全檢查。這樣就很容易出問題)
volatile怎么使用的?為什么要用?
為什么編譯器可以跳過優(yōu)化?
讀內(nèi)存而不是緩存
了解崗位職責么?
反問
一面感覺還挺好的,面試官還說我基礎好,項目也很好,over。
二面主管面
之前都有介紹過,都是差不多的問題
自我介紹
你最熟悉的做的時間最長的項目是哪個?
在這個項目的過程中你覺得自己學到了什么東西,在什么方向上有所提升?
項目中你覺得最困難的點在哪里,如何進行解決的?
簡單介紹一下你的實習經(jīng)歷,從中學到了什么;
你覺得在學校和在公司最大的區(qū)別在哪里,你會怎么應對?
項目用c語言還是c++比較多?
反問
二面時常很短,就20分鐘左右,可能是kpi面吧
海康威視嵌入式
一面(30min)
自我介紹
選擇一個你最熟悉的項目進行介紹;
你的項目主要解決了什么問題,如何解決的,你在其中做了什么;
你的視頻信息是如何傳輸?shù)模曨l質量有什么要求?
視頻質量:720P,30fps
如何進行iic的配置?Iic開始信號是?
SCL高電平,SDA高變低
項目用c還是c++比較多?
看一串代碼找錯,主要是字符串的初始化最后一位為,以及strcpy復制會帶來什么問題;
手搓結構體,具體就是給了老師、學生、姓名、性別、學號等等熟悉,就公共熟悉用一個結構體定義,私有屬性繼承公共熟悉的結構體就行;
對網(wǎng)絡有了解么?項目中有什么應用?
了解??档墓ぷ鲝姸让矗欠裼锌紤]好?(發(fā)抖)
反問
二面hr面(25min)
自我介紹
簡單介紹一下你最熟悉的項目的開發(fā)流程;
項目過程中遇到什么困難,如何解決的?
你在校園生活中遇到的最大的挫折是什么?
平常學習過程中是如何學習的,有什么方法?簡單介紹一下?
如果在工作時遇到了困難,你會怎么辦?
評價一下你自己,說一下自己的優(yōu)缺點;
為什么選擇??低??有什么了解?評價一下。
相比于其他人,你覺得你有什么突出的點
期望薪資是多少?
對于公司的選擇主要看重哪些方面,為什么?
對于加班怎么看,可以接受么?
海康體面廠,可能今年人真的很多,筆試、一面、二面中間隔了好久,面試官也很拽,哎難搞。(不怎么推薦講道理,具體移步知乎)
達發(fā)科技
一面
自我介紹一下
介紹一下你最熟悉的那個項目
項目中你主要負責哪些部分,做了什么?
視頻采集的流程是怎樣的?
操作系統(tǒng)啟動流程
bootloader->內(nèi)核->根文件系統(tǒng)->用戶程序
平常用c比較多還是c++比較多
手搓代碼:計算n!的后幾位有幾個0;
直接百度看
linux用過是吧,查找文件字符轉用
grep
查看多少個進程用
top或ps
在linux上用過多線程么?進程間通信是通過?
管道,消息隊列、信箱等
對網(wǎng)絡熟悉么?Tcp/ip和udp區(qū)別是什么?
TCP面向連接,而UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接;TCP提供可靠的服務。也就是說,通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付;UDP具有較好的實時性,工作效率比TCP高,適用于對高速傳輸和實時性有較高的通信或廣播通信
tcp和udp頭部分別有多少字節(jié)
20字節(jié)和8字節(jié)
什么是dns服務?介紹一下。
DNS 是計算機域名系統(tǒng)的縮寫,它是由解析器以及域名服務器組成的。域名服務器是指保存有該網(wǎng)絡中所有主機的域名和對應IP地址,并具有將域名轉換為IP地址功能的服務器。當用戶在應用程序中輸入 DNS 名稱時,DNS 服務可以將此名稱解析為與之相關的其他信息。
接下來就是閑聊,比如你比較傾向于在哪里工作,老家哪里的,對達發(fā)有什么印象,為什么選擇在這里工作等等,然后就是反問。
二面主管面
自我介紹一下
你覺得這個項目最難的點是什么,你怎么解決的?
你覺得在這個項目中你學到了什么?有什么經(jīng)驗是可以帶進下一個項目的?
如果讓你回到剛接手項目的時候,你會怎么進行項目的研發(fā),為什么?
就是當初研發(fā)經(jīng)驗少,走彎路,怎么改進巴拉巴拉
我為什么問剛剛那個問題
要總結,要反省balabala
然后就是介紹達發(fā)的培訓理念,什么什么的
聯(lián)發(fā)科子公司,面試官很友好,自我感覺良好,等結果中,推薦推薦。
大疆嵌入式
自我介紹
哪個項目做的最熟悉,其中有什么難點;
你項目中使用了攝像頭,你是怎么進行數(shù)據(jù)的采集的?
圖像的格式是什么?怎么進行格式轉換的?
RAW--RGBA--RGB888,之前介紹過
怎么解決視頻輸入和處理速度不匹配的問題?
對于存儲的數(shù)據(jù),你是怎么訪問的
讀寫互斥訪問,加鎖實現(xiàn)
你的系統(tǒng)是實時采集的,你是如何實現(xiàn)的?
多線程,主要是平衡讀取時處理所花費時間太長,所以單獨開辟線程進行圖像處理,另外主線程進行數(shù)據(jù)處理
你項目中用了多線程與多進程,談談你的理解?
前面說過
線程,進程間通信方式?
管道、FIFO、消息隊列、信號量
平常調(diào)試嵌入式板卡用什么方式?
GDB調(diào)試
介紹一下你的調(diào)試方法
gdbserver是一個運行于目標板上,可監(jiān)控被調(diào)試程序的運行,可通過網(wǎng)絡與上位機的 gdb 通信,通過上位機的 gdb 輸入命令,控制目標板上程序的運行,查看內(nèi)存和寄存器的內(nèi)容。
1、將我們的開發(fā)板,裝好有l(wèi)inux系統(tǒng)的sd卡并上電,ipconfig查看ip地址(開發(fā)板插上網(wǎng)線,保證開發(fā)板和主機在同一ip下);
2、在QT的工具設置中添加device(使用IP添加);在build/run的kits中添加該device。
3、之后編譯并運行即可??梢栽O置斷點、使用printf輸出數(shù)據(jù)來查看問題。)
什么是交叉編譯;
交叉編譯是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。
怎么確保你的交叉編譯沒有錯誤呢?
我在進行交叉編譯之前會在PC機上進行x86的編譯,并且查看相關的error和warning,還會在PC上運行程序進行測試,都通過之后才會進行交叉編譯,在板子上進行測試
對操作系統(tǒng)了解多少,啟動流程是怎樣的?
之前講過
對大疆有什么了解?平常玩無人機、攝像頭什么的么?
哎平常不搞這個,就很虧吧,感覺面試官還是希望你有這方面經(jīng)驗的
反問
可能是kpi面吧,我看其他人問了很多基礎的,面了好久,我就面了半個多小時,哎學歷硬傷,今年太慘啦。
矽力杰
矽力杰就是線下面試了,說是線下面試會優(yōu)先錄取。技術面大概就是30分鐘多一點,可能會是你之后的直系主管,大概就是自我介紹然后根據(jù)你的項目問一些細節(jié),然后拓展問一點八股,畢竟是做數(shù)字,車載MCU的,還是會問這種嵌入式開發(fā)底層相關的東西,難度也不是很高,之后就大概向你介紹現(xiàn)在做的東西是什么,崗位職責什么的。
然后就是hr面,都是線下一天面完,主要也就是了解你的意向、對公司的期望、自身相關的問題,hr也很好說話很溫柔,整體來說感覺還是很好的。
面試結束后一周得到電話意向書。
聯(lián)影微電子
一面電話技術面
沒有提前通知,突然就是電話面試,面試官主要考察你的項目相關,首先就是自我介紹,要求重點介紹一下相關項目以及相關經(jīng)歷,之后就是對相關項目的延申問問題,總體來說沒有太難的,都是項目相關。一個星期內(nèi)電話通知二面。
二面視頻技術面
二面與一面相隔兩周,首先是發(fā)給你一份試卷,十道題,有C基礎、IIC、SPI等等總線傳輸線相關、手撕代碼、操作系統(tǒng)等等,在半小時之內(nèi)完成,之后給其中一個面試官現(xiàn)場批卷;此時另一個面試官要求自我介紹,然后問項目相關,主要考察你在項目過程中是如何思考的,怎么解決各種問題的,你的學習及測試方法等等,之后面試官會和你反饋試卷情況??傮w一小時左右,面試官很隨和,試卷題目也算是比較基礎。面試完一周內(nèi)hr電話面試,八月末發(fā)的意向書。
個人總結
從6月份開始提前批以及秋招,現(xiàn)在九月末也差不多接近尾聲了。當初本科的時候計算機還是爆火,我的專業(yè)電子信息都不被看好,回家都被親戚說你學這個干啥,沒想到讀研期間風向稍微轉變了。
就去年來說軟件硬件缺口都很大,互聯(lián)網(wǎng)比嵌入式工資高,需求也高,但是就今年形式來說,互聯(lián)網(wǎng)真的是寒冬了,不過嵌入式還是和往年感覺差不多(大廠除外),相比于我的幾個純軟件開發(fā)的舍友,我還是拿到的offer比較多的。所以選擇嵌入式的xd們也很幸運,至少餓不死啦。
就工資水平來說,嵌入式可能甚至比那些測開、軟開等的還要高,并且嵌入式也算是吃經(jīng)驗的,也不必擔心青春不在工作也沒了。
嵌入式這塊找工作真的是幸運的,畢竟互聯(lián)網(wǎng)HC少,人多,內(nèi)卷上天, 筆試超級難,還要手撕算法巴拉巴拉,但是嵌入式的面試手撕算法真的很少(今年比去年的多了一點,可能企業(yè)都發(fā)現(xiàn)筆試還是水的),可以說算法ok是你的加分項。
但是誰知道明年會怎么樣呢,總會有卷王的,所以還是打牢基礎,多刷題多總結多看書,實力才是硬道理。
然后再說一下企業(yè)選擇,xdm雙非進大廠真的少之又少,特別是今年,你說人家大廠收到一堆985本碩、985碩的簡歷,簡歷初篩不曬你曬誰。
大廠的話學歷+大廠實習(oh感覺這個真的很重要)+國獎+頂刊+發(fā)明專利+相關項目,你最好要占到其中三個再去沖,不然很容易過不了初篩。
所以也可以把目光瞄向一些中廠,過的舒服一點也不錯不是么。對于面試的準備,就是之前我提到的深挖項目細節(jié)+各種基礎+刷題,項目很重要?。?!要知道很多公司問的都是項目相關以及延申的問題,好好準備不熟悉的項目就別放上去了,問到不會的話很尷尬的。
當然面試心態(tài)很重要,要相信你自己準備的很好,你就是最棒的!沒必要為大廠去不了感到難過,努力做好自己能做到的事情,其他的就看天意啦。特別是!別和其他人比!做人不要太攀比,要比就和自己比,適合自己的才是最好的!
我的一些經(jīng)驗經(jīng)供參考,大家每個人都有自己的學習方法,希望能對各位有所幫助。
在我看來,秋招 = 實力 + 面試技巧 + 運氣 + 心態(tài),每一個環(huán)節(jié)都充滿了不確定性,隨時都有可能因為各種原因掛掉。作為求職者的我們也無法預知某個公司某個崗位的難度,所以也不建議在一棵樹上吊死。最后祝大家都能拿到自己心儀的offer,加油加油!
掃碼加我微信
進技術交流群