網易遊戲2011 10 15校園招聘會筆試題

2021-06-14 03:12:20 字數 4775 閱讀 2109

參考:

1、對於乙個記憶體位址是32位、記憶體頁是8kb的系統。0x0005f123這個位址的頁號與頁內偏移分別是多少。

[cpp]view plain

copy

print?

記憶體位址=記憶體頁號+頁內偏移。共32位。記憶體是8kb==》頁內偏移是13位,剩餘19位是頁號。 

頁號=0x2f=27,頁內偏移=0x1123 

記憶體位址=記憶體頁號+頁內偏移。共32位。記憶體是8kb==》頁內偏移是13位,剩餘19位是頁號。

頁號=0x2f=27,頁內偏移=0x1123

2、如果x大於0並小於65536,用移位法計算x乘以255的值為()

[cpp]view plain

copy

print?

答:(x<<8)-1,必須有括號,因為移位運算子的優先順序沒有減號的優先順序高 

答:(x<<8)-1,必須有括號,因為移位運算子的優先順序沒有減號的優先順序高

3、乙個包含n個節點的四叉樹,每個節點都有四個指向孩子節點的指標,這4n個指標中有()

個空指標。

[cpp]view plain

copy

print?

答:3n+1。n個結點共有4n個指標,樹只有n-1條邊,所以只有n-1條邊是使用的。 

答:3n+1。n個結點共有4n個指標,樹只有n-1條邊,所以只有n-1條邊是使用的。

4、以下兩個語句的區別是:

[cpp]view plain

copy

print?

int *p1 = new

int[10];   

int *p2 = new

int[10]();  

int *p1 = new int[10];  

int *p2 = new int[10]();

[cpp]view plain

copy

print?

答:1:開闢了乙個int型的陣列,陣列大小為10,值為隨機,用p1指向這個陣列 

2:開闢了乙個int型的陣列,陣列大小為10,值為0,用p2指向這個陣列 

答:1:開闢了乙個int型的陣列,陣列大小為10,值為隨機,用p1指向這個陣列

2:開闢了乙個int型的陣列,陣列大小為10,值為0,用p2指向這個陣列

5、計算機在記憶體中儲存資料時使用了大、小端模式,請分別寫出a=0x123456在不同情況下的首位元組是,大端模式

()小端模式(),

x86結構的計算機使用()

模式。[cpp]view plain

copy

print?

答:0x12,0x56,小端 

一般來說,大部分使用者的作業系統(如windows, freebsd,linux)是小端模式的。少部分,如mac os,是大端模式 的。 

答:0x12,0x56,小端

一般來說,大部分使用者的作業系統(如windows, freebsd,linux)是小端模式的。少部分,如mac os,是大端模式 的。

6、在遊戲設計中,經常會根據不同的遊戲狀態呼叫不同的函式,我們可以通過函式指標來實現這一功能,請宣告乙個引數為int  *,返回值為int的函式指標:

答:int (*func)(int *);

關於函式指標見函式指標總結

7、下面程式執行後的結果為:

[cpp]view plain

copy

print?

char str = "glad to test something";   

char *p = str;   

p++;   

int *p1 = static_cast

(p);   

p1++;   

p = static_cast

(p1);   

printf("result is %s\n",p);   

char str = "glad to test something";  

char *p = str;

p++;

int *p1 = static_cast(p);

p1++;

p = static_cast(p1);

printf("result is %s\n",p);

答:

[cpp]view plain

copy

print?

to test something 

p=str[0] -----> p=str[1] -----> p=str[5] 

to test something

p=str[0] -----> p=str[1] -----> p=str[5]

8、在一冒險遊戲裡,你見到乙個寶箱,身上有n把鑰匙,其中一把可以開啟寶箱,假如沒有任何提示,隨機嘗試,問:

(1)恰好第k次(1=

(2)平均需要嘗試多少次。

[cpp]view plain

copy

print?

答:(1)1/n。每一次成功的概論都是相等的 

(2)(n+1)/2 

答:(1)1/n。每一次成功的概論都是相等的

(2)(n+1)/2

9、標頭檔案中ifndef / define / endif 是做什麼用的?

[cpp]view plain

copy

print?

#ifndef //....如果未定義 什麼什麼

#define //....則定義 什麼什麼

#endif //結束語句

可以用來預防多重包含同一標頭檔案 

#ifndef //....如果未定義 什麼什麼 

#define //....則定義 什麼什麼

#endif //結束語句

可以用來預防多重包含同一標頭檔案

10、**裡有時可以看到extern 「c」,這語句是做什麼用的?

見4-16筆試

11、在下列乘法算式中,每個字母代表0~9的乙個數字,而且不同的字母代表不同的數字:

abcdefgh

*                 aj

------------------

ejahfdgkc

bdfhajec

------------------

ccccccccc

請寫出推導的過程。

[cpp]view plain

copy

print?

答:唯一解:a=2、b=4、c=6、d=9、e=1、f=3、g=5、h=8、j=7、k=0 

a*a=b先推出a=2 

答:唯一解:a=2、b=4、c=6、d=9、e=1、f=3、g=5、h=8、j=7、k=0

a*a=b先推出a=2

12、輸入格式:第一行輸入n(n<=100)表示流通的紙幣面額數量;第二行n個紙幣的具體表示的面額,從小到大排列,取值【1,10^6】。

輸出格式:輸出乙個整數,表示應該發行的紙幣面額,這個整數是已經發行的所有紙幣面額都無法表示的最小整數。(已經發行的每個紙幣面額最多只能使用一次) 輸入

輸出51 2 3 9 10075

1 2 4 9 10085

1 2 4 7 100

15 答:見

普通母函式

[cpp]view plain

copy

print?

#include

using

namespace std;   

const

int lmax=10000;   

int c1[lmax+1],c2[lmax+1];   

int main(void)   

n += 5;     //有可能無法表示的那個數比所有紙幣面額的總和還要大  

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

for(i = 0; i < 2*a[0]; i += a[0])       //母函式的表示式中第乙個括號內的各項係數  

c1[i] = 1;   

//第一層迴圈是一共有 n 個小括號,而剛才已經算過乙個了,所以是從2 到 n   

// i 就是代表的母函式中第幾個大括號中的表示式  

for(i = 2; i <= m; i++)   

}   

for(j = 0; j <= n; j++)   // 重新整理一下資料,繼續下一次計算,就是下乙個括號裡面的每一項  

}   

for(i = 1; i <= n; i++)   

}   

}   

return 0;   

}   

網易遊戲2011 10 15校園招聘會筆試題

1 對於乙個記憶體位址是32位 記憶體頁是8kb的系統。0x0005f123這個位址的頁號與頁內偏移分別是多少。2 如果x大於0並小於65536,用移位法計算x乘以255的值為 x 8 x x 8 x是不對的,因為移位運算子的優先順序沒有減號的優先順序高,首先計算8 x為0,x左移0位還是8。3 乙...

網易遊戲2011 10 15校園招聘會筆試題

1 對於乙個記憶體位址是32位 記憶體頁是8kb的系統。0x0005f123這個位址的頁號與頁內偏移分別是多少。2 如果x大於0並小於65536,用移位法計算x乘以255的值為 x 8 x x 8 x是不對的,因為移位運算子的優先順序沒有減號的優先順序高,首先計算8 x為0,x左移0位還是8。3 乙...

網易遊戲2011 10 15校園招聘會筆試題

1 對於乙個記憶體位址是32位 記憶體頁是8kb的系統。0x0005f123這個位址的頁號與頁內偏移分別是多少。頁面大小是8kb,那麼頁內偏移量是從0x0000 0 0x1fff 2的13次方 1 0x5f123的頁號是0x2e 48 頁,頁內偏移量是0x1104。2 如果x大於0並小於65536,...