嵌入式工程師經(jīng)典面試題.(總15頁).doc
《嵌入式工程師經(jīng)典面試題.(總15頁).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《嵌入式工程師經(jīng)典面試題.(總15頁).doc(15頁珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、上個(gè)星期, 去深圳一家搞 ARM 開發(fā)的公司面試, HR 叫我做了一份卷子, 里面都是 C 編程, 心中暗喜, 因?yàn)檫@些題基本上都在程序員面試寶典里見過。后來回到學(xué)校, 在網(wǎng)上搜索,原 來這些題都是嵌入式工程師的經(jīng)典面試題目, 很多網(wǎng)站上都可以找得到。 現(xiàn)把他貼出來, 附 上網(wǎng)上的答案,跟大家分享,因?yàn)檫@些題實(shí)在太經(jīng)典了。預(yù)處理器(Preprocessor 1 . 用預(yù)處理指令 #define 聲明一個(gè)常數(shù), 用以表明 1年中有多少秒 (忽 略閏年問題#define SECONDS_PER_YEAR (60 * 60 * 24 * 365UL我在這想看到幾件事情:1 #define 語法的基本
2、知識(shí)(例如:不能以分號(hào)結(jié)束,括號(hào)的使用,等 等2 懂得預(yù)處理器將為你計(jì)算常數(shù)表達(dá)式的值,因此直接寫出你如何計(jì) 算一年中有多少秒而不是計(jì)算出實(shí)際的值,是更清晰而沒有代價(jià)的。 3 意識(shí)到這個(gè)表達(dá)式將使一個(gè) 16位機(jī)的整型數(shù)溢出 -因此要用到長(zhǎng)整 型符號(hào) L, 告訴編譯器這個(gè)常數(shù)是的長(zhǎng)整型數(shù)。4 如果你在你的表達(dá)式中用到 UL (表示無符號(hào)長(zhǎng)整型,那么你有了 一個(gè)好的起點(diǎn)。記住,第一印象很重要。2 . 寫一個(gè) 標(biāo)準(zhǔn) 宏 MIN ,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。 #define MIN(A,B (A = (B ? (A : (B這個(gè)測(cè)試是為下面的目的而設(shè)的:1 標(biāo)識(shí) #define在宏中應(yīng)用的基
3、本知識(shí)。這是很重要的。因?yàn)樵?嵌入(inline操作符 變?yōu)闃?biāo)準(zhǔn) C 的一部分之前,宏是方便產(chǎn)生嵌入代碼的唯 一方法,對(duì)于嵌入式系統(tǒng)來說,為了能達(dá)到要求的性能,嵌入代碼經(jīng)常 是必須的方法。2 三重條件操作符的知識(shí)。這個(gè)操作符存在 C 語言中的原因是它使得 編譯器能產(chǎn)生比 if-then-else 更優(yōu)的代碼,了解這個(gè)用法是很重要的。3 懂得在宏中小心地把參數(shù)用括號(hào)括起來4 我也用這個(gè)問題開始討論宏的副作用,例如:當(dāng)你寫下面的代碼時(shí) 會(huì)發(fā)生什么事?least = MIN(*p+, b;3. 預(yù)處理器標(biāo)識(shí) #error的目的是什么?如果你不知道答案, 請(qǐng)看參考文獻(xiàn) 1。 這問題對(duì)區(qū)分一個(gè)正常的伙
4、計(jì)和一個(gè)書呆子是很有用的。 只有書呆子才會(huì)讀 C 語言課本的附錄去找 出象這種問題的答案。當(dāng)然如果你不是在找一個(gè)書呆子,那么應(yīng)試者最 好希望自己不要知道答案。死循環(huán)(Infinite loops4. 嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用 C 編寫死循環(huán)呢? 這個(gè)問題用幾個(gè)解決方案。我首選的方案是:while(1一些程序員更喜歡如下方案:for(;這個(gè)實(shí)現(xiàn)方式讓我為難,因?yàn)檫@個(gè)語法沒有確切表達(dá)到底怎么回 事。 如果一個(gè)應(yīng)試者給出這個(gè)作為方案, 我將用這個(gè)作為一個(gè)機(jī)會(huì)去探 究他們這樣做的基本原理。 如果他們的基本答案是: 我被教著這樣做, 但從沒有想到過為什么。 這會(huì)給我留下一個(gè)壞印象。第三
5、個(gè)方案是用 gotoLoop:.goto Loop;應(yīng)試者如給出上面的方案,這說明或者他是一個(gè)匯編語言程序員(這也 許是好事或者他是一個(gè)想進(jìn)入新領(lǐng)域的 BASIC/FORTRAN程序員。數(shù)據(jù)聲明(Data declarations5. 用變量 a 給出下面的定義a 一個(gè)整型數(shù)(An integerb 一個(gè)指向整型數(shù)的指針(A pointer to an integerc 一個(gè)指向指針的的指針, 它指向的指針是指向一個(gè)整型數(shù) (A pointer to a pointer to an intege rd 一個(gè)有 10個(gè)整型數(shù)的數(shù)組(An array of 10 integerse 一個(gè)有 10個(gè)
6、指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的。(An array of 10 pointers to integersf 一個(gè)指向有 10個(gè)整型數(shù)數(shù)組的指針(A pointer to an array of 10 integers g 一個(gè)指向函數(shù)的指針, 該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù) (A pointer to a function that takes an integer as an argument and returns an integerh 一個(gè)有 10個(gè)指針的數(shù)組, 該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型 參數(shù)并返回一個(gè)整型數(shù) (An array of ten pointers
7、to functions that take an integer argument and return an integer 答案是:a int a; / An integerb int *a; / A pointer to an integerc int *a; / A pointer to a pointer to an integerd int a10; / An array of 10 integerse int *a10; / An array of 10 pointers to integersf int (*a10; / A pointer to an array of 10
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 嵌入式 工程師 經(jīng)典 試題 15