熱氣騰騰的騰訊后臺(tái)開發(fā)面經(jīng)(總共五面)(騰訊后端開發(fā)面試題)
騰訊SNG
后臺(tái)開發(fā)工程師
大概是8月初投的簡歷,當(dāng)時(shí)沒有選事業(yè)群,第二天直接被sng撈了,抓著我一頓面試。
一周內(nèi)就面完了三次面試,接著就開始無盡的等待,整整等了三周左右,終于完成了四面和HR面。
整個(gè)過程還是比較曲折的,技術(shù)面試的難度也挺大的,不過他們部門也是Java線,所以還比較有的聊。結(jié)果目前還不知道。
一面:
1 有序數(shù)組排序,二分,復(fù)雜度
2 常見排序算法,說下快排過程,時(shí)間復(fù)雜度
3 有N個(gè)節(jié)點(diǎn)的滿二叉樹的高度。1 logN
4 朋友之間的點(diǎn)對(duì)點(diǎn)關(guān)系用圖維護(hù),怎么判斷兩人是否是朋友,并查集,時(shí)間復(fù)雜度,過程。沒講清楚
1. 初始化元素
2. 實(shí)現(xiàn)元素與元素間的聯(lián)合操作
3. 實(shí)現(xiàn)查找元素所在樹的根節(jié)點(diǎn)
4. 解決一個(gè)問題,判定兩個(gè)元素是否在同一棵樹上(兩個(gè)元素是否相互連接)
5 單元點(diǎn)最短路的方法,時(shí)間復(fù)雜度
6 如何實(shí)現(xiàn)關(guān)鍵字輸入提示,使用字典樹,復(fù)雜度多少,有沒有其他方案,答哈希,如果是中文呢,分詞后建立字典樹?
7 hashmap的實(shí)現(xiàn)講一下吧,講的很詳細(xì)了。講一下紅黑樹的結(jié)構(gòu),查詢性能等。
8 Java中的垃圾回收講一下,講了分代,gc算法,gc root可達(dá)性分析等
9 講一下兩個(gè)項(xiàng)目你都做了什么把。
10 除了代碼之外你還學(xué)習(xí)了什么技術(shù),框架。
11 死鎖是怎么產(chǎn)生的
12 線程和進(jìn)程的區(qū)別
13 進(jìn)程的通信方式
14 CPU的執(zhí)行方式
15 代碼中遇到進(jìn)程阻塞,進(jìn)程僵死,內(nèi)存泄漏等情況怎么排查。通過ps查詢狀態(tài),分析dump文件等方式排查。
16 Linux了解么,查看進(jìn)程狀態(tài)ps,查看cpu狀態(tài) top。查看占用端口的進(jìn)程號(hào)netstat grep
17 10g文件,只有2g內(nèi)存,怎么查找文件中指定的字符串出現(xiàn)位置。MapReduce分割文件處理。
他說可以用cat | grep 管道處理。
18 Linux的swap了解么,完全不懂。
19 Redis和MySQL最大的區(qū)別
20 講一下Tomcat的基本架構(gòu)和組件,以及請(qǐng)求的整個(gè)流程。說了一下connector和container架構(gòu)和servlet請(qǐng)求過程。
21 MySQL的存儲(chǔ)引擎,有什么區(qū)別。
22 范圍1到1000的數(shù),原本有1000個(gè),互不重復(fù),現(xiàn)多出來1個(gè)重復(fù)的數(shù),怎么找到他,統(tǒng)計(jì)次數(shù),太慢,求和相減。
23 N個(gè)糖果,每次只能取1個(gè)到6個(gè),不能不取,你先取,請(qǐng)問是否有必勝策略,怎么取。
剛開始說不太記得了,面試官提示了幾個(gè)例子,找出規(guī)律不能為7的倍數(shù),每次取到只剩7的倍數(shù)個(gè)糖果即可。
二面:
1 快排的時(shí)間復(fù)雜度,冒泡時(shí)間復(fù)雜度,快排是否穩(wěn)定,快排的過程
2 100w個(gè)數(shù),怎么找到前1000個(gè)最大的,堆排序,怎么構(gòu)造,怎么調(diào)整,時(shí)間復(fù)雜度。
3 一個(gè)矩陣,從左上角到右下角,每個(gè)位置有一個(gè)權(quán)值??梢陨舷伦笥易撸竭_(dá)右下角的路徑權(quán)值最小怎么走。
先說了一下dfs遞歸實(shí)現(xiàn)。面試官說要優(yōu)化。
說了一下用迪杰斯特拉的思路,說可以。
4 四輛小車,每輛車加滿油可以走一公里,問怎么能讓一輛小車走最遠(yuǎn)。說了好幾種方案,面試官引導(dǎo)我優(yōu)化了一下,但是還是不滿意,最后他說跳過。
5 hashmap的實(shí)現(xiàn),hashtable,concurrenthashmap實(shí)現(xiàn)。
6 MySQL的索引,B 樹性質(zhì)。
7 Linux的cpu 100怎么排查,top jstack,日志,gui工具
8 Linux大文件怎么查某一行的內(nèi)容。
9 Redis內(nèi)存數(shù)據(jù)庫的內(nèi)存指的是共享內(nèi)存么
10 Redis的持久化方式
11 秒殺系統(tǒng)的架構(gòu)設(shè)計(jì)
三面:
1 十億個(gè)數(shù)的集合和10w個(gè)數(shù)的集合,如何求它們的交集。
集合的數(shù)字不重復(fù)。
我講了兩次循環(huán),兩次hash,以及排序或者合并等方式。。都不對(duì)。后來面試官說是對(duì)小數(shù)組做hash,然后遍歷大數(shù)組即可。我完全想錯(cuò)方向了。
2 十億和數(shù)找到前100個(gè)最大的,堆排序,怎么實(shí)現(xiàn),怎么調(diào)整。
3 TCP和UDP的區(qū)別,具體使用場景呢。
4 TCP四次揮手講一下過程,最后一次ack如果客戶端沒收到怎么辦。
5 對(duì)于socket編程,accept方法是干什么的,在三次握手中屬于第幾次,可以猜一下,為什么這么覺得。
6 Linux操作系統(tǒng)了解么,了解一點(diǎn)點(diǎn),就沒問了。
7 對(duì)于單例模式,有什么使用場景了,講了全局id生成器,他問我分布式id生成器怎么實(shí)現(xiàn),說了zk,問我zk了解原理不,講了zab,然后就沒問啦。
8 除了單例模式,知道適配器模式怎么實(shí)現(xiàn)么,有什么用
9 回到網(wǎng)絡(luò),剛才你說到直播場景,知道直播的架構(gòu)怎么設(shè)計(jì)么,要點(diǎn)是什么,說了幾個(gè)不太對(duì),他說要避免廣播風(fēng)暴,答不會(huì)。
10 Redis和MySQL有什么區(qū)別,用于什么場景。
11 問了一下最近看什么書,什么時(shí)候開始寫博客的
12 問了還有幾輪面試,他說這輪我可以過,有點(diǎn)小驚喜
四面:
三面過了半個(gè)多月,終于安排四面了。
1 自我介紹
2 項(xiàng)目,收獲
3 Linux了解哪些,基礎(chǔ)命令和知識(shí)。問我proc文件系統(tǒng)了解么,答不了解。
4 TCP和UDP的核心區(qū)別在哪,講了滑動(dòng)窗口保證可靠有序傳輸,UDP不可靠。TCP需要連接而UDP不需要。
5 TCP的四次揮手,time wait狀態(tài)有什么意義。
6 說完這個(gè)他問我有什么想問他的了。
7 我問他為什么隔了這么久才面試,而且之前三面都只是初試,然后他說最近他在休假,所以就。。。害我擔(dān)心了好久。他說接下來等HR面就行了。
HR面
1 自我介紹
2 實(shí)習(xí)收獲
3 臺(tái)灣交流體驗(yàn)
4 之前實(shí)習(xí)公司的情況,拿到offer了嗎,會(huì)如何選擇呢
5 排一下公司,部門,薪資和城市等因素。
6 你的優(yōu)缺點(diǎn),如何改進(jìn)
7 學(xué)生時(shí)代最成功的事
8 你的預(yù)期薪資