騰訊Java后臺面試經(jīng)驗總結(jié)

下午,突然收到騰訊的電話面試,心想:“不是3、4月份投的簡歷嗎,,,現(xiàn)在我還有機會被撈,管他,面了再說”
由于騰訊本身不是Java的主場,而且本身是一面,問的都是基礎(chǔ),所以面試基本沒有問到Java、JVM等詳細的知識。面試大體問題如下:
計算機網(wǎng)絡(luò)
-
講下七層協(xié)議:講得還ok,大體說了下每層的功能等
-
三次握手、四次揮手:由于之前認真看過,所以講得也算流暢,詳細說了下過程
面試官問:“四次揮手最后B給A請求的等待時間(是什么時間)”
我:“emmmmmmmm,不知道”
后查詢發(fā)現(xiàn)還是自己掌握得不好,其實答案也很簡單,如下:TCP關(guān)閉連接用四次握手來實現(xiàn),即A--->B Fin, B--->A ACK, B--->A Fin, A--->B ACK,為什么要這樣?
A--->B Fin, B--->A ACK ,A屬于主動關(guān)閉方,收到B的ACK后,A到B的方向連接關(guān)閉,即half shutown ,
這時A不能再發(fā)送數(shù)據(jù)了。這種狀態(tài)下B還是可以單向發(fā)送數(shù)據(jù)的,B的數(shù)據(jù)發(fā)送完畢,也做關(guān)閉動作了:B--->A Fin
A--->B ACKB收到ACK,關(guān)閉連接。但是A無法知道ACK是否已經(jīng)到達B,于是開始等待?
等待什么呢?假如ACK沒有到達B,B會為FIN這個消息超時重傳 timeout retransmit ,
那如果A等待時間足夠,又再次收到FIN消息,說明剛才A返回的ACK沒有到達B,于是再發(fā)送ACK,
直到在足夠的時間內(nèi)沒有收到FIN,說明ACK成功到達。
這個等待時間至少是:B的timeout + FIN的傳輸時間,為了保證可靠,采用更加保守的等待時間2MSL。按照《趣談網(wǎng)絡(luò)協(xié)議》的形象說法:
斷開的時候,我們可以看到,當(dāng) A 說“不玩了”,就進入 FIN_WAIT_1 的狀態(tài),B 收到“A 不玩”的消息后,發(fā)送知道了,就進入 CLOSE_WAIT 的狀態(tài)。
A 收到“B 說知道了”,就進入 FIN_WAIT_2 的狀態(tài),如果這個時候 B 直接跑路,則 A 將永遠在這個狀態(tài)。TCP 協(xié)議里面并沒有對這個狀態(tài)的處理,但是 Linux 有,可以調(diào)整 tcp_fin_timeout 這個參數(shù),設(shè)置一個超時時間。
如果 B 沒有跑路,發(fā)送了“B 也不玩了”的請求到達 A 時,A 發(fā)送“知道 B 也不玩了”的 ACK 后,從FIN_WAIT_2 狀態(tài)結(jié)束,按說 A 可以跑路了,但是最后的這個 ACK 萬一 B 收不到呢?則 B 會重新發(fā)一個“B 不玩了”,這個時候 A 已經(jīng)跑路了的話,B 就再也收不到 ACK 了,因而 TCP 協(xié)議要求 A 最后等待一段時間 TIME_WAIT,這個時間要足夠長,長到如果 B 沒收到 ACK 的話,“B 說不玩了”會重發(fā)的,A 會重新發(fā)一個 ACK 并且足夠時間到達 B。 -
https(大概說了下,但自我感覺講得不好)
-
慢啟動算法、滑動窗口(之前看過,不過由于沒認真看,且當(dāng)時腦子一短路,沒想起來是什么,回答面試官“忘了”的時候,我就知道自己涼了)
https://github.com/Hpsyche/note/blob/master/計算機網(wǎng)絡(luò)/滑動窗口.md -
一個請求報文包含了什么信息
(請求方式(Get/Post) url 協(xié)議名 請求頭部 空行 請求體) -
響應(yīng)碼狀態(tài)有什么?
200 204 206 301 302 303 304 400 404 500 501 503
415(不支持的媒體類型,說錯成了“514”,不過面試官沒發(fā)現(xiàn),或是沒有拆穿我)
操作系統(tǒng)
- 線程及進程區(qū)別:講得還ok
- 查看CPU狀態(tài)命令:不懂
- top命令:真不懂(一開始還聽成了tail)
- 管道命令,只說了兩個
查看進程:ps -ef|grep
查看端口占用情況:netstat -anp |grep 3306* - linux查看配置網(wǎng)絡(luò)的一些指令(我說:“只懂得ifconfig”)
- 協(xié)程(說了下是“線程的更小單位,能夠進一步提高效率什么的”,感覺自己還是了解得不清晰)
https://github.com/Hpsyche/note/blob/master/操作系統(tǒng)/協(xié)程.md
數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是面試使用最長的一個環(huán)節(jié)。。
- 棧和隊列區(qū)別
- hash原理
- hash擴容
- 各種map區(qū)別
- 紅黑樹特征
- 為什么使用紅黑樹,相比AVL優(yōu)勢
- 快排
- 快排是穩(wěn)定排序嗎?(這個回答正確了,但是原因解釋錯了)
所謂排序的穩(wěn)定性,就是指在排序過程中,在對a關(guān)鍵字排序后會不會改變其他關(guān)鍵字的順序。
自己都可以試試,在比較有相同關(guān)鍵字序列的情況下,穩(wěn)定的排序會將較早出現(xiàn)的元素排在前面,而不會是后面。
比如:對(49,38,49,20,97,76)排序,就是不穩(wěn)定排序 - 跳表
- 鏈表+hash(這不知道是不是我聽錯了,不過我真不知道能組成什么數(shù)據(jù)結(jié)構(gòu))
- HashMap:如果樹深度太大,怎么改進?(這個現(xiàn)在還不知道答案?取模分多樹?)
數(shù)據(jù)庫
- 簡單講一下sql
- 常用sql命令
- InnoBD 與 MyISAM 兩者之間的對比
整體來說收獲不少,希望以后能有更多面試機會把,爭取能夠大四秋招上岸?。。。?!
相關(guān)文章
9月最新184道阿里、百度、騰訊、頭條Java面試題合集(小結(jié))
這篇文章主要介紹了9月最新184道阿里、百度、騰訊、頭條Java面試題合集,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-09-09- 這篇文章主要介紹了騰訊遠程電話面試經(jīng)歷,分享總結(jié)了一次騰訊電話面試中所遇到的各種問題與相關(guān)的經(jīng)驗教訓(xùn),并給出了相應(yīng)的參考意見,需要的朋友可以參考下2020-01-07
騰訊測試崗位的面試經(jīng)歷與經(jīng)驗分享【一面、二面與三面】
這篇文章主要介紹了騰訊測試崗位的面試經(jīng)歷與經(jīng)驗,總結(jié)分享了騰訊測試崗招聘面試中一面、二面與三面各個環(huán)節(jié)所遇到的問題與參考建議,需要的朋友可以參考下2020-01-03- 這篇文章主要介紹了騰訊社招面試經(jīng)歷與問題,總結(jié)分析了騰訊社招面試過程中所遇到的各種問題及相應(yīng)的參考答案,具有一定參考借鑒價值,需要的朋友可以參考下2019-11-27
騰訊后端面試經(jīng)歷與經(jīng)驗總結(jié)
這篇文章主要介紹了騰訊后端面試經(jīng)歷與經(jīng)驗,總結(jié)分析了騰訊面試過程中所經(jīng)歷的問題、面試流程、相關(guān)注意事項與失敗經(jīng)驗總結(jié),需要的朋友可以參考下2019-11-25- 這篇文章主要介紹了2019年騰訊最新前端工程師面試題(附答案),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-11-21
- 這篇文章主要介紹了騰訊面試算法題之編碼問題,結(jié)合具體案例形式分析了基于java的編碼轉(zhuǎn)換相關(guān)算法原理與操作技巧,需要的朋友可以參考下2019-10-08
- 這篇文章主要介紹了騰訊游戲客戶端開發(fā)面試經(jīng)歷,整理記錄了騰訊游戲開發(fā)面試中遇到的各種問題與心得體會,需要的朋友可以參考下2019-09-24
- 這篇文章主要介紹了騰訊游戲客戶端開發(fā)面試經(jīng)歷,總結(jié)分享了騰訊游戲客戶端開發(fā)面試所涉及到的考點與注意事項,需要的朋友可以參考下2019-09-20
- 這篇文章主要介紹了騰訊前端面試題相關(guān)知識點,整理總結(jié)了騰訊前端面試中所涉及的相關(guān)基礎(chǔ)知識點與疑難問題,需要的朋友可以參考下2019-08-27