學習啦>創(chuàng)業(yè)指南>職場>筆試題>

金山軟件筆試測試題目

時間: 曉晴1082 分享

  金山軟件是許多計算機專業(yè)學生向往的企業(yè),那么你知道金山軟件的筆試題是怎樣的嗎?下面由學習啦小編為你提供的金山軟件筆試測試題目,希望能幫到你。

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

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

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

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

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

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

  (4)兇手不是最年輕的

  (5)父親是年齡最長者

  (6)被害者比同謀年輕

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

  寫出推理過程:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  我的理解:

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

  (2)explicit關鍵字的作用。

  我的理解:

  去除隱式轉換。

  (3)虛析構函數。

  我的理解:

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

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

  我的理解:

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

  (2)定義vector的const_iterator。

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

  3、容器的傳參和erase操作

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

  for(vector::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)

  {

  if (*iter == N)

  ivec.erase(iter);

  }

  我的理解:

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

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

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

  4、 智能指針。

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

  我的理解:

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

  一方面是很少用手寫代碼,一方面是幾乎沒有自己親手寫過智能指針,雖然分析學習了不少簡單例子。雖然以前看書的時候看到“循環(huán)引用”這回事,只是當時不知道是什么,現在依然不知道,忘了問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”方向考慮,所以沒發(fā)覺另一個方向其實有捷徑可通…….但我還是想把這條路走完,雖然走了彎路。

  我的分析出差錯的原因在這里:“所以以“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)

  //實現:動態(tài)規(guī)劃,遞推算法

  /*參考:

  用動態(tài)規(guī)劃的東西 "[j]保存i位長的二進制位,最后一位是j" 的時候的個數,那么

  [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)

  {

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

  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的數的個數,可以發(fā)現其實這個就是斐波那契數列。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、 對一個服務器日志的分析。

  日志里邊記錄了IP登錄信息,信息內容有時間和IP地址?,F在要統(tǒng)計

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

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

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

金山軟件筆試測試題目

金山軟件是許多計算機專業(yè)學生向往的企業(yè),那么你知道金山軟件的筆試題是怎樣的嗎?下面由學習啦小編為你提供的金山軟件筆試測試題目,希望能幫到你。 金山軟件筆試測試題目(一) 一:分別寫出下面游戲的產商和運營商 1:穿越火線 2:魔獸
推薦度:
點擊下載文檔文檔為doc格式
3575583