嵌入式面試經(jīng)驗(yàn)分享
1.首先需要準(zhǔn)備自己的自我介紹,重點(diǎn)突出符合職位的亮點(diǎn)
2.熟悉自己的項(xiàng)目,熟悉基本流程,里面用到的知識(shí)點(diǎn)
3.復(fù)習(xí)基本的·C語(yǔ)言知識(shí)點(diǎn)
3.1幾個(gè)關(guān)鍵字的作用
3.1.1auto:指定為自動(dòng)變量,由編譯器自動(dòng)分配及釋放,通過(guò)棧上分配
3.1.2static:指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時(shí),指定函數(shù)作用域?yàn)槲募?nèi)部
3.1.3register:指定為寄存器變量,建議 編譯器將變量存儲(chǔ)到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過(guò)寄存器而不是堆棧傳遞參數(shù)
3.1.4extern:指定為外部變量,即在另外的目標(biāo)文件中定義,可以認(rèn)為是約定由另外文件聲明的對(duì)象的一個(gè)"引用"
3.1.5const:與volatile合稱(chēng)"cv特性",指定變量不可被當(dāng)前線(xiàn)程/進(jìn)程改變(但有可能被系統(tǒng)或其他線(xiàn)程/進(jìn)程改變)
3.1.6olatile:與constant合稱(chēng)"cv特性",指定變量的值有可能會(huì)被系統(tǒng)或其他進(jìn)程/線(xiàn)程改變,強(qiáng)制編譯器每次從內(nèi)存 中 取 得該變量的值
3.2內(nèi)存占據(jù)
3.2.1 32位編譯器:
char :1個(gè)字節(jié)
char*(即指針變量): 4個(gè)字節(jié)(32位的尋址空間是2^32, 即32個(gè)bit,也就是4個(gè)字節(jié)。同理64編譯器)
short int : 2個(gè)字節(jié)
int: 4個(gè)字節(jié)
unsigned int : 4個(gè)字節(jié)
float: 4個(gè)字節(jié)
double: 8個(gè)字節(jié)
long: 4個(gè)字節(jié)
long long: 8個(gè)字節(jié)
unsigned long: 4個(gè)字節(jié)
64位編譯器:
char :1個(gè)字節(jié)
char*(即指針變量): 8個(gè)字節(jié)
short int : 2個(gè)字節(jié)
int: 4個(gè)字節(jié)
unsigned int : 4個(gè)字節(jié)
float: 4個(gè)字節(jié)
double: 8個(gè)字節(jié)
long: 8個(gè)字節(jié)
long long: 8個(gè)字節(jié)
unsigned long: 8個(gè)字節(jié)
4.相關(guān)的硬件知識(shí)
4.1 spi(串行外設(shè)接口):全雙工,四條線(xiàn)(串行時(shí)鐘,串行數(shù)據(jù)輸出,串行數(shù)據(jù)輸入,片選信號(hào)),沒(méi)有應(yīng)答信號(hào),只有一個(gè)主設(shè)備
spi接口具有如下優(yōu)點(diǎn):
1) 支持全雙工操作;
2) 操作簡(jiǎn)單;
3) 數(shù)據(jù)傳輸速率較高。
同時(shí),它也具有如下缺點(diǎn):
1) 需要占用主機(jī)較多的口線(xiàn)(每個(gè)從機(jī)都需要一根片選線(xiàn));
2) 只支持單個(gè)主機(jī)
4.2 iic(集成電路總線(xiàn)):半雙工,兩條線(xiàn),線(xiàn)少,但是技術(shù)麻煩,通過(guò)地址選信號(hào)
優(yōu)缺點(diǎn)
1)優(yōu)點(diǎn)
只使用兩條信號(hào)線(xiàn);
支持多主機(jī)多從機(jī);
有應(yīng)答機(jī)制。
2)缺點(diǎn)
速率比SPI慢
4.3USART(通用異步接收器):沒(méi)有時(shí)鐘信號(hào),所以通過(guò)波特率,全雙工,三根線(xiàn)
優(yōu)缺點(diǎn)
1)優(yōu)點(diǎn)
只使用兩條信號(hào)線(xiàn);
不需要時(shí)鐘信號(hào);
有校驗(yàn)位進(jìn)行錯(cuò)誤檢測(cè);
2)缺點(diǎn)
傳輸速率比較低。
spi和iic都是短距離的,芯片和芯片的通信,usart是兩個(gè)設(shè)備的通信,長(zhǎng)距離
4.4單片機(jī)最小系統(tǒng)??jī)?nèi)部主要結(jié)構(gòu)?
答:電源,晶振,復(fù)位電路;
內(nèi)部結(jié)構(gòu):ROM/RAM,計(jì)時(shí)器,中斷,I/O串并行口,總線(xiàn)
4.5RAM和ROM的區(qū)別?
ROM(只讀存儲(chǔ)器):一次寫(xiě)入后只能被讀出,而不能被操作者修改或者刪除,一般用于存放固定的程序和數(shù)據(jù)表格
RAM(隨機(jī)存儲(chǔ)器):內(nèi)存,存放各種現(xiàn)場(chǎng)的輸入/輸出數(shù)據(jù),中間計(jì)算結(jié)果以及與外部存儲(chǔ)交換信息,或者作堆棧(特點(diǎn):先進(jìn)先出,后進(jìn)后出)
4.6看門(mén)狗原理:在系統(tǒng)運(yùn)行以后就啟動(dòng)看門(mén)狗計(jì)數(shù)器,此時(shí)看門(mén)狗就開(kāi)始自動(dòng)計(jì)時(shí),如果達(dá)到一定時(shí)間還不去給她進(jìn)行清零,看門(mén)狗就會(huì)溢出從而引起看門(mén)狗中斷,造成系統(tǒng)復(fù)位
5.數(shù)據(jù)結(jié)構(gòu)
5.1隊(duì)列和棧區(qū)別
1.隊(duì)列先進(jìn)先出,棧先進(jìn)后出
2.對(duì)插入和刪除操作的限定不同
棧是限定只能在表的一端進(jìn)行插入和刪除操作的線(xiàn)性表
隊(duì)列是限定只能在表的一端進(jìn)行插入,在另一端進(jìn)行刪除操作的線(xiàn)性表
3.遍歷數(shù)據(jù)速度不同
棧只能從頭部取數(shù)據(jù),也就最先放入的需要遍歷整個(gè)棧最后才能取出來(lái),而且在遍歷數(shù)據(jù)的時(shí)候還得為數(shù)據(jù)開(kāi)辟臨時(shí)空間,保持?jǐn)?shù)據(jù)在遍歷前后的一致性。
隊(duì)列則不同,它基于地址指針進(jìn)行遍歷,而且可以從頭或尾部開(kāi)始遍歷,但不能同時(shí)遍歷,無(wú)需開(kāi)辟臨時(shí)空間,因?yàn)樵诒闅v的過(guò)程中不影像數(shù)據(jù)結(jié)構(gòu),速度要快的多
其他問(wèn)題
1.iic的上拉電阻有什么用,為什么不是下拉電阻?
2.數(shù)組存儲(chǔ)是連續(xù)的嗎,怎樣定義不連續(xù)
對(duì)于其他的一些比較細(xì)節(jié)的問(wèn)題,我已經(jīng)整理到我的專(zhuān)欄http://fangfengwang8.cn/creation/manager/columnDetail/MJNwoM
#嵌入式##面試#