2014騰訊校招筆試題分析----資料結構篇(一套試題引發的血案)
一 不定項選擇題(共25題,每題4分,共100分,少選、錯選、多選均不得分)
1 已知一棵二叉樹,如果先序遍歷的節點順序是:ADCEFGHB,中序遍歷是:CDFEGHAB,則後序遍歷結果為:(D)
A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA
先序遍歷:根左右,因此可以通過先序遍歷得到父子關係,即在前面肯定是後面的父節點。中序遍歷:左根右,通過中序遍歷可以獲得某個
節點的左右孩子(直接),因此可以還原出這課二叉樹為:,得出這棵二叉樹後就可以推出它的後序遍歷。
2 下列哪兩個資料結構,同時具有較高的查詢和刪除效能?(CD)
A.有序陣列
A和B沒什麼可說的,DHash表的查詢的時間複雜度:不衝突時為O(1),刪除也為O(1),衝突時為O(C),O(C)都是常數量級別的。所以必選。
補充一下,在開放地址方法時不能物理刪除,只能做一個刪除標記。若是鏈式地址方法的話可以物理刪除。
C平衡樹,平衡樹的查詢的時間複雜度:O(logn),刪除的時間複雜度取決於是否還要調整,但即使調整時間複雜為O(1).C也可以選。只要在logn級別的
複雜度都是比較高速的。
3 下列排序演算法中,哪些時間複雜度不會超過nlogn?(BC)
A.快速排序 B.堆排序
堆排序的最好和最壞都是n*logn,歸併排序最好是O(n),最壞是O(n*logn)因此BC沒問題。
4 初始序列為1 8 6 2 5 4 7 3一組數採用堆排序,當建堆(小根堆)完畢時,堆所對應的二叉樹中序遍歷序列為:(A)
A.8 3 2 5 1 6 4 7
B.3 2 8 5 1 4 6 7
C.3 8 2 5 1 6 7 4
D.8 2 3 5 1 4 7 6
根據初始序列,建成的小根堆為:對其進行中序遍歷的結果為:83251647
14 如果某系統15*4=112成立,則系統採用的是(A)進位制。
A.6 B
根據進位制的定義可以得出若是x進位制的數,則個位的數字就是該數字,十位上的數字大小為a則為a*x,百位的為a*x^2.利用這個原理將上面的等式改為
2+x+x^2 = 4*(5+x)可以得出x=6.話說這道題和資料結構沒什麼關係吧,或許我的解法有問題。
15 某段文字中各個字母出現的頻率分別是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼編碼,則哪種是可能的編碼:(A)
A a(000) b(001) h(01) i(10) o(11)
B a(0000) b(0001) h(001) o(01) i(1)
C a(000) b(001) h(01) i(10) o(00)
D a(0000) b(0001) h(001) o(000) i(1)
根據頻率可以得出一棵哈夫曼樹為:可以得出a是一種答案。關鍵是構建哈夫曼樹的過程,選出兩個最小頻率的節點,其父節點的值為左右孩子的和,再將這個父節點放入到原序列中再次選出兩個最小值的節點。如果得出的新節點不在最小的二個節點中,那麼新選出的兩個節點要比這個新節點的深度大一即要在其下一層。如圖中的i節點和o節點。只要注意這個,這個題就沒什麼問題了。
17 一個棧的入棧序列是A,B,C,D,E,則棧的不可能的輸出序列是?(C)
A.EDCBA B.DECBA C.DCEAB D.ABCDE
沒啥好說的。
21 遞迴函式最終會結束,那麼這個函式一定?(B)
A 使用了局部變數
B 有一個分支不呼叫自身
C 使用了全域性變數或者使用了一個或多個引數
D 沒有迴圈呼叫
遞迴函式要求有一個出口,即不在繼續呼叫自身,這樣才能結束遞迴。
二、填空題(共4題10個空,每空2分,共20 分)
1 設有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},請寫出按二路歸併方法對該序列進行一趟掃描後的結果為DQFXAPBNMYCW。
這個也沒什麼可說的,只要明白歸併排序的方法就可以了。歸併的含義是將兩個或兩個以上的有序表組合成一個新的有序表,二路歸併就是說每次分的表為2或1。
2 關鍵碼序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照關鍵碼值遞增的次序進行排序,若採用初始步長為4的Shell的排序法,則一趟掃描的結果是QACSQDFXRHMY;若採用以第一個元素為分界元素的快速排序法,則掃描一趟的結果是FHCDQAMQRSYX。
希爾排序,相同增量的數為一組進行簡單插入排序。步長為4也就是相隔的增量為4.第一組為QQR,剩餘的為ADH,CFM,SXY。組內排序可以得出答案。快速排序,相信大家都很熟悉了,只是以一個key為基準這裡選中了第一個元素,key左邊的元素都不大於key,右邊的都大於key。從後往前找第一個不大於key的元素,找到後從前往後找第一個大於key的,知道兩個指標相遇。結果也很好得出。
四、其他方向簡答題(共2題,每題20分),選作題,不計入總分)
2 A,B兩個整數集合,設計一個演算法求他們的交集,儘可能的高效。
我的想法感覺比較笨,第一種:先對其中的一個進行排序,然後從一個未排序的集合中取出一個元素用折半查詢的方法查詢集合中有沒有這個元素。相應的時間複雜度為:排序n*logn,查詢的時間複雜度也為n*logn,整體上也是n*logn。這個時間複雜有待商榷的地方在於,排序的時間複雜度,若選取堆排序則平均複雜度為n*logn,如果選用其他的排序方法最壞的情況下不一定是這個複雜度。
第二種方法:利用Hash表,先將A構造成一個Hash表,然後將B看做是待查詢元素從Hash表裡查詢。Hash表的查詢的時間複雜最壞為O(C)C為平均查詢長度,構造Hash表的時間複雜度也是常數級別的,平均為O(C)。
相關推薦
2014騰訊校招筆試題分析----資料結構篇(一套試題引發的血案)
一 不定項選擇題(共25題,每題4分,共100分,少選、錯選、多選均不得分) 1 已知一棵二叉樹,如果先序遍歷的節點順序是:ADCEFGHB,中序遍歷是:CDFEGHAB,則後序遍歷結果為:(D) A.CFHGEBDA B.CDFEGHBA C.FGHCDEB
騰訊校招筆試題之小Q的歌單
題目 小Q的歌單 熱度指數:1624 時間限制:1秒 空間限制:32768K 小Q有X首長度為A的不同的歌和Y首長度為B的不同的歌,現在小Q想用這些歌組成一個總長度正好為K的歌單,每首歌最多隻能在歌單中出現一次,在不考慮歌單內歌曲的先後順序的情況下
2016年騰訊校招筆試題(研發崗)
最近網際網路筆試較頻繁,也跟著師兄一起做了一些公司的筆試題,先將題記錄下來吧,答案慢慢補。希望對自己明年找工作有幫助!首先上騰訊的筆試題,騰訊是我的dream offer啊啊啊啊啊啊啊! 一、不定
騰訊校招筆試題之紙牌遊戲
題目 牛牛和羊羊正在玩一個紙牌遊戲。這個遊戲一共有n張紙牌, 第i張紙牌上寫著數字ai。 牛牛和羊羊輪流抽牌, 牛牛先抽, 每次抽牌他們可以從紙牌堆中任意選擇一張抽出, 直到紙牌被抽完。 他們的得分等於他們抽到的紙牌數字總和。 現在假設牛牛和羊羊都採用最
2018騰訊校招軟件開發崗在線筆試題
def ping 靜態 題目 校招 最大堆 筆試 join 代碼 不定項選擇題(20道題): 1.SQL語句中,from,join,where,having,order by,group by,limit之間的執行順序是怎樣的? 2.inner join與left jo
[2017騰訊校招線上筆試題]
import java.util.ArrayList; import java.util.Scanner; public class Main { public static ArrayList<Integer> rst = new ArrayL
2017騰訊校招暑期實習生筆試題1
構造迴文給定一個字串s,你可以從中刪除一些字元,使得剩下的串是一個迴文串。如何刪除才能使得迴文串最長呢? 輸出需要刪除的字元個數。輸入描述:輸入資料有多組,每組包含一個字串s,且保證:1<=s.length<=1000. 輸出描述:對於每組資料,輸出一個整數,
2017騰訊秋招筆試題之編碼
java 筆試題 ACMDescription: 假定一種編碼的編碼範圍是a ~ y的25個字母,從1位到4位的編碼,如果我們把該編碼按字典序排序,形成一個數組如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …,
2014完美世界校招筆試題及答案
明天要去完美筆試的緣故,特意在網上找了完美2014年的校招筆試題練手。可能是自己基礎比較薄弱的緣故吧,感覺筆試題還是很難的。答案都是我自己上網查資料做的,有不對的地方還希望小夥伴們能夠指正。選擇題第13題和最後一道程式設計題,實在是不會,還希望能有小夥伴給解答一下。 一、
騰訊秋招筆試題答案
1. #include <iostream> #include <string.h> using namespace std; char str[101]; int base[4]; int main() { while(cin>
2014新浪校招筆試題:取水果(17年第一篇讓人懵逼的面試題)
前言 2017 年,我還是會堅持每週一篇面試題,當然我每週看的面試題肯定是不止一篇的,我是在這周看過的面試題中,選擇一題自己認為較好的來寫。因為每一篇都寫,不現實,寫一篇部落格,需要的時間也是挺長的,所以選擇較好較大眾化的題目。 一、題目
2017騰訊校招前端面試題
騰訊面試據說有兩輪技術面和一輪hr面,有些面得早的面完一輪直接等下一輪。同時也有不少霸面的。 一面: 感覺騰訊前端面試好實在,問得非常細。 核心技術介紹,包括哪裡人、意向的工作地點、最滿意的專案或者工作經驗 最少的程式碼、最簡單思路手寫一
騰訊校招程式設計題之快遞分身術
題目描述 城市裡有3000條橫向的道路和3000條縱向的道路,分別從1開始編號知道3000,。相鄰兩條平行道路的間距為1。 我們用(x,y)表示第x號橫向道路和第y號縱向道路。N個需要送快遞的點坐落在這些交點上。小Q只能沿著這些道路送快遞,而且只能在道路的交叉點改變方向。
2018百度校招、騰訊校招 面試經驗
百度校招面試經驗 一到九月份,就開始了各種筆試。每天晚上七點到九點,大家都可以在機房看到我一個人在那裡自言自語。2018年09月16號晚上,我和我女朋友筆試完在外面吃東西時接到百度的面試通知。接
記2015年的騰訊校招經歷——技術篇
這一篇部落格主要是與狀態篇形成互補。主要記下一些面試中的題目,並給出題解。 作者注:所有的題目都只給出思考方法,不給出程式碼。 筆試: Q:給出一篇英語文章,並統計裡面每個單詞的出現次數。 A:這題,我用OC給出了一個解法。就是用字典,<
2017騰訊校招筆試程式設計題-拼湊零錢
今天剛剛參加了2017年的騰訊校招線上筆試,其中有一道程式設計題是這樣的:小明很富有,有幣值為2^n(n=0,1,2,3)的硬幣各兩個,即有兩個1塊錢的硬幣,有兩個2塊錢的硬幣,有兩個四塊錢的硬幣。。。,現在輸入一個正整數數m(0<m<10^18),請問從小明的
觀2018騰訊校招有感
校招人數:2000人,1000人留給實習生 每年3月份會有實習生招聘,然後爭取留用機會 招聘看3個方面:有夢想愛學習的實力派 是否有個人的部落格,持續積累的經驗 AI方面的職位:paper上的一些成果
2015騰訊校招筆試,一、二面經(菜鳥的流水賬)
前言:自從阿里筆試都沒通過,就有點擔心校招連筆試都過不了。而能通過騰訊的筆試,當然是一個非常不錯的機會,一定要好好把握,可惜還是錯過了……唉,自從被鵝廠拋棄後,感覺找工作越來越難了。。。 廢話
2018年騰訊校招產品群面體會
在騰訊的群面的過程中,時間有限且每組人數眾多,每個人都比較難將自己對群面題目的完整思路展現出來,同時,還有考慮小組共同完成時的配合問題,核心思路是群面的重要內容,言簡意賅的把群面題合作完成並完善具體,才能夠在群面時遊刃有餘。 首先給大家分享一下我在騰訊的群面過程:一、面試準備
蛇形矩陣----2017騰訊校招模擬題
輸出蛇形矩陣 // ConsoleApplication5.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <iostream>