激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

最新嵌入式面試題及答案

時(shí)間:2024-08-20 15:14:54 嵌入式培訓 我要投稿
  • 相關(guān)推薦

2016最新嵌入式面試題及答案

  嵌入式系統是一種專(zhuān)用的計算機系統,作為裝置或設備的一部分。那么關(guān)于嵌入式考試的面試題,希望能幫助大家學(xué)習更多知識!

2016最新嵌入式面試題及答案

  預處理器(Preprocessor)

  1. 用預處理指令#define 聲明一個(gè)常數,用以表明1年中有多少秒(忽略閏年問(wèn)題)

  #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

  我在這想看到幾件事情:

  1). #define 語(yǔ)法的基本知識(例如:不能以分號結束,括號的使用,等等)

  2). 懂得預處理器將為你計算常數表達式的值,因此,直接寫(xiě)出你是如何計算一年中有多少秒而不是計算出實(shí)際的值,是更清晰而沒(méi)有代價(jià)的。

  3). 意識到這個(gè)表達式將使一個(gè)16位機的整型數溢出-因此要用到長(cháng)整型符號L,告訴編譯器這個(gè)常數是的長(cháng)整型數。

  4). 如果你在你的表達式中用到UL(表示無(wú)符號長(cháng)整型),那么你有了一個(gè)好的起點(diǎn)。記住,第一印象很重要。

  2. 寫(xiě)一個(gè)“標準”宏MIN,這個(gè)宏輸入兩個(gè)參數并返回較小的一個(gè)。

  #define MIN(A,B) ((A) <= (B) (A) : )) 這個(gè)測試是為下面的目的而設的: 1). 標識#define在宏中應用的基本知識。這是很重要的,因為直到嵌入(inline)操作符變?yōu)闃藴蔆的一部分,宏是方便產(chǎn)生嵌入代碼的唯一方法,對于嵌入式系統來(lái)說(shuō),為了能達到要求的性能,嵌入代碼經(jīng)常是必須的方法。

  2). 三重條件操作符的知識。這個(gè)操作符存在C語(yǔ)言中的原因是它使得編譯器能產(chǎn)生比if-then-else更優(yōu)化的代碼,了解這個(gè)用法是很重要的。

  3). 懂得在宏中小心地把參數用括號括起來(lái)

  4). 我也用這個(gè)問(wèn)題開(kāi)始討論宏的副作用,例如:當你寫(xiě)下面的代碼時(shí)會(huì )發(fā)生什么事?

  least = MIN(*p++, b);

  3. 預處理器標識#error的目的是什么? 如果你不知道答案,請看參考文獻1。這問(wèn)題對區分一個(gè)正常的伙計和一個(gè)書(shū)呆子是很有用的。只有書(shū)呆子才會(huì )讀C語(yǔ)言課本的附錄去找出象這種

  問(wèn)題的答案。當然如果你不是在找一個(gè)書(shū)呆子,那么應試者最好希望自己不要知道答案。

  死循環(huán)(Infinite loops)

  4. 嵌入式系統中經(jīng)常要用到無(wú)限循環(huán),你怎么樣用C編寫(xiě)死循環(huán)呢? 這個(gè)問(wèn)題用幾個(gè)解決方案。我首選的方案是:

  while(1) { }

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

  for(;;) { }

  這個(gè)實(shí)現方式讓我為難,因為這個(gè)語(yǔ)法沒(méi)有確切表達到底怎么回事。如果一個(gè)應試者給出這個(gè)作為方案,我將用這個(gè)作為一個(gè)機會(huì )去探究他們這樣做的

  基本原理。如果他們的基本答案是:“我被教著(zhù)這樣做,但從沒(méi)有想到過(guò)為什么。”這會(huì )給我留下一個(gè)壞印象。

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

  Loop:

  ...

  goto Loop;

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

  數據聲明(Data declarations)

  5. 用變量a給出下面的定義

  a) 一個(gè)整型數(An integer)

  b) 一個(gè)指向整型數的指針(A pointer to an integer)

  c) 一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(A pointer to a pointer to an integer)

  d) 一個(gè)有10個(gè)整型數的數組(An array of 10 integers)

  e) 一個(gè)有10個(gè)指針的數組,該指針是指向一個(gè)整型數的(An array of 10 pointers to integers)

  f) 一個(gè)指向有10個(gè)整型數數組的指針(A pointer to an array of 10 integers)

  g) 一個(gè)指向函數的指針,該函數有一個(gè)整型參數并返回一個(gè)整型數(A pointer to a function that takes an integer as an argument and returns an integer)

  h) 一個(gè)有10個(gè)指針的數組,該指針指向一個(gè)函數,該函數有一個(gè)整型參數并返回一個(gè)整型數( An array of ten pointers to functions that take an integer argument and return an integer ) 答案是:

  a) int a; // An integer

  b) int *a; // A pointer to an integer

  c) int **a; // A pointer to a pointer to an integer

  d) int a[10]; // An array of 10 integers

  e) int *a[10]; // An array of 10 pointers to integers

  f) int (*a)[10]; // A pointer to an array of 10 integers

  g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer

  h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer 人們經(jīng)常聲稱(chēng)這里有幾個(gè)問(wèn)題是那種要翻一下書(shū)才能回答的問(wèn)題,我同意這種說(shuō)法。當我寫(xiě)這篇文章時(shí),為了確定語(yǔ)法的正確性,我的確查了一下書(shū)。

  但是當我被面試的時(shí)候,我期望被問(wèn)到這個(gè)問(wèn)題(或者相近的問(wèn)題)。因為在被面試的這段時(shí)間里,我確定我知道這個(gè)問(wèn)題的答案。應試者如果不知道

  所有的答案(或至少大部分答案),那么也就沒(méi)有為這次面試做準備,如果該面試者沒(méi)有為這次面試做準備,那么他又能為什么出準備呢?

  Static

  6. 關(guān)鍵字static的作用是什么? 這個(gè)簡(jiǎn)單的問(wèn)題很少有人能回答完全。在C語(yǔ)言中,關(guān)鍵字static有三個(gè)明顯的作用:

  1). 在函數體,一個(gè)被聲明為靜態(tài)的變量在這一函數被調用過(guò)程中維持其值不變。

  2). 在模塊內(但在函數體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內所用函數訪(fǎng)問(wèn),但不能被模塊外其它函數訪(fǎng)問(wèn)。它是一個(gè)本地的全局變量。

  3). 在模塊內,一個(gè)被聲明為靜態(tài)的函數只可被這一模塊內的其它函數調用。那就是,這個(gè)函數被限制在聲明它的模塊的本地范圍內使用。

  大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個(gè)應試者的嚴重的缺點(diǎn),因為他顯然不懂得本地化數據和代碼范圍的好處和重要性。

  Const

  7.關(guān)鍵字const是什么含意?

  我只要一聽(tīng)到被面試者說(shuō):“const意味著(zhù)常數”,我就知道我正在和一個(gè)業(yè)余者打交道。去年Dan Saks已經(jīng)在他的文章里完全概括了const的所有用法,因此ESP(譯者:Embedded Systems Programming)的每一位讀者應該非常熟悉const能做什么和不能做什么.

  如果你從沒(méi)有讀到那篇文章,只要能說(shuō)出 const意味著(zhù)“只讀”就可以了。盡管這個(gè)答案不是完全的答案,但我接受它作為一個(gè)正確的答案。(如果你想知道更詳細的答案,仔細讀一下Saks的文章吧。)如果應試者能正確回答這個(gè)問(wèn)題,我將問(wèn)他一個(gè)附加的問(wèn)題:下面的聲明都是什么意思? const int a;

  int const a;

  const int *a;

  int * const a;

  int const * a const; 前兩個(gè)的作用是一樣,a是一個(gè)常整型數。第三個(gè)意味著(zhù)a是一個(gè)指向常整型數的指針(也就是,整型數是不可修改的,但指針可以)。第四個(gè)意思 a是一個(gè)指向整型數的常指針(也就是說(shuō),指針指向的整型數是可以修改的,但指針是不可修改的)。最后一個(gè)意味著(zhù)a是一個(gè)指向常整型數的常指針(也就是說(shuō),指針指向的整型數是不可修改的,同時(shí)指針也是不可修改的)。如果應試者能正確回答這些問(wèn)題,那么他就給我留下了一個(gè)好印象。順帶提一句,也許你可能會(huì )問(wèn),即使不用關(guān)鍵字 const,也還是能很容易寫(xiě)出功能正確的程序,那么我為什么還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:

  1). 關(guān)鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實(shí)際上,聲明一個(gè)參數為常量是為了告訴了用戶(hù)這個(gè)參數的應用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì )很快學(xué)會(huì )感謝這點(diǎn)多余的信息。(當然,懂得用const的程序員很少會(huì )留下的垃圾讓別人來(lái)清理的。)

  2). 通過(guò)給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。

  3). 合理地使用關(guān)鍵字const可以使編譯器很自然地保護那些不希望被改變的參數,防止其被無(wú)意的代碼修改。簡(jiǎn)而言之,這樣可以減少bug的出現。

  Volatile

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

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

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

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

  回答不出這個(gè)問(wèn)題的人是不會(huì )被雇傭的。我認為這是區分C程序員和嵌入式系統程序員的最基本的問(wèn)題。嵌入式系統程序員經(jīng)常同硬件、中斷、RTOS等等打交道,所用這些都要求volatile變量。不懂得volatile內容將會(huì )帶來(lái)災難。

  假設被面試者正確地回答了這是問(wèn)題(嗯,懷疑這否會(huì )是這樣),我將稍微深究一下,看一下這家伙是不是直正懂得volatile完全的重要性。

  1). 一個(gè)參數既可以是const還可以是volatile嗎?解釋為什么。

  2). 一個(gè)指針可以是volatile 嗎?解釋為什么。

  3). 下面的函數有什么錯誤:

  int square(volatile int *ptr)

  { return *ptr * *ptr;

  } 下面是答案:

  1). 是的。一個(gè)例子是只讀的狀態(tài)寄存器。它是volatile因為它可能被意想不到地改變。它是const因為程序不應該試圖去修改它。

  2). 是的。盡管這并不很常見(jiàn)。一個(gè)例子是當一個(gè)中服務(wù)子程序修該一個(gè)指向一個(gè)buffer的指針時(shí)。

  3). 這段代碼的有個(gè)惡作劇。這段代碼的目的是用來(lái)返指針*ptr指向值的平方,但是,由于*ptr指向一個(gè)volatile型參數,編譯器將產(chǎn)生類(lèi)似下面的代碼:

  int square(volatile int *ptr)

  { int a,b;

  a = *ptr;

  b = *ptr;

  return a * b;

  } 由于*ptr的值可能被意想不到地該變,因此a和b可能是不同的。結果,這段代碼可能返不是你所期望的平方值!正確的代碼如下:

  long square(volatile int *ptr)

  { int a;

  a = *ptr;

  return a * a;

  }

  位操作(Bit manipulation)

  9. 嵌入式系統總是要用戶(hù)對變量或寄存器進(jìn)行位操作。給定一個(gè)整型變量a,寫(xiě)兩段代碼,第一個(gè)設置a的bit 3,第二個(gè)清除a 的bit 3。在以上兩個(gè)操作中,要保持其它位不變。 對這個(gè)問(wèn)題有三種基本的反應

  1). 不知道如何下手。該被面者從沒(méi)做過(guò)任何嵌入式系統的工作。

  2). 用bit fields。Bit fields是被扔到C語(yǔ)言死角的東西,它保證你的代碼在不同編譯器之間是不可移植的,同時(shí)也保證了的你的代碼是不可重用的。我最近不幸看到 Infineon為其較復雜的通信芯片寫(xiě)的驅動(dòng)程序,它用到了bit fields因此完全對我無(wú)用,因為我的編譯器用其它的方式來(lái)實(shí)現bit fields的。從道德講:永遠不要讓一個(gè)非嵌入式的家伙粘實(shí)際硬件的邊。

  3). 用 #defines 和 bit masks 操作。這是一個(gè)有極高可移植性的方法,是應該被用到的方法。

  最佳的解決方案如下:

  #define BIT3 (0x1<<3)

  static int a;

  void set_bit3(void)

  { a |= BIT3;

  } void clear_bit3(void)

  { a &= ~BIT3;

  } 一些人喜歡為設置和清除值而定義一個(gè)掩碼同時(shí)定義一些說(shuō)明常數,這也是可以接受的。我希望看到幾個(gè)要點(diǎn):說(shuō)明常數、|=和&=~操作。

  10. 嵌入式系統經(jīng)常具有要求程序員去訪(fǎng)問(wèn)某特定的內存位置的特點(diǎn)。在某工程中,要求設置一絕對地址為0x67a9的整型變量的值為0xaa66。編譯器是一個(gè)純粹的ANSI編譯器。寫(xiě)代碼去完成這一任務(wù)。 這一問(wèn)題測試你是否知道為了訪(fǎng)問(wèn)一絕對地址把一個(gè)整型數強制轉換(typecast)為一指針是合法的。這一問(wèn)題的實(shí)現方式隨著(zhù)個(gè)人風(fēng)格不同而不同。典型的類(lèi)似代碼如下:

  int *ptr;

  ptr = (int *)0x67a9;

  *ptr = 0xaa55; 一個(gè)較晦澀的方法是:

  *(int * const)(0x67a9) = 0xaa55; 即使你的品味更接近第二種方案,但我建議你在面試時(shí)使用第一種方案。

  中斷(Interrupts)

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

  { double area = PI * radius * radius;

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

  return area;

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

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

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

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

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

  代碼例子(Code examples)

  12 . 下面的代碼輸出是什么,為什么? void foo(void)

  { unsigned int a = 6;

  int b = -20;

  (a+b > 6) puts("> 6") : puts("<= 6");

  } 這個(gè)問(wèn)題測試你是否懂得C語(yǔ)言中的整數自動(dòng)轉換原則,我發(fā)現有些開(kāi)發(fā)者懂得極少這些東西。不管如何,這無(wú)符號整型問(wèn)題的答案是輸出是 “>6”。原因是當表達式中存在有符號類(lèi)型和無(wú)符號類(lèi)型時(shí)所有的操作數都自動(dòng)轉換為無(wú)符號類(lèi)型。因此-20變成了一個(gè)非常大的正整數,所以該表達式計算出的結果大于6。這一點(diǎn)對于應當頻繁用到無(wú)符號數據類(lèi)型的嵌入式系統來(lái)說(shuō)是豐常重要的。如果你答錯了這個(gè)問(wèn)題,你也就到了得不到這份工作的邊緣。

  13. 評價(jià)下面的代碼片斷: unsigned int zero = 0;

  unsigned int compzero = 0xFFFF;

  /*1's complement of zero */ 對于一個(gè)int型不是16位的處理器為說(shuō),上面的代碼是不正確的。應編寫(xiě)如下: unsigned int compzero = ~0; 這一問(wèn)題真正能揭露出應試者是否懂得處理器字長(cháng)的重要性。在我的經(jīng)驗里,好的嵌入式程序員非常準確地明白硬件的細節和它的局限,然而PC機程序往往把硬件作為一個(gè)無(wú)法避免的煩惱。

  到了這個(gè)階段,應試者或者完全垂頭喪氣了或者信心滿(mǎn)滿(mǎn)志在必得。如果顯然應試者不是很好,那么這個(gè)測試就在這里結束了。但如果顯然應試者做得不錯,那么我就扔出下面的追加問(wèn)題,這些問(wèn)題是比較難的,我想僅僅非常優(yōu)秀的應試者能做得不錯。提出這些問(wèn)題,我希望更多看到應試者應付問(wèn)題的方法,而不是答案。不管如何,你就當是這個(gè)娛樂(lè )吧…

  動(dòng)態(tài)內存分配(Dynamic memory allocation)

  14. 盡管不像非嵌入式計算機那么常見(jiàn),嵌入式系統還是有從堆(heap)中動(dòng)態(tài)分配內存的過(guò)程的。那么嵌入式系統中,動(dòng)態(tài)分配內存可能發(fā)生的問(wèn)題是什么? 這里,我期望應試者能提到內存碎片,碎片收集的問(wèn)題,變量的持行時(shí)間等等。這個(gè)主題已經(jīng)在ESP雜志中被廣泛地討論過(guò)了(主要是 P.J. Plauger, 他的解釋遠遠超過(guò)我這里能提到的任何解釋),所有回過(guò)頭看一下這些雜志吧!讓?xiě)囌哌M(jìn)入一種虛假的安全感覺(jué)后,我拿出這么一個(gè)小節目:下面的代碼片段的輸出是什么,為什么? 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值傳給了函數malloc,得到了一個(gè)合法的指針之后,我才想到這個(gè)問(wèn)題。這就是上面的代碼,該代碼的輸出是“Got a valid pointer”。我用這個(gè)來(lái)開(kāi)始討論這樣的一問(wèn)題,看看被面試者是否想到庫例程這樣做是正確。得到正確的答案固然重要,但解決問(wèn)題的方法和你做決定的基本原理更重要些。

  Typedef

  15. Typedef 在C語(yǔ)言中頻繁用以聲明一個(gè)已經(jīng)存在的數據類(lèi)型的同義字。也可以用預處理器做類(lèi)似的事。例如,思考一下下面的例子:

  #define dPS struct s *

  typedef struct s * tPS; 以上兩種情況的意圖都是要定義dPS 和 tPS 作為一個(gè)指向結構s指針。哪種方法更好呢?(如果有的話(huà))為什么?

  這是一個(gè)非常微妙的問(wèn)題,任何人答對這個(gè)問(wèn)題(正當的原因)是應當被恭喜的。答案是:typedef更好。思考下面的例子:

  dPS p1,p2;

  tPS p3,p4; 第一個(gè)擴展為

  struct s * p1, p2; 上面的代碼定義p1為一個(gè)指向結構的指,p2為一個(gè)實(shí)際的結構,這也許不是你想要的。第二個(gè)例子正確地定義了p3 和p4 兩個(gè)指針。

  晦澀的語(yǔ)法

  16. C語(yǔ)言同意一些令人震驚的結構,下面的結構是合法的嗎,如果是它做些什么?

  int a = 5, b = 7, c;

  c = a+++b; 這個(gè)問(wèn)題將做為這個(gè)測驗的一個(gè)愉快的結尾。不管你相不相信,上面的例子是完全合乎語(yǔ)法的。問(wèn)題是編譯器如何處理它?水平不高的編譯作者實(shí)際上會(huì )爭論這個(gè)問(wèn)題,根據最處理原則,編譯器應當能處理盡可能所有合法的用法。因此,上面的代碼被處理成:

  c = a++ + b;

  因此, 這段代碼持行后a = 6, b = 7, c = 12。

  如果你知道答案,或猜出正確答案,做得好。如果你不知道答案,我也不把這個(gè)當作問(wèn)題。我發(fā)現這個(gè)問(wèn)題的最大好處是:這是一個(gè)關(guān)于代碼編寫(xiě)風(fēng)格,代碼的可讀性,代碼的可修改性的好的話(huà)題

  再次更新C++相關(guān)題集

  1. 以下三條輸出語(yǔ)句分別輸出什么?[C易]

  char str1[] = "abc";

  char str2[] = "abc";

  const char str3[] = "abc";

  const char str4[] = "abc";

  const char* str5 = "abc";

  const char* str6 = "abc";

  cout << boolalpha << ( str1==str2 ) << endl; // 輸出什么?

  cout << boolalpha << ( str3==str4 ) << endl; // 輸出什么?

  cout << boolalpha << ( str5==str6 ) << endl; // 輸出什么?

  2. 非C++內建型別 A 和 B,在哪幾種情況下B能隱式轉化為A?[C++中等]

  答:

  a. class B : public A { ……} // B公有繼承自A,可以是間接繼承的

  b. class B { operator A( ); } // B實(shí)現了隱式轉化為A的轉化

  c. class A { A( const B& ); } // A實(shí)現了non-explicit的參數為B(可以有其他帶默認值的參數)構造函數

  d. A& operator= ( const A& ); // 賦值操作,雖不是正宗的隱式類(lèi)型轉換,但也可以勉強算一個(gè) 12. 以下代碼中的兩個(gè)sizeof用法有問(wèn)題嗎?[C易]

  void UpperCase( char str[] ) // 將 str 中的小寫(xiě)字母轉換成大寫(xiě)字母

  { for( size_t i=0; i

  if( 'a'<=str[i] && str[i]<='z' )

  str[i] -= ('a'-'A' );

  } char str[] = "aBcDe";

  cout << "str字符長(cháng)度為: " << sizeof(str)/sizeof(str[0]) << endl;

  UpperCase( str );

  cout << str << endl;

  3. 以下代碼有什么問(wèn)題?[C難]

  void char2Hex( char c ) // 將字符以16進(jìn)制表示

  { char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);

  char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);

  cout << ch << cl << ' ';

  } char str[] = "I love 中國";

  for( size_t i=0; i

  char2Hex( str[i] );

  cout << endl;

  4. 以下代碼有什么問(wèn)題?[C++易]

  struct Test

  { Test( int ) {}

  Test() {}

  void fun() {}

  };

  void main( void )

  { Test a(1);

  a.fun();

  Test b();

  b.fun();

  }

  5. 以下代碼中的輸出語(yǔ)句輸出0嗎,為什么?[C++易]

  struct CLS

  { int m_i;

  CLS( int i ) : m_i(i) {}

  CLS()

  { CLS(0);

  } };

  CLS obj;

  cout << obj.m_i << endl;

  6. 以下反向遍歷array數組的方法有什么錯誤?[STL易]

  vector array;

  array.push_back( 1 );

  array.push_back( 2 );

  array.push_back( 3 ); for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍歷array數組

  { cout << array[i] << endl;

  }

  7. 以下兩條輸出語(yǔ)句分別輸出什么?[C++難]

  float a = 1.0f;

  cout << (int)a << endl;

  cout << (int&)a << endl;

  cout << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么?

  float b = 0.0f;

  cout << (int)b << endl;

  cout << (int&)b << endl;

  cout << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么?

  8. 以下代碼有什么問(wèn)題?[STL易]

  typedef vector IntArray;

  IntArray array;

  array.push_back( 1 );

  array.push_back( 2 );

  array.push_back( 2 );

  array.push_back( 3 );

  // 刪除array數組中所有的2

  for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )

  { if( 2 == *itor ) array.erase( itor );

  }

  10. C++中的空類(lèi),默認產(chǎn)生哪些類(lèi)成員函數?[C++易]

  答:

  class Empty

  { public:

  Empty(); // 缺省構造函數

  Empty( const Empty& ); // 拷貝構造函數

  ~Empty(); // 析構函數

  Empty& operator=( const Empty& ); // 賦值運算符

  Empty* operator&(); // 取址運算符

  const Empty* operator&() const; // 取址運算符 const

  };

  11. 寫(xiě)一個(gè)函數,完成內存之間的拷貝。[考慮問(wèn)題是否全面]

  答: void* mymemcpy( void *dest, const void *src, size_t count )

  {

  char* pdest = static_cast( dest );

  const char* psrc = static_cast( src );

  if( pdest>psrc && pdest

  {

  for( size_t i=count-1; i!=-1; --i )

  pdest[i] = psrc[i];

  }

  else

  {

  for( size_t i=0; i

  pdest[i] = psrc[i];

  }

  return dest;

  }

  int main( void )

  {

  char str[] = "0123456789";

  mymemcpy( str+1, str+0, 9 );

  cout << str << endl;

  system( "Pause" );

  return 0;

  }


相關(guān)文章推薦:

1.2016最新嵌入式面試題及答案

2.2016年嵌入式面試題及答案

3.2016年公司嵌入式面試題及答案

4.2016年華為嵌入式筆試題

5.嵌入式C/C++面試題2016

6.2016年嵌入式開(kāi)發(fā)前景如何

7.2016年嵌入式軟件工程師筆試題(含答案)

8.2016年嵌入式系統認證復習題及答案

9.嵌入式開(kāi)發(fā)發(fā)展前景2016

10.2016年java多線(xiàn)程面試題及答案

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

2016年嵌入式面試題及答案06-25

嵌入式C語(yǔ)言面試題(附答案)06-15

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

2016最新嵌入式筆試題及答案08-19

2024年最新java面試題及答案11-01

2016最新公司嵌入式考試面試題庫07-07

2017年嵌入式軟件面試題10-02

java面試題及答案11-01

Adobe面試題及答案09-02

微軟面試題及答案06-07

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频