雙非本科進大疆(SP)!
- 2021 年 11 月 18 日
- 筆記
- 嵌入式軟件工程師筆試面試指南, 筆試面試經驗分享
哈嘍,大家好,我是仲一。今天和大家分享的是一位優秀雙非本科生上岸大疆的經歷(羨慕哭了。。。)。
今年4月底的時候,這位學弟和我分享了他拿下oppo,京東,聯發科實習offer的經歷,當時我還發了朋友圈,為這位學弟感到開心。這也是第一位粉絲向我報喜,我映像很深刻。
找工作其實也沒你想的那麼難的,找不到合適的工作,可能是方法不對。
其實,很多大廠對於應屆生的要求不會太高,最重要的,還是考察基礎和綜合素質。進入公司後,公司會有完善的培養體系,會把應屆生當做白紙來培養。
面試也不要想的太難。在面試的時候,問題答上來了,面試就可以通過。而這些問題,是我們可以把控的,可以提前準備。
筆試面試的常考知識點我都整理好了,大家可以參考這個專欄。
不多說了,下面就分享下這位學弟的秋招經歷。
個人背景
大家好,我的秋招已經告一段落了,寫下一些總結,記錄下這三個月的面試經歷,希望能幫助到後面找工作的夥伴們。
背景:雙非一本 本科。
大三暑期實習:拿到了OPPO、MTK、京東等offer,最後去了本分廠實習了三個多月,在其中有輸出,也有成長。
秋招提前批、正式批:因為只想在廣深工作,所以秋招只投遞公司共20家,目前拿到了其中10家公司的offer,還有2家等結果。
被掛簡歷的企業:(華為、英特爾、tplink、autox)。
投遞後沒有消息的:(小馬、tcl、寒武紀、vivo)。終面後在等待結果的有:(美團、紫光展銳)。
獲得公司offer的有:大疆(sp 簽約~)、Arm china、小米、榮耀、聯發科、全志科技、星宸科技、科大訊飛、CVTE、諾瓦科技。
學習經歷
我在大一的時候加入了一個老師的實驗室,在裏面開始玩玩stm32單片機,實驗室是做飛控項目的。在大一到大二的時候基本都在這裏面度過,也學到了很多嵌入式的相關知識。
大二疫情期間開始學習RTOS、QT,也陸續自己做過一些小項目。加入了一個的學生創業團隊,開始打一些比賽,挑戰杯、、互聯網+、ican等。
大三開始基本就不打比賽了,繼續學習嵌入式相關的內容,跟着韋東山老大哥的課程學習了linux的應用以及驅動方面的內容,也根據這些知識做了一個電子量產工具的項目。
實習經歷
春招實習投了幾個廠:OPPO、聯發科、京東、阿里、網易、CVTE等。
其中拿到了OPPO、聯發科、京東的offer。
最後在oppo的穿戴軟件部門實習了三個月的時間,在其中的工作內容主要是跟OPPO WATCH2智能手錶相關,上班狀態基本是雙休,工作日偶爾加班(因為我是實習生)。用到的技能有RTOS、LVGL、C、python等。
面試經歷
接下來就是面試的記錄總結啦,由於當初比較懶,基本上都是以記錄題目為主,所以大部分題目沒有寫下自己的答案。
聯發科面試 oc
聯發科提前批一面 30分鐘 8.2
- 為什麼不留在oppo?
- 說下中斷和輪詢
- 平時學嵌入式有看什麼書
- 介紹電視線 balabala 兩種工作的情況
- 問我 更傾向於哪種
- 音頻 視頻 外設的驅動
- 框架性回答一個嵌入式系統啟動到結束的過程
- 反問
聯發科提前批二面 30分鐘 8.9
- 說說實習三個月的感受
- switch_context的底層原理 (freertos)
講了下切換的場景,pendsv函數的實現,switch_context裏面關於pcb_current指針的邏輯等。
- 實習做的偏應用層,為什麼要學習freertos呢
- 面試官講講電視線的情況,業務做得好可能要兩年,成為專家要四年。
- 有學過linux/安卓嗎 學過linux 寫過一些驅動
- 這些驅動是在開發板上寫的還是在pc上模擬的?
- 有什麼想問我
總結
聯發科提前批的面試給我的感覺是比較簡單,面試氛圍比較輕鬆。二面的時候面試官問了一個freertos的問題後,我回答得較好,然後直接就說後面不想怎麼問了,後面也是第一個談薪的offer。
星宸科技 oc
星宸科技技術面 一小時 8.12
- C語言基礎 sizeof 指針、數組的大小
- 局部變量存在哪裡,malloc的變量在哪裡
- Linux怎麼搜索所有.so文件
- 平時有沒有用github
- 雙向鏈表和單鏈表
- Cpp的map、list、vector的底層數據結構
- 多態的實現
- 靜態鏈接和動態鏈接
- 動態鏈接的代碼在數據段和代碼段的分配
- 項目管理的場景,你需要一個接口,需要別的部門的人來提供,他以很忙為由推脫,你這邊也很急,要怎麼處理?角色調換,又該怎麼處理?
- 介紹一個最成功的項目
- Gdb的指令
- Linux驅動的ioctl
- 內核嚮應用層獲取數據用哪個接口
- 講下i2c
- 有什麼想問我
星宸科技HR 半小時 8.17
- 為什麼不想留在oppo
- 能接受幾點下班?
- 介紹下我們公司
- 怎麼看待互聯網和半導體行業
- 介紹最成功的一個項目,遇到了什麼困難,領導不喜歡怎麼辦
- 介紹最成功的一個比賽,遇到了什麼困難
- 在建模比賽中怎麼分工,誰作為領導的角色
- 期望的工作強度是怎樣的
- 家在哪裡
- 期望薪資
- 有什麼想問我?
總結
hr面後過兩天就發意向書了,九月份談薪的時候開的跟mtk差不多,拒掉後hr再提薪了一次,後再拒。不過面試的體驗還是很好的!
大疆oc+簽約
大疆一面 一小時 8.19
- 自我介紹
- Linux創建線程有沒有設置過調度相關的參數
主要考察第二個參數:
屬性對象主要包括是否綁定、是否分離、
堆棧地址、堆棧大小、優先級。默認的屬性為非綁定、非分離、缺省的堆棧、與父進程同樣級別的優先級。
-
linux 線程調度的幾種方法
Linux系統的三種調度策略:
-
SCHED_OTHER:分時調度策略(Linux線程默認的調度策略)。
-
SCHED_FIFO:實時調度策略,先到先服務。該策略簡單的說就是一旦線程佔用CPU則一直運行,一直運行直到有更高優先級任務到達或自己放棄。
-
SCHED_RR:實時調度策略,時間片輪轉。給每個線程增加了一個時間片限制,當時間片用完後,系統將把該線程置於隊列末尾。放在隊列尾保證了所有具有相同優先級的RR任務的調度公平。
-
-
Linux中的條件變量怎麼用? 以及虛假喚醒的總結
-
接上麵條件變量 Cond wait後還持鎖么
-
硬件中斷觸發的全過程、堆棧的保存
進入異常步驟:
-
處理器在當前堆棧上把xPSR、PC、LR、r12、r3~r0八個寄存器自動依次入棧。
-
讀取向量表(如果是複位中斷,更新SP值)
-
根據向量表更新PC值
-
加載新PC處的指令(2、3、4步與1步同時進行)
-
更新LR為EXC_RETURN(EXC_RETURN表示退出異常後返回的模式及使用的堆棧)。
退出異常步驟:
- 根據EXC_RETURN指示的堆棧,彈出進入中斷時被壓棧的8個寄存器。
- 從剛出棧的IPSR寄存器[8:0]位檢測恢復到那個異常(此時為嵌套中斷中),若為0則恢復到線程模式。
- 根據EXC_RETURN,選擇使用相應SP。
-
-
講下MMU的相關知識
-
多線程、多進程的方式
-
共享內存的底層原理
-
線程和進程的理解
-
調用一個函數後,會返回到哪裡?
這裡應該是想問棧幀的變化
-
程序在內存中的分配
-
未初始化的變量打印出來是什麼值
全局的初始化為0 局部變量未知 -
編譯和鏈接的過程
-
平時有沒有用GDB
-
講下為什麼斷點調試可以停在那裡
軟件斷點在X86系統中就是指令INT 3,它的二進制代碼opcode是0xCC。當程序執行到INT
3指令時,會引發軟件中斷。操作系統的INT
3中斷處理器會尋找註冊在該進程上的調試處理程序。從而像Windbg和VS等等調試器就有了上下其手的機會。
- Mmap的使用 了解頁表么
- TCP創建sever的過程
- I2c、SPI講下,i2c主從能互換不
- 為什麼不考研
- 有什麼想問我
大疆二面 半小時 8.26
- 自我介紹
- Oppo實習的內容
- 四軸飛行器有幾個自由度 6
- 控制往左偏航 四個電機需要怎麼操作
- 遙控用的什麼協議
- 講下另一個項目
- 為什麼項目用udp不用tcp
- 講下I2c和spi
- Ic是怎麼讀寫數據的
- I2c速率有哪些 跟什麼有關
大疆三面 半小時 9.3
- 自我介紹
- 介紹最有挑戰性的一個項目 問了相關問題
- 你的優勢跟劣勢
- 最想從事哪方面的工作
- 有了解大疆的產品嗎
- 跟自己做的飛行器有什麼不同
- 有什麼想問我
總結
dji的一面問得比較多比較深入,後面兩面就感覺比較水了,三面類似於hr面。面試官級別很高,是一個dji機器學習團隊的leader,壓力隨之而來,所以面起來有點磕磕碰碰的。10.23hr電話談薪 sp,思考了兩天後決定拒掉arm中國,簽約大疆,去追逐自己的夢想hhh,總而言之,希望自己能夠在dji學有所成!
榮耀 oc
榮耀一面 半小時 8.21
- 問筆試的題目,第一題還能怎樣優化
- 說下實習時候測試的心得
- 畢業設計想做什麼
- 打算怎麼開展
- 從獲得的獎項中選一個去講
- 有什麼想問我
榮耀二面 半小時 8.22
- 在oppo實習負責的內容
- 實習開發過程中遇到了什麼困難
- 工作地點的意向?
- 更希望做上層應用還是底層?
- 你在學校做的項目是在實驗室做的還是自學的?
- 有什麼想問我
榮耀綜合面 9.7
- 對加班的看法
- 華為和榮耀 oppo的比較
- 大學怎麼克服困難
- 給自己的大學生涯打幾分? 為什麼
- 有獨自旅遊的經歷嗎
- 對996的看法
- 工作部門的意向
- 有什麼問我
- 紫光一面 40分鐘對加班的看法
- 華為和榮耀 oppo的比較
- 大學怎麼克服困難
- 給自己的大學生涯打幾分? 為什麼
- 有獨自旅遊的經歷嗎
- 對996的看法
- 工作部門的意向
- 有什麼問我
總結
榮耀的面試體驗總體來說一般,技術類問題也沒問很多,綜合面的女面試官在面試的時候還在嚼口香糖,有點不是很禮貌,另外公司加班氛圍特別重,所以對榮耀並沒有太多的興趣。
紫光 面試通過泡池子
紫光一面 40分鐘 8.24
- 技術面第一次見女面試官~
- 四軸飛行器項目中負責了哪些內容
- 講一下電子量產工具項目
- 這個項目的需求是什麼?市面上已經有了嗎
- 實習過程中做了什麼
- 對工作的意向,有沒有哪些內容是比較想做的
- 有什麼問我
紫光二面 40分鐘 8.29
- 自我介紹
- 介紹第一個項目~
- 氣壓計的精度 5cm
- 介紹第二個項目
- 介紹實習內容
- 面試官對實習做的產品很感興趣 balabala蠻久
- 說一下 Const的作用
- 說一下 const int *p和 int const *p
- 有什麼問我
10.面完就告知通過了
總結
面試體驗還不錯,兩輪面試的面試官都比較有耐心,二面面試官對實習做的東西比較感興趣以及認可,但因為紫光是交叉面試,最後都是扔到池子里等人撈,所以最後沒有適合的部門撈就沒後續了。
CVTE oc
CVTE提前批技術面 1個多小時 8.25
- 對c廠有什麼了解
- 介紹自己
- 實習負責的內容
- 有什麼成長?
- 找工程師review代碼有什麼心得?
- GPIO能配置成什麼功能
- IO輸入輸出有哪幾鍾
- Cpp指針和引用的區別
- Malloc和new的區別
- Sizeof和strlen的區別
- 了解什麼總線? I2c和SPI
- I2c一次最多能掛載多少設備
- 中斷能傳參嗎?
- 手撕代碼 排序+二分查找
- Linux由哪幾個部分組成
- Linux有哪幾種設備
- Linux查看內存狀態的命令
- 講下網絡設備?
- 哪些是字符設備,他們有什麼共同點
- 內核態和用戶態的區別
- 有什麼想問我
CVTE提前批 HR面 9.2
- 現在手上有幾個offer
- 期望的工作時間和薪資
- 理想是什麼?
- 為什麼會有這個理想
- 平時獲取知識的來源
- 家庭情況
- 對你影響最大的一個人
- 假如給你30k、40k的月薪 你會怎麼做
- 有什麼想問我
總結
cvte面試通過後,還需要去實習七天才發offer,我沒去,所以沒有拿到有具體薪資的offer。也算是一次證明自己的過程吧,畢竟是實習的時候第一家面試的公司,當初被拒絕,現在也回拒一次,扯平!
科大訊飛 oc
科大訊飛一面 半小時 8.25
- Linux ./ 到main函數的過程
- 科大訊飛的語音識別你用過,怎麼用的
- Oppo實習負責的內容
- 一個.c文件到運行的四個過程
- 堆和棧的區別
- 講下linux的虛擬地址和物理地址
- 動態庫和靜態庫的區別
科大訊飛二面 20分鐘 8.28
- 項目中的代碼量
- 實習的代碼量
- 大一時候為什麼選擇嵌入式呢
- 面試官介紹智能家居的部門
- 還有什麼問題問我
科大訊飛Hr 20分鐘 9.1
- 能不能接受先到合肥工作 (我報的深圳base)
- 在oppo工作的感受
- 工作中遇到過什麼困難
- 為什麼不考慮留下?
- 現在還有哪幾個offer
- 還有什麼問我?
總結
科大訊飛的面試給我的感覺,就是面試官時間比較緊張,不能跟我進行過多的交流,所以問的問題比較少,但是面試過程中也能感受到被尊重,給面試體驗打個合格分數吧,最後也是果斷的拒了。
Arm china oc
ARM 一面 一個小時 9.8
- 自我介紹
- 介紹項目
- Linux的啟動過程
- 怎麼看.ko文件的信息
lsmod 查看已經安裝好的模塊, 也可以查看/proc/modules文件的內容。
實際上,lsmod讀命令就是通過查看/proc/modules的內容來顯示模塊信息的。
modinfo 顯示模塊信息
modprobe不需要指定路徑,它會到默認路徑下尋找模塊。
rmmod 卸載模塊,但是內核會認為卸載模塊不安全,可以添加命令強制卸載。
depmod 檢查系統中模塊之間的依賴關係,並把依賴關係信息存於/lib/modules/2.6.18-1.2798/modules.dep中。
insmod 加載模塊,需要指定完整的路徑和模塊名字。
-
你覺得有什麼品質是這個崗位需要的
-
熟悉什麼數據結構
-
單鏈表和雙鏈表的區別
-
什麼時候需要用結構體 如何定義
-
指針在32、64位操作系統佔多少位元組 為什麼?
我們一般需要64個0或1的組合就可以找到內存中所有的地址,而64個0或1的組合,就是64個位,也就是8個位元組的大小,因此,我們只需要8個位元組就可以找到所有的數據。所以,在64位的計算機中,指針佔8個位元組。同理,在32位的計算機中,指針佔4個位元組。
-
說說Static、extern
-
變量存在什麼區域
-
數組越界訪問會有什麼後果
-
函數調用棧的變化過程
-
堆和棧上變量的生存周期
-
檢查一個32位整形變量的bit10是否為1的幾種方法
-
了解arm的 trustzone架構嗎
-
Cotex-m的中斷過程
-
說說Cache
-
Write back和writer through的區別
-
說說cache line 不一致的問題
當時講的跟這裡差不多//blog.csdn.net/jasonchen_gbd/article/details/79462064 -
線程和進程的區別
-
線程的同步方法
-
有什麼問我
ARM 二面 9.24 一小時
- 對加減密算法有沒有了解
- 怎麼定義一個常量字符串
- 堆和棧的區別
- 說說四軸飛行器項目
- 說說pid
- 操作堆空間有哪些函數?
- Malloc和calloc的區別
答:共同點就是: 都為了分配存儲空間, 它們返回的是 void *
類型,也就是說如果我們要為int或者其他類型的數據分配空間必須顯式強制轉換; 不同點是:
malloc一個形參,因此如果是數組,必須由我們計算需要的位元組總數作為形參傳遞
用malloc只分配空間不初始化,也就是依然保留着這段內存里的數據, calloc 2個形參 ,因此如果是數組,需要傳遞個數和數據類型
而calloc則進行了初始化,calloc分配的空間全部初始化為0,這樣就避免了可能的一些數據錯誤。
- Strcpy和memocpy區別
- Do while(0)的好處
答:這樣,宏被展開後,上面的調用語句才會保留初始的語義。do能確保大括號里的邏輯能被執行,而while(0)能確保該邏輯只被執行一次,就像沒有循環語句一樣。
總結:在Linux和其它代碼庫里的,很多宏實現都使用do/while(0)來包裹他們的邏輯,這樣不管在調用代碼中怎麼使用分號和大括號,而該宏總能確保其行為是一致的。
- Static的作用
- 棧溢出和堆溢出
- 如何求一個結構體數組的大小
- 在頭文件分別定義static變量和普通變量會怎樣?
ARM 三面 9.24 一小時
- alice介紹部門、工作、員工發展
- 有沒有了解過測試理論
- 白盒和黑盒了解嗎
- 彙編指令:smc和hvc了解嗎
- 了解arm架構中異常的同步中斷和異步中斷嗎
- Fiq和普通中斷有什麼區別
- 講一下棧幀
- 實習過程中有什麼收穫?學到了什麼
ARM 四面 9.26 45分鐘
- 自我介紹 上海的面試官
- 職業規劃?
- 應聘這個崗位的優缺點是什麼?
- 大學期間的代碼量
- 說說四軸飛行器項目的難點 遇到最大的問題
- 說說pid控制算法
- 說說多線程多進程
- 說下互斥鎖和條件變量
- 條件變量的使用時:如果生產者喚醒消費者的時候 消費者未準備好?
- 熟悉arm架構嗎 熟悉m還是a系列多點
- M系列和a系列中斷的處理過程?
- 函數調用一般用哪幾個通用寄存器?
- 函數返回時用到哪個寄存器?
- 函數的返回值在什麼時候入棧?
- 有什麼問題問我
總結
四輪面試官體驗都非常不錯。唯一的遺憾就是openday當天沒有去深圳現場看看,面試過程中感受到arm對技術的要求還是比較高的,對arm架構的問題問得也比較深入,薪資也很有競爭力,在所有offer中是第二高的。是一輪體驗相當好的面試,雖然最後沒去,但在這裡也祝arm china越來越好 !
諾瓦科技 oc
諾瓦 一面 40分鐘 9.11
- 自我介紹
- 介紹一個單片機項目
- cortex m3和m4區別
- I2c的時序 空閑時scl的電平
- I2c可以接多少個設備
- 講下交叉編譯
- 講下makefile由哪幾個部分組成
- GPIO有哪幾種模式
- 程序編譯後存放在哪幾個區域 堆和棧的區別
- 給出一個結構體 求結構體的位元組數
- 說下反轉鏈表的思路
- 如何給地址0x67A9上的值賦為0xAA66
- 講下內存泄漏
- 講下鏈表和數組的區別
- 平時有哪些調試手段
- 有沒有意願留在實習單位
- 有什麼問我
諾瓦 二面 40分鐘 9.14
- 自我介紹
- 介紹四軸飛行器項目
- 介紹寫程序期間遇到過的困難
- 為什麼要選擇pid雙環 單環不可以嗎
- 介紹實習的工作
- 遇到了什麼困難
- 解決這個困難對你有什麼提升?
- 對諾瓦有什麼了解
- 想做什麼方向的工作,假如讓你做mcu裸機開發願不願意?
- 有什麼問我
總結
諾瓦深圳的面試難度偏向簡單,深圳base的規模較小,而且只有12薪,開的base還算可以,但是各方面還是比大廠差了一些,面試體驗還是不錯的!
全志科技 oc
全志科技一面 半小時 9.16
- 自我介紹
- 如何實現一個隊列
- Insmod會調用驅動的哪個函數
- 網絡協議了解嗎 tcp在第幾層
- 數據結構是自學的還是有相關課程
- 棧和隊列的特點
- 用的內核的什麼版本
- 用設備樹的話驅動如何編寫
- 寫過哪些驅動
- Linux項目給你帶來的提升是什麼
- 最成功的一件事
- Freertos怎麼學的 任務切換的原理?
- 除了任務切換對freertos其他底層了解嗎
- 有什麼想問我
全志科技hr 半小時 10.8
- 自我介紹
- 大學最成功的經歷
- 大學最挫敗的經歷
- 大學最有成長的比賽
- 大學關係最好的三個人
- 舍友怎麼評價我
- 怎麼選offer 薪資 公司 地域進行排序
- 現在有哪些offer?
- 全志如果發offer,開多少才考慮不去arm?
- 有什麼問我
總結
對於全志的感覺就是,這是一家不錯的公司,網上被罵的聲音較少,然後就是校招流程有些慢,也沒有提前批。開的薪資也算中規中矩。
小米 oc
小米一面 9.24 35分鐘
- 介紹實習負責內容
- 分別介紹項目
- 問了pid相關的
- 介紹i2c的讀寫時序
- 數組和指針的聯繫
- 堆和棧的區別
- 線程和進程的區別
- 介紹他們部門 手機部門做安卓驅動部分
- 反問
小米二面 9.26 40分鐘
- 介紹下實習做的內容
- 說下程序的內存分佈
- 說下堆和棧的區別
- 說下棧溢出
- 說下多進程和多線程
- 共享內存的使用注意事項
- 手寫swap和strcpy
- 說下malloc的底層原理
- 說下ioctl的實現原理 內核態和用戶態怎麼交互
- 說說copy to user的底層原理
- 說下缺頁中斷
- 有什麼問我
總結
對小米的印象就是,提前批投得慢,後面到正式批才撈我,最後也是順利通過,開的價格也比較有誠意,sp最高檔,但是相比其他手機廠和arm、大疆就低了不少,畢竟小米工作強度也低一些。面試體驗以及流程的推進上還是體驗不錯的。
美團 待開獎
美團一面 80分鐘 9.30
- 自我介紹
- 面試官介紹無人配送產品線
- 花了很長時間依次介紹實習經歷、三個項目經歷。
- 分別補充項目其中的創新點
- 講講pid控制算法
- 講講freertos任務調度的原理
- 講講如何寫一個字符設備驅動
- 講講static的作用
- 如果在類裏面定義static變量 和在函數內定義的一樣嗎
- 講講堆棧區別
- 講講volatile
美團二面 50分鐘 10.8
- 自我介紹
- 介紹實習的輸出
- 介紹實習項目的架構、freertos的應用
- 介紹實習遇到的問題及解決辦法
- 介紹linux的電子量產工具項目
- 介紹項目的用途及目標
- 介紹實習過程中技術上最大的收穫
- 為什麼做的項目都是c語言的,c++部分少?
- 為什麼不考慮來北京呢
- 反問環節
總結
面試過程中能夠感受到美團的面試官對技術是有一定要求的,兩輪面試時間也花費了不少時間,可惜美團的加班氛圍讓我心生敬畏,並且無人配送的base在北京,所以表示了強烈的留在深圳的意向。估計大概率不發offer了。
個人總結
以上就是我個人的成長經歷的介紹,以及秋招的面試經歷,希望能對大家有所幫助!
給後來的小夥伴的建議就是:
-
秋招開始得越早越好,多投遞自己喜歡的企業,提前批盡量不要錯過。
-
大三的小夥伴最好在大三暑期能夠有一份不錯的大廠實習經歷,這樣就算不考慮轉正,也能在秋招中增加了很多argue的籌碼。
-
不要讓自己卡在筆試上,leetcode刷給兩百道題足以應付大部分筆面試中的算法題了,這裡推薦先刷劍指offer的經典題,再刷些別的。
-
嵌入式的學習方面,時間充裕的話,理想的路線我覺得是從mcu->RTOS->linux。