1. 程式人生 > >2013年完美世界校園招聘筆試題

2013年完美世界校園招聘筆試題

                1、設有矩陣A1(30*35)、A2(35*15)、A3(15*5)、A4(5*10),M=A1*A2*A3*A4,下列組合計算M所需數乘次數最少的是:A、(A1(A2(A3A4)))    B、(A1((A2A3)A4))    C、((A1A2)(A3A4))    D、((A1(A2A3))A4)   E、(((A1A2)A3)A4)2、在32位機器上,有如下程式碼:
char array[] = "abcdefg";printf("%d\n",sizeof(array));        // 8char *p = "abcdefg";printf("%d\n",sizeof(p));            // 4
void func(char p[10])printf("%d\n",sizeof(p));        // 4}void func(char (&p)[10])printf("%d\n",sizeof(p));        // 10}int main(void)printf("%d\n",sizeof(char[2]));     // 2 printf("%d\n",sizeof(char&));       // 1 return 0;}
其輸出結果依次為:A、8   4   4  10  2  1B、4   4   4  10  4  1C、8   4   4  10  2  4D、8   4   4  4  2  1E、8   4   4  10  4  4F、以上答案都不對3、
CONTAINER::iterator iter , tempIt;for
(iter = cont.begin() ; iter != cont.end() ; ){ tempIt = iter; ++iter; cont.erase(tempIt);}
假設cont是一個CONTAINER的示例,裡面包含數個元素,那麼當CONTAINER為:1、vector<int>2、list<int>3、map<int , int>4、deque<int>會導致上面的程式碼片段崩潰的CONTAINER型別是:A、1,4     B、2,3    C、1,3      D、2,4正確答案選擇A(第1個、第4個都是線性的型別儲存,所以會存在崩潰)4、以下程式碼
class classA{public: classA() {  clear(); } virtual ~classA() { } void clear() {  memset(this , 0 , sizeof(*this)); } virtual void func() {  printf("func\n"); }};class classB : public classA{};int main(void){ classA oa; classB ob; classA * pa0 = &oa; classA * pa1 = &ob; classB * pb = &ob; oa.func();         // 1 ob.func();         // 2 pa0->func();       // 3 pa1->func();       // 4 pb->func();        // 5 return 0;}
A、func              func        執行出錯      執行出錯        func  B、執行出錯         func        執行出錯      執行出錯        func C、執行出錯      執行出錯      執行出錯      執行出錯      執行出錯D、func              func          func            func          funcE、func              func        執行出錯          func          funcF、以上選項都不對5、在32位系統中
class CBase{publicvoid func() {  Print(); } virtual void Print() {  cout<<"CBase::Print"<<endl; }};class CDerived : public CBase{publicvirtual void Print() {  cout<<"CDerived::Print"<<endl; }};int main(void){ CDerived c; CBase *p = &c; return 0;}
請問:sizeof(*p)的值是多少? (實際上求的就是一個成員變數的大小+一個虛表指標VPTR的大小)A、1    B、4     C、8    D、12p->Print(); 和 c.func();的輸出分別是?A、CBase::Print     CBase::Print     B、CBase::Print     CDerived::PrintC、CDerived::Print  CBase::Print    D、CDerived::Print  CDerived::Print6、
struct Thing{ int valueA; const int valueB;};Thing t;
t的成員變數valueA 和 valueB 的值分別為:A、0  0     B、垃圾值  0     C、無法執行     D、垃圾值  垃圾值常成員變數valueB必須在建構函式中進行初始化7、for(int x = 0 , y = 0; !x && y <= 5 ; y++)語句執行迴圈的次數是:A、0        B、5        C、6        D、無數次8、在Windows 32位作業系統中,假設位元組對齊為4,對於一個空的類A,sizeof(A)的值為()A、0         B、1         C、2         D、49、以下對函式指標的定義,哪些是正確的:A、typedef  int  (*fun_ptr)(int , int);       B、typedef  int  *(fun_ptr)(int , int); C、typedef  int  (fun_ptr*)(int , int);       D、typedef  *int  (fun_ptr)(int , int); 10、在32位系統中,下面結構體
struct st{ char ch , *ptr; union {  short a , b;  unsigned int c : 2 , d : 1; }; bool f; struct st *next;};
的大小是:A、14位元組       B、16位元組       C、20位元組       D、24位元組11、32位小端位元組序的機器上,如下程式碼:
char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08};short *pshort = (short *)array;int *pint = (int *)array;int64 *pint64 = (int64 *)array;printf("0x%x , 0x%x , 0x%x , 0x%x", *pshort , *(pshort+2) , *pint64 , *(pint+2));
輸出結果為:A、0x201 , 0x403 , 0x807060504030201 , 0x0    B、0x201 , 0x605 , 0x807060504030201 , 0x0   C、0x201 , 0x605 , 0x4030201 , 0x8070605       D、0x102 , 0x506 , 0x102030405060708 , 0x0  E、0x102 , 0x304 , 0x1020304 , 0x5060708          F、0x201 , 0x605 , 0x4030201 , 0x605040312、有關引用,下列說法錯誤的是:A、引用定義時必須初始化B、類的非靜態引用成員變數不需要在建構函式中初始化C、陣列可以有引用,但沒有引用陣列D、public派生物件可以初始化基類型別的引用E、整型資料的常引用可以直接用數值初始化F、以上選項都不是13、Windows PE檔案裝載到的地址為:A、0x0030000    B、0x0040000    C、任意地址   D、0x10000000    14、以下哪些物件可用於Windows程序間通訊:A、事件    B、臨界區    C、互斥量    D、共享記憶體