2016年騰訊校招筆試題(研發崗)
最近網際網路筆試較頻繁,也跟著師兄一起做了一些公司的筆試題,先將題記錄下來吧,答案慢慢補。希望對自己明年找工作有幫助!首先上騰訊的筆試題,騰訊是我的dream offer啊啊啊啊啊啊啊!
一、不定項選擇題
共30題,共60分,請認真閱讀每道題目,並按題目要求進行作答
1. 下面關於DNS說法正確的是()
A、DNS的作用是域名和IP地址的相互對映
B、DNS協議執行在UDP協議之上
C、DNS協議埠號為53
D、DNS的預設快取時間為1小時
解析:
A. DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的
BC.DNS協議執行在UDP協議之上,使用埠號53。
D. 瀏覽器:chrome對每個域名會預設快取60s,IE將DNS快取30min,Firefox對DNS快取功能,但是預設快取時間只有1分鐘,safari約為10s。
windows DNS快取的預設值是MaxCacheTTL,它的預設值是86400s,也就是一天。
瀏覽器DNS快取的時間跟ttl值無關,每種瀏覽器都使用一個固定值。
答案:ABC
2. 檔案系統管理的最小磁碟空間單位是()
A、扇區
B、頁面
C、簇
D、檔案
解析:
從應用程式包括使用者介面的角度來看,存取資訊的最小單位是Byte(位元組);
從磁碟的物理結構來看存取資訊的最小單位是扇區,一個扇區是
從作業系統對硬碟的存取管理來看,存取資訊的最小單位是簇,簇是一個邏輯概念,一個簇可以是2、4、8、16、32或64個連續的扇區。一個簇只能被一個檔案佔用,哪怕是隻有1個位元組的檔案,在磁碟上儲存時也要佔用一個簇,這個簇裡剩下的扇區是無用的。所以,簇可以理解為磁碟存取資訊的最小單位。
答案:D
4. 以下程式碼列印的結果是(假設執行在64位計算機上):
struct st_t { int status; short *pdata; char errstr[32]; }; st_t st[16]; char *p=(char *)( str[2].errstr + 32 ); printf("%d", (p-(char *)(str)));
A、32
B、120
C、114
D、144
正確答案:D
注意敲到編譯器執行的時候加上main函式,struct st_t st[16]定義的時候要加上struct
5. 假設就緒佇列中有10個執行緒,系統將時間片設定為200ms,CPU進行執行緒切換要花費10ms,則系統開銷所佔的比例約為:
A、0.01
B、0.05
C、0.1
D、0.2
6.
int main(void)
{
char *p[] = {"TENCENT","CAMPUS","RECRUITING"};
char **pp[] = { p+2, p+1, p };
char ***ppp = pp;
printf("%s", **++ppp);
printf("%s", *++*++ppp);
return 0;
}
A、CAMPUS RECRUITING
B、RECRUITING CAMPUS
C、CAMPUS CAMPUS
D、RECRUITING RECRUITING
正確選項:C
7. IP地址為140.123.0.0的地址是B類地址,若要切割為10個子網,而且都要連線上Internet,請問子網掩碼應設為()
A、255.0.0.0
B、255.255.0.0
C、255.255.128.0
D、255.255.240.0
8. 設有2條路由21.1.193.0/24和21.1.194.0/24,如果進行路由匯聚,匯聚這兩條路由的地址是()
A、21.1.200.0/22
B、21.1.192.0/23
C、21.1.192.0/21
D、21.1.224.0/20
9. 以下哪些屬於線性結構?
A、佇列
B、棧
C、線性表
D、樹
E、圖
10. 二叉樹的節點的對稱序列是ABCDEFG,後序序列是BDCAFGE,則該二叉樹的前序序列是:
A、EGFACDB
B、EACBDGF
C、EAGCFBD
D、EGACDFB
11. 在Linux上,對於多程序,子程序繼承了父程序的下列哪些?
A、程序地址空間
B、共享記憶體
C、訊號掩碼
D、已開啟的檔案描述符
E、以上都不是
12. 在c++語言中,一下說法正確的是:
A、多型是通過虛表實現的
B、建構函式可以宣告為虛擬函式
C、解構函式不可以宣告為虛擬函式
D、抽象類中至少包含一個純虛擬函式
13.
class Base
{
public:
virtual ~Base() { std::out << "Base Destructor" << std::endl; }
}
class Derived : public Base
{
public:
~Derived() { std::out << "Derived Destructor " << std::endl; }
}
Base* p=new Derived();
delete p;
在delete p時,控制檯會輸出什麼內容
A、Base Destructor
B、Derived Destructor
C、Base Destructor
Derived Destructor
D、Derived Destructor
Base Destructor
15. 以下關於棧的說法錯誤的是:
A、在棧空的情況下,一定不能作出棧操作,否則產生溢位
B、棧一定是順序儲存的線性結構
C、空棧是所有元素都為0的棧
D、一個棧的輸入序列為:A, B, C, D。可以得到輸出序列:C, A, B, D
16. 下列說法錯誤的是?
A、struct宣告的型別是值型別
B、值型別是在堆上分配的
C、值型別不會被垃圾回收
D、值型別不需要指標來引用
E、引用型別在堆上分配
F、值型別在棧上分配
17.
var foo = "Hello";
(function(){
var bar = " World";
alert(foo + bar);
})();
alert(foo + bar);
其中alert兩次輸出結果為?
A、hello world報錯
B、hello world hello world
C、hello world hello
18. 針對二分查詢演算法,假設一個有序陣列有136個元素,那麼要查詢到第10個元素,需要比較的元素為:
A、68,34,17,9,13,11,10
B、68,34,17,8,12,10
C、69,35,18,10
D、68,34,18,9,13,11,10
19. 64位機上,一個結構體有三個成員,分別是char、int、short型別,三個成員位於結構體中不同位置時整個結構體的大小可能是下面哪些值?
A、12
B、7
C、8
D、16
20. 以下程式碼的執行情況:?
int f(int a, int b, int c)
{
return 0;
}
int main()
{
return f(printf("a"), printf("b"), printf("c"));
}
A、編譯不過
B、執行錯誤
C、abc
D、cba
21. 那種資料結構用於執行遞迴呼叫:
A、陣列
B、連結串列
C、堆疊
D、二叉樹
22. 若磁頭的當前位置在第100磁軌,現在有一磁碟讀寫請求序列如下:23,376,205,132,19,61,190,398,29,4,18,40,若採用最短尋道時間優先演算法,則平均尋道長度是多少?
A、133
B、58.3
C、57.7
D、70.9
23. 1. 下列程式資料結構是多少(大A的ascii碼是65)?
#include<stdio.h>
enum etest{
eparam1,
eparam2,
eparam3 = 10,
eparam4,
eparam5 = 'a',
eparam6
}epr;
int main()
{
printf("%d,%d", eparam4, eparam6);
return 0;
}
A、3,98
B、11,34
C、11,98
D、3,34
24. 寢室有6個同學打dota,分為對立的兩方,一方是天災軍團,一方是近衛軍團。現請你設定賽程以及每場的對陣(每方最少1人,最多5人),請問至少地進行多少場比賽,才能使得賽程結束後每位同學都和其他同學做過對手?
A、2
B、3
C、4
D、5
25. 具有3個節點的二叉樹有幾種形態?
A、3
B、4
C、5
D、6
26. 請選擇下列程式的輸出結果():
#include<stdio.h>
int main()
{
const int N=10;
const int M=2;
int* a=new int[N];
for(int i=0;i<N;++i)
a[i]=(0==i%2)?(i+2):(i+0);
int (*b)[N/M] = (int (*)[N/M])a;
for(int i=0; i<M; ++i)
for(int j=0; j<N/M; ++j)
printf("%d", b[i][j]);
return 0;
}
A、21436587109
B、224466881010
C、03254769811
D、21436687101
28. 從一幅標準撲克牌中抽牌,抽到黑色牌就繼續抽,直至抽到紅色牌,則停止,按照概率算,平均下來每次能抽到多少張牌?(也就是三國殺中甄姬的洛神技能,得到牌數的期望值)
A、1
B、1.2
C、0.8
D、0.9
29. C語言,設有巨集定義:
#define A 4+5
#define B A*A
則表示式B*B的值為:
A、81
B、69
C、6561
D、33
30. 假設有如下這樣一個類:
class X
{
public:
void xoo() {}
};
請問sizeof(X)的值為多少?
A、0
B、1
C、2
D、4
E、8
二、問答題
請認真閱讀每道題目,並按題目要求進行作答
1. 小明想自己做一個簡單的網上商店,請幫他設計一個最簡單的資料庫系統,需要具備管理商品、管理客戶及訂單等功能。
2. 給定一個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入為10,程式應該輸出結果為2。(共有兩對質數的和為10,分別為(5,5),(3,7))
答題前請選擇使用的程式語言,否則將會被判定為錯誤答案。自動補全關鍵字的快捷鍵是Ctrl+I,撤銷快捷鍵是Ctrl+Z.
3. geohash編碼:geohash常用於將二維的經緯度轉換為字串,分為兩步:第一步是經緯度的二進位制編碼,第二步是base32轉碼。
此題考察緯度的二進位制編碼:演算法對緯度[-90, 90]通過二分法進行無限逼近(取決於所需精度,本題精度為6)。注意,本題進行二分法逼近過程中只採用向下取整來進行二分,針對二分中間值屬於右區間。演算法舉例如下:
針對緯度為80進行二進位制編碼過程:
1)區間[-90, 90]進行二分為[-90, 0),[0,90],成為左右區間,可以確定80為右區間,標記為1;
2)針對上一步的右區間[0,90]進行二分為[0, 45), [45,90],可以確定80是右區間,標記為1;
3)針對[45,90]進行二分為[45,67)[67,90],可以確定80為右區間,標記為1;
4)針對[67,90]進行二分為[67,78),[78,90],可以確定80為右區間,標記為1;
5)針對[78,90]進行二分為[78,84),[84,90],可以確定80為左區間,標記為0;
6)針對[[78,84]進行二分為[78,81),[81,84],可以確定80為左區間,標記為0;
已達精度要求,編碼為111100。
樣本輸入:80
樣本輸出:111100
答題前請選擇使用的程式語言,否則將會被判定為錯誤答案。自動補全關鍵字的快捷鍵是Ctrl+I,撤銷快捷鍵是Ctrl+Z.
4. 騰訊大廈有39層,你手裡有兩顆一模一樣的玻璃珠。當你拿著玻璃珠在某一層往下扔的時候,一定會有兩個結果,玻璃珠碎了或者沒碎。大廈有個臨界樓層,低於它的樓層,往下扔玻璃珠,玻璃珠不會碎,等於或高於它的樓層,扔下玻璃珠,玻璃珠一定會碎,玻璃珠碎了就不能再扔。現在讓你設計一種方式,使得在該方式下,最壞的情況扔的次數比其他任何方式最壞的次數都少,也就是設計一種最有效的方式。
請給出正確答案,給出演算法程式碼有加分。
網上有類似的題,http://www.cnblogs.com/houkai/p/3973046.html