- 相關(guān)推薦
騰訊筆試題(一、二)
騰訊筆試題(一)
騰訊的流程是一筆和四面。前三次面試都是技術(shù)面,hr面基本不刷人。筆試成績決定面試順序。技術(shù)面可能要寫代碼,做智力題目。
主要是c/c++、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)等方面的基礎(chǔ)知識(shí)。好像有sizeof、樹等選擇題。填空題是補(bǔ)充完整程序。附加題有寫算法的、編程的、數(shù)據(jù)庫sql語句查詢的。還有一張開放性問題。
1.請定義一個(gè)宏,比較兩個(gè)數(shù)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.如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)
int line= __LINE__;
char *file = __FILE__;
cout<<"file name is "<<(file)<<",line is "< 3.兩個(gè)數(shù)相乘,小數(shù)點(diǎn)后位數(shù)沒有限制,請寫一個(gè)高精度算法與大數(shù)相乘原理一樣,只是調(diào)整小數(shù)點(diǎn)位置,即有效小數(shù)個(gè)數(shù)
算法提示:
輸入 string a, string b;計(jì)算string c=a*b; 返回 c;
1,紀(jì)錄小數(shù)點(diǎn)在a,b中的位置l1,l2,則需要小數(shù)點(diǎn)后移動(dòng)位置數(shù)為l=length(a)+length(b)-l1-l2-2;
2, 去掉a,b中的小數(shù)點(diǎn),
(a,b小數(shù)點(diǎn)后移,使a,b變?yōu)檎麛?shù))
3,計(jì)算c=a*b;
(要么用java的BigInterger搞, 要么自己用C++寫高精度數(shù)乘法,超過百萬位,用FFT,我就不細(xì)說,這都預(yù)先寫過就別做了
)
4,輸出c
(注意在輸出倒數(shù)第l個(gè)數(shù)時(shí),輸出一個(gè)小數(shù)點(diǎn)。若是輸出的數(shù)少于l個(gè),就補(bǔ)0)
4.寫一個(gè)病毒
while (1)
{
int *p = new int[10000000];
}
上面這個(gè)不對(duì),沒有傳染性,寄生性……
5.不使用額外空間,將 A,B兩鏈表的元素交叉歸并將樹序列化轉(zhuǎn)存在數(shù)組或 鏈表中
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個(gè)浮點(diǎn)數(shù)中找出最大的10000個(gè),要求時(shí)間復(fù)雜度優(yōu)。
最小堆
二分查找
快速排序
雙向鏈表的刪除結(jié)點(diǎn)
6、有A、B、C、D四個(gè)人,要在夜里過一座橋。他們通過這座橋分別需要耗時(shí)1、2、5、10分鐘,只有一支手電,并且同時(shí)最多只能兩個(gè)人一起過橋。請問,如何安排,能夠在17分鐘內(nèi)這四個(gè)人都過橋?
基礎(chǔ)題有15道選擇和2道讀程序填空。選擇題的確是很基礎(chǔ),主要考數(shù)據(jù)結(jié)構(gòu),還有一些體系結(jié)構(gòu)、數(shù)據(jù)庫的題目;讀程序題跟我們平時(shí)考試的差不多,一道是兩個(gè)升序鏈合并成一個(gè)升序鏈+遞歸,一道是四色著色方案附加題有幾道沒有看清楚。有一道是unix防僵死算法,最后一道是sql查詢,還有幾道忘了,其中一個(gè)是很長的程序題。
發(fā)信人: charly (查理一世), 板面: Work
標(biāo) 題: 騰訊筆試題
發(fā)信站: 飄渺水云間 (Sat Nov 11 10:55:33 2006), 轉(zhuǎn)信
15個(gè)選擇題,60分
一個(gè)程序填空,40分
三道附加題60分
附加題考的是
1、不用第三個(gè)變量實(shí)現(xiàn)兩個(gè)整形變量的交換linux的子進(jìn)程操作系統(tǒng)資源搶占管理,兩個(gè)進(jìn)程要對(duì)文件進(jìn)行獨(dú)占訪問,采用共享變量,判斷可行否
2、書寫strcpy()
時(shí)間兩個(gè)小時(shí),選擇題 15*4
然后是程序填空題 10 (2*5), 30 (10*3)
附加題用c++ 實(shí)現(xiàn)一個(gè)鏈地址hash。
程序填空題我就不說了,比較easy的說,值得一提的是選擇題。
絕大部分考的是C++,我大致說下主要部分吧:
涉及程序執(zhí)行壓棧的: 1道
涉及容器和迭代器的: 4道
涉及虛擬函數(shù)以及dynamic_cast的 3道
涉及參數(shù)傳遞的 1道
簡單的程序段落判斷 2道
涉及類的靜態(tài)成員賦值的 1道
剩下的是雜七雜八的。不管怎么說,假如你把c++ primer 仔細(xì)閱讀了一遍,基本上沒問題?嫉挠行┘(xì),沒有涉及算法和編譯等知識(shí),所以我同屋一個(gè)兄弟很郁悶,因?yàn)樗鹟inux底層比較好,本來報(bào)的是后臺(tái)開發(fā),哪知道結(jié)果考這種類型的題目。程序填空的考了文件操作,以及數(shù)組移動(dòng)等。附加題比較簡單的說,只要把數(shù)據(jù)結(jié)構(gòu)的hash部分好好看,然后用class組裝一下就ok了。
最后祝大家好運(yùn),今年騰訊計(jì)劃50%的是校園招聘,感覺很不多
騰訊筆試題(二)
一些騰訊筆試題及其答案
聲明:題目來自網(wǎng)絡(luò),答案大部分來自網(wǎng)絡(luò)并經(jīng)過整理;有些是自己查資料和請教他人得來的。
1.1、有A、B、C、D四個(gè)人,要在夜里過一座橋。
他們通過這座橋分別需要耗時(shí)1、2、5、10分鐘,只有一支手電,并且同時(shí)最多只能兩個(gè)人一起過橋。
請問,如何安排,能夠在17分鐘內(nèi)這四個(gè)人都過橋?
答案:A & B -->2 mins
1 mins <-- A
C & D -->10 mins
2 mins <-- B
A & B --> 2 mins
一共 2 + 1 + 10 + 2 + 2 = 17 mins
1.2 、1-20的兩個(gè)數(shù)把和告訴A,積告訴B,A說不知道是多少,
B也說不知道,這時(shí)A說我知道了,B接著說我也知道了,問這兩個(gè)數(shù)是多少?
答案:2和3
答案有3個(gè):
1 2和2
2 2和3
3 2和4
第一個(gè)大概是(2,2)吧
A得到的是2+2=4,B得到的是2*2=4
開始A當(dāng)然不知道,因?yàn)橛锌赡苁?2,2)或(1,3)
這時(shí)B也不知道,因?yàn)橛锌赡苁?2,2)或(1,4),而且這兩種情況A無均會(huì)答"不知道"
這時(shí),我就已經(jīng)知道了,因?yàn)槿绻?1,3),B得到的是3,只有(1,3)這種情況,就不會(huì)回答"不知道"
由B的答案,A可以肯定是(2,2)
同樣,A說"知道"了以后,B也就知道了
因?yàn)槿绻?1,4),A得到的是5,只憑第二步B說"不知道",A不可能在第三步便"知道"
所以B可以斷定,是(2,2)
邏輯推理:這兩個(gè)數(shù)是多少?
兩個(gè)人A,B。數(shù)字為2-100之間的自然數(shù)。現(xiàn)找出兩個(gè)數(shù),把其和告訴A,把其積告訴B。然后問A知道不知道是哪兩個(gè)數(shù),A說:“雖然我
不知道,但是肯定B也不知道! 再問B,B說:“本來我不知道,但是聽到A說這句話,現(xiàn)在我知道了!,A聽到B說他知道了,然后就說:
“現(xiàn)在我也知道了”。那么這兩個(gè)數(shù)是多少呢?
由A說:“雖然我不知道,但是肯定B也不知道。”得:和不是兩個(gè)素?cái)?shù)的和
得出以下數(shù)字:
11,17,23,27,29,35,37,41,47,51,53,57,59。。。。。等
通過以上列出的和,推出積的可能性:
和-》積
11-》18,24,28,30
17-》30,42,52,60,66,70,72
23-》42,60,76,90,102,112,120
27-》50,72,92,110,126,140,152。。。。
29-》54,78,100,120,115,138,154。。。。
35-》66,96,124,150,174,196。。。。
根據(jù)“B說:“本來我不知道,但是聽到A說這句話,現(xiàn)在我知道了。” ”我們首先可以刪除一些重復(fù)出現(xiàn)的積,如30,120
得到:
11-》18,24,28,
17-》52,
23-》42,76,
27-》50,92。。。
29-》54,78。。。。
35-》96,124。。。
由“A對(duì)B說:呵呵,我也知道了!笨梢灾婪e是唯一的,那只有52了
所以得到和是17,積是52
答案就是4和13。
1.3 、爸爸,媽媽,妹妹,小強(qiáng),至少兩個(gè)人同一生肖的概率是多少?
1-12*11*10*9/12*12*12*12 = 1-55/96 = 41/96
1.4 某人去玩具店買小熊,單價(jià)30元. 付給玩具店老板100元玩具店老板沒零錢,
去水果店換了100元零錢回來找給那人70元. 那人走后, 水果店老板找到玩具店老板說剛才的100元是假幣,
玩具店老板賠償了水果店老板100元
問:玩具店老板損失了多少錢?
答案: 70+小熊的進(jìn)價(jià)
2 請定義一個(gè)宏,比較兩個(gè)數(shù)a、b的大小,不能使用大于、小于、if語句
答案:
#define max(a,b) ((((long)((a)-(b)))&0x80000000)?b:a)
若a > b ,則a-b的二進(jìn)制最高位為0,與上任何數(shù)還是0,所以大數(shù)為a;
否則,a-b為負(fù)數(shù),二進(jìn)制最高位為1,與上0x80000000(最高位為1其他為0)之后為1,所以此時(shí)的大數(shù)為b.
3 計(jì)算 a^b << 2
答案:
運(yùn)算符優(yōu)先級(jí):括號(hào),下標(biāo),->和.(成員)最高;
單目的比雙目的高;
算術(shù)雙目的比其他雙目的高;
位運(yùn)算 高于 關(guān)系運(yùn)算;
關(guān)系運(yùn)算 高于 按位運(yùn)算(與,或,異或);
按位運(yùn)算 高于 邏輯運(yùn)算;
三目的只有一個(gè) 條件運(yùn)算,低于邏輯運(yùn)算;
賦值運(yùn)算僅比 , (順序運(yùn)算)高。
在此題中,位左移"<<" 優(yōu)先級(jí)高于按位異或"^",所以b先左移兩位(相當(dāng)于乘以4),再與a異或。
例如: 當(dāng) a = 6; b = 4 時(shí); 則 a^b<<2 = 22
4、如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)?
答案: printf("The file name: %dn", __FILE__);
printf("The current line No:%dn", __LINE__);
ANSI C標(biāo)準(zhǔn)預(yù)定義宏:
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__ 當(dāng)要求程序嚴(yán)格遵循ANSI C標(biāo)準(zhǔn)時(shí)該標(biāo)識(shí)符被賦值為1
__cplusplus__ 當(dāng)編寫C++程序時(shí)該標(biāo)識(shí)符被定義
5、 a[3][4]哪個(gè)不能表示 a[1][1]: *(&a[0][0]+5) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4)
答案: *(*(a+1)+1)
a是數(shù)組的首地址,a+1相當(dāng)于&a[0][1], *(a+1)=a[0][1],則*(*(a+1)+1)= *(a[0][1] + 1) =/= a[1][1]
6、 fun((exp1,exp2),(exp3,exp4,exp5))有幾個(gè)實(shí)參?
答案:兩個(gè)。
形式參數(shù):在聲明和定義函數(shù)時(shí),寫在函數(shù)名后的括號(hào)中的參數(shù)。
實(shí)參是調(diào)用參數(shù)中的變量,行參是被調(diào)用函數(shù)中的變量。
7、 希爾 冒泡 快速 插入 哪個(gè)平均速度最快?
答案:快速排序
快速排序、歸并排序
[騰訊筆試題(一、二)]
【騰訊筆試題(一、二)】相關(guān)文章:
騰訊面試題08-12
騰訊面試題08-18
騰訊 面試題 android10-25
騰訊筆試題目及答案06-21
騰訊運(yùn)營筆試題目10-03
騰訊軟件測試筆試題08-03
騰訊校招在線筆試題目07-20
屆騰訊實(shí)習(xí)校園面試題07-18