2016年嵌入式面試試題(附答案)
嵌入式分為操作系統和硬件兩個方面,就業的方向更廣、更深,就業機會和入職待遇比普通軟件工程師好。下面YJBYS小編為大家整理了關於嵌入式面試的試題,希望對你有所幫助。
嵌入式系統中,動態分配內存可能發生的問題是什麼
儘管不像非嵌入式計算機那麼常見,嵌入式系統還是有從堆(heap)中動態分配內存的過程的。那麼嵌入式系統中,動態分配內存可能發生的問題是什麼?
這裏,我期望應試者能提到內存碎片,碎片收集的問題,變量的持行時間等等。這個主題已經在ESP雜誌中被廣泛地討論過了(主要是 P.J. Plauger, 他的解釋遠遠超過我這裏能提到的任何解釋),所有回過頭看一下這些雜誌吧!讓應試者進入一種虛假的安全感覺後,我拿出這麼一個小節目:下面的代碼片段的輸出是什麼,為什麼?
char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts(“Got a null pointer”);
else
puts(“Got a valid pointer”);
這是一個有趣的問題。最近在我的一個同事不經意把0值傳給了函數malloc,得到了一個合法的指針之後,我才想到這個問題。這就是上面的代碼,該代碼的'輸出是“Got a valid pointer”。我用這個來開始討論這樣的一問題,看看被面試者是否想到庫例程這樣做是正確。得到正確的答案固然重要,但解決問題的方法和你做決定的基本原理更重要些。
關鍵字volatile有什麼含意並給出三個不同的例子
一個定義為volatile的變量是説這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地説就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器裏的備份。下面是volatile變量的幾個例子:
1). 並行設備的硬件寄存器(如:狀態寄存器)
2). 一箇中斷服務子程序中會訪問到的非自動變量(Non-automatic variables)
3). 多線程應用中被幾個任務共享的變量
嵌入式系統中經常要用到無限循環,你怎麼樣用C編寫死循環呢?
這個問題用幾個解決方案。我首選的方案是:
while(1) { }
一些程序員更喜歡如下方案:
for(;;) { }
這個實現方式讓我為難,因為這個語法沒有確切表達到底怎麼回事。如果一個應試者給出這個作為方案,我將用這個作為一個機會去探究他們這樣做的基本原理。如果他們的基本答案是:“我被教着這樣做,但從沒有想到過為什麼。”這會給我留下一個壞印象。
第三個方案是用 goto
Loop:
…
goto Loop;
應試者如給出上面的方案,這説明或者他是一個彙編語言程序員(這也許是好事)或者他是一個想進入新領域的BASIC/FORTRAN程序員。
嵌入式系統中關於中斷的問題
中斷是嵌入式系統中重要的組成部分,這導致了很多編譯開發商提供一種擴展—讓標準C支持中斷。具代表事實是,產生了一個新的關鍵字 __interrupt。下面的代碼就使用了__interrupt關鍵字去定義了一箇中斷服務子程序(ISR),請評論一下這段代碼的。
__interrupt double compute_area (double radius)
{ double area = PI * radius * radius;
printf(” Area = %f”, area);
return area;
}
這個函數有太多的錯誤了,以至讓人不知從何説起了:
1). ISR 不能返回一個值。如果你不懂這個,那麼你不會被僱用的。
2). ISR 不能傳遞參數。如果你沒有看到這一點,你被僱用的機會等同第一項。
3). 在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的寄存器入棧,有些處理器/編譯器就是不允許在ISR中做浮點運算。此外,ISR應該是短而有效率的,在ISR中做浮點運算是不明智的。
4). 與第三點一脈相承,printf()經常有重入和性能上的問題。如果你丟掉了第三和第四點,我不會太為難你的。不用説,如果你能得到後兩點,那麼你的被僱用前景越來越光明瞭。
-
嵌入式系統開發工程師職業前景
在家電、手機、各種數碼產品等都在向智能化方向發展的今天,嵌入式技術越來越成為當前最熱門、最具發展前景的IT應用領域。嵌入式系統開發工程師是嵌入式工程領域的專家,需要有一定的嵌入式軟件開發經驗和嵌入式硬件開發經驗,熟悉ARM或其他微處理器架構或可編程邏...
-
嵌入式開發學習路線
學習嵌入式就業前景廣泛,你可以做手機、PDA、MP3、MP4、遙控玩具、psp、相機、家電控制(洗衣機、電飯煲等)、汽車導航儀,只要跟電子控制相關的。此外,嵌入式這個行業也利於個人創業,那麼下面yjbys小編為大家整理出嵌入式開發的最佳學習方式,僅供參考!如何學習嵌入式...
-
嵌入式開發的物聯網設計安全守則
互聯網中充斥着大批遊手好閒的人,他們以入侵網絡設備為樂,這是不諍的事實。但許多嵌入式開發團隊在之前從來沒有處理過安全問題,且仍在試圖決定什麼是他們需要做的,如果有的話。在此,yjbys為大家推薦的是嵌入式開發的物聯網設計安全守則,希望大家的互聯網的認識有多...
-
嵌入式C/C++面試題2016
2016年嵌入式C/C++面試考什麼內容呢?下面跟yjbys小編一起來看看最新嵌入式C/C++面試題庫及答案!分析這些面試題,本身包含很強的趣味性;而作為一名研發人員,通過對這些面試題的深入剖析則可進一步增強自身的內功。1.找錯題試題1:voidtest1(){charstring[10];char*s...