當前位置:萬佳範文網 >

求職簡歷 >筆試題目 >

金山軟件筆試測試題目

金山軟件筆試測試題目

金山軟件是許多計算機專業學生嚮往的企業,那麼你知道金山軟件的筆試題是怎樣的嗎?下面由本站小編為你提供的金山軟件筆試測試題目,希望能幫到你。

金山軟件筆試測試題目

金山軟件筆試測試題目(一)

一:分別寫出下面遊戲的產商和運營商

1:穿越火線 2:魔獸世界 3:天龍八部 4 征途

二:1、 有一起謀殺案,發生在一個家庭中,父親、母親、兒子、女兒四個成員中,有兇手、目擊者、同謀和被害者。已知條件如下:(1)最年輕者和被害者性別不同

(2)年齡最大的和目擊者性別不同

(3)目擊者和同謀性別不同

(4)兇手不是最年輕的

(5)父親是年齡最長者

(6)被害者比同謀年輕

請問四個成員分別對應的身份?

寫出推理過程:

三:寫出4個你玩過的遊戲,並寫出特點和吸引你的地方(什麼類型都可以)並寫出你的遊戲經歷,比如玩到什麼程度,遊戲級別,花費時間等等

四:有一張表,裏面列出了很多種情況,大致的説法如下:A論壇裏有很多玩家説你設計的某個遊戲裏面哪個門派不夠強,其中一個門派還集體説要提升其門派的實力,否則就集體退出遊戲。

B你的朋友告訴你遊戲還是不要改,參考XX世界,不然改了之後罵聲更多。

C 客服人員反映説一個VIP玩家建議説有個門派的實力太弱了,要提升一下。

D 公司裏資深的遊戲設計人員告訴你説某個門派的實力太弱,需要加強,但是論壇裏該門派並沒有類似的反應。

E 公司總裁也是你的遊戲玩家,他玩過之後説有個門派實力太弱,該提升。

F 很多玩家反映有一個門派的實力過強,而你恰恰是這個門派的長老,玩過很多時間,進行了一些改進,但是你自己卻發覺甚至比以前打敵人更加吃力了。

G 數據顯示一個門派的玩家流失率很大,但是卻沒有相關評價説該門派的實力太弱。

H 你提出的策劃案沒有得到大家認可,遭到拒絕。

要求對這些重視程度進行排序,然後在每一項後面寫出排在該位置的理由,最後再寫出你對待每一項的解決辦法

五:寫出偷菜遊戲火了的原因以及現在玩家流失的原因

六:手機電池不夠用,開發新能源成本高,見效慢,提出3個建議解決問題

七:寫出從遊戲登陸界面開始到進入遊戲所有可能發生的情況,最好畫出流程圖説明

八:如果遊戲新推出一個主手法杖,如何設計可以最大的吸引RMB玩家的消費慾望(大概這個意思,也有可能是我理解出現偏差,那就悲劇了……)

九:很多遊戲都有怪物類npc,對戰會有音效,畫面特效之類的,讓你設計如何提高戰鬥打擊感和玩家的爽快程度(差不多的意思)

十:專業詞解釋:附魔,MT,AOE,嘲諷,副本(還有幾個記不清了,選4個即可)

金山軟件筆試測試題目(二)

1、 (1) 寫出C++的四種類型轉換。

我的理解:

四種,答題的時候我忘了reinterpret_cast怎麼拼寫。要求寫成示例代碼, 不過我沒寫(沒上下文環境,還得我自個去自定義類型,太費事了)。

(2)explicit關鍵字的作用。

我的理解:

去除隱式轉換。

(3)虛析構函數。

我的理解:

在一個繼承體系中,基類的析構函數必須設置為虛函數,不然可能存在析構不完整的危險。

2、 是一個改錯題。大概考察的知識是:vector、多態、虛函數表指針。

我的理解:

(1)要實現多態,vector裏邊保存的必須是地址(指針),而不能是基類、引用。

(2)定義vector的const_iterator。

(3)派生類的構造函數是在派生類對象構造的最後階段才被調用的,當調用構造函數的時候,對象的基類子對象、成員變量(對象)已經初始化完畢。所以派生類的構造函數不可以亂來。

3、容器的傳參和erase操作

給出的是一個函數,其中關鍵的部分大概是這樣:

for(vector::iterator iter = n; iter != ; ++iter)

{

if (*iter == N)

e(iter);

}

我的理解:

(1) 容器類對象傳參的時候最好用引用。

(2) erase操作之後會導致迭代器失效。

(3) 可能會導致刪除不徹底,因為erase之後iter指向了下一個元素,而for循環中又++iter,這樣會跳過一個元素,而且可能跳到vector對象之外的地方,最後導致出錯。(我只考慮到會跳過一個元素,沒有想到如果最後一個被刪元素剛好是vector對象的最後一個元素,那麼會跳出對象之外的地方。其實這個問題幾個星期前在csdn上回答過,不過我通過上機得出的答案一下子就被我拋到腦後)

4、 智能指針。

大概意思是:引用計數型的智能指針存在循環引用的缺陷,需要一個“弱引用”智能指針。大概是要求實現這兩個智能指針。

我的理解:

很遺憾。我想題目是想答題者實現boost庫裏的shared_ptr和weak_ptr,我知道這兩個指針的存在,但問題是我沒考慮過它們是怎麼實現的。主要是弱指針不知道該怎麼做。引用計數型的智能指針湊合着寫了出來,不過寫得超亂,而且構造函數有錯誤。

一方面是很少用手寫代碼,一方面是幾乎沒有自己親手寫過智能指針,雖然分析學習了不少簡單例子。雖然以前看書的時候看到“循環引用”這回事,只是當時不知道是什麼,現在依然不知道,忘了問why。

算法考察的內容:

1、 有一個N位二進制數,找出其中沒有相鄰11的數的個數。例如:N=2時,00,01,10,11,其中沒有相鄰11的數的個數有3個。

我的理解:

求相鄰11的數的個數。

N位數跟N-1位數有關係。如果一個數在N-1中是“相鄰11”,那麼在這個數前面添加上0或1它還是一個相鄰11的數。這裏邊就至少有兩倍的關係了。另外,如果N-1中有數是這樣的:“10XXX”,那麼在N位數中,在它前面添加上1這個數就是“相鄰11”了。那麼N-1位數中有多少個“10XXX”這樣的數字呢?對於N-1位的數來説, 如果頭一兩位是“10”,後邊就還有N-3位的二進制位,所以以“10”開頭的數有2的(N-3)次方個。

列出如下:N就是在N-1的數前面加上1、0。

N=2

00 01 10 11

N=3

000 001 010 011

100 101 110 111

N=4

0000 0001 0010 0011

1000 1001 1010 1011

0100 0101 0110 0111

1100 1101 1110 1111

感覺這就是數字的組合的問題。另外,上邊是我個人的理解,也不一定是對的。

(結果證明,我真的錯了,唯一一道會寫的算法題,淚奔……)

修正:非相鄰11的數字的個數正如樓下所説是斐波那契序列。因為我一開始就沒往“非相鄰11”方向想,而是往“相鄰11”方向考慮,所以沒發覺另一個方向其實有捷徑可通…….但我還是想把這條路走完,雖然走了彎路。

我的分析出差錯的原因在這裏:“所以以“10”開頭的數有2的(N-3)次方個”,這句話沒錯,但是沒考慮到這(N-3)個位裏也有可能存在“相鄰11”,導致了重複計算“相鄰11”的數。必須減去才行。計算“相鄰11”個數的函數如下:

int fun(int n)

{

[size=9pt]if (n return 0;

if (n == 2)

return 1;

if (n == 3)

return 3;

[size=9pt]return ((fun(n-1))*2 + (2}

以上方式實現比較垃圾。比較好的方式有(第二種更好一些,但第一種的思路很值得學習):

(1)

//實現:動態規劃,遞推算法

/*參考:

用動態規劃的東西 "[j]保存i位長的二進制位,最後一位是j" 的時候的個數,那麼

[0] = [i - 1][1] + [i - 1][0];

[1] = [i - 1][0];

*/

//20xx.9.19

#include

using namespace std;

int fun(int N);

int main

{

int N;

[size=9pt]cout cin >> N;

[size=9pt]cout return 0;

}

/////////////////////////////////////////////////////////////////////

int fun(int N)

{

//申請空間。時間換空間

int **p = new int*[N];

for (int i = 0; i != N; ++i)

{

p = new int[2];

}

//算法核心。遞推。

p[0][0] = 1;

p[0][1] = 1;

[size=9pt]for (int i = 1; i {

//求i個二進制位以0結尾的非11相鄰數:i-1個二進制位的非"11相鄰"數,後邊填加上一個0,必定也是非11相鄰數

p[0] = p[i-1][0] + p[i-1][1];

//求i個二進制位以1結尾的非11相鄰數:i-1個二進制位的非"11相鄰"數必須以0結尾.

p[1] = p[i-1][0];

}

//保存返回值

int ret = p[N-1][0] + p[N-1][1];

//釋放空間

for (int i = 0; i != N; ++i)

{

p;

}

p;

return ret;

}

(2)

//實現:斐波那契數列實現

/*參考:

通過列出非相鄰11的數的個數,可以發現其實這個就是斐波那契數列。2,3,5,8,13,……

*/

//20xx.9.19

#include

using namespace std;

int fun(int n);

int main

{

int n;

[size=9pt]cout cin >> n;

[size=9pt]cout return 0;

}

int fun(int n)

{

if (n == 1)

return 2;

if (n == 2)

return 3;

int f1 = 2;

int f2 = 3;

int f3;

[size=9pt]for (int i = 2; i {

f3 = f1 + f2;

f1 = f2;

f2 = f3;

}

return f3;

}

2、 對一個服務器日誌的分析。

日誌裏邊記錄了IP登錄信息,信息內容有時間和IP地址。現在要統計

(1) 每一天登錄次數最多的1000個IP。以登錄次數為序,從高到低排序

(2) 每一週登錄次數最多的1000個IP。以登錄次數為序,從高到低排序

每一天大概有10億條IP信息記錄

  • 文章版權屬於文章作者所有,轉載請註明 https://wjfww.com/qiuzhi/bishi/gq64g3.html
專題