2018年腾讯笔试题(今年更难了)
2018騰訊秋招正式筆試題目
一、不定項選擇題
1、以下說法正確的是( )。
A. 由先序序列、中序序列可以還原出樹的原貌
B. 200,190,150,170,180,140,155,160,165,120是一個最大堆
C. 排序之前必須把所有待排數據加載到內存
D. 給定一組輸入,可以輸出一顆唯一的哈夫曼樹
參考答案:A
2、二叉樹的節點的對稱序列是IEGMOBA,后序序列是EMGIBAO,則該二叉樹的前序序列是( )
A. OIGEMAB
B. OIAGBEM
C. OAIGMBE
D. OABIGME
參考答案:A
O
/ \
I A
\ \
G B
/ \
E M
3、請選擇正確的描述。( )
A. 靜態變量和全局變量是在程序一開始時分配內存的,這部分內存無法回收,直至程序結束
B. 通常常來說,在堆上分配內存比在棧上分配內存效率更高
C. 當我預先知道待分配內存大小時,我就可以直接在棧上分配內存,只要不超過當前操作系統的可用內存大小,就永遠會成功
D. 內存泄漏就是指當A程序申請一塊內存時,有可能操作系統把B程序的一塊內存先交給A程序使用,等A程序結束后再返回給B程序,在內存借用的這段時間內,B程序就產生了內存泄漏
參考答案:A
解析:
棧上分配內存效率更高;棧上申請內存并不總是成功;內存泄漏是使用完成之后未回收又無法使用的區域。
4、對于棧操作,輸入序列ABCDEF,輸出序列BCDAEF,可能的棧操作是( )。
A. push, push,push, push, push, push, pop, pop, pop, pop, pop, pop
B. push, push,pop, push, pop, push, pop, pop, push, pop, push, pop
C. push, push,pop, push, pop, push, pop, push, pop, push, pop, pop
D. push, push,pop, push, pop, push, pop, pop, push, push, pop, pop
參考答案:B
5、關于浮點數,下面的描述不正確的是( )。
A. 總能找到一個32bit整數(32 bit int),來描述一個IEEE75432bit浮點數的整數部分
B. 總能找到一個IEEE75464bit浮點數,來描述一個32bit整數(32 bit int)
C. 表達式(0.666f -0.665f == 0.001f),無論在任何平臺,一定返回True
D. 當兩個不同的平臺都使用IEEE754作為浮點數標準時,他們的浮點運算結果就會嚴格一致
參考答案:C
6、有如下一個類似跳表的額數據結構:
每層都是已經排好序的鏈表,
level 1層的鏈表有所有元素,
level N層的鏈表只有levelN-1的1半的元素,
level N層的結點指向levelN-1層中相同的結點。
請問查找一個元素的時間復雜度是( )。
A. O(nlog2n)
B. O(n)
C. O(log2n)
D. O(n2)
參考答案:C
7、請問下列代碼的輸出是多少?( )
#include<stdio.h>
#define MAX100
int main()
{
int i = 0,sum = 0;
do{
if(i!=(i/9)*10)sum += i;}while(++i<MAX);printf(“%d\n”,sum);}
A. 450
B. 360
C. 4950
D. 4590
E. 以上答案都不正確
正確答案:D
8、在公司局域網上ping www.qq.com一定不涉及的網絡協議是(? )。
A. UDP
B. DNS
C. ICMP
D. RAAP
正確答案:A
9、有Area和City兩個表,兩表的數據如下所示:
Area:
ID Name
1 North
2 South
3 East
4 West
null null
City:
ID Name AreaID
1 北京 1
2 上海 2
3 廣州 3
4 深圳 4
5 null null
關于下面的sql語句,描述正確的是( )。
select * form City leftjoin Area on City_AreaID = Area.ID where AreaID>0 group by AreaID havingcount(Region)>0 order by count(Region) desc limit 1;
A. 該SQL執行會形成City和Area兩表的笛卡爾積
B. 該語句執行順序上,會先執行where再執行having再執行order by最后執行limit
C. 該語句執行順序上,會先執行from,再執行join,再執行where
D. select * formCity left join Area on City_AreaID = Area.ID 和select * form Cityinner join Area on City_AreaID = Area.ID這兩條SQL語句執行的結果是不同的
正確答案:B
10、假設QQ用戶包含8種狀態,QQ號碼為42億,最少用多少內存標識所有用戶狀態?( )
A. 約500M
B. 約1G
C. 約1.5G
D. 約2G
參考答案:C
42108*4=168*108=16.810^9=
11、程序最后輸出什么?( )
#define Mul(x ,y) ++x*y ++
int main()
{
inta = 2;
intb = 4;
intc = 8;
printf(“%d”,Mul(a+b,b+c));
return 0;
}
A. 84
B. 27
C. 33
D. 18
++a+b*b+c++=3+16+8=27
正確答案:A
12、以下關于HTTP返回碼的描述正確的是( )。
A. 403表示服務器接受了請求,但卻拒絕處理
B. 5xx這種5開頭的錯誤,都是服務器錯誤
C. ajax請求,返回數據正確時,返回碼是201而不是200
D. 301和307表示服務器要求重定向
參考答案:B
13、客戶端C和服務器S之間建立了一個TCP連接,TCP最大段長度為2KB,客戶端C當前的擁塞窗口是16KB,向服務器S連續發送2個最大段之后,成功接收到服務器S發送的第一段確認段,確認段中通告的接收窗口大小是8KB,那么此時客戶端C還可以向服務器S發送最大字節數是( )。
A. 16KB
B. 14KB
C. 8KB
D. 6KB
E. 4KB
參考答案:D
min(16,8)-2=8-2=6
14、請選擇可以正確將pBase指向對象的num_list1數組初始化為0的方式。( )
Class Base{
intnum_list1[10];
public:
virtual voidFunc(){memset(num_list1, 0, sizeof(num_list1));}
};
class Derived : publicBase{
int num_list2[10];
public:
virtualFunc(){memset(num_list2, 0, sizeof(num_list2));}
};
Base*pBase = newDerived();
A. memset(pBase->num_list1, 0, sizeof(int)*10);
B. pBase->Func();
C. memset(pBase,0, sizeof(Base));
D. memset(pBase,0, sizeof(Derived));
E. pBase->Base::Func();
正確答案:A
15、如果主存容量為2G,硬盤容量為64G,計算機地址寄存器是32位,則虛存的最大容量是以下哪個?( )
A. 2G
B. 4G
C. 64G
D. 66G
參考答案:B
2^32=4G
16、以下關于鏈表的描述哪個正確?( )
A. 鏈表的元素在內存中不可以連續存放
B. 鏈表可用于實現棧、隊列、字典、數組等數據類型
C. 鏈表中一定存在唯一一個沒有前驅的元素,以及唯一一個沒有后繼的元素
D. 在鏈表中插入元素效率比數組低
E. 以上都不正確
參考答案:E
17、請問下列代碼輸出的結果可能是哪些?( )
#include<stdint.h>
#include<stdio.h>
union X
{
int 32_t a;
struct
{
int16_t b;
int16_t c;
};
};
int main()
{
X x;
x.a =0x08172017;
printf(“%x,%x\n”,x.b, x.c);
return 0;
}
A. 2017, 817
B. 817, 2017
C. 70817, 201
D. 20170, 817
參考答案:A、B
18、將二叉樹的概念推廣到三叉樹,則一顆有364個結點的完全二叉樹(只有根節點的樹高度為1)的高度是( )。
A. 4
B. 5
C. 6
D. 7
E. 8
參考答案:C
題目應該為“則一棵有364個節點的完全3叉樹的高度是”。
[Log3(364)]+1=5+1=6
19、請選擇下列程序的輸出( )。
#include<stdio.h>
int mian()
{
const int N =10;
const int M = 2;
int* a = newint[N];
for(inti=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. 2143658719
B. 2446688101
C. 3254769811
D. 2143668710
E. 21436587109
參考答案:E
a[]={2,1,4,3,6,5,8,7,10,9}
20、下面關于進程和線程說法正確的是( )。
A. 線程是CPU調度的基本單位
B. 進程是CPU調度的基本單位
C. 進程中多個線程可并發執行
D. 一個線程可以創建另一個線程
參考答案:A、C、D
二、編程題
1、拼湊硬幣
時間限制:(每個case)2s 空間限制:128MB
小Q十分富有,擁有非常多的硬幣,小Q擁有的硬幣是有規律的,對于所有的非負整數K,小Q恰好各有兩個面值為2^K的硬幣,所以小Q擁有的硬幣就是1,1,2,2,4,4,8,8,…。小Q有一天去商店購買東西需要支付n元錢,小Q想知道有多少種方案從他擁有的硬幣中選取一些拼湊起來恰好是n元(如果兩種方案某個面值的硬幣選取的個數不一樣就考慮為不一樣的方案)。
輸入:
輸入包括一個整數n(1<=n<=10^18),表示小Q需要支付多少錢。注意n的范圍。
輸出:
輸出一個整數,表示小Q可以拼湊出n元錢放的方案數。
【請注意:javascrip語言不支持調試,請同學們優先考慮使用其他語言,謝謝】
樣例輸入:6
樣例輸出:3
2、魔法城市
時間限制:(每個case)2s 空間限制:128MB
小Q來到一個魔法王國,這個王國一共有n個城市,分別是0~n-1號魔法城市,任意兩個城市都有一條魔法通道連通(無向邊),每條魔法通道都需要一定的時間才能通過。小Q現在在0號城市,他希望通過穿梭魔法通道到達1號魔法城市。
小Q為了更快到達1號魔法城市在魔法商店購買了一把魔力掃把,使用魔力掃把在一條魔法通道飛行的時候可以讓該條魔法通道話費的時間減半,但是魔法掃把最多只能使用k次,小Q想知道他從0號魔法城市到1號魔法城市需要多少時間。
輸入:
輸入包括n+1行。
第一行中有兩個正整數n, k(2<=n<=50, 0<=k<=50),分別代表城市數量和魔力掃把可以使用的次數,以空格分割。
接下類n行,每行一個長度為n的字符串dis[i], dis[i]j表示從i號魔法城市到j號魔法城市需要的時間。
對于所有合法的i和j滿足dis[i][j]=dis[j][i]
對于合法的i滿足dis[i] = 0
輸出:
輸出一個實數表示小Q從0號魔法城市到1號魔法城市最少需要的時間,答案保留1位小數。
【請注意:javascrip語言不支持調試,請同學們優先考慮使用其他語言,謝謝】
樣例輸入:3 2
094904440樣例輸出:4.0
3、數字轉換機
時間限制:(每個case)2s 空間限制:128MB
小Q從牛博士那里獲得了一個數字轉換機,這臺數字轉換機必須同時輸入兩個正數a和b,并且這臺數字轉換機有一個紅色的按鈕和一個藍色的按鈕:
當按下了紅色按鈕,兩個數字同時加1。
當按下了藍色按鈕,兩個數字同時乘2。
小Q現在手中有四個整數a,b,A,B,他希望將輸入的兩個整數a和b變成A,B(a對應A,b對應B)。因為牛博士允許小Q使用數字轉換機的時間有限,所以小Q希望按動按鈕的次數越少越好。請你幫幫小Q吧。
輸入:
輸入包括一行,一行中有四個正整數a,b,A,B,(1<=a,b,A,B<=10^9)。
輸出:
如果小Q可以完成轉換,輸出最少需要按動按鈕的次數,否則輸出-1。
【請注意:javascrip語言不支持調試,請同學們優先考慮使用其他語言,謝謝】
樣例輸入:100 1000 202 2002
樣例輸出:2
總結
以上是生活随笔為你收集整理的2018年腾讯笔试题(今年更难了)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作站性能测试软件,国产工作站“王炸”来
- 下一篇: 企业应用快速跨向容器时代的正确姿势