久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

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

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

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

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

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

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

  一、C/C++語言

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

  答:防止該頭文件被重復(fù)引用

  2.數(shù)據(jù)類型判斷

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

  test tmp;

  tmp 的類型是:___C___。

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

  (b) 整型指針

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

  (d) 以上都不是

  3.C++的類和C里面的struct有什么區(qū)別?

  struct中的成員默認(rèn)是public的,class中的默認(rèn)是private

  class有默認(rèn)的構(gòu)造、析構(gòu)函數(shù),struct沒有

  class中可以有虛函數(shù),struct不行

  class可以被繼承,struct不

  4.閱讀并作答

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

  void test(void)

  {

  unsigned int a = 6;

  int b = -20;

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

  }

  答:”>6”,因?yàn)橛蟹?hào)和無符號(hào)混合運(yùn)算時(shí),有符號(hào)數(shù)自動(dòng)轉(zhuǎn)換為無符號(hào)數(shù)值進(jìn)行運(yù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);

  }

  本程序執(zhí)行到最后,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) 以上均不對(duì)

  7..以下表達(dá)式符合規(guī)范的是___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字節(jié)整型變量a,以bit0~bit31標(biāo)識(shí)二進(jìn)制位,寫兩段代碼,第一個(gè)設(shè)置a的bit 3,第二個(gè)清除a 的bit 3。在以上兩個(gè)操作中,要保持其它位不變。#define BIT3 (1<<3)

  a |= BIT3;

  a ^= ~BIT3;

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

  (1) 編寫兩個(gè)宏實(shí)現(xiàn)一個(gè)字節(jié)無符號(hào)整數(shù)的16進(jìn)制與壓縮bcd碼進(jìn)行互相轉(zhuǎn)換。假設(shè)數(shù)值大小不超過99

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

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

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

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

  例:ASCII串為“8e349bcd45”轉(zhuǎn)換為

  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應(yīng)用開發(fā)

  1.Linux操作系統(tǒng)

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

  rm刪除

  cp復(fù)制

  mount掛載

  chmod更改權(quán)限

  ls輸出目錄信息

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

  使用man命令查找?guī)椭?/p>

  2. 段錯(cuò)誤調(diào)試

 。1)什么是段錯(cuò)誤?

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

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

  例1

  往受到系統(tǒng)保護(hù)的內(nèi)存地址寫數(shù)據(jù)(如內(nèi)核占用的或者是其他程序正在使用的)

  #include

  intmain()

  {

  int i = 0;

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

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

  return 0;

  }

  例2

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

  #include

  intmain()

  {

  int b = 10;

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

  return 0;

  }

  (3)如何發(fā)現(xiàn)程序中的段錯(cuò)誤并處理掉?

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

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

  (c)使用catchsegv命令來撲獲段錯(cuò)誤

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

  一、基礎(chǔ)知識(shí)

  1、Linux內(nèi)核的主要組成部分有哪些?

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

  3、系統(tǒng)交換分區(qū)的作用是什么?

  二、數(shù)據(jù)結(jié)構(gòu)

  Linux內(nèi)核中常用的數(shù)據(jù)結(jié)構(gòu)有哪些?

  簡(jiǎn)述紅黑樹的特點(diǎn)及其在Linux內(nèi)核中的應(yīng)用。

  三、內(nèi)存管理

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

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

  四、中斷處理

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

  2、如何編寫Linux內(nèi)核的中斷處理函數(shù)?

  五、并發(fā)控制

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

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

  答案

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

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

  3、系統(tǒng)交換分區(qū)是作為系統(tǒng)虛擬存儲(chǔ)器的一塊區(qū)域,用于當(dāng)物理內(nèi)存不足時(shí),將部分內(nèi)存中的數(shù)據(jù)交換到磁盤上。

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

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

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

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

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

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

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

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

Linux內(nèi)核和驅(qū)動(dòng)考試題03-08

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

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

C筆試題04-05

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

c 面試題10-14

C++筆試題03-25

C#筆試題02-24

C/C++筆試題目常見題目03-26