2014.03.16 網易遊戲TTT計劃實習生筆試題
注:這份試題是本人事後回憶的,題目可能會有出入,且給出的答案不一定正確,僅供參考,歡迎指正錯誤。
前面這些題是試卷的第I部分,試卷上面說第一部分達不到基本線直接淘汰,最終排名主要看II卷
I 卷 基礎題
1.求1111+2*1111+....+1111*1111對7求餘的結果。
n(n+1)/2, 即556*1111*1111對7求餘,每個數分別對7求餘,餘數相乘後對7求餘最後算的結果是5.
2.,某點p(x,y,z),繞Y軸旋轉的角度為 ,求三維旋轉矩陣。
3.如下圖,A, B, C, D, E燈泡壞掉的概率分別為0.2, 0.3, 0.4, 0.5,0.6,求此電路不通的概率
AB路壞的概率:0.2*0.7 + 0.8*0.3 + 0.2*0.3 = 0.44
CDE路壞的概率:0.4*0.5 + 0.6 – 0.4*0.5*0.6 = 0.68
總的概率 0.44 * 0.68 =0.2992
4.f(0)=0,f(1)=1,f(n)=(f(n-1)+f(n-2))mod5 求f(2013);
週期為20,f(2013)=f(13)=3
5.二分查詢的時間複雜度O(logn),堆排序的空間複雜度O(1)。快排的時間複雜度O(nlogn)。
6.堆和棧的區別。(malloc/new的記憶體在堆分配,區域性非靜態變數在棧中分配記憶體)
7.下面程式碼的輸出結果:(vs2008 測試是25 82,其實這種題比較坑爹)
1
2 3 4 5 6 7 8 9 10 11 12 13 |
#define mul(a) (a)*(a)
int main(void) { int a = 5, b, c; b = mul(a++); c = mul(++a); if(!a && c++) b++; else c++; printf("%d %d", b, c); } |
8.定義一個巨集,若滿足條件則終止程式並報告錯誤檔名和行數,並有以下呼叫:
if(x>=0 && y>=0)
assert(x+y);
else
assert(x-y);
如果按照以下格式寫巨集,會有什麼問題:
#define assert(e) if(!e) assert_error(__FILE__, __LINE__)
//邊際效應,會變成!x + y,而且原來的else會跟這裡的if(!e)匹配
如果按照以下格式寫,又會有什麼問題:
#define assert(e) {if(!e) assert_error(__FILE__, __LINE__);}
//錯誤仍在且出現語法錯誤,編譯錯誤,花括號外面多了個分號
怎樣改才是對的?#define assert(e); {if(!(e)) assert_error(__FILE__, __LINE__);}
或者 #define assert(e) ((e) || assert_error(__FILE__, __LINE__);)
10.已知是小端儲存,32位機器,求輸出結果.答案應該是8 2
注:這跟棧生長方向沒什麼關係(linux是從高到低);一個物件有多個成員,內部肯定是從低地址到高地址排列下去,對一個物件
取地址取到的是起始地址(低地址);
1
2 3 4 5 6 7 8 9 10 11 12 13 |
struct data
{ int a; unsigned short b; } int main(void) { data mData; mData.b = 0x0102; char *p = (char *)&mData; printf("%d %d", sizeof(mData), (int) (*(p + 4))); } |
11.下面程式輸出是什麼? ~Base
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <iostream>
using namespace std; class Base { public: ~Base() { cout << "~Base" << endl; } }; class Dri: public Base { public: ~Dri() { cout << "~Dri" << endl; } }; int main() { Base *b = new Dri(); delete b; return 0; } |
12.下面呼叫fork()總共生成多少個程式,列印幾個'-' 4 6 (注:如果沒有fflush,將輸出8個'-')
1
2 3 4 5 6 7 8 9 10 11 12 13 |
#include <stdio.h>
#include <unistd.h> int main() { int i; for(i = 0; i < 2; ++i) { fork(); printf("-"); fflush(stdout); } return 0; } |
13.此程式碼有什麼用?./a.out >outfile 2>&1
將a.out程式執行的標準輸出和標準錯誤輸出重定向到outfile
12.一分鐘的音樂,採用14400的取樣率,雙聲道,每個點16bit,問音樂的大小。14400*2*16*60/8=3456000B
II卷 程式應用與設計
1.程式改錯
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
class obj { public: obj() { m = 0; data = new int[100]; } obj(const &t) { m = t.m; data = new int[100]; memcpy((char *)data, (char *)t.data, sizeof(int) * 100); } int squ(volatile int *p) //表示對*p的賦值,將全部保留不做優化,volatile擺放的位置不同導致的不同含義與const類似 { int tmp = *p; return tmp * tmp; } ~obj() { if(data) delete[] data; } void add() { m++; } private: int m; int *data; }; int main() { obj o1; obj o2 = o1; return 0; } |
2.兩個題可以選一個。
a.寫一個strcmp函式
1
2 3 4 5 6 7 8 9 10 11 12 |
//字串比較
int strcmp(const char *s, const char *t) { assert(s != NULL && t != NULL); while(*s && *t && *s == *t) { ++ s; ++ t; } return (*s - *t); } |
b.約瑟夫環的問題(直接沒看題目)。
3.紙牌遊戲,隨便抽五張牌,A代表1,2-10還是2-10,J,Q,K表示11,12,13, 大小王可以當任何一張。判斷5張牌是不是順子。http://zhedahht.blog.163.com/blog/static/25411174200951262930831
把陣列排序,統計陣列中0的個數,統計排序之後的陣列相鄰數字之間的空缺總數。如果空缺的總數小於或者等於0的個數,那麼這個陣列就是連續的;反之則不連續。最後,我們還需要注意的是,如果陣列中的非0數字重複出現,則該陣列不是連續的。換成撲克牌的描述方式,就是如果一副牌裡含有對子,則不可能是順子。基於這個思路,我們可以寫出如下的程式碼:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// Determine whether numbers in an array are continuous
// Parameters: numbers: an array, each number in the array is between // 0 and maxNumber. 0 can be treeted as any number between // 1 and maxNumber // maxNumber: the maximum number in the array numbers bool IsContinuous(std::vector<int> numbers, int maxNumber) { if(numbers.size() == 0 || maxNumber <= 0) return false; // Sort the array numbers. std::sort(numbers.begin(), numbers.end()); int numberOfZero = 0; int numberOfGap = 0; // how many 0s in the array? std::vector<int>::iterator smallerNumber = numbers.begin(); while(smallerNumber != numbers.end() && *smallerNumber == 0) { numberOfZero++; ++smallerNumber; } // get the total gaps between all adjacent two numbers std::vector<int>::iterator biggerNumber = smallerNumber + 1; while(biggerNumber < numbers.end()) { // if any non-zero number appears more than once in the array, // the array can't be continuous if(*biggerNumber == *smallerNumber) return false; numberOfGap += *biggerNumber - *smallerNumber - 1; smallerNumber = biggerNumber; ++biggerNumber; } return (numberOfGap > numberOfZero) ? false : true; } |
或者排除法:
1)確認5張牌中除了0,其餘數字沒有重複的(可以用表統計的方法且記錄0的個數);
2)滿足這樣的邏輯:(max,min分別代表5張牌中的除0以外的最大值最小值)
如果沒有0,則max-min=4,則為順子,否則不是
如果有一個0,則max-min=4或者3,則為順子,否則不是
如果有兩個0,則max-min=4或者3或者2,則為順子,否則不是
4.寫一個記憶體管理儲存器,已知學生的學籍id,姓名,性別,省份,個性簽名等資訊。
要求:用C++;Linux環境下;至少建立兩個索引加快查詢;執行緒安全;高效的增刪改查。
5. 一段關於redis KEYS 命令英文簡介,說明使用KEYS這個命令會導致什麼問題和有什麼解決方法。
後記:本人面到了技術2面+hr面,最終掛了。也許是因為不是科班出身,或者競爭對手學校牌子較好,還有不能上課期間全職去實習的原因吧。
相關文章
- 百度實習生筆試題求教筆試
- 騰訊PHP實習生筆試題目及答案解析PHP筆試
- 2018網易筆試程式設計題----重排數列筆試程式設計
- 2017騰訊Web前端實習生招聘筆試題總結Web前端筆試
- 網易內推筆試筆試
- (網易2018校招筆試)[程式設計題] 魔法幣筆試程式設計
- (網易2018校招筆試)[程式設計題] 相反數筆試程式設計
- (網易2018校招筆試)[程式設計題] 字串碎片筆試程式設計字串
- 常見Java問題及筆試題(十七)——阿里2017實習生研發題Java筆試阿里
- 找工作學習筆記2------阿里巴巴實習生筆試題(含答案)筆記阿里筆試
- 網易遊戲開展20所學校公益助學計劃遊戲
- 網易金融前端實習生電話面試整理前端面試
- (網易2018校招筆試)[程式設計題] 遊歷魔法王國筆試程式設計
- 2012 百度實習生筆試(1)筆試
- 筆試題目——程式設計題筆試程式設計
- 【筆試實戰】藍橋官網線上刷題100題計劃【第一輪】筆試
- 【筆試技巧】碰到遊戲設計題型怎麼解答?有哪些思路?筆試遊戲設計
- 網易策劃分享:從社交的角度瞭解遊戲遊戲
- 網易遊戲是如何做測試的?遊戲
- 尤拉計劃605題:結對投幣遊戲遊戲
- 網易遊戲啟動“創作熱愛者計劃”,全面扶持內容創作遊戲
- 網易2007Hust遊戲開發工程師筆試遊戲開發工程師筆試
- 網易遊戲登入密碼加密破解小試遊戲密碼加密
- 網易2020校招資料分析方向提前批筆試題解析筆試
- 演算法題-測試用例執行計劃演算法
- 軟體測試-測試計劃
- 筆試題目——研發工程師筆試題筆試工程師
- 網易智企釋出“易+”開源計劃,網易會議元件正式開源元件
- 網易遊戲研發工程師2018春招線上筆試(不全 未測)遊戲工程師筆試
- 騰訊筆試題筆試
- java筆試題Java筆試
- shell 筆試題筆試
- SQL 筆試題SQL筆試
- 設計模式面試與筆試題剖析(三)設計模式面試筆試
- 設計模式面試與筆試題剖析(二)設計模式面試筆試
- web測試計劃(流程)Web
- 測試計劃和測試報告測試報告
- 測試筆試多選題筆試