乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      2012搜狗校園招聘筆試題

       看風(fēng)景D人 2014-09-20

      1、下面代碼中for循環(huán)共執(zhí)行了多少次?

      unsigned short i,j;
      for(i=0, j=2; i!=j; i+=5, j+=7)
      {}

      unsigned short占用2個(gè)字節(jié),當(dāng)數(shù)據(jù)范圍到頭了(2^16-1),就又從0開始計(jì)數(shù)了,這個(gè)其實(shí)就是兩輛汽車行駛在一個(gè)圓圈里的汽車追及問題。一個(gè)速度為5,一個(gè)速度為7,當(dāng)速度為7的超越速度為5的時(shí)候,兩個(gè)汽車就相遇了,2 + 7n - 5n = 2^16 所以共循環(huán)了32767次。

      unsigned short i,j;  
      for(i=3,j=7;i!=j;i+=3,j+=7)  

      這個(gè)也是一樣的,7 + 7n - (3+3n) = 2^16

      2、下面程序應(yīng)該輸出多少?

       

      復(fù)制代碼
      #include <iostream.h>
      using namespace std;
      
      char *c[] = { "ENTER", "NEW", "POINT", "FIRST" };   
      char **cp[] = { c+3, c+2, c+1, c };   
      char ***cpp = cp;   
        
      int main()  
      {   
          printf("%s", **++cpp);   
          printf("%s", *--*++cpp+3);   
          printf("%s", *cpp[-2]+3);   
          printf("%s\n", cpp[-1][-1]+1);   
          system("pause");
          return 0;  
      }
      復(fù)制代碼

      輸出:POINTERSTEW

      關(guān)鍵是理解,數(shù)組的下標(biāo)表示的真正的意義,是偏移-offset,a[i]對(duì)于編譯器的意思是,取出符號(hào)a代表的地址,pa,在加上i*sizeof(a元素)的偏移量,最后解析出來對(duì)應(yīng)的地址的內(nèi)容。

      3、已知程序代碼如下:

      復(fù)制代碼
      struct S  
      {  
          void func1(S &);  
          void func2(const S&);  
          void func3(S&) const;  
          void func4(const S&) const;  
      };  
      復(fù)制代碼

      下面哪些能正常執(zhí)行()

      A、makeS().func1(makeS())

      B、makeS().func2(makeS())

      C、makeS().func3(makeS())

      D、makeS().func4(makeS())

      在gcc上做的實(shí)驗(yàn),這個(gè)結(jié)果和maskS()有關(guān)。首先
      S makeS() 
      {
       S s;
       return s;
      }
      如果這樣寫的話,有1和3,不能正常運(yùn)行,這個(gè)時(shí)候makeS返回的為一個(gè)臨時(shí)的對(duì)象,如果func1(S&)這樣試圖對(duì)這個(gè)臨時(shí)的對(duì)象進(jìn)行改變是沒有意義的,改變了對(duì)于程序員來說也是沒有意義的。gcc的就編譯不過去了,編譯不過去的原因可能是試圖尋找參數(shù)為非引用的函數(shù),但是沒有找到。如果改成了
      S& makeS() 
      {
       S s;
       return s;
      }
      返回的為一個(gè)引用,這個(gè)時(shí)候編譯器會(huì)警告我們,但是可以編譯通過,四個(gè)函數(shù)都可以找到。還可以寫成
      S& makeS() 
      {
       S *s = new S;
       return *s;
      }
      這個(gè)時(shí)候編譯器就啥也不說了。

       

      4、下列代碼的輸出為多少?

      int main(void)  
      {  
          enum {a, b=5, c, d=4, e};  
          enum {h,x, y, z, v=120, w, r=99,s,t};  
          return 0;  
      }  

      a、c、e、h、x、y、z、w、s、t的值分別是多少?

      在枚舉類型中聲明的第一個(gè)枚舉成員它的默值為零。沒有顯示賦值的枚舉成員的值,總是前一個(gè)枚舉成員的值+1。
      a:0          c:6            e:5

      h:0          x:1           y:2            z:3           w:121               s:100                 t:101

      5、高度為1的平衡二叉樹節(jié)點(diǎn)為1個(gè),高度為5的平衡二叉樹節(jié)點(diǎn)最少多少個(gè)?
      假設(shè)高度為n的平衡二叉樹至少需要的節(jié)點(diǎn)數(shù)目是m,那么只需要在草稿紙上畫一下,我們?nèi)菀字溃?br>n=1時(shí),m=1;
      n=2時(shí),m=2;
      n=3時(shí),m=4;
      n=4時(shí),m=7;
      n=5時(shí),m=12;
      另外,這個(gè)題也是有規(guī)律的,F(xiàn)(n)=F(n-1)+F(n-2)+1。

      6、
      union Test
      {
         char a[4];
          short b;
      };
      Test test;
      test.a[0]=256;
      test.a[1]=255;
      test.a[2]=254;
      test.a[3]=253;
      printf("%d\n",test.b);
      問題:在80X86架構(gòu)下,輸出什么值?填空題。
      輸出:-256
      short類型占2個(gè)字節(jié),如果右邊是低地址,左邊是高地址,那么存儲(chǔ)如下:
      1111  1111           0000   0000
        test.a[1]               test.a[0]
      顯然b占用上面的2個(gè)字節(jié),最高位為1,則是一個(gè)負(fù)數(shù),取反+1后,得到-256(1000 0001 0000 0000)

       

      7、下面代碼輸出什么?

      復(fù)制代碼
      #pragma pack(4)  
        
      int  main(void)   
      {  
          unsigned char puc[4];  
        
          struct tamPIM  
          {  
              unsigned char ucPim1;  
              unsigned char ucData0:1;  
              unsigned char ucData1:2;  
              unsigned char ucData2:3;  
          }*pstPimData;  
        
          pstPimData = (struct tamPIM*)puc;  
          memset(puc, 0 , 4);  
          pstPimData->ucPim1 = 1;  
          pstPimData->ucData0 = 2;  
          pstPimData->ucData1 = 3;   
          pstPimData->ucData2 = 4;  
          printf("%02x %02x %02x %02x\n",puc[0],puc[1],puc[2],puc[3]);  
        
          return 0;  
      } 
      #pragma pack()  
      復(fù)制代碼

      第一個(gè)自己直接存儲(chǔ)0x01,這個(gè)不需要解釋的。關(guān)鍵是第二個(gè)自己的存儲(chǔ),首先1個(gè)bit為用來存儲(chǔ)2,導(dǎo)致最低位存0 ,其次兩位 11,再其次三位100,最后空兩個(gè)00。
      如果右邊是低地址,左邊是高地址,那么存儲(chǔ)如下:
      0000 0000        0000 0000      0010 0110       0000 0001
       puc[3]                puc[2]           puc[1]             puc[0]
      所以,輸出:01 26 00 00

      8、C++什么時(shí)候使用拷貝構(gòu)造函數(shù)?
      在下面幾種情況下會(huì)調(diào)用拷貝構(gòu)造函數(shù):
      a、   顯式或隱式地用同類型的一個(gè)對(duì)象來初始化另外一個(gè)對(duì)象。如上例中,用對(duì)象c初始化d;
      b、  作為實(shí)參(argument)傳遞給一個(gè)函數(shù)。如CClass(const CClass c_class)中,就會(huì)調(diào)用CClass的拷貝構(gòu)造函數(shù);
      c、  在函數(shù)體內(nèi)返回一個(gè)對(duì)象時(shí),也會(huì)調(diào)用返回值類型的拷貝構(gòu)造函數(shù);
      d、  初始化序列容器中的元素時(shí)。比如 vector<string> svec(5),string的缺省構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)都會(huì)被調(diào)用;
      e、  用列表的方式初始化數(shù)組元素時(shí)。string a[] = {string(“hello”), string(“world”)}; 會(huì)調(diào)用string的拷貝構(gòu)造函數(shù)。

      9、 call by value和call by reference的區(qū)別?
      解答:call by value復(fù)制了實(shí)參,而call by reference相當(dāng)于使用了實(shí)參的別名。

      10、下列哪種操作可能帶來死鎖?A: C(可能在第二個(gè)lock(m1)產(chǎn)生死鎖)
      A、lock(m1) lock(m2) unlock(m1) unlock(m2)
      B、lock(m1) lock(m2) unlock(m2) lock(m2) unlock(m1) unlock(m2)
      C、lock(m1) lock(m2) unlock(m1) lock(m1) unlock(m2) unlock(m1)
      D、lock(m1) lock(m2) unlock(m1) unlock(m2) lock(m1) unlock(m1)

      11、外部排序常用的算法?
      A、歸并排序       B、快速排序         C、堆排序        D、希爾排序

      12、 在對(duì)空間和時(shí)間都有限制的實(shí)時(shí)系統(tǒng)中,常使用的排序算法?
      A、插入排序          B、堆排序          C、快速排序          D、歸并排序

      13、以下程序輸出什么?

       

      復(fù)制代碼
      int main(void)  
      {  
          unsigned int un = -1;      // 0~4294967295  
          unsigned short us = -1;    // 0~65535  
        
            
          printf("%d %d\n",us,un);  
          /* 
          us的二進(jìn)制表示是0xffff,以4個(gè)字節(jié)的int類型輸出時(shí)表示的是0x0000ffff,所以輸出65535 
          un的二進(jìn)制表示是0xffffffff,以4個(gè)字節(jié)的int類型輸出時(shí)表示的是-1,所以輸出-1 
          */  
        
          cout<<us<<endl;   // -1在無符號(hào)的short數(shù)據(jù)中是65535  
          cout<<un<<endl;   // -1在無符號(hào)的int數(shù)據(jù)中是4294967295  
        
        
          //printf("%x %x\n",us,un);      // 16進(jìn)制的形式  
          //printf("%p %p\n",&us,&un);    // 輸出地址  
        
          return 0;  
      }  
      復(fù)制代碼

      輸出:65535 -1
      65535
      4294967295

      14、一個(gè)長(zhǎng)度為n的數(shù)組a[0],a[1],...,a[n-1]?,F(xiàn)在更新數(shù)組的名個(gè)元素,即a[0]變?yōu)閍[1]到a[n-1]的積
      a[1]變?yōu)閍[0]和a[2]到a[n-1]的積,...,a[n-1]為a[0]到a[n-2]的積。
      程序要求:要求具有線性復(fù)雜度,不能使用除法運(yùn)算符。

      思路是思想跟這個(gè)一樣,用兩個(gè)數(shù)組b、c
      b[i] = a[0] *... * a[i - 1],c[i] = a[i + 1] *...*a[n] ,時(shí)間復(fù)雜度為O(2n)
      最后a[i] = b[i]*c[i],我在這里沒用c數(shù)組,少用c【i】數(shù)組的話,程序?qū)懫饋砭筒皇翘美斫?,其?shí)是一個(gè)道理。

      復(fù)制代碼
      int main(void)  
      {  
          int i, a[]={1,2,3,4};  
          int temp, n=4;  
          int *b = new int[n];  
          b[0] = a[0];  
        
          for(i = 1; i < n-1; i++)  
          {  
              b[i]=b[i-1]*a[i];  
          }  
          b[n-1] = a[n-1];  
          for(i = n-1; i >= 0; i--)  
          {  
              temp = a[i];  
              if(i == n-1)  
                  a[i] = b[i-1];  
              if(i>0 && i<n-1)  
              {  
                  a[i] = b[i-1]*b[i+1];  
                  b[i] = temp*b[i+1];  
              }  
              if(i == 0)  
                  a[0] = b[1];  
          }  
        
          //輸出最后的a元素  
          for(i = 0; i < n; i++)  
          {  
              printf("%d  ",a[i]);  
          }  
          return 0;  
      }  
      復(fù)制代碼

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多