• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 嵌入式面試試題附答案

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

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

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

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

          嵌入式面試試題附答案 1

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

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

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

          char *ptr;

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

          puts(“Got a null pointer”);

          else

          puts(“Got a valid pointer”);

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

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

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

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

          2). 一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automatic variables)

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

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

          這個(gè)問(wèn)題用幾個(gè)解決方案。我首選的方案是:

          while(1) { }

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

          for(;;) { }

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

          第三個(gè)方案是用 goto

          Loop:

          …

          goto Loop;

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

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

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

          __interrupt double compute_area (double radius)

          { double area = PI * radius * radius;

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

          return area;

          }

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

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

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

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

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

          嵌入式面試試題附答案 2

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

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

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

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

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

          參考答案:D

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

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

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

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

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

          參考答案:B

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

          A.Singleton(單例)

          B.Bridge(橋接)

          C.Composite(組合)

          D.Facade(外觀)

          參考答案:B

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

          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.消息隊(duì)列

          D.信號(hào)量

          參考答案:ABCD

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

          A.onPause()

          B.onCreate()

          C.onResume()

          D.onStart()

          參考答案:A

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

          A.onCreateOptionsMenu()

          B.onCreateMenu()

          C.onOptionsItemSelected()

          D.onItemSelected()

          參考答案:AC

          二、解答題

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

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

          //steps是要求移動(dòng)的n

          void LoopMove ( char*pStr, int steps )

          {

          //請(qǐng)?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 );

          }

          【剖析】

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

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

          (1) strcpy

          (2) memcpy

          (3) memset

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

          參考答案:

          大體上來(lái)說(shuō)可分為單元測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試,驗(yàn)收測(cè)試,每個(gè)階段又分為以下五個(gè)步驟: 測(cè)試計(jì)劃,測(cè)試設(shè)計(jì),用例設(shè)計(jì),執(zhí)行結(jié)果,測(cè)試報(bào)告

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

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

          嵌入式面試試題附答案 3

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

          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)度程序?yàn)檫M(jìn)程分配CPU

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

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

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

          參考答案:A

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

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

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

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

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

          參考答案:ACD

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

          A.是否打開(kāi)log信息

          B.是否打開(kāi)后臺(tái)log信息

          C.后臺(tái)等待連接隊(duì)列的最大限制值

          D.后臺(tái)等待連接隊(duì)列的最小限制值

          參考答案:C

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

          A.對(duì)

          B.錯(cuò)

          參考答案:B

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

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

          A.(①②③)

          B.(②③④)

          C.(③⑤⑥)

          D.(④⑤⑥)

          參考答案:D

          9、下面有個(gè)hibernate延遲加載,說(shuō)法錯(cuò)誤的是?

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

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

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

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

          參考答案:C

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

          A.需求分析

          B.概要設(shè)計(jì)

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

          D.編碼

          參考答案:B

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

        嵌入式C語(yǔ)言面試題(附答案)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

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲欧美日韩综合一区 | 亚洲日韩爽爽爽在线观看 | 最新国产一级视频免费 | 日本一久道中文字幕在线 | 午夜AV不卡免费在线播放 | 真实国产乱子伦对白视频 |