<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 百度筆試題目及答案

    時(shí)間:2023-02-13 01:58:31 筆試題目 我要投稿
    • 相關(guān)推薦

    百度筆試題目及答案

      百度筆試題目及答案(一)

    百度筆試題目及答案

      第一題簡答題

      1.多線程和多進(jìn)程模式有什么區(qū)別?在用兩種模型開發(fā)服務(wù)程序時(shí),分別有什么優(yōu)缺點(diǎn)?采用長連接和短連接模式有什么區(qū)別?分別有什么優(yōu)缺點(diǎn)?采用同步和異步模式有什么區(qū)別?分別有什么優(yōu)缺點(diǎn)。

      (1)啟動(dòng)進(jìn)程的時(shí)候,操作系統(tǒng)會(huì)為進(jìn)程分配資源,其中最主要的資源是內(nèi)存空間,因?yàn)槌绦蚴窃趦?nèi)存中運(yùn)行的。在進(jìn)程中,有些程序流程塊是可以亂序執(zhí)行的,并且這個(gè)代碼塊可以同時(shí)被多次執(zhí)行。實(shí)際上,這樣的代碼塊就是線程體。線程是進(jìn)程中亂序執(zhí)行的代碼流程。當(dāng)多個(gè)線程同時(shí)運(yùn)行的時(shí)候,這樣的執(zhí)行模式成為并發(fā)執(zhí)行。

      對(duì)于一個(gè)進(jìn)程中的多個(gè)線程來說,多個(gè)線程共享進(jìn)程的內(nèi)存塊,當(dāng)有新的線程產(chǎn)生的時(shí)候,操作系統(tǒng)不分配新的內(nèi)存,而是讓新線程共享原有的進(jìn)程塊的內(nèi)存。因此,線程間的通信很容易,速度也很快。不同的進(jìn)程因?yàn)樘幱诓煌膬?nèi)存塊,因此進(jìn)程之間的通信相對(duì)困難。線程切換快,但實(shí)現(xiàn)稍復(fù)雜。進(jìn)程易實(shí)現(xiàn),較穩(wěn)定,但性能與線程相比較差。

      (2)所謂長連接,指在一個(gè)TCP連接上可以連續(xù)發(fā)送多個(gè)數(shù)據(jù)包,在TCP連接保持期間,如果沒有數(shù)據(jù)包發(fā)送,需要雙方發(fā)檢測(cè)包以維持此連接,一般需要自己做在線維持。

      短連接是指通信雙方有數(shù)據(jù)交互時(shí),就建立一個(gè)TCP連接,數(shù)據(jù)發(fā)送完成后,則斷開此TCP連接,一般銀行都使用短連接。

      長連接多用于操作頻繁,點(diǎn)對(duì)點(diǎn)的通訊,而且連接數(shù)不能太多情況,。每個(gè)TCP連接都需要三步握手,這需要時(shí)間,如果每個(gè)操作都是先連接,再操作的話那么處理速度會(huì)降低很多,所以每個(gè)操作完后都不斷開,次處理時(shí)直接發(fā)送數(shù)據(jù)包就OK了,不用建立TCP連接。而像WEB網(wǎng)站的http服務(wù)一般都用短鏈接,因?yàn)殚L連接對(duì)于服務(wù)端來說會(huì)耗費(fèi)一定的資源,而像WEB網(wǎng)站這么頻繁的成千上萬甚至上億客戶端的連接用短連接會(huì)更省一些資源,如果用長連接,而且同時(shí)有成千上萬的用戶,如果每個(gè)用戶都占用一個(gè)連接的話,那可想而知吧。所以并發(fā)量大,但每個(gè)用戶無需頻繁操作情況下需用短連好。

      (3)同步:調(diào)用方調(diào)用一個(gè)程序,等待返回,然后再繼續(xù)下面的程序處理

      異步: 調(diào)用方調(diào)用一個(gè)程序,不等待返回,繼續(xù)執(zhí)行下面的程序。

      1)異步通信簡單,雙方時(shí)鐘可允許一定誤差。同步通信較復(fù)雜,雙方時(shí)鐘的允許誤差較小。

      2)通信效率:異步通信低,同步通信高。

      2.請(qǐng)寫出以下程序的運(yùn)行結(jié)果,并解釋導(dǎo)致這樣運(yùn)行結(jié)果的關(guān)鍵性原因。

      #include

      using std::cout;

      class P

      {

      public:

      virtual void print()

      {

      cout << "P";

      }

      };

      class Q: public P

      {

      public:

      virtual void print()

      {

      cout << "Q";

      }

      };

      int main()

      {

      P * p = new P;

      Q * q = static_cast (p);

      q->print();

      delete p;

      cout << endl;

      q = new Q;

      p = q;

      q->print();

      p->print();

      cout << endl;

      p = new (q) P;

      q->print();

      p->print();

      cout << endl;

      p->~P();

      delete q;

      return 0;

      }

      P

      QQ

      PP

      第二題 算法與程序設(shè)計(jì)題

      1.給定如下的n*n的數(shù)字矩陣,每行從左到右是嚴(yán)格遞增, 每列的數(shù)據(jù)也是嚴(yán)格遞增

      1 2 3

      3 5 6

      4 8 9

      現(xiàn)在要求設(shè)計(jì)一個(gè)算法, 給定一個(gè)數(shù)k 判斷出k是否在這個(gè)矩陣中。 描述算法并且給出時(shí)間復(fù)雜度(不考慮載入矩陣的消耗)

      算法思想:

      沿著對(duì)角線查找,獲得i,使得k位于a[i][i]與a[i+1][i+1]之間。

      k只可能存在于a[i][i]對(duì)應(yīng)的右上角矩陣 和a[i+1][i+1]對(duì)應(yīng)的左下角矩陣。

      使用遞歸法繼續(xù)查找即可。

      時(shí)間復(fù)雜度 O(n)

      int searchK(int int_arr[][],int n,int startlow,int startclm,int k)

      {

      int lefttemp=0;

      int downtemp=0;

      int i=0;

      while(int_arr[startlow+i][startclm+i]

      i++;

      if (i==n)

      return 0;

      else if(arr[i][i]==k)

      reuturn 1;

      else

      return searchK(int_arr,n,startlow,startclm+i,k)+searchK(int_arr,n,startlow+i,startclm,k);

      }

      2.設(shè) 一個(gè)64位整型n,各個(gè)bit位是1的個(gè)數(shù)為a個(gè). 比如7, 2進(jìn)制就是 111, 所以a為3。

      現(xiàn)在給出m個(gè)數(shù), 求各個(gè)a的值。要求代碼實(shí)現(xiàn)。

      #include

      #include

      using namespace std;

      int count(long long v)

      {

      int num=0;

      while(v)

      {

      v &=(v-1);

      //執(zhí)行效率為V中1的個(gè)數(shù),時(shí)間復(fù)雜度比通過除操作、位操作比較高出很多

      num++;

      }

      return num;

      }

      void main()

      {

      vector arr;

      long long i;

      cout<<"輸入需要計(jì)算的數(shù),Ctrl+z 停止" <

      while(cin>>i)

      {

      //輸入隨機(jī)個(gè)數(shù)的數(shù),使用Ctrl+z 停止,之后回車鍵繼續(xù)。

      arr.push_back(i);

      };

      for(vector::size_type idx=0;idx!=arr.size();++idx)

      {

      int n=count(arr[idx]);

      cout<

      }

      }

      第三題 系統(tǒng)設(shè)計(jì)題

      實(shí)現(xiàn)一個(gè)簡化的搜索提示系統(tǒng)。給定一個(gè)包含了用戶query的日志文件,對(duì)于輸入的任意一個(gè)字符串s,輸出以s為前綴的在日志中出現(xiàn)頻率最高的前10條query。

      由于是分布式系統(tǒng),假設(shè)至少有26臺(tái)機(jī)器,每個(gè)機(jī)器存儲(chǔ)以26個(gè)字母開頭的query日志文件(如機(jī)器1存的是a字母開頭的,機(jī)器2存的是以b字母開頭的……)

      每個(gè)機(jī)器上維護(hù)著一張哈希表,對(duì)于每條query, 在哈希表表中存放其地址(哈希地址為鏈?zhǔn)降?,并對(duì)其進(jìn)行排序,按頻率由高到低進(jìn)行排序。

      當(dāng)用戶進(jìn)行搜索時(shí),可以很快定位到某臺(tái)機(jī)器,并根據(jù)哈希表,返回出現(xiàn)頻率最高的前10條query。

      提示:

      1、可以預(yù)處理日志

      2、假設(shè)query不超過10億條,每個(gè)query不超過50字節(jié)。

      3、考慮在大查詢量的情況下如何實(shí)現(xiàn)分布式服務(wù)

      百度筆試題目及答案(二)

      一、選擇題:15 分 共 10 題

      1. 在排序方法中,關(guān)鍵碼比較次數(shù)與記錄地初始排列無關(guān)的是:

      A. Shell 排序 B. 歸并排序 C. 直接插入排序 D. 選擇排序

      選擇 A

      2. 以下多線程對(duì) int 型變量x的操作,哪幾個(gè)需要進(jìn)行同步:

      A. x=y; B. x++; C. ++x; D. x=1;

      選擇 B, C

      3. 代碼

      void func()

      {

      static int val;

      …

      }

      中,變量 val 的內(nèi)存地址位于:

      A. 已初始化數(shù)據(jù)段 B.未初始化數(shù)據(jù)段 C.堆 D.棧

      選擇 A

      4. 同一進(jìn)程下的線程可以共享以下:

      A. stack B. data section C. register set D. thread ID

      選擇 A, B

      5. TCP 和 IP 分別對(duì)應(yīng)了 OSI 中的哪幾層?

      A. Application layer

      B. Data link layer

      C. Presentation layer

      D. Physical layer

      E. Transport layer

      F. Session layer

      G. Network layer

      選擇 EG

      6. short a[100],sizeof(a) 返回?

      A. 2 B. 4 C. 100 D. 200 E. 400

      選擇 D

      7. 以下哪種不是基于組件的開發(fā)技術(shù)_____。

      A. XPCOM B. XP C. COM D. CORBA

      選擇 B

      8. 以下代碼打印的結(jié)果是(假設(shè)運(yùn)行在 i386 系列計(jì)算機(jī)上):

      字串2

      struct st_t

      {

      int status;

      short *pdata;

      char errstr[32];

      };

      st_t st[16];

      char *p = (char *)( st[2].errstr + 32 );

      printf( "%d", ( p - (char *)(st) ) );

      A. 32 B. 114 C. 120 D. 1112

      選擇 C,因?yàn)閟t[2]的起始地址比st[0]的起始地址高80位,

      st[2].errstr的起始地址比st[2]的起始地址高8位

      再加上32位就等于 120.

      9. STL 中的哪種結(jié)構(gòu)是連續(xù)形式的存儲(chǔ):

      A. map B. set C. list D. vector

      選擇 D

      10. 一個(gè)棧的入棧序列是 A,B,C,D,E,則棧的不可能的輸出序列是:

      A. EDCBA B. DECBA C. DCEAB D. ABCDE

      選擇 C

      二、簡答題:20 分,共 2 題

      1. (5 分)重復(fù)多次 fclose 一個(gè)打開過一次的 FILE *fp 指針會(huì)有什么結(jié)果,并請(qǐng)解釋。

      導(dǎo)致 fp 所指的文件被多次釋放, 導(dǎo)致不可預(yù)期的后果.

      5. 一個(gè)B類網(wǎng)的子網(wǎng)掩碼是255.255.240.0,這個(gè)子網(wǎng)能擁有的最大主機(jī)數(shù)是:

      A. 240 B. 255 C.4094 D. 65534

      6. 以下代碼執(zhí)行后,val的值是___:

      unsigned long val = 0;

      char a = 0x48;

      char b = 0x52;

      val = b << 8 | a;

      A 20992 B 21064 C 72 D 0

      選擇 B,b 的十進(jìn)制為 82,二進(jìn)制為 101,0010

      b 左移 8 位為 101,0010,0000,0000

      a 的十進(jìn)制為 72, 二進(jìn)制為 100,1000

      b<<8 | a 為 21064

      7. 內(nèi)存的速度遠(yuǎn)遠(yuǎn)高于磁盤速度,所以為了解決這個(gè)矛盾,可以采用:

      字串2

      A 并行技術(shù) B 虛存技術(shù) C 緩沖技術(shù) D 通道技術(shù)

      9. 同一進(jìn)程下的線程可以共享以下

      A. stack B. data section

      C. register set D. thread ID

      選擇 B,C

      10. 以下哪種操作最適合先進(jìn)行排序處理?

      A 找最大、最小值 B 計(jì)算算術(shù)平均值

      C 找中間值 D 找出現(xiàn)次數(shù)最多的值

      選擇 A

      一、選擇題:15 分 共 10 題

      1. 在排序方法中,關(guān)鍵碼比較次數(shù)與記錄地初始排列無關(guān)的是:

      A. Shell 排序 B. 歸并排序 C. 直接插入排序 D. 選擇排序

      2. 以下多線程對(duì) int 型變量x的操作,哪幾個(gè)需要進(jìn)行同步:

      A. x=y; B. x++; C. ++x; D. x=1;

      3. 代碼

      void func()

      {

      static int val;

      …

      }

      中,變量 val 的內(nèi)存地址位于:

      A. 已初始化數(shù)據(jù)段 B.未初始化數(shù)據(jù)段 C.堆 D.棧

      4. 同一進(jìn)程下的線程可以共享以下:

      A. stack B. data section C. register set D. thread ID

      5. TCP 和 IP 分別對(duì)應(yīng)了 OSI 中的哪幾層?

      A. Application layer B. Data link layer C. Presentation layer D. Physical layer E. Transport layer F. Session layer G. Network layer

      6. short a[100],sizeof(a) 返回?

      A. 2 B. 4 C. 100 D. 200 E. 400

      7. 以下哪種不是基于組件的開發(fā)技術(shù)_____。

      A. XPCOM B. XP C. COM D. CORBA

      8. 以下代碼打印的結(jié)果是(假設(shè)運(yùn)行在 i386 系列計(jì)算機(jī)上):

      struct st_t

      {

      int status;

      short *pdata;

      char errstr[32];

      };

      st_t st[16];

      char *p = (char *)( st[2].errstr + 32 );

      printf( "%d", ( p - (char *)(st) ) );

      A. 32 B. 114 C. 120 D. 1112

      9. STL 中的哪種結(jié)構(gòu)是連續(xù)形式的存儲(chǔ):

      A. map B. set C. list D. vector

      10. 一個(gè)棧的入棧序列是 A,B,C,D,E,則棧的不可能的輸出序列是:

      A. EDCBA B. DECBA C. DCEAB D. ABCDE

      二、簡答題:20 分,共 2 題

      

      1. (5 分)重復(fù)多次 fclose 一個(gè)打開過一次的 FILE *fp 指針會(huì)有什么結(jié)果,并請(qǐng)解釋。

      考察點(diǎn):導(dǎo)致文件描述符結(jié)構(gòu)中指針指向的內(nèi)存被重復(fù)釋放,進(jìn)而導(dǎo)致一些不可預(yù)期的異常。

      2. (15 分)下面一段代碼,想在調(diào)用 f2(1) 時(shí)打印 err1,調(diào)用 f2(2) 時(shí)打印 err4,但是代碼中有一些問題,請(qǐng)做盡可能少的修改使之正確。

      1 static int f1( const char *errstr, unsigned int flag ) {

      2   int copy, index, len;

      3   const static char **__err = { "err1", "err2", "err3", "err4" };

      4

      5   if( flag & 0x10000 )

      6     copy = 1;

      7   index = ( flag & 0x300000 ) >> 20;

      8

      9   if( copy ) {

      10     len = flag & 0xF;

      11     errstr = malloc( len );

      12     if( errstr = NULL )

      13       return -1;

      14     strncpy( errstr, __err[index], sizeof( errstr ) );

      15   } else

      16     errstr = __err + index;

      17 }

      18

      19 void f2( int c ) {

      20   char *err;

      21

      22   swtch( c ) {

      23   case 1:

      24     if( f1( err, 0x110004 ) != -1 )

      25       printf( err );

      26   case 2:

      27     if( f2( err, 0x30000D ) != -1 )

      28       printf( err );

      29   }

      30 }

      三、編程題:30 分 共 1 題

      

      注意:要求提供完整代碼,如果可以編譯運(yùn)行酌情加分。

      1. 求符合指定規(guī)則的數(shù)。

      給定函數(shù) d(n) = n + n 的各位之和,n 為正整數(shù),如 d(78) = 78+7+8=93。 這樣這個(gè)函數(shù)可以看成一個(gè)生成器,如 93 可以看成由 78 生成。

      定義數(shù) A:數(shù) A 找不到一個(gè)數(shù) B 可以由 d(B)=A,即 A 不能由其他數(shù)生成。現(xiàn)在要寫程序,找出 1 至 10000 里的所有符合數(shù) A 定義的數(shù)。

      輸出:

      1

      3

      …

      四、設(shè)計(jì)題:35 分 共 1 題

      注意:請(qǐng)盡可能詳細(xì)描述你的數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)架構(gòu)、設(shè)計(jì)思路等。建議多寫一些偽代碼或者流程說明。

      1. 假設(shè)一個(gè) mp3 搜索引擎收錄了 2^24 首歌曲,并記錄了可收聽這些歌曲的 2^30 條 URL,但每首歌的 URL 不超過 2^10 個(gè)。系統(tǒng)會(huì)定期檢查這些 URL,如果一個(gè) URL 不可用則不出現(xiàn)在搜索結(jié)果中。現(xiàn)在歌曲名和 URL 分別通過整型的 SONG_ID 和 URL_ID 唯一確定。對(duì)該系統(tǒng)有如下需求:

      1) 通過 SONG_ID 搜索一首歌的 URL_ID,給出 URL_ID 計(jì)數(shù)和列表

      2) 給定一個(gè) SONG_ID,為其添加一個(gè)新的 URL_ID

      3) 添加一個(gè)新的 SONG_ID

      4) 給定一個(gè) URL_ID,將其置為不可用

      限制條件:內(nèi)存占用不超過 1G,單個(gè)文件大小不超過 2G,一個(gè)目錄下的文件數(shù)不超過 128 個(gè)。

      為獲得最佳性能,請(qǐng)說明設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)、搜索算法,以及資源消耗。如果系統(tǒng)數(shù)據(jù)量擴(kuò)大,該如何多機(jī)分布處理?

     

     

     

    【百度筆試題目及答案】相關(guān)文章:

    百度筆試題及答案07-17

    外貿(mào)筆試題目及答案07-17

    編導(dǎo)筆試題目及答案08-16

    報(bào)社筆試題目及答案09-19

    文秘筆試題目及答案08-16

    java筆試題目及答案07-27

    護(hù)士招聘筆試題目及答案09-22

    c語言筆試題目及答案08-17

    2016騰訊筆試題目及答案08-19

    主站蜘蛛池模板: 国产精品香港三级国产AV| 亚洲AV无码成人精品区狼人影院 | 99久久国产热无码精品免费| 日产精品久久久久久久| 精品无码无人网站免费视频| 99热成人精品热久久669| 国产精品爱啪在线线免费观看| 国产精品美女一区二区视频| 91精品啪在线观看国产| 国产精品久久久久久福利漫画| 91久久精品电影| 亚洲国产精品久久久久婷婷老年| 国产精品日韩深夜福利久久 | 亚洲国产成人a精品不卡在线| 亚洲精品无码mv在线观看网站| 99精品视频在线| 婷婷国产成人精品一区二| 老司机亚洲精品影院| 四虎成人www国产精品| 久久93精品国产91久久综合| 久久精品中文騷妇女内射| 2021国产成人精品久久| 亚洲精品无码永久在线观看| 国产一精品一AV一免费| 国产三级国产精品国产普男人| 亚洲国产精品无码久久久蜜芽 | 精品多毛少妇人妻AV免费久久| 精品第一国产综合精品蜜芽 | 久久狠狠高潮亚洲精品| 成人国产精品日本在线观看| 奇米影视7777久久精品| 国产精品国产三级在线高清观看 | 国产欧美日韩精品a在线观看 | 99久久精品免费看国产免费| 日韩精品久久无码中文字幕| 国产乱人伦精品一区二区在线观看| 99国产精品无码| 人妻精品久久无码专区精东影业| 久久久久久噜噜精品免费直播| 98精品国产自产在线XXXX| .精品久久久麻豆国产精品|