一、問答題
1、對於一個內存地址是32位、內存頁是8KB的系統。0X0005F123這個地址的頁號與頁內偏移分別是多少。
答案註釋:頁號是47頁,頁內偏移量應該是0X00001123
2、如果X大於0並小於65536,用移位法計算X乘以255的值爲:
答案註釋: (X<<8)-X
X<<8-X是不對的,因爲移位運算符的優先級沒有減號的優先級高,首先計算8-X爲0,X左移0位還是8。
3、一個包含n個節點的四叉樹,每個節點都有四個指向孩子節點的指針,這4n個指針中有( )個空指針。
答案註釋: 3n+1
4、以下兩個語句的區別是:
int *p1 = new int[10];
int *p2 = new int[10]();
答案註釋:第一個動態申請的空間裏面的值是隨機值,第二個進行了初始化,裏面的值爲0
5、計算機在內存中存儲數據時使用了大、小端模式,請分別寫出A=0X123456在不同情況下的首字節是,大端模式:( )小端模式:( )X86結構的計算機使用 ( )模式。
答案註釋:0X12、0X56、小端
一般來說,大部分用戶的操作系統(如windows, FreeBsd,Linux)是小端模式的。少部分,如MAC OS,是大端模式 的。
6、在遊戲設計中,經常會根據不同的遊戲狀態調用不同的函數,我們可以通過函數指針來實現這一功能,請聲明一個參數爲int *,返回值爲int的函數指針:
答案註釋:int (*fun)(int *)
7、下面程序運行後的結果爲:
char str[] = "glad to test something";
char *p = str;
p++;
int *p1 = static_cast<int *>(p);
p1++;
p = static_cast<char *>(p1);
printf("result is %s\n",p);
答案註釋:to test something
8、在一冒險遊戲裏,你見到一個寶箱,身上有N把鑰匙,其中一把可以打開寶箱,假如沒有任何提示,隨機嘗試,問:
(1)恰好第K次(1=<K<=N)打開寶箱的概率是多少。
(2)平均需要嘗試多少次。
答案註釋:(1) (1-1/n)*(1-1/(n-1))*(1-1/(n-2))***(1/(n-k+1)) = 1/n
(2) 這個就是求期望值 由於每次打開寶箱的概率都是1/n,則期望值爲: 1*(1/n)+2*(1/n)+3*(1/n)+......+n*(1/n) = (n+1)/2
由“名企筆試題庫”收集整理