tencent騰訊筆試題
騰訊的流程是一筆和四面。前三次面試都是技術面,hr面基本不刷人。筆試成績決定面試順序。技術面可能要寫程式碼,做智力題目。
主要是c/c++、資料結構、作業系統等方面的基礎知識。好像有sizeof、樹等選擇題。填空題是補充完整程式。附加題有寫演算法的、程式設計的、資料庫sql語句查詢的。還有一張開放性問題。
1.請定義一個巨集,比較兩個數a、b的大小,不能使用大於、小於、if語句。
int const shift = sizeof(int)*8-1;
unsigned mask = (0x1
max_num = b;
else
max_num = a;
#define Max(a,b) ( a/b)?a:b
2.如何輸出原始檔的標題和目前執行行的行數
int line= __LINE__;
char *file = __FILE__;
cout<<"file name is "<<(file)<<",line is "< 3.兩個數相乘,小數點後位數沒有限制,請寫一個高精度演算法
與大數相乘原理一樣,只是調整小數點位置,即有效小數個數
演算法提示:
輸入 string a, string b;計算string c=a*b; 返回 c;
1, 紀錄小數點在a,b中的位置l1,l2,則需要小數點後移動位置數為l=length(a)+length(b)-l1-l2-2;
2, 去掉a,b中的小數點,(a,b小數點後移,使a,b變為整數)
3, 計算c=a*b; (要麼用java的BigInterger搞, 要麼自己用C++寫高精度數乘法,超過百萬位,用FFT,我就不細說,這都預先寫過就別做了)
4, 輸出c,(注意在輸出倒數第l個數時,輸出一個小數點。若是輸出的數少於l個,就補0)
4.寫一個病毒
while (1)
{
int *p = new int[10000000];
}
上面這個不對,沒有傳染性,寄生性……
5.不使用額外空間,將 A,B兩連結串列的元素交叉歸併將樹序列化 轉存在陣列或 連結串列中
struct st{
int i;
short s;
char c;
};
sizeof(struct st);
8
char * p1;
void * p2;
int p3;
char p4[10];
sizeof(p1...p4) =?
4,4,4,10
5.讓你在100000000個浮點數中找出最大的10000個,要求時間複雜度優。
最小堆
二分查詢
快速排序
雙向連結串列的刪除結點
有A、B、C、D四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1、2、5、10分鐘,只有一支手電,並且同時最多隻能兩個人一起過橋。請問,如何安排,能夠在17分鐘內這四個人都過橋?
基礎題有15道選擇和2道讀程式填空。選擇題的確是很基礎,主要考資料結構,還有一些體系結構、資料庫的題目;讀程式題跟我們平時考試的.差不多,一道是兩個升序鏈合併成一個升序鏈+遞迴,一道是四色著色方案
附加題有幾道沒有看清楚。有一道是unix防僵死演算法,最後一道是sql查詢,還有幾道忘了,其中一個是很長的程式題。。
發信人: charly (查理一世), 板面: Work
標 題: 騰訊筆試題
發信站: 飄渺水雲間 (Sat Nov 11 10:55:33 2006), 轉信
15個選擇題,60分
一個程式填空,40分
三道附加題60分
附加題考的是
不用第三個變數實現兩個整形變數的交換linux的子程序作業系統資源搶佔管理,兩個程序要對檔案進行獨佔訪問,採用共享變數,判斷可行否書寫strcpy()
時間兩個小時,選擇題 15*4
然後是程式填空題 10 (2*5), 30 (10*3)
附加題用c++ 實現一個鏈地址hash。
程式填空題我就不說了,比較easy的說,值得一提的是選擇題。
絕大部分考的是C++,我大致說下主要部分吧:
涉及程式執行壓棧的:1道
涉及容器和迭代器的:4道
涉及虛擬函式以及dynamic_cast的 3道
涉及引數傳遞的 1道
簡單的程式段落判斷 2道
涉及類的靜態成員賦值的 1道
剩下的是雜七雜八的。
不管怎麼說,假如你把c++ primer 仔細閱讀了一遍,基本上沒問題。考的有些細,沒有涉及演算法和編譯等知識,所以我同屋一個兄弟很鬱悶,因為他linux底層比較好,本來報的是後臺開發,哪知道結果考這種型別的題目。
程式填空的考了檔案操作,以及陣列移動等。附加題比較簡單的說,只要把資料結構的hash部分好好看,然後用class組裝一下就ok了。最後祝大家好運,今年騰訊計劃50%的是校園招聘,感覺很不多