面經(jīng)
1、卓馭(大疆車載)- 軟件開發(fā)實(shí)習(xí)生(MCU/RTOS/LINUX)
自我介紹;
驗(yàn)證一下項(xiàng)目真實(shí)性(項(xiàng)目背景、開發(fā)人員和分工);
IIC通訊和SPI通訊的區(qū)別;(速度IIC慢/SPI快、IIC半/SPI全雙工、通信架構(gòu)IIC總線多主多從/SPI點(diǎn)對(duì)點(diǎn)單主多從)
BootLoader升級(jí)的流程;
static關(guān)鍵字;(修飾變量、函數(shù))
介紹一下函數(shù)指針和應(yīng)用場(chǎng)景;(BootLoader跳轉(zhuǎn)APP)
結(jié)構(gòu)體變量的初始化方式(定義后逐個(gè)初始化、定義時(shí)按順序初始化、定義時(shí)按指定成員初始化)
//?1、定義后逐個(gè)初始化
struct?Point?p3;
p3.x?=?30;
p3.y?=?40;
//?2、定義時(shí)按順序初始化
struct?Point?p5?=?{70,?80};
//?3、定義時(shí)按指定成員初始化
struct?Point?p6?=?{.y?=?90,?.x?=?100};
團(tuán)隊(duì)業(yè)務(wù)(智駕應(yīng)用開發(fā))和過往經(jīng)歷(單片機(jī)底層)不算很匹配,感興趣嗎?
了解卓馭科技嗎?(成行智駕平臺(tái))
實(shí)習(xí)時(shí)間、入職時(shí)間、學(xué)校時(shí)間安排;
當(dāng)前接觸的公司和工作方向有哪些?
介紹公司,反問;
2、地平線 - ?嵌入式開發(fā)實(shí)習(xí)生(上海)
一面
- 自我介紹;FreeRTOS的任務(wù)創(chuàng)建方法;(動(dòng)態(tài)、靜態(tài))寵物喂養(yǎng)機(jī)項(xiàng)目中有具體有哪些線程,它們的優(yōu)先級(jí)是如何考慮的?(線下控制>MQTT連接>線上控制>OTA>數(shù)據(jù)上報(bào))Linux了解嗎?(確實(shí)不懂)IIC和SPI的區(qū)別;IIC一條總線上最多控制多少個(gè)設(shè)備?(7位從機(jī)地址最多控制2^7=128個(gè)設(shè)備)外掛Flash的選型?(為方便開發(fā)選擇了W25Q64)Flash的讀寫有什么區(qū)別?(只能由1寫0,因此需要先擦再寫,同時(shí)擦除和寫入只能按塊或按扇區(qū)操作,而讀取可以按字節(jié)讀)有沒有用到STM32內(nèi)部的Flash存儲(chǔ)參數(shù)?(沒有用到,參數(shù)直接用外部EEPROM存了)為什么不用內(nèi)部Flash而采用外部EEPROM(EEPROM能夠按字節(jié)任意讀寫,使用方便一些,內(nèi)部Flash要擦除再寫,而且只能按半字寫入)反問,聊了很多,面試官說組內(nèi)有做車載以太網(wǎng)的,還反問我感不感興趣,看起來比較滿意。
總結(jié):面試體驗(yàn)很不錯(cuò),面試官很溫文爾雅,每個(gè)回答都會(huì)有回應(yīng)和肯定,不清楚的問題也會(huì)慢慢引導(dǎo),盡管方向不是很契合,也有部分技術(shù)棧不熟悉,面試官還是讓過了,約了二面。
二面
-
- 自我介紹;問實(shí)習(xí)時(shí)間,地點(diǎn),經(jīng)濟(jì)上是否有壓力;如果mentor非常忙沒時(shí)間給予指導(dǎo),怎么辦?
-
- 回答:首先自己查找資料,集中時(shí)間向mentor咨詢。面試官給了更好的答案:主動(dòng)上去詢問mentor正在忙的活,看看有沒有哪些能幫上忙的地方,給mentor減負(fù)的同時(shí)也能參與到更深入的工作中,能學(xué)到更多。
-
FreeRTOS有多少個(gè)優(yōu)先級(jí);FreeRTOS是實(shí)時(shí)的還是非實(shí)時(shí)的;介紹一下單片機(jī)中斷的具體流程;知道向量表嗎?向量表里存的是什么?(中斷處理程序的地址);反問,具體介紹了所屬部門和小組,介紹了具體的工作(具體的芯片、系統(tǒng)都說了,雖然我不懂hh);
總結(jié):面試官是那種很有親和力的技術(shù)大佬,看起來很有技術(shù)深度,但又非常親切,全程笑容,說話提問也很輕松,還會(huì)反過來給我的答案建議,不只是考察面試者,還會(huì)給予指導(dǎo),這點(diǎn)我非常佩服。
3、大疆創(chuàng)新
- 自我介紹作為比賽項(xiàng)目的隊(duì)長(zhǎng)角色做了什么工作哪個(gè)地方你覺得自己做的最好有哪些值得改進(jìn)的地方技術(shù)方案上有哪些缺點(diǎn)有具體測(cè)試過嗎印象最深的難點(diǎn)(bootloader跳轉(zhuǎn)進(jìn)入hardfault)怎么解決的?(直接用內(nèi)聯(lián)匯編,或者inline展開)inline展開是在哪個(gè)階段進(jìn)行的(開始說編譯,想了想應(yīng)該是鏈接)鏈接這個(gè)過程發(fā)生了什么?(只有籠統(tǒng)理解)FreeRTOS有哪些情況會(huì)發(fā)生任務(wù)調(diào)度任務(wù)調(diào)度會(huì)保存哪些上下文主動(dòng)調(diào)度port_yield是怎么實(shí)現(xiàn)的說一說PendSV中斷說一說信號(hào)量具體有哪些操作take信號(hào)量具體做了什么事情,如果take不到會(huì)發(fā)生什么(阻塞)說一下阻塞的本質(zhì),實(shí)際上發(fā)生了什么(掛到阻塞鏈表)在中斷里能用take_semph嗎(不能,要用FromISR后綴的,非阻塞接口)為什么中斷中不能阻塞?(時(shí)間不確定,中斷里不允許)還有別的原因嗎?提示:在中斷里阻塞之后,又被喚醒,會(huì)發(fā)生什么?(思考了一會(huì),沒想明白)
總結(jié):?jiǎn)柕姆浅I钊敕浅<?xì)節(jié),深入到源碼的理解,必須細(xì)致系統(tǒng)讀過FreeRTOS的源碼才能知道,對(duì)技術(shù)抓的很深,一直問到完全答出所有細(xì)節(jié)或者不會(huì),這也是大疆的特點(diǎn)了。但最后反問的時(shí)候說進(jìn)去做Python工具開發(fā)的,沒法接觸產(chǎn)品,應(yīng)該會(huì)拒了。
掃碼加我微信
進(jìn)技術(shù)交流群