金山軟件筆試測(cè)試題目
金山軟件是許多計(jì)算機(jī)專業(yè)學(xué)生向往的企業(yè),那么你知道金山軟件的筆試題是怎樣的嗎?下面由學(xué)習(xí)啦小編為你提供的金山軟件筆試測(cè)試題目,希望能幫到你。
金山軟件筆試測(cè)試題目(一)
一:分別寫出下面游戲的產(chǎn)商和運(yùn)營(yíng)商
1:穿越火線 2:魔獸世界 3:天龍八部 4 征途
二:1、 有一起謀殺案,發(fā)生在一個(gè)家庭中,父親、母親、兒子、女兒四個(gè)成員中,有兇手、目擊者、同謀和被害者。已知條件如下:(1)最年輕者和被害者性別不同
(2)年齡最大的和目擊者性別不同
(3)目擊者和同謀性別不同
(4)兇手不是最年輕的
(5)父親是年齡最長(zhǎng)者
(6)被害者比同謀年輕
請(qǐng)問(wèn)四個(gè)成員分別對(duì)應(yīng)的身份?
寫出推理過(guò)程:
三:寫出4個(gè)你玩過(guò)的游戲,并寫出特點(diǎn)和吸引你的地方(什么類型都可以)并寫出你的游戲經(jīng)歷,比如玩到什么程度,游戲級(jí)別,花費(fèi)時(shí)間等等
四:有一張表,里面列出了很多種情況,大致的說(shuō)法如下:A論壇里有很多玩家說(shuō)你設(shè)計(jì)的某個(gè)游戲里面哪個(gè)門派不夠強(qiáng),其中一個(gè)門派還集體說(shuō)要提升其門派的實(shí)力,否則就集體退出游戲。
B你的朋友告訴你游戲還是不要改,參考XX世界,不然改了之后罵聲更多。
C 客服人員反映說(shuō)一個(gè)VIP玩家建議說(shuō)有個(gè)門派的實(shí)力太弱了,要提升一下。
D 公司里資深的游戲設(shè)計(jì)人員告訴你說(shuō)某個(gè)門派的實(shí)力太弱,需要加強(qiáng),但是論壇里該門派并沒(méi)有類似的反應(yīng)。
E 公司總裁也是你的游戲玩家,他玩過(guò)之后說(shuō)有個(gè)門派實(shí)力太弱,該提升。
F 很多玩家反映有一個(gè)門派的實(shí)力過(guò)強(qiáng),而你恰恰是這個(gè)門派的長(zhǎng)老,玩過(guò)很多時(shí)間,進(jìn)行了一些改進(jìn),但是你自己卻發(fā)覺(jué)甚至比以前打敵人更加吃力了。
G 數(shù)據(jù)顯示一個(gè)門派的玩家流失率很大,但是卻沒(méi)有相關(guān)評(píng)價(jià)說(shuō)該門派的實(shí)力太弱。
H 你提出的策劃案沒(méi)有得到大家認(rèn)可,遭到拒絕。
要求對(duì)這些重視程度進(jìn)行排序,然后在每一項(xiàng)后面寫出排在該位置的理由,最后再寫出你對(duì)待每一項(xiàng)的解決辦法。
五:寫出偷菜游戲火了的原因以及現(xiàn)在玩家流失的原因
六:手機(jī)電池不夠用,開(kāi)發(fā)新能源成本高,見(jiàn)效慢,提出3個(gè)建議解決問(wèn)題
七:寫出從游戲登陸界面開(kāi)始到進(jìn)入游戲所有可能發(fā)生的情況,最好畫出流程圖說(shuō)明
八:如果游戲新推出一個(gè)主手法杖,如何設(shè)計(jì)可以最大的吸引RMB玩家的消費(fèi)欲望(大概這個(gè)意思,也有可能是我理解出現(xiàn)偏差,那就悲劇了……)
九:很多游戲都有怪物類npc,對(duì)戰(zhàn)會(huì)有音效,畫面特效之類的,讓你設(shè)計(jì)如何提高戰(zhàn)斗打擊感和玩家的爽快程度(差不多的意思)
十:專業(yè)詞解釋:附魔,MT,AOE,嘲諷,副本(還有幾個(gè)記不清了,選4個(gè)即可)
金山軟件筆試測(cè)試題目(二)
1、 (1) 寫出C++的四種類型轉(zhuǎn)換。
我的理解:
四種,答題的時(shí)候我忘了reinterpret_cast怎么拼寫。要求寫成示例代碼, 不過(guò)我沒(méi)寫(沒(méi)上下文環(huán)境,還得我自個(gè)去自定義類型,太費(fèi)事了)。
(2)explicit關(guān)鍵字的作用。
我的理解:
去除隱式轉(zhuǎn)換。
(3)虛析構(gòu)函數(shù)。
我的理解:
在一個(gè)繼承體系中,基類的析構(gòu)函數(shù)必須設(shè)置為虛函數(shù),不然可能存在析構(gòu)不完整的危險(xiǎn)。
2、 是一個(gè)改錯(cuò)題。大概考察的知識(shí)是:vector、多態(tài)、虛函數(shù)表指針。
我的理解:
(1)要實(shí)現(xiàn)多態(tài),vector里邊保存的必須是地址(指針),而不能是基類、引用。
(2)定義vector的const_iterator。
(3)派生類的構(gòu)造函數(shù)是在派生類對(duì)象構(gòu)造的最后階段才被調(diào)用的,當(dāng)調(diào)用構(gòu)造函數(shù)的時(shí)候,對(duì)象的基類子對(duì)象、成員變量(對(duì)象)已經(jīng)初始化完畢。所以派生類的構(gòu)造函數(shù)不可以亂來(lái)。
3、容器的傳參和erase操作
給出的是一個(gè)函數(shù),其中關(guān)鍵的部分大概是這樣:
for(vector::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
{
if (*iter == N)
ivec.erase(iter);
}
我的理解:
(1) 容器類對(duì)象傳參的時(shí)候最好用引用。
(2) erase操作之后會(huì)導(dǎo)致迭代器失效。
(3) 可能會(huì)導(dǎo)致刪除不徹底,因?yàn)閑rase之后iter指向了下一個(gè)元素,而for循環(huán)中又++iter,這樣會(huì)跳過(guò)一個(gè)元素,而且可能跳到vector對(duì)象之外的地方,最后導(dǎo)致出錯(cuò)。(我只考慮到會(huì)跳過(guò)一個(gè)元素,沒(méi)有想到如果最后一個(gè)被刪元素剛好是vector對(duì)象的最后一個(gè)元素,那么會(huì)跳出對(duì)象之外的地方。其實(shí)這個(gè)問(wèn)題幾個(gè)星期前在csdn上回答過(guò),不過(guò)我通過(guò)上機(jī)得出的答案一下子就被我拋到腦后)
4、 智能指針。
大概意思是:引用計(jì)數(shù)型的智能指針存在循環(huán)引用的缺陷,需要一個(gè)“弱引用”智能指針。大概是要求實(shí)現(xiàn)這兩個(gè)智能指針。
我的理解:
很遺憾。我想題目是想答題者實(shí)現(xiàn)boost庫(kù)里的shared_ptr和weak_ptr,我知道這兩個(gè)指針的存在,但問(wèn)題是我沒(méi)考慮過(guò)它們是怎么實(shí)現(xiàn)的。主要是弱指針不知道該怎么做。引用計(jì)數(shù)型的智能指針湊合著寫了出來(lái),不過(guò)寫得超亂,而且構(gòu)造函數(shù)有錯(cuò)誤。
一方面是很少用手寫代碼,一方面是幾乎沒(méi)有自己親手寫過(guò)智能指針,雖然分析學(xué)習(xí)了不少簡(jiǎn)單例子。雖然以前看書(shū)的時(shí)候看到“循環(huán)引用”這回事,只是當(dāng)時(shí)不知道是什么,現(xiàn)在依然不知道,忘了問(wèn)why。
算法考察的內(nèi)容:
1、 有一個(gè)N位二進(jìn)制數(shù),找出其中沒(méi)有相鄰11的數(shù)的個(gè)數(shù)。例如:N=2時(shí),00,01,10,11,其中沒(méi)有相鄰11的數(shù)的個(gè)數(shù)有3個(gè)。
我的理解:
求相鄰11的數(shù)的個(gè)數(shù)。
N位數(shù)跟N-1位數(shù)有關(guān)系。如果一個(gè)數(shù)在N-1中是“相鄰11”,那么在這個(gè)數(shù)前面添加上0或1它還是一個(gè)相鄰11的數(shù)。這里邊就至少有兩倍的關(guān)系了。另外,如果N-1中有數(shù)是這樣的:“10XXX”,那么在N位數(shù)中,在它前面添加上1這個(gè)數(shù)就是“相鄰11”了。那么N-1位數(shù)中有多少個(gè)“10XXX”這樣的數(shù)字呢?對(duì)于N-1位的數(shù)來(lái)說(shuō), 如果頭一兩位是“10”,后邊就還有N-3位的二進(jìn)制位,所以以“10”開(kāi)頭的數(shù)有2的(N-3)次方個(gè)。
列出如下:N就是在N-1的數(shù)前面加上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
感覺(jué)這就是數(shù)字的組合的問(wèn)題。另外,上邊是我個(gè)人的理解,也不一定是對(duì)的。
(結(jié)果證明,我真的錯(cuò)了,唯一一道會(huì)寫的算法題,淚奔……)
修正:非相鄰11的數(shù)字的個(gè)數(shù)正如樓下所說(shuō)是斐波那契序列。因?yàn)槲乙婚_(kāi)始就沒(méi)往“非相鄰11”方向想,而是往“相鄰11”方向考慮,所以沒(méi)發(fā)覺(jué)另一個(gè)方向其實(shí)有捷徑可通…….但我還是想把這條路走完,雖然走了彎路。
我的分析出差錯(cuò)的原因在這里:“所以以“10”開(kāi)頭的數(shù)有2的(N-3)次方個(gè)”,這句話沒(méi)錯(cuò),但是沒(méi)考慮到這(N-3)個(gè)位里也有可能存在“相鄰11”,導(dǎo)致了重復(fù)計(jì)算“相鄰11”的數(shù)。必須減去才行。計(jì)算“相鄰11”個(gè)數(shù)的函數(shù)如下:
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}
以上方式實(shí)現(xiàn)比較垃圾。比較好的方式有(第二種更好一些,但第一種的思路很值得學(xué)習(xí)):
(1)
//實(shí)現(xiàn):動(dòng)態(tài)規(guī)劃,遞推算法
/*參考:
用動(dòng)態(tài)規(guī)劃的東西 "[j]保存i位長(zhǎng)的二進(jìn)制位,最后一位是j" 的時(shí)候的個(gè)數(shù),那么
[0] = [i - 1][1] + [i - 1][0];
[1] = [i - 1][0];
*/
//2010.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)
{
//申請(qǐng)空間。時(shí)間換空間
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個(gè)二進(jìn)制位以0結(jié)尾的非11相鄰數(shù):i-1個(gè)二進(jìn)制位的非"11相鄰"數(shù),后邊填加上一個(gè)0,必定也是非11相鄰數(shù)
p[0] = p[i-1][0] + p[i-1][1];
//求i個(gè)二進(jìn)制位以1結(jié)尾的非11相鄰數(shù):i-1個(gè)二進(jìn)制位的非"11相鄰"數(shù)必須以0結(jié)尾.
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)
//實(shí)現(xiàn):斐波那契數(shù)列實(shí)現(xiàn)
/*參考:
通過(guò)列出非相鄰11的數(shù)的個(gè)數(shù),可以發(fā)現(xiàn)其實(shí)這個(gè)就是斐波那契數(shù)列。2,3,5,8,13,……
*/
//2010.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、 對(duì)一個(gè)服務(wù)器日志的分析。
日志里邊記錄了IP登錄信息,信息內(nèi)容有時(shí)間和IP地址?,F(xiàn)在要統(tǒng)計(jì)
(1) 每一天登錄次數(shù)最多的1000個(gè)IP。以登錄次數(shù)為序,從高到低排序
(2) 每一周登錄次數(shù)最多的1000個(gè)IP。以登錄次數(shù)為序,從高到低排序
每一天大概有10億條IP信息記錄