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