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

C /C 筆試題-linux內核驅動(dòng)開(kāi)發(fā)筆試題

時(shí)間:2024-08-20 09:30:56 志彬 筆試題目 我要投稿
  • 相關(guān)推薦

C /C 筆試題-linux內核驅動(dòng)開(kāi)發(fā)筆試題

  在社會(huì )的各個(gè)領(lǐng)域,我們很多時(shí)候都會(huì )有考試,接觸到試題,通過(guò)試題可以檢測參試者所掌握的知識和技能。大家知道什么樣的試題才是規范的嗎?下面是小編為大家整理的C /C 筆試題-linux內核驅動(dòng)開(kāi)發(fā)筆試題,僅供參考,歡迎大家閱讀。

C /C 筆試題-linux內核驅動(dòng)開(kāi)發(fā)筆試題

  C /C 筆試題-linux內核驅動(dòng)開(kāi)發(fā)筆試題

  一、C/C++語(yǔ)言

  1.頭文件中的ifndef/define/endif 干什么用?

  答:防止該頭文件被重復引用

  2.數據類(lèi)型判斷

  typedefint (*test) ( float * , float*)

  test tmp;

  tmp 的類(lèi)型是:___C___。

  (a) 函數的指針,該函數以 兩個(gè)指向浮點(diǎn)數(float)的指針(pointer)作為參數(arguments),并且函數的返回值類(lèi)型是整型指針

  (b) 整型指針

  (c) 函數的指針,該函數以?xún)蓚(gè)指向浮點(diǎn)數(float)的指針(pointer)作為參數(arguments),并且函數的返回值類(lèi)型是整型

  (d) 以上都不是

  3.C++的類(lèi)和C里面的struct有什么區別?

  struct中的成員默認是public的,class中的默認是private

  class有默認的構造、析構函數,struct沒(méi)有

  class中可以有虛函數,struct不行

  class可以被繼承,struct不

  4.閱讀并作答

  下面的代碼輸出是什么,為什么?

  void test(void)

  {

  unsigned int a = 6;

  int b = -20;

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

  }

  答:”>6”,因為有符號和無(wú)符號混合運算時(shí),有符號數自動(dòng)轉換為無(wú)符號數值進(jìn)行運算

  5.閱讀并作答

  int counter (int i)

  {

  static int count =0;

  count = count +i;

  return (count );

  }

  main()

  {

  int i , j;

  for (i=0; i <=5; i++)

  j = counter(i);

  }

  本程序執行到最后,j的值是:__B___。

  (a) 10

  (b) 15

  (c) 6

  (d) 7

  6.閱讀并作答

  main()

  {

  int a[][3] = { 1,2,3 ,4,5,6};

  int (*ptr)[3] =a;

  printf("%d %d " ,(*ptr)[1], (*ptr)[2] );

  ++ptr;

  printf("%d %d" ,(*ptr)[1], (*ptr)[2] );

  }

  這段程序的輸出是: __A___。

  (a) 2 3 5 6

  (b) 2 3 4 5

  (c) 4 5 0 0

  (d) 以上均不對

  7..以下表達式符合規范的是___D__。

  a. while (p && *p) // p為指針變量

  b. if (1 == flag) // flag為布爾變量

  c. if (0.0 == x) // x為浮點(diǎn)變量

  d. if (strlen(strName) != 0) // strName為字符串變量

  8.給定一個(gè)4字節整型變量a,以bit0~bit31標識二進(jìn)制位,寫(xiě)兩段代碼,第一個(gè)設置a的bit 3,第二個(gè)清除a 的bit 3。在以上兩個(gè)操作中,要保持其它位不變。#define BIT3 (1<<3)

  a |= BIT3;

  a ^= ~BIT3;

  9.編碼實(shí)現以下幾個(gè)小功能

  (1) 編寫(xiě)兩個(gè)宏實(shí)現一個(gè)字節無(wú)符號整數的16進(jìn)制與壓縮bcd碼進(jìn)行互相轉換。假設數值大小不超過(guò)99

  例如:“0x12”是16進(jìn)制表示法,10進(jìn)制數為“18”,記為“0x18”

  #define BYT_HEX2BCD(x) ( (x/10 )<<4) + (x%10)

  #define BYT_BCD2HEX(x) ( (x>>4)*10 ) + (x&0x0f)

  (2) 寫(xiě)個(gè)函數實(shí)現將ASCII碼串轉換為16進(jìn)制數組

  例:ASCII串為“8e349bcd45”轉換為

  0x8e,0x34,0x9b,0xcd,0x45

  intStrAsc2Hex(unsigned char *dst,const char * src, int len)

  {

  int i;

  unsigned char dtemp,stemp;

  char *ptr;

  ptr=const_cast(src);

  if(len%2) return 0;

  len/=2;

  for(i=0;i

  if( (*ptr) >=0 &&(*ptr)<=9 )stemp=*ptr-0;

  if( (*ptr) >=A &&(*ptr)<=F )stemp=*ptr-A+0x0a;

  if( (*ptr) >=a &&(*ptr)<=f )stemp=*ptr-a+0X0a;

  dtemp=stemp<<4;

  ptr++;

  if( (*ptr) >=0 &&(*ptr)<=9 )stemp=*ptr-0;

  if( (*ptr) >=A &&(*ptr)<=F )stemp=*ptr-A+0x0a;

  if( (*ptr) >=a &&(*ptr)<=f )stemp=*ptr-a+0X0a;

  *dst++=dtemp|stemp;

  ptr++;

  }

  return len;

  }

  二、Linux應用開(kāi)發(fā)

  1.Linux操作系統

 。1)解釋linux下常用命令:

  rm刪除

  cp復制

  mount掛載

  chmod更改權限

  ls輸出目錄信息

 。2)遇到不熟悉的命令,你會(huì )?

  使用man命令查找幫助

  2. 段錯誤調試

 。1)什么是段錯誤?

  所謂的段錯誤就是指訪(fǎng)問(wèn)的內存超出了系統所給這個(gè)程序的內存空間,一旦程序發(fā)生了越界訪(fǎng)問(wèn),CPU就會(huì )產(chǎn)生相應的異常保護,于是segmentationfault就出現了。

 。2)舉例說(shuō)明編程中通常碰到段錯誤的地方有哪些?

  例1

  往受到系統保護的內存地址寫(xiě)數據(如內核占用的或者是其他程序正在使用的)

  #include

  intmain()

  {

  int i = 0;

  scanf ("%d", i); /* should have used &i */

  printf ("%d\n", i);

  return 0;

  }

  例2

  內存越界(數組越界,變量類(lèi)型不一致等)

  #include

  intmain()

  {

  int b = 10;

  printf("%s\n", b);

  return 0;

  }

 。3)如何發(fā)現程序中的段錯誤并處理掉?

  (a)在程序內部的關(guān)鍵部位輸出信息,可以跟蹤段錯誤在代碼中可能的位置。使用這種調試方法,可以用條件編譯指令#ifdef DEBUG和#endif把printf函數給包含起來(lái),編譯的時(shí)候加上-D DEBUG參數就可以查看調試信息。

  (b)用gdb來(lái)調試,在編譯的時(shí)候加上-g參數,用來(lái)顯示調試信息,程序在運行到段錯誤的地方,會(huì )自動(dòng)停下來(lái)并顯示出錯的行和行號

  (c)使用catchsegv命令來(lái)?yè)浍@段錯誤

  C /C 筆試題-linux內核驅動(dòng)開(kāi)發(fā)筆試題

  一、基礎知識

  1、Linux內核的主要組成部分有哪些?

  2、內核配置是何時(shí)進(jìn)行的重要操作?

  3、系統交換分區的作用是什么?

  二、數據結構

  Linux內核中常用的數據結構有哪些?

  簡(jiǎn)述紅黑樹(shù)的特點(diǎn)及其在Linux內核中的應用。

  三、內存管理

  1、Linux內核中如何進(jìn)行內存分配和釋放?

  2、DMA(直接內存訪(fǎng)問(wèn))在Linux內核中的作用是什么?

  四、中斷處理

  1、簡(jiǎn)述Linux內核中的中斷處理流程。

  2、如何編寫(xiě)Linux內核的中斷處理函數?

  五、并發(fā)控制

  1、Linux內核中如何保證并發(fā)訪(fǎng)問(wèn)的安全性?

  2、簡(jiǎn)述自旋鎖和互斥鎖的區別。

  答案

  一、1、Linux內核主要由進(jìn)程管理系統、內存管理系統、I/O管理系統和文件管理系統等四個(gè)子系統組成。

  2、內核配置是系統管理員在改變系統配置或硬件時(shí)要進(jìn)行的重要操作。

  3、系統交換分區是作為系統虛擬存儲器的一塊區域,用于當物理內存不足時(shí),將部分內存中的數據交換到磁盤(pán)上。

  二、紅黑樹(shù)是一種自平衡的二叉查找樹(shù),它確保了從根到葉子的最長(cháng)的可能路徑不多于最短的可能路徑的兩倍長(cháng)。在Linux內核中,紅黑樹(shù)被用于多種場(chǎng)景,如管理進(jìn)程調度器的運行隊列、實(shí)現文件系統(如ext4)中的目錄索引等。

  三、1、Linux內核提供了多種內存分配機制,如slab分配器、kmalloc/kfree、vmalloc/vfree等。slab分配器用于分配小塊內存,而kmalloc/kfree和vmalloc/vfree則分別用于物理內存和虛擬內存的分配與釋放。

  2、DMA允許某些硬件子系統(如網(wǎng)絡(luò )接口卡、磁盤(pán)控制器等)直接訪(fǎng)問(wèn)系統內存,而無(wú)需CPU的干預。這可以提高數據傳輸的效率,減少CPU的負擔。在Linux內核中,DMA被廣泛用于各種設備的驅動(dòng)開(kāi)發(fā)中。

  四、1、當硬件設備產(chǎn)生中斷時(shí),CPU會(huì )暫停當前正在執行的程序,轉而執行中斷處理程序。在Linux內核中,中斷處理流程通常包括中斷接收、中斷分發(fā)、中斷處理和中斷返回等步驟。中斷處理函數會(huì )注冊到內核中,并在中斷發(fā)生時(shí)被調用。

  2、編寫(xiě)Linux內核的中斷處理函數需要了解中斷處理函數的注冊和注銷(xiāo)機制。通常,中斷處理函數會(huì )作為內核模塊的一部分進(jìn)行編寫(xiě)和加載。在編寫(xiě)中斷處理函數時(shí),需要注意函數的入口參數、返回值以及中斷處理過(guò)程中的同步和互斥問(wèn)題。

  五、1、自旋鎖和互斥鎖都是用于同步和互斥的鎖機制,但它們的實(shí)現和使用場(chǎng)景有所不同。自旋鎖在獲取鎖失敗時(shí)會(huì )不斷循環(huán)等待,適用于短時(shí)間的鎖持有和等待;而互斥鎖在獲取鎖失敗時(shí)會(huì )將線(xiàn)程或進(jìn)程掛起,適用于長(cháng)時(shí)間的鎖持有和等待。

  2、Linux內核通過(guò)多種機制來(lái)保證并發(fā)訪(fǎng)問(wèn)的安全性,包括自旋鎖、互斥鎖、讀寫(xiě)鎖等。這些鎖機制用于在多個(gè)線(xiàn)程或進(jìn)程同時(shí)訪(fǎng)問(wèn)共享資源時(shí),保護數據的一致性和完整性。

【C /C 筆試題-linux內核驅動(dòng)開(kāi)發(fā)筆試題】相關(guān)文章:

Linux內核和驅動(dòng)考試題03-08

華為C/C++筆經(jīng)10-11

C/C++程序員必備資料 常見(jiàn)筆面試題深入解析12-12

C筆試題04-05

部分c/c++筆試題10-26

c 面試題10-14

C++筆試題03-25

C#筆試題02-24

C/C++筆試題目常見(jiàn)題目03-26

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