嵌入式面試試題附答案

    時間:2024-10-23 08:56:33 嵌入式培訓(xùn) 我要投稿

    2024年嵌入式面試試題(附答案)

      嵌入式分為操作系統(tǒng)和硬件兩個方面,就業(yè)的方向更廣、更深,就業(yè)機(jī)會和入職待遇比普通軟件工程師好。下面小編為大家整理了關(guān)于嵌入式面試的試題,希望對你有所幫助。

    2024年嵌入式面試試題(附答案)

      嵌入式面試試題附答案 1

      一、嵌入式系統(tǒng)中,動態(tài)分配內(nèi)存可能發(fā)生的問題是什么

      盡管不像非嵌入式計算機(jī)那么常見,嵌入式系統(tǒng)還是有從堆(heap)中動態(tài)分配內(nèi)存的過程的。那么嵌入式系統(tǒng)中,動態(tài)分配內(nèi)存可能發(fā)生的問題是什么?

      這里,我期望應(yīng)試者能提到內(nèi)存碎片,碎片收集的問題,變量的持行時間等等。這個主題已經(jīng)在ESP雜志中被廣泛地討論過了(主要是 P.J. Plauger, 他的解釋遠(yuǎn)遠(yuǎn)超過我這里能提到的任何解釋),所有回過頭看一下這些雜志吧!讓應(yīng)試者進(jìn)入一種虛假的安全感覺后,我拿出這么一個小節(jié)目:下面的代碼片段的輸出是什么,為什么?

      char *ptr;

      if ((ptr = (char *)malloc(0)) == NULL)

      puts(“Got a null pointer”);

      else

      puts(“Got a valid pointer”);

      這是一個有趣的問題。最近在我的一個同事不經(jīng)意把0值傳給了函數(shù)malloc,得到了一個合法的指針之后,我才想到這個問題。這就是上面的代碼,該代碼的輸出是“Got a valid pointer”。我用這個來開始討論這樣的一問題,看看被面試者是否想到庫例程這樣做是正確。得到正確的答案固然重要,但解決問題的方法和你做決定的基本原理更重要些。

      二、關(guān)鍵字volatile有什么含意并給出三個不同的例子

      一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設(shè)這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個例子:

      1). 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)

      2). 一個中斷服務(wù)子程序中會訪問到的非自動變量(Non-automatic variables)

      3). 多線程應(yīng)用中被幾個任務(wù)共享的變量

      三、嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用C編寫死循環(huán)呢?

      這個問題用幾個解決方案。我首選的方案是:

      while(1) { }

      一些程序員更喜歡如下方案:

      for(;;) { }

      這個實現(xiàn)方式讓我為難,因為這個語法沒有確切表達(dá)到底怎么回事。如果一個應(yīng)試者給出這個作為方案,我將用這個作為一個機(jī)會去探究他們這樣做的基本原理。如果他們的基本答案是:“我被教著這樣做,但從沒有想到過為什么。”這會給我留下一個壞印象。

      第三個方案是用 goto

      Loop:

      …

      goto Loop;

      應(yīng)試者如給出上面的方案,這說明或者他是一個匯編語言程序員(這也許是好事)或者他是一個想進(jìn)入新領(lǐng)域的BASIC/FORTRAN程序員。

      四、嵌入式系統(tǒng)中關(guān)于中斷的問題

      中斷是嵌入式系統(tǒng)中重要的組成部分,這導(dǎo)致了很多編譯開發(fā)商提供一種擴(kuò)展—讓標(biāo)準(zhǔn)C支持中斷。具代表事實是,產(chǎn)生了一個新的關(guān)鍵字 __interrupt。下面的代碼就使用了__interrupt關(guān)鍵字去定義了一個中斷服務(wù)子程序(ISR),請評論一下這段代碼的`。

      __interrupt double compute_area (double radius)

      { double area = PI * radius * radius;

      printf(” Area = %f”, area);

      return area;

      }

      這個函數(shù)有太多的錯誤了,以至讓人不知從何說起了:

      1). ISR 不能返回一個值。如果你不懂這個,那么你不會被雇用的。

      2). ISR 不能傳遞參數(shù)。如果你沒有看到這一點(diǎn),你被雇用的機(jī)會等同第一項。

      3). 在許多的處理器/編譯器中,浮點(diǎn)一般都是不可重入的。有些處理器/編譯器需要讓額處的寄存器入棧,有些處理器/編譯器就是不允許在ISR中做浮點(diǎn)運(yùn)算。此外,ISR應(yīng)該是短而有效率的,在ISR中做浮點(diǎn)運(yùn)算是不明智的。

      4). 與第三點(diǎn)一脈相承,printf()經(jīng)常有重入和性能上的問題。如果你丟掉了第三和第四點(diǎn),我不會太為難你的。不用說,如果你能得到后兩點(diǎn),那么你的被雇用前景越來越光明了。

      嵌入式面試試題附答案 2

      1、下面有關(guān)servlet中init,service,destroy方法描述錯誤的是?

      A.init()方法是servlet生命的起點(diǎn)。一旦加載了某個servlet,服務(wù)器將立即調(diào)用它的init()方法

      B.Service()方法處理客戶機(jī)發(fā)出的所有請求

      C.destroy()方法標(biāo)志servlet生命周期的結(jié)束

      D.servlet在多線程下使用了同步機(jī)制,因此,在并發(fā)編程下servlet是線程安全的.

      參考答案:D

      2、下面有關(guān)java和c++的描述,錯誤的是?

      A.java是一次編寫多處運(yùn)行,c++是一次編寫多處編譯

      B.c++和java支持多重承

      C.Java不支持操作符重載,操作符重載被認(rèn)為是c++的突出特征

      D.java沒有函數(shù)指針機(jī)制,c++支持函數(shù)指針

      參考答案:B

      3、()設(shè)計模式將抽象部分與它的實現(xiàn)部分相分離。

      A.Singleton(單例)

      B.Bridge(橋接)

      C.Composite(組合)

      D.Facade(外觀)

      參考答案:B

      4、哪些設(shè)計模式是降低資源使用率:

      A.prototype

      B.singleton

      C.flyweight

      D.abstract factory

      參考答案:BC

      5、運(yùn)行在多核處理器上的Linux環(huán)境中,若臨界區(qū)非常短,且不允許線程上下文切換的情況下,使用下列哪種機(jī)制滿足上述需求并且性能最好?

      A.SpinLock

      B.Mutex

      C.Semaphore

      D.Condition variable

      參考答案:C

      6、Unix系統(tǒng)中,哪些可以用于進(jìn)程間的通信?()

      A.Socket

      B.共享內(nèi)存

      C.消息隊列

      D.信號量

      參考答案:ABCD

      7、對一些資源以及狀態(tài)的操作保存,最好是保存在生命周期的哪個函數(shù)中進(jìn)行?

      A.onPause()

      B.onCreate()

      C.onResume()

      D.onStart()

      參考答案:A

      8、在android中使用Menu時可能需要重寫的方法有?

      A.onCreateOptionsMenu()

      B.onCreateMenu()

      C.onOptionsItemSelected()

      D.onItemSelected()

      參考答案:AC

      二、解答題

      1、編寫一個函數(shù),作用是把一個char組成的字符串循環(huán)右移n個。比如原來是“abcdefghi”如果n=2,移位后應(yīng)該是“hiabcdefgh” 函數(shù)頭是這樣的:

      //pStr是指向以結(jié)尾的字符串的指針

      //steps是要求移動的n

      void LoopMove ( char*pStr, int steps )

      {

      //請?zhí)畛?..

      }

      參考答案

      正確解答1:

      void LoopMove ( char*pStr, int steps )

      {

      int n = strlen( pStr ) - steps;

      char tmp[MAX_LEN];

      strcpy ( tmp, pStr + n );

      strcpy ( tmp + steps, pStr);

      *( tmp + strlen ( pStr ) ) = ;

      strcpy( pStr, tmp );

      }

      正確解答2:

      void LoopMove ( char*pStr, int steps )

      {

      int n = strlen( pStr ) - steps;

      char tmp[MAX_LEN];

      memcpy( tmp, pStr + n, steps );

      memcpy(pStr + steps, pStr, n );

      memcpy(pStr, tmp, steps );

      }

      【剖析】

      這個試題主要考查面試者對標(biāo)準(zhǔn)庫函數(shù)的熟練程度,在需要的時候引用庫函數(shù)可以很大程度上簡化程序編寫的工作量。

      最頻繁被使用的庫函數(shù)包括:

      (1) strcpy

      (2) memcpy

      (3) memset

      2、軟件測試應(yīng)該劃分幾個階段?簡述各個階段應(yīng)重點(diǎn)測試的點(diǎn)?各個階段的含義?

      參考答案:

      大體上來說可分為單元測試,集成測試,系統(tǒng)測試,驗收測試,每個階段又分為以下五個步驟: 測試計劃,測試設(shè)計,用例設(shè)計,執(zhí)行結(jié)果,測試報告

      初始測試集中在每個模塊上,保證源代碼的正確性,該階段成為單元測試,主要用白盒測試方法。 接下來是模塊集成和集成以便組成完整的軟件包。集成測試集中在證實和程序構(gòu)成問題上。主要采用黑盒測試方法,輔之以白盒測試方法。

      軟件集成后,需要完成確認(rèn)和系統(tǒng)測試。確認(rèn)測試提供軟件滿足所有功能、性能需求的最后保證。確認(rèn)測試僅僅應(yīng)用黑盒測試方法。

      嵌入式面試試題附答案 3

      1、一根金條長31厘米,如果把它切成數(shù)段,使其中的一段或幾段能夠接成長為1到31中任何整數(shù)的金條,請問要切幾次?

      A.4

      B.5

      C.6

      D.7

      參考答案:A

      2、運(yùn)行在多核處理器上的Linux環(huán)境中,若臨界區(qū)非常短,且不允許線程上下文切換的情況下,使用下列哪種機(jī)制滿足上述需求并且性能最好?

      A.SpinLock

      B.Mutex

      C.Semaphore

      D.Condition variable

      參考答案:A

      3、以下程序輸出的結(jié)果是()

      #include

      int main(){

      int x=10,y=10;

      printf("%d %d",x--,--y);

      }

      A.10 10

      B.9 9

      C.9 10

      D.10 9

      參考答案:D

      4、下面所述步驟中,不是創(chuàng)建進(jìn)程所必須的步驟是?

      A.由調(diào)度程序為進(jìn)程分配CPU

      B.建立一個進(jìn)程控制塊

      C.為進(jìn)程分配內(nèi)存

      D.將進(jìn)程控制塊鏈入就緒隊列

      參考答案:A

      5、下面描述中,表達(dá)正確的有()

      A.公有繼承是基類中的public成員在派生類中仍是public的

      B.公有繼承是基類中的'private成員在派生類中仍是private的

      C.公有繼承是基類中的protected成員在派生類中仍是protected的

      D.私有繼承是基類中的public成員在派生類中仍是private的

      參考答案:ACD

      6、int listen(SOCKET s, int backlog);該函數(shù)中第二個參數(shù)的含義是?

      A.是否打開log信息

      B.是否打開后臺log信息

      C.后臺等待連接隊列的最大限制值

      D.后臺等待連接隊列的最小限制值

      參考答案:C

      7、Java程序中的類名稱必須與存放該類的文件名相同。

      A.對

      B.錯

      參考答案:B

      8、造成軟件危機(jī)的主要原因是以下里的哪幾個?

      ①用戶使用不當(dāng) ②硬件不可靠 ③對軟件的錯誤認(rèn)識 ④缺乏好的開發(fā)方法和手段 ⑤軟件本身特點(diǎn) ⑥開發(fā)效率低

      A.(①②③)

      B.(②③④)

      C.(③⑤⑥)

      D.(④⑤⑥)

      參考答案:D

      9、下面有個hibernate延遲加載,說法錯誤的是?

      A.Hibernate2延遲加載實現(xiàn):a)實體對象 b)集合(Collection)

      B.Hibernate3 提供了屬性的延遲加載功能

      C.get支持延遲加載,load不支持延遲加

      D.hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實現(xiàn)透明性

      參考答案:C

      10、確定模塊的功能和模塊的接口是在軟件設(shè)計的那個階段完成的?

      A.需求分析

      B.概要設(shè)計

      C.詳細(xì)設(shè)計

      D.編碼

      參考答案:B

    【嵌入式面試試題附答案】相關(guān)文章:

    嵌入式C語言面試題(附答案)03-17

    photoshop試題附答案07-15

    CAD基礎(chǔ)試題「附答案」06-23

    excel單選試題「附答案」03-09

    最新photoshop試題附答案10-10

    ps理論試題「附答案」05-11

    2016年嵌入式工程師面試題及答案「精選」03-07

    關(guān)于導(dǎo)游業(yè)務(wù)試題(附答案)02-26

    最新ps考證試題附答案03-19

    91久久大香伊蕉在人线_国产综合色产在线观看_欧美亚洲人成网站在线观看_亚洲第一无码精品立川理惠

      在线精品自在视频观看 | 五月婷婷之五月婷婷 | 色婷婷久久综合极速 | 日韩精品久久久免费观看 | 中文字幕精品卡通动漫 | 亚洲国产91一区二区三区 |