騰訊筆試
1 計(jì)算 a^b << 2 (運(yùn)算符優(yōu)先級(jí)問(wèn)題)
int a = 2;
int b = 1;
int c = 2;
cout << (a ^ b << c);
6
2 根據(jù)先序中序求后序
3 a[3][4]哪個(gè)不能表示 a[1][1]: *(&a[0][0]) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4)
cout << *(&a[1][1]) << endl
<<*(*(a+1)+1) << endl
<< *(&a[1]+1) << endl
<< *(&a[0][0]+4);
6
6
0012FEC8
5
4 for(int i...)
for(int j...)
printf(i,j);
printf(j)
會(huì)出現(xiàn)什么問(wèn)題
J沒(méi)有定義,不在其作用域
5 for(i=0;i<10;++i,sum+=i);的運(yùn)行結(jié)果
6 10個(gè)數(shù)順序插入查找二叉樹(shù),元素62的比較次數(shù)
7 10個(gè)數(shù)放入模10hash鏈表,最大長(zhǎng)度是多少
8 fun((exp1,exp2),(exp3,exp4,exp5))有幾個(gè)實(shí)參
2 個(gè)
9 希爾 冒泡 快速 插入 哪個(gè)平均速度最快
10 二分查找是 順序存儲(chǔ) 鏈存儲(chǔ) 按value有序中的哪些
11 順序查找的平均時(shí)間
12 *p=NULL *p=new char[100] sizeof(p)各為多少 4
13 頻繁的插入刪除操作使用什么結(jié)構(gòu)比較合適,鏈表還是數(shù)組
14 enum的聲明方式 enum COLOR{RED,BLUE,GREEN};
大題:
1 把字符串轉(zhuǎn)換為小寫(xiě),不成功返回NULL,成功返回新串
char* toLower(char* sSrcStr)
{
char* sDest= NULL;
if( __1___)
{
int j;
sLen = strlen(sSrcStr);
sDest = new [_______2_____];
if(*sDest == NULL)
return NULL;
sDest[sLen] = '/0';
while(_____3____)
sDest[sLen] = toLowerChar(sSrcStr[sLen]);
}
return sDest;
}
char toLowerChar(char a)
{
if(a >= 'A' && a <= 'Z')
return a - 'A' + 'a';
}
char* toLower(char* sSrcStr)
{
char* sDest= NULL;
if(sSrcStr)
{
int j;
int sLen = strlen(sSrcStr);
sDest = new char[sLen + 1];
if(*sDest == NULL)
return NULL;
sDest[sLen] = '/0';
while(sLen--)
sDest[sLen] = toLowerChar(sSrcStr[sLen]);
}
return sDest;
}
2 把字符串轉(zhuǎn)換為整數(shù) 例如:"-123" -> -123
main()
{
.....
if( *string == '-' )
n = ____1______; -1* num(string+1)
else
n = num(string);
.....
}
int num(char* string)
{
for(;!(*string==0);string++)
{
int k;
k = __2_____; *string
j = --sLen;
while( __3__) j--
k = k * 10;
num = num + k;
}
return num;
}
附加題:
1 linux下調(diào)試core的命令,察看堆棧狀態(tài)命令
2 寫(xiě)出socks套接字 服務(wù)端 客戶(hù)端 通訊程序
3 填空補(bǔ)全程序,按照我的理解是添入:win32調(diào)入dll的函數(shù)名
查找函數(shù)入口的函數(shù)名 找到函數(shù)的調(diào)用形式
把formView加到singledoc的聲明 將singledoc加到app的聲明
4 有關(guān)系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)
1 問(wèn)上課程 "db"的學(xué)生no
2 成績(jī)最高的學(xué)生號(hào)
3 每科大于90分的人數(shù)
騰訊
待遇:碩士年薪10萬(wàn),本科年薪7萬(wàn)
1)筆試: C++,基礎(chǔ)題目與程序員考試水平相當(dāng)。
附加題:
1.有10億個(gè)浮點(diǎn)數(shù),從中找出1萬(wàn)個(gè)最大的數(shù)。寫(xiě)一個(gè)高性能的算法
2.Unix后臺(tái)進(jìn)程的實(shí)現(xiàn)
3.MFC的多文檔模板的加載
4.數(shù)據(jù)庫(kù)SQL語(yǔ)句查詢(xún)
2)面試
技術(shù)1面:感覺(jué)騰訊的面試安排不是很合理,進(jìn)去之后有12個(gè)面試官,隨便找一個(gè)面。面我的是個(gè)鐵面判官,問(wèn)了幾個(gè)問(wèn)題,DirectX技術(shù)有沒(méi)有接觸過(guò)? 2D,3D引擎原理?我一頭霧水,跟他沒(méi)什么好談的,感覺(jué),彼此都不感興趣。然后他就問(wèn)了一個(gè)很基礎(chǔ)的問(wèn)題,寫(xiě)一個(gè)程序:從雙向循環(huán)鏈表中刪除一個(gè)節(jié)點(diǎn)。這個(gè)當(dāng)然沒(méi)有什么問(wèn)題。不過(guò)出來(lái)后感覺(jué)就沒(méi)戲
1.請(qǐng)定義一個(gè)宏,比較兩個(gè)數(shù)a、b的大小,不能使用大于、小于、if語(yǔ)句
#define check(a,b) char*r=((a)-(b))==abs((a)-(b))? "greater":"less"
2.如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)
cout<<"Filename"<<_ _FILE__<<"Line"<<__LINE__<<endl;
3、兩個(gè)數(shù)相乘,小數(shù)點(diǎn)后位數(shù)沒(méi)有限制,請(qǐng)寫(xiě)一個(gè)高精度算法
4、寫(xiě)一個(gè)病毒
while(1)
{
int *p=new int [10000000];
}
5、有A、B、C、D四個(gè)人,要在夜里過(guò)一座橋。他們通過(guò)這座橋分別需要耗時(shí)1、2、5、10分鐘,只有一支手電,并且同時(shí)最多只能兩個(gè)人一起過(guò)橋。請(qǐng)問(wèn),如何安排,能夠在17分鐘內(nèi)這四個(gè)人都過(guò)橋?
AB過(guò)2分 A回來(lái)1分 3
CD過(guò)10 B回來(lái)2分 12
AB過(guò)2分 共計(jì)3+2+12=17
2005年騰訊招聘
選擇題(60)
c/c++ os linux 方面的基礎(chǔ)知識(shí) c的Sizeof函數(shù)有好幾個(gè)!
程序填空(40)
1.(20) 4空x5
不使用額外空間,將 A,B兩鏈表的元素交叉歸并
2.(20) 4空x5
MFC 將樹(shù)序列化 轉(zhuǎn)存在數(shù)組或 鏈表中!
1, 計(jì)算 a^b << 2 (運(yùn)算符優(yōu)先級(jí)問(wèn)題) :<<的優(yōu)先級(jí)高于^
2 根據(jù)先序中序求后序
3 a[3][4]哪個(gè)不能表示 a[1][1]: *(&a[0][0]) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4) :*(&a[0][0]+4)應(yīng)加5 *(&a[1]+1)
4 for(int i...)
for(int j...)
printf(i,j);
printf(j)
會(huì)出現(xiàn)什么問(wèn)題 :j沒(méi)有定義,不在其作用域內(nèi)
5 for(i=0;i<10;++i,sum+=i);的運(yùn)行結(jié)果 :55先執(zhí)行循環(huán)體再執(zhí)行++i,sum+=i
6 10個(gè)數(shù)順序插入查找二叉樹(shù),元素62的比較次數(shù)
7 10個(gè)數(shù)放入模10hash鏈表,最大長(zhǎng)度是多少
8 fun((exp1,exp2),(exp3,exp4,exp5))有幾個(gè)實(shí)參 :兩個(gè),其中括號(hào)內(nèi)的","為逗號(hào)運(yùn)算符
9 希爾 冒泡 快速 插入 哪個(gè)平均速度最快
10 二分查找是 順序存儲(chǔ) 鏈存儲(chǔ) 按value有序中的哪些
11 順序查找的平均時(shí)間
12 *p=NULL *p=new char[100] sizeof(p)各為多少 :都是4
13 頻繁的插入刪除操作使用什么結(jié)構(gòu)比較合適,鏈表還是數(shù)組 :鏈表
14 enum的聲明方式 enum COLOR{RED,BLUE,GREEN};
15 1-20的兩個(gè)數(shù)把和告訴A,積告訴B,A說(shuō)不知道是多少,
問(wèn)題:A從2到99之間抽了2個(gè)數(shù)字,把和告訴B,積告訴C
B說(shuō)我不知道這2個(gè)數(shù),但是C也肯定不知道
C說(shuō)我開(kāi)始確實(shí)不知道,但是現(xiàn)在知道了
B說(shuō)這樣我也知道了
求這2個(gè)數(shù).為什么?
我的解答:
首先,正確答案是4和13。
設(shè)B得到的和記做B,C得到的積記做C,這兩個(gè)數(shù)記做x和y。
1.預(yù)備結(jié)論,
a)100以?xún)?nèi)的質(zhì)數(shù)有25個(gè),如下:
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,
b)歌德巴赫猜想,任何大于6的偶數(shù)都能寫(xiě)成兩個(gè)奇質(zhì)數(shù)的和。
c)B明顯大于等于6,而小于等于196
2.一些更要結(jié)論。
a)B不可能是偶數(shù)。因?yàn)锽如果是偶數(shù),而偶數(shù)都能寫(xiě)成兩個(gè)奇質(zhì)數(shù)的和,例如22=5+17,那么如果C=5*17=85,則因?yàn)镃=85只有一種質(zhì)因數(shù)分解方式,所以C知道這兩個(gè)數(shù)是5和17。也就是說(shuō),B說(shuō)“我不知道這2個(gè)數(shù),但是C也肯定不知道”這句話是錯(cuò)誤的,C有可能知道。
b)B是奇數(shù),并且一定不能寫(xiě)成兩個(gè)質(zhì)數(shù)的和。例如若B=19,那么就有可能是2和17,如果C=34=2*17,只有一種質(zhì)因數(shù)分解方式,所以C知道這兩個(gè)數(shù)。
那么不能寫(xiě)成兩個(gè)質(zhì)數(shù)的和的奇數(shù)見(jiàn)下:記做集合M
11,17,23,27,29,35,37,41,47,51,53,57,59,65,67,71,77,79,83,87,89,93,95,97,還有100至196之間的奇數(shù)(因?yàn)槔?03,雖然=101+2,但是101一經(jīng)大于100)
這些數(shù)的思路是這樣的,奇數(shù)=兩個(gè)質(zhì)數(shù)和,那一定有一個(gè)數(shù)是2。不如分析30-40的,可以用排除法,奇數(shù)有31,33,35,37,39,但是29+2=31,31+2=33,37+2=39所以要排除31,33,39剩余35,37。
所以B只可能是集合M中的數(shù)。
c)B可有多種可能的分解方式,但是只有一種是可以確定的。這句話如果不理解,后面有例子。
3.實(shí)際這個(gè)題可以分為兩個(gè)重要部分,一是找到一組這樣個(gè)數(shù),并證明這組數(shù)符合條件,而是證明其它的數(shù)組不滿足條件。本人只能證明的一部分,第二部分我目前沒(méi)有更好的方法,只能是列舉排除法。
4.下面實(shí)例分析
a)若B=11
x=2,y=9,那么C=18=3*6,C會(huì)這樣想,如果是3和6,那么B=9,而9可以是2+7,那么我C就是14,我肯定可以知道是2和7,所以不能是3和6。也就是說(shuō)若B=11,B可以判斷出是x=2,y=9
x=3,y=8,那么C=24=2*12=4*6,無(wú)論2+12,還是4+6都是偶數(shù),可以排除,B可以判斷出是x=2,y=9
x=4,y=7,C=2*14,2+16也可以排除,B可以判斷出是x=2,y=9
x=5,y=6,C=2*15,2+15=17,17是集合M中的數(shù),也就是說(shuō)C知道這兩個(gè)數(shù)是什么,但是B不能確定。
B有三組可以確定,那么,B就不知道究竟是那組了,只有一組能判斷出來(lái)才可以。
一個(gè)結(jié)論:
(ⅰ)C可以有多中分解方式,但分解中的x+y的和如果是M中的數(shù),那說(shuō)明這種分解方式不能排除,反之則能排除。
(ⅱ)如果B的幾種不同分解方式,有兩個(gè)或以上的C可以確定,那么這樣的B不滿足條件(B說(shuō)這樣我也知道了)
(ⅲ)如果C的分解方式中x或y是4,8,16……2^2,另一個(gè)是質(zhì)數(shù),那么這種分解方式可以排除,因?yàn),此時(shí)C的其他分解方式不過(guò)是,把質(zhì)因數(shù)2分給質(zhì)數(shù),這樣兩個(gè)數(shù)都是偶數(shù)了,那么和B也成了偶數(shù),這和前面的結(jié)論是矛盾的。
b)若B=17
x=2,y=15,那么C=30=5*6,5+6=11,屬于M,不能排除。
x=3,y=14,那么C=42=2*21,2+21=23,屬于M,不能排除。
x=4,y=13,那么C=52=2*26,2+26=28,不屬于M,可以排除。
x=5,y=12,那么C=60=3*20,3+20=23,屬于M,不能排除。
x=6,y=11,那么C=66=2*33,2+33=35,屬于M,不能排除。
x=7,y=10,那么C=70=2*35,2+35=37,屬于M,不能排除。
x=8,y=9,那么C=72=3*24,2+24=27,屬于M,不能排除。
這樣,只有一組可以排除,那就是說(shuō),如B=17,C根據(jù)他知道的積,只有在C=52時(shí),C才能判斷出來(lái),其余不能判斷。
c)其他的排除法,我只給出可以排除的兩種方法。(運(yùn)用了結(jié)論(ⅲ))
23=4+17=16+7。。27=4+23=8+19。。29=2+27=16+13。。35=4+31=32+3。。
37=8+29=32+5。。41=4+37=32+9。。47=4+43=16+31。。51=4+47=8+43。。
53=4+47=8+43。。57=4+53=16+41。。59=4+55=16+43。。65=4+61=16+49。。
67=8+59=64+3。。71=4+67=64+7。。77=4+73=64+13。。79=8+71=64+15。。
83=4+79=64+19。。87=4+83=64+23。。89=16+73=64+25。。91=8+83=64+27。
93=4+89=64+29。。97=4+93=64+33。。
超過(guò)100的奇數(shù)屬于集合M,所以還要研究這些數(shù),當(dāng)實(shí)在過(guò)于繁瑣,可以用64,32,尤其是64,因?yàn)樗俪艘匀魏钨|(zhì)數(shù)都將超過(guò)100,所以很容易找到一種,至于另一種留給讀者吧。
B也說(shuō)不知道,這時(shí)A說(shuō)我知道了,B接著說(shuō)我也知道了,問(wèn)這兩個(gè)數(shù)是多少
更多相關(guān)的筆試題目,大家敬請(qǐng)關(guān)注筆試欄目!
【騰訊筆試】相關(guān)文章:
騰訊筆試感受02-23
騰訊奔波筆試記03-24
騰訊產(chǎn)品廣州筆試經(jīng)驗(yàn)12-13
騰訊筆試題 試題分享02-24
騰訊編輯筆試題目11-21
騰訊筆試題目,絕對(duì)有用12-11
騰訊2013游戲策劃筆試經(jīng)驗(yàn)12-13
騰訊網(wǎng)筆試初感11-06