1. 程式人生 > >騰訊後臺面經大全(整合版)

騰訊後臺面經大全(整合版)

本文首發於我的個人公眾號:程式設計師江湖

努力成為最有影響力的程式設計師自媒體,專注於面試,職場,個人提升三大主題。

乾貨滿滿,不容錯過。

**本文裡的面經內容全部來源於牛客網,作為秋招備戰複習與查缺補漏時使用。裡面部分面經有我的註釋和想法,以及部分解答,不一定正確,大家可以查詢補充。**

作者:牛客5143046號

連結:[https://www.nowcoder.com/discuss/89164?type=2&order=3&pos=25&page=1](https://www.nowcoder.com/discuss/89164?type=2&order=3&pos=25&page=1)

來源:牛客網

騰訊提前批一面 

Tcp如何實現可靠傳輸 

如何處理syn flood 

Os如何實現記憶體管理 

程序間排程和上下文切換怎麼實現 

系統呼叫或者說中斷的過程 

軟中斷 硬中斷 

記憶體延遲分配怎麼實現的 

瞭解vfs嗎 

瞭解雲端計算,虛擬化嗎 

記憶體分配的系統呼叫是什麼 

Linux裡的Rcu知道嗎 

Linux裡有哪些鎖 

有哪些自旋鎖,分別是怎麼實現的 

Linux的地址空間佈局是怎麼樣的 

為什麼核心對映到每個程序是一樣的,如果每個程序的核心對映是不一樣的會怎麼樣 

 還有一些,實在想不起來了 一直在虐作業系統,簡直懵逼

作者:牛客5143046號

連結:[https://www.nowcoder.com/discuss/89164?type=2&order=3&pos=4&page=0](https://www.nowcoder.com/discuss/89164?type=2&order=3&pos=4&page=0)

來源:牛客網

騰訊提前批一面 

Tcp如何實現可靠傳輸 

如何處理syn flood 

Os如何實現記憶體管理 

程序間排程和上下文切換怎麼實現 

系統呼叫或者說中斷的過程 

軟中斷 硬中斷 

記憶體延遲分配怎麼實現的 

瞭解vfs嗎 

瞭解雲端計算,虛擬化嗎 

記憶體分配的系統呼叫是什麼 

Linux裡的Rcu知道嗎 

Linux裡有哪些鎖 

有哪些自旋鎖,分別是怎麼實現的 

Linux的地址空間佈局是怎麼樣的 

為什麼核心對映到每個程序是一樣的,如果每個程序的核心對映是不一樣的會怎麼樣 

 還有一些,實在想不起來了 一直在虐作業系統,簡直懵逼

作者:給個offer養家餬口

連結:[https://www.nowcoder.com/discuss/76678?type=2&order=3&pos=49&page=1](https://www.nowcoder.com/discuss/76678?type=2&order=3&pos=49&page=1)

來源:牛客網

感覺涼涼。。

1,講專案

2,專案用到了redis,講一下redis的主從複製怎麼做的。。講了挺久的。。

aof和rdb兩種同步方式

3,寫程式碼,去掉字串中的空格空格,C語言實現(雖然寫出來了,但是面試官說4行程式碼就能寫出來這個。。)(2年沒寫過C和Cpp了崩潰。。)

4,如何把一個檔案快速下發到100w個伺服器(不會)

(面試官之後說你可以想想迅雷是怎麼做到下載速度那麼快的)

p2p的下載,分發檔案到整個網路中,每個機器既能上傳又能下載

5,如何判斷一個圖是否連同?(開始說DFS,面試官說不滿意,後來說並查集)

dfs判斷節點個數。並查集看是否所有節點的根節點是否能夠相同

最後面試官要我加強一下C和Cpp。。

歡聲笑語打出GG,我的BAT夢。。秋招再見了。。

作者:給個offer養家餬口

連結:[https://www.nowcoder.com/discuss/75986?type=2&order=3&pos=145&page=1](https://www.nowcoder.com/discuss/75986?type=2&order=3&pos=145&page=1)

來源:牛客網

我猜我是涼了。。

面試官是個挺嚴肅的小哥。。自我介紹和專案介紹也沒有。。擅長的東西基本上都沒問。。

題目不是先後順序的。。想起來就補充。。

1,寫SQL

2,左連線

3,TCP和UDP的區別

4,1000w個整數排序,範圍0到100w,8g記憶體

MapReduce

5,網路的4層結構?TCP協議屬於哪一層?TCP四次揮手的過程?最後等待關閉連線要多長時間?(時間真忘了。。)超時重傳是怎麼做的?ACK序號是表示已收到的序號嗎?(臥槽我說的是的。。沒理解他想問的是重傳這塊。。)

2msl。

ack是表示返回已收到的序列。

超時重傳是對每個序列做一個計時器,然後如果沒有收到ack則說明超時,重傳

6,HashMap解決衝突的方法,Java裡面怎麼實現的

連結串列和紅黑樹

7,設計題,給每個組分配不同的IP段,怎麼設計一種結構使的快速得知IP是哪個組的(開始想直接NAT協議搞一搞每個IP一個組的。。面試官說場景不對是給每部分的IP分組。。想用Trie樹,面試官讓我再優化一下。。)

b+數,每個樹節點儲存一個段

8,非遞迴完成二叉樹的先序遍歷(差點沒寫出來。。用的左神教的Morris遍歷。。)

先序用棧

中序用棧

後序用兩個棧

9,什麼情況下會發生死鎖,解決策略有哪些?

1 獨佔資源

2 依賴對方資源

3 迴圈依賴

4 不能剝奪。

預防

避免

檢測解除

10,Java怎麼進行垃圾回收的?什麼物件會進老年代?垃圾回收演算法有哪些?為什麼新生代使用複製演算法?

11,講一講Java裡面的final關鍵字怎麼用的

12,過載和重寫的區別?相同引數不同返回值能過載嗎?

不能

13,講一下快速排序的思路?

最後問了問騰訊真的要Java麼。。面試官說他們是騰訊雲的,語言不怎麼重要都要寫的。。

其它的記不得了。。想起來再補充吧

作者:MeiduiQing

連結:[https://www.nowcoder.com/discuss/75868?type=2&order=3&pos=158&page=1](https://www.nowcoder.com/discuss/75868?type=2&order=3&pos=158&page=1)

來源:牛客網

西安騰訊後臺一面 掛經

面試官高階大佬,穿著拖鞋和短褲面試,看到面試官抖腿就有點虛。

全程大量手寫問題:

手寫快排

手寫,建立一張使用者表

create table A not exist {

id, int(3), not null, primary key;

name, varchar(20), not null;

sex, tinyint(1);

}

寫一個類,修改剛才的使用者表

alter table add column(address, varchar(30))

alter table delete column(address)

寫出你熟悉的Linux命令

檔案:ls ll -a la

程序和檔案:ps,top,df,du,pstree

網路:netstat,ping,curl,traceroute

文字:cat,vi,wc,grep,awk,sed,head,tail,more,less,

查詢:whereis find -n locate which

許可權:chmod chown 777 su sudo

定時任務和後臺執行:crontab nohup &後臺執行

寫出你熟悉的JVM命令(面試官提示:位元組碼 JStack,自己沒反應過來)

jstack,jmap,jstat,jmat,jps,jvisualvm

編輯器怎麼deBug

怎樣檢視一個Java程序的使用情況(關於deBug,在編輯器上敲指令被追問很多)

jps看程序,可以jstack看執行緒的呼叫棧,執行時可以跟蹤執行緒的堆疊結構。也可以通過visualvm

JUnit知道嗎,寫你知道的命令

Assert.assertEquals

Assert.assertTrue

mock,before,after。

寫你知道的Git命令

git init

git pull

git fetch git merge

git add

git commit

git push

git reset --hard

git stash git stash pop

手寫單例模式(光說雙加鎖了,被指出來有地方寫錯了)

volatile修飾單例

1 判空

2 加鎖後再次判空

3 例項化

寫你用過的jar包

rt.jar

hibernate.jar

spring-mvc.jar

spring-context.jar

spring-aop.jar

redis-client.jar

fastjson.jar

spring-boot-starter.jar

簡單將了一下畢設用的技術,GG

你的職業規劃是什麼

已收穫好人卡,還是要滾去學習了

作者:名字不給看

連結:[https://www.nowcoder.com/discuss/75533?type=2&order=3&pos=190&page=1](https://www.nowcoder.com/discuss/75533?type=2&order=3&pos=190&page=1)

來源:牛客網

具體幾面記不清了,大概問了:

springioc,aop,mvc

,分散式儲存架構

一般儲存使用raid冗餘陣列或者SSD快速磁碟。

分散式儲存方案

1 塊儲存 直接對磁碟進行裸盤對映使用,甚至不安裝檔案系統,使用起來比較麻煩。

2 檔案儲存,基於檔案系統使用儲存,通過網路協議訪問,比如ftp。一般是單機的儲存系統。

3 物件儲存,包括控制節點和儲存節點,控制節點儲存元資料,儲存節點儲存資料,一般通過api使用。類似hdfs,結合塊儲存的速度和檔案儲存的易用性。並且支援併發讀寫

,異常,

請求失敗怎麼辦,

重發

加鎖失敗怎麼辦,

輪詢cas

回滾失敗怎麼辦,

記錄日誌,重試

加密演算法,

1 md5,sha摘要演算法,非對稱加密

2 rsa是對稱加密演算法,有公鑰私鑰之分,比較複雜。

間隙鎖(可重複讀有沒有間隙鎖,你確定?),

可重複一般不能避免幻讀(但是mysql中可以,它使用了gap lock+行級鎖的加強版:next key lock來避免幻讀)

序列化則是加表鎖。

當然使用mvcc機制也可以解決這個問題

mvvc,儲存引擎,

b,b ,紅黑樹,

三次握手四次揮手,程序執行緒區別,

程序通訊,jvm記憶體模型,gc機制…

祝各位好運。兩次二面掛,已絕望。

作者:燕大咸魚乾

連結:[https://www.nowcoder.com/discuss/75171?type=2&order=3&pos=248&page=1](https://www.nowcoder.com/discuss/75171?type=2&order=3&pos=248&page=1)

來源:牛客網

1 、先自我介紹,然後看我簡歷問我通訊的為什麼通訊的選擇做網際網路?(我能說是因為錢多嗎?當然不能,我就說網際網路發展前景好,然後兩人簡單聊了一下)。

2、然後問我語言、計算機網路、資料結構、作業系統哪個比較擅長?(我答語言吧)

3、接著問我C語言中的記憶體分配,malloc函式?

4、談談Java中的記憶體模型?

5、講一下你對多執行緒和多程序的瞭解?

6、為什麼是三次握手,兩次可不可以?

7、視窗滑動和擁塞控制?

8、問了一個作業系統的東西,沒太聽懂,我就直接說我不知道!

 9、用程式碼寫一下如何求二叉樹的最大深度?

先序遍歷求高度

作者:做一個白日夢

連結:[https://www.nowcoder.com/discuss/75109?type=2&order=3&pos=258&page=1](https://www.nowcoder.com/discuss/75109?type=2&order=3&pos=258&page=1)

來源:牛客網

二.騰訊

騰訊23號內推的,結果沒收到提前批電話,最後通過筆試得到的面試機會,不過因為自己資料結構這塊確實太菜了,二面掛

一面:

一面過的出奇的輕鬆,大概因為面試官不是做Java的,面試官就讓我介紹了下專案,然後讓我說個自己學過的最難的資料結構。。。沒說出來,就讓我走了,結果第三天收到複試通知

二面:

1.介紹專案

2.有一個頁面能同時展示兩個廣告,現在有五個廣告,設計演算法使五個廣告展示概率為1:2:3:4:5

搞出一堆數,按比例放,然後輪詢展示

3.有25匹馬,五個賽道,用最少比賽次數將25匹馬排序

連結:[https://www.nowcoder.com/questionTerminal/e07d8e0df93b4f6b93a3fadbe72f2c7c](https://www.nowcoder.com/questionTerminal/e07d8e0df93b4f6b93a3fadbe72f2c7c)

來源:牛客網

毫無懸念,一匹馬只有跑了才能看出其速度,25匹馬至少都跑了一次,最少五輪,且每輪能排出名次;由於最終只要最快的三名,顧每組只有1、2、3有意義繼續比下去,4、5名直接淘汰。每組的3有意義的前提是該組的2就是總排名的2、1就是總排名的1,每組的2有意義的前提是該組的1至少第二;歸根到底還是看每組第一的情況,故5個第一比一次,第一就是總的第一;第四、第五及其所在的組全部被淘汰;故第一的組的二、三名,第二的組第一、二名;第三的組的第一名比最後一次,前兩名就是總的二、三名;共七輪。

     a1,a2,a3,a4,a5;------>a1,a2,a3;

     b1,b2,b3,b4,b5;------>b1,b2,b3;

     c1,c2,c3,c4,c5;------>c1,c2,c3;  

     d1,d2,d3,d4,d5;------>d1,d2,d3;  

     e1,e2,e3,e4,e5;------>e1,e2,e3;

a1,b1,c1,d1,e1;------> a1 ,b1,c1

a2,a3,b1,b3,c1;------> a2,a3 ;

作者:anyco

連結:[https://www.nowcoder.com/discuss/75031?type=2&order=3&pos=268&page=1](https://www.nowcoder.com/discuss/75031?type=2&order=3&pos=268&page=1)

來源:牛客網

一面

①專案中,redis在專案中用來幹什麼,基於什麼考慮。講了頻繁訪問的資料放到redis中,還有拿redis做非同步任務佇列。

②單機redis有可能掛掉,解決措施。

1 單機做持久化,主從部署

2 哨兵或者叢集

③叢集redis掛掉的話,解決措施。講了把資料訪問直接轉到mysql(面完想了一下,是不是最好加一個非同步任務佇列來資料庫操作)。

整個叢集掛掉只能異地容災了啊

④redis掛掉了,然後現在恢復了,怎麼做,redis掛掉的這段時間,你是把在mysql上存取資料,這樣勢必要同步資料到redis。但是同步這個過程你redis是需要被訪問的,解決措施。然後我給了方案說redis和mysql完全同步之後,再拿redis訪問。

1 同步後訪問

2 增量同步

3 主從,寫入主,訪問從

⑤資料庫分庫分表,垂直和水平來分。如果某個問題資料暴增,講了用分類來作為分庫的依據。又給了場景,如果某類問題資料暴增,要怎麼做。後面面試官說了基於預測,可以先做一些冗餘的庫。比如某類問題可能會有資料暴增,那可以對這個模組加冗餘的庫。然後冗餘庫接下去怎麼用這個沒聽清楚(hash??)。

1 垂直分業務,水平分數量。

2 劃分依據,比如id,時間戳,根據場景,比如某一個類。

3 分片的規則就是進行hash,取模等方式進行。

4 最好使用資料庫中介軟體如mycat

⑥負載均衡。講了應用叢集,nginx。

nginx的7層負載和四層負載均衡

1 LVS的四層負載均衡,nat,只是改了目標ip而已,返回需要回到代理

2 lvs的二層負載均衡 用虛ip訪問,修改mac地址,返回不需要回到代理

3 lvs的三層負載均衡 用虛ip訪問,使用隧道技術,返回不需要回到代理

⑦nginx怎麼去判斷某臺伺服器的負載情況,然後轉發請求。

應該是定時報告Nginx各個機器的情況,當然資料需要存在配置中心比如etcd中,伺服器和etcd保持心跳,傳送負載情況,nginx從etcd獲取機器情況,可以支援機叢集的伸縮。

⑧在nginx+10臺伺服器的叢集中,某個伺服器掛掉了,這個時候nginx怎麼處理(這時nginx肯定不能把請求轉到這個伺服器,那要怎麼辦)。

和我剛才說的一樣,使用etcd這樣的服務註冊中心即可。

二面

①java裡面抽象類和介面區別。同步機制的方式。

②介面能不能直接執行方法。

③冒泡、快排、堆排。空間複雜度。

④tcp、udp區別。tcp粘包。

⑤八個球,有一個比較重的,給一個沒有刻度的天平,怎麼最快找出。

3和3稱,相同再稱,2次搞定

⑥怎麼看因為工作換主語言。

⑦資料庫分庫分表。

⑧家庭情況、女票、網際網路行業高壓、騰訊文化、房價,足足聊了十幾分鍾

⑨個人提問環節,說了秒殺系統的設計,爆發性增長的資料給資料庫帶來的問題。

PS:全部面試走完,讓師兄在內網查了,狀態是offer報批中,也不知道是個啥狀態。。

二面的問題可能會讓你們比較驚訝。。。

作者:BugFree

連結:[https://www.nowcoder.com/discuss/74961?type=2&order=3&pos=284&page=1](https://www.nowcoder.com/discuss/74961?type=2&order=3&pos=284&page=1)

來源:牛客網

寫在前面

面試官超nice,以一種聊天的形式跟你交流。上午10點10左右開始,11點40結束。總的來說,基礎還可以,但是有些東西的底層學的還是不夠深。

問題回憶

1.  自我介紹

1.  怎麼平衡科研與專案開發之間的時間

1.  說說你在專案裡做了哪些工作

1.  簡歷裡提到了程式碼重構,為什麼重構?怎麼重構的?

1.  瞭解網路程式設計吧?說說TCP、UDP的區別,最主要的區別是什麼?什麼時候用這兩者?為什麼握手三次(而不是2次、4次)?為什麼揮手四次(而不是三次)?

1.  做一道題吧:有100盞燈,編號依次為1,2,3.100,電燈全部關著。現在來了100個人,第一個人把所有的燈開關按下;第二個人隔一個燈按下(2,4,6...);第三個人每隔兩個燈按下(3,6,9...).第100個人隔99個燈按下(100),最後還有幾盞燈,那幾盞燈亮著?

1.  我看你用過SVN和git,說說它們的區別。

1.  知道雜湊吧,說說雜湊演算法

1.  知道哈夫曼編碼嗎?我說本科時學過,他說那行,給你一堆數,構建一棵哈夫曼樹。。。寫完後,他笑著說,這題給你出簡單了。。。

1.  你有沒有什麼想問的?(常規三問:您是哪個部門的,做什麼?對我今天面試的表現,簡單評價一下?對我今後的學習或者工作提些建議?)

作者:﹏*安分

連結:[https://www.nowcoder.com/discuss/74819?type=2&order=3&pos=312&page=1](https://www.nowcoder.com/discuss/74819?type=2&order=3&pos=312&page=1)

來源:牛客網

1.自我介紹

2.介紹一下專案,專案架構圖畫一下

3.資料庫事務,專案中那裡用到了事務

4.資料庫隔離級別

5.linux系統用過沒?沒用過

6.java的網路程式設計,java中socket的使用,剛開始納悶為什麼狂問我java網路程式設計方面的東西,後來才知道騰訊基本用java來做網路程式設計,其他的都是用c 來實現。

7.udp和tcp的區別,tcp的流量控制,擁塞控制,tcp怎樣保證可靠傳輸

8.http和https的區別,https是如何加密的,它的加密方式是怎樣

9.今天又讓我介紹區塊鏈

10.java中的鎖介紹一下

11.10億個扣扣號,每秒有10萬條請求查詢過來,如何處理作者:﹏*安分

訊息佇列削峰,快取查詢,資料庫叢集

作者:少年已去

連結:[https://www.nowcoder.com/discuss/74814?type=2&order=3&pos=314&page=1](https://www.nowcoder.com/discuss/74814?type=2&order=3&pos=314&page=1)

來源:牛客網

發個面經,攢攢人品 一面 一面問的都比較基礎,Java的四個特性,jvm記憶體空間,程序與執行緒區別,hashmap底層,快排,索引等等 二面

1.c++stl庫

2.c++的vector和map和java的區別等等c++相關

3.加密演算法

4.innodb和MyISAM

5.資料庫MD5加密方法的具體實現

6.三級正規化

7.索引

8.資料庫CAP

9.程序的結構

10.程序的排程

11.程序通訊方式

12.手畫TCP三次握手四次揮

13.http協議

13.手寫快排

14.堆排

16.二叉樹,字典樹,紅黑樹的自旋

17.併發,自己做業務選怎樣的程序控制方式

18.socket

19.xms調優

20.雜湊演算法 總結: 騰訊主要是c++的,java招的很少,所以二面會問你好多c++相關的,根本不會,二面面試官也問了如果過了,能不能轉c++,總之涼涼,但是面騰訊收穫還是挺大的,面試官會給你一些很好的建議。

作者:johnnydd

連結:[https://www.nowcoder.com/discuss/74787?type=2&order=3&pos=319&page=1](https://www.nowcoder.com/discuss/74787?type=2&order=3&pos=319&page=1)

來源:牛客網

現場面的,一進去看到面試官我就蒙了,同學上午面的,他的面試官是個年輕小哥哥,我下午,面試官看著40來歲,我當時心就涼了一節(這肯定是個部門老大什麼的吧...),然後全程表情很嚴肅,像是一直質疑我,我很納悶,說到最後,我都有點不想去思考問題,只想快點結束

首先簡單自我介紹,然後簡單說了下專案,我專案用到了mycat,問我底層如何實現,不會,

問了我為什麼用dubbo,他一直質疑是因為我的專案做的很大,一個人無聊做著玩什麼技術也往上面放,

然後面試官的意思是我自己做的東西既然沒有那麼多併發量就不用考慮那麼多技術,意思是要用一個東西要知道為什麼要去用,跟他扯了半天真的不想扯……心裡苦

然後問了Java虛擬機器記憶體模型,四次揮手,還有個慢啟動快重傳,我這個網了……一下說成之前作業系統學過這個,我倆都冷場了一下……

問了linux程序相關的,

hashmap concurrenthashmap 內部實現細節,

然後還有觸發器是什麼,

問了個智力題,

8個球一個重給個天平,最少算幾次,

然後就是千萬的資料求前100個最大重複的,大學做過印象最深刻的事情,有什麼想要問我的? 基本就是這,半個小時整,面完我心涼了

1

採用Hash+小頂堆

Hash就是為了統計每個數出現的次數,然後發生衝突的地方用個連結串列把它連結起來,在每個節點中儲存一個含有data和count成員的結構體,data記錄相應的數字,而count記錄對應的數字出現的次數,這一步的時間複雜度是o(n).(注意這裡雖然數字很多,但是因為會存在大量的重複資料,不用擔心最後的空間會有10億)

然後建立一個大小為100的小頂堆,然後將Hash表中前面100個非空的成員放入小頂堆中,然後將hash表中的其他資料和堆頂出現的次數比較,如果比堆頂出現的次數少,則丟棄當前數,如果大於堆頂元素的出現次數,則替換堆頂,然後進行堆調整,這一步時間複雜度是o(nlog100).

總的時間複雜度是o(n)+o(nlog100)

2

用一個bit陣列 data[十億]初始化為0 讀取資料i,若 data[i] == 0 ,data[i]=1;

否則 記錄用一個結構體記錄i,並記錄他的的次數。最後則可以 求出 出現次數最多的數整數

作者:SFISH

連結:[https://www.nowcoder.com/discuss/74718?type=2&order=3&pos=349&page=1](https://www.nowcoder.com/discuss/74718?type=2&order=3&pos=349&page=1)

來源:牛客網

先說下最遺憾的,叫寫氣泡排序都能寫陣列溢位,非科班面對演算法題真的緊張。涼涼。

面試官是做php的,我用java。

問了http和https的區別。

答: 後者是前者的安全實現,客戶端發起請求時服務端會返回一個公匙,然後客戶端根據公匙規則傳送訊息,服務端根據自己的配對密匙解密實現加密。

那公鑰放哪裡呢?

數字證書

答:請求頭。(面試官笑,是這樣嗎?我說這一塊我理解的不夠深就跳過去了)

問: session和cookie講一下?

session的出現是為了解決cookie存放本地而且量小的問題產生的,通過瀏覽器快取的技術把需要的資訊快取,服務端就可以在同一應用中不同頁面傳遞資料,我覺得服務端採用的是hash表存放的資訊。

那怎麼知道是哪個客戶端呢?

這個剛忘講了,服務端會發送一個id標識客戶端。

sessionid

問:程序執行緒講一下

程序由作業系統調控,執行緒由程序調控(忘了講一下核心和使用者執行緒的對映,太緊張了),就好像一個java程式就是一個程序,裡面很多執行緒,比如生產者消費者模式,程序就像框架框住他們,生產者消費者就是兩個執行緒,在這個框架裡面生存,做資源交換。

問:那程序的通訊呢?

我知道共享記憶體,還有管道和訊號量就不太瞭解了(緊張,腦子有點空白),訊號量我知道java併發包下的訊號量,如果您需要我可以跟您講。

問:執行緒怎麼共享資源

(我其實很想講java記憶體模型,但是面試官就這麼不喜不怒我也不知道要不要回答這個)我以jvm為例講一下吧,jvm裡的堆就是一個公共區間,執行緒負責來取資源,這樣就可以實現資源共享,如果您需要問原理,我可以跟您講一下記憶體模型。(面試官又是java開發,所以我真不知道要不要把底層講的很細)

問:講一下反射機制(我提到spring的ioc就是反射機制,但是我說我不會spring寫專案)

(面試官也知道反射機制的麼)在類載入的載入階段會產生java.lanag.class物件,而且初始化階段jvm也規定由reflect包下的方法必須載入進來,這樣就可以通過class forname動態載入類獲得物件和呼叫getclass獲得class物件,然後再用newinstance方法獲得物件,然後就可以了(又忘了講類載入)

問:講一下hashmap和hash衝突

1.7的時候用的是陣列加單鏈表,1.8變成了紅黑樹(忘了講初始容量和擴容問題,大佬的不怒自威太可怕,不知道該怎麼),講了一下取雜湊值的改進,可以算的更快

(這裡提一下,大家應該發現面試官都在問hashmap,因為java8的一個核心優化就是hashmap,所以多看看部落格)

好像差不多就這麼多,很傷心面試官沒有問jvm和底層鎖,不然我可以跟它就這個話題扯10多分鐘)

總得來講,我覺得氣泡排序我真的想自宮,為什麼這個我都能寫錯???

反正我只是來見大佬的,一個遺憾就是問的大佬的問題大佬表示都不方便回答。

好了,今年java想找工作,就把自己當成全棧工程師來努力吧,畢竟今年天下研發皆java,所以我當初是不是應該堅持一下走深度學習?

秋招再見!

作者:yunux

連結:[https://www.nowcoder.com/discuss/74614?type=2&order=3&pos=360&page=1](https://www.nowcoder.com/discuss/74614?type=2&order=3&pos=360&page=1)

來源:牛客網

剛現場面完一面,涼涼。。。。。。

走的內推,可惜時間投的比較晚,3.21號投的,結果3.30號才來電話,全程差不多聊了一個小時,問的很詳細也很基礎。

1、專案介紹,大約15分鐘。

2、基礎,大約15分鐘。

2.1、Java Map結構?(腦抽了orz)

2.2、程序、執行緒區別?執行緒共享程序哪些資源?

同一程序間的執行緒究竟共享哪些資源呢,而又各自獨享哪些資源呢?

共享的資源有

a. 堆  由於堆是在程序空間中開闢出來的,所以它是理所當然地被共享的;因此new出來的都是共享的(16位平臺上分全域性堆和區域性堆,區域性堆是獨享的)

b. 全域性變數 它是與具體某一函式無關的,所以也與特定執行緒無關;因此也是共享的

c. 靜態變數 雖然對於區域性變數來說,它在程式碼中是“放”在某一函式中的,但是其存放位置和全域性變數一樣,存於堆中開闢的.bss和.data段,是共享的

d. 檔案等公用資源  這個是共享的,使用這些公共資源的執行緒必須同步。Win32 提供了幾種同步資源的方式,包括訊號、臨界區、事件和互斥體。

獨享的資源有

a. 棧 棧是獨享的

b. 暫存器  這個可能會誤解,因為電腦的暫存器是物理的,每個執行緒去取值難道不一樣嗎?其實執行緒裡存放的是副本,包括程式計數器PC

2.3、TCP三次握手,四次揮手?為什麼三次?TIME-WAIT狀態?

2.4、Linux Socket相關。

2.5、Linux指令,檢視一個程序開啟哪些檔案

lsof -p pid

lsof命令是什麼?

可以列出被程序所開啟的檔案的資訊。被開啟的檔案可以是

1.普通的檔案,2.目錄  3.網路檔案系統的檔案,4.字元裝置檔案  5.(函式)共享庫  6.管道,命名管道 7.符號連結

8.底層的socket字流,網路socket,unix域名socket

9.在linux裡面,大部分的東西都是被當做檔案的…..還有其他很多

怎樣使用lsof

這裡主要用案例的形式來介紹lsof 命令的使用

1.列出所有開啟的檔案:

lsof

備註: 如果不加任何引數,就會開啟所有被開啟的檔案,建議加上一下引數來具體定位

2\. 檢視誰正在使用某個檔案

lsof   /filepath/file

8\. 列出某個使用者以及某個程式所開啟的檔案資訊

lsof -u test -c mysql

10\. 通過某個程序號顯示該進行開啟的檔案

lsof -p

3、資料結構和演算法,大約25分鐘。大多劍指原題。

3.1、二叉樹,BFS、DFS,Python怎麼實現?口述程式碼(沒講好gg)

3.2、字串最長升序序列,動態規劃。

dp

3.3、陣列中數字出現的次數,一個數組中除了兩個數字只出現一次,其他的都出現兩次,找出這兩個數字?位運算。

3.4、Top-K問題,海量日誌資料,提取出訪問次數最多的那個IP。分而治之+Hash+堆。(思路算對,但是沒回答好orz)

分治,hash,堆

4、閒聊,大約5分鐘.

結束後沒收到二面,清明做筆試,性格測試。

* * *

今天4.15一面,去了掃碼簽到,很快就上去面試,面完很喪。。。。。

全程25分鐘左右,自我介紹,然後專案介紹,Java多執行緒同步怎麼做?(沒回答好orz),會不會C++(答好久沒用了,現在用Python和Java,回答完後就感覺面試官沒啥問的了),

動態規劃瞭解不?說一下快排,說完就結束了。。。。。涼涼。。。。。唉。。。。。沒說留簡歷也沒下次面試的事,感覺很喪,都沒怎麼問問題,感覺面試官興趣不大。。。。。悲傷的故事。。。。。

作者:家有二呆

連結:[https://www.nowcoder.com/discuss/74046?type=2&order=3&pos=426&page=1](https://www.nowcoder.com/discuss/74046?type=2&order=3&pos=426&page=1)

來源:牛客網

筆試後面試

一面,先自我介紹,然後做了兩題手寫程式碼(手寫程式碼實現查詢連結串列的倒數第1000個節點,一個struct,裡面有多種型別變數,給一個指標指向這個結構,然後讓我算指標偏移後的地址),

一題演算法思考(1000萬個關鍵字,每個關鍵字小於等於50位元組,求前K個熱詞,記憶體為1M)。

分治+堆排序

接著開始對著專案問,問了一下我Reactor模式,RPC框架原理。一面過。

io多路複用,非同步事件

遠端呼叫轉化為本地呼叫

二面,上來先自我介紹,接著對著我專案問我springboot的aop,動態代理,問我日誌的時候,由於自己忘記怎麼切日誌,有點忘了。

接著面試官站起身來, 拿了一題演算法題。我定睛一看,實現12306餘票查詢的關鍵資料結構與演算法。

車次 + 時間:車廂 + 車座。兩層hash+一層陣列即可。

當時就感覺涼了,耐著性子和麵試官討論,面試官引導我這個和座位有關,慢慢 寫了個簡單版的。

面試官很nice,雖然我寫的渣,也沒說我什麼,然後就問了一下我微服務,有什麼缺點,網路這塊,問的很深。

劃分非常細,分散式問題要考慮的比較多。

對協議棧這塊一定要有 思考,背那種tcp和udp的區別於應用,可能面不過TEG。

物理層,要麼是電磁波要麼是物理纜線。

鏈路層,基於物理層封裝成幀,mac定址,區域網可達

網路層,衝出區域網,全世界聯網,路由

傳輸層,解決網路層的丟包,失序,低效等問題

應用層讓瀏覽器發揮效果,讓web應用成為現實

面完後,腦子都有點迷糊。如果大家投了騰訊的後臺,如果又是TEG面的話,大家一定要複習好基礎, 要有架構思維,一定要對不同的技術的優缺點能說個七七八八。

基本會問你技術對比,優勢劣勢。對了,還問了我如何學習新技術,這個大家一定要準備。

檢視狀態,進HR面了。

4月19 HR打電話,確定了資訊,問是否願意接受offer,答曰:願意。

春招到此結束,祝各位都收到自己想要的offer。

作者:f*Snow

連結:[https://www.nowcoder.com/discuss/73842?type=2&order=3&pos=444&page=1](https://www.nowcoder.com/discuss/73842?type=2&order=3&pos=444&page=1)

來源:牛客網

1.建立物件的方法 

2.序列化 

3.執行緒池 

4.http狀態碼,http頭 

5.證明一個數是2的n次方 

1、通過迴圈除2;這種方法不值一提,略過;

2、針對32位/64位只有有限個 2 的N次方的常量值,逐個進行比較;額。。。這個也略過;

3、通過正則表示式進行文字匹配,判斷是否2的後面都是 0 ;這個繞得更遠了。。。

最後,有一種最簡潔優雅的寫法:(value & (value -1)) == 0;

喔,的確是簡潔優雅!!!

6.堆排序 

8.八大排序特點 

9.連結串列的倒數第k個節點 

答完了,面試官說挺好的基礎還不錯,晚上查狀態還是掛了,想想可能細節回答的不好

作者:Masquerade°

連結:[https://www.nowcoder.com/discuss/73411?type=2&order=3&pos=480&page=1](https://www.nowcoder.com/discuss/73411?type=2&order=3&pos=480&page=1)

來源:牛客網

昨天收到騰訊的面試通知(考完騰訊的筆試以為掛了,就沒抱希望,沒想到還有面試機會)

給大家分享一下,就當攢個人品。

第一部分,遠端筆試。

面試官發了個網頁連結過來,給45分鐘完成,網站是collabedit。

有6道題,挺簡單的,十多分鐘就寫完了。

1、char *s1, const char *s2,刪除s1中s2出現過的字元

2、刪除單項鍊表中重複的節點 (1 2 2 3 3 9) -> (1 2 3 9)

3、求二叉樹的深度

4、單鏈表判環

5、判斷一個數是不是迴文數

6、求一個數組的最長連續子序列

第二部分,電話面試。

先看了下我的答案,找了幾個小的bug(root沒有判斷NULL,連結串列頭節點沒有判斷NULL,還是不夠嚴謹啊)

然後問我有沒有別的解法,就算過去了。

然後聊專案,因為沒什麼專案,所以聊的不多,哎,為什麼你們可以這麼厲害,渣渣求一條活路。

然後問問題。

1、網路瞭解嗎?講一講TCP協議的三次握手,為什麼要有三次?(緊張,說得不夠清楚,答的不好)

2、瞭解Linux嗎?epoll瞭解嗎?

yes

epoll create 紅黑樹

epoll ctl 插入節點

epoll wait 就緒連結串列

3、資料庫瞭解嗎,用過哪些資料庫?

4、這些知識是你在網上看的還是課上學的?

5、還有什麼問題要問我?

然後讓面試官評價一下,其他的還行,經驗不夠足。

反思一下:

1)第一次面試,有點緊張,還是要多鍛鍊,把自己充分展示出來。

2)知識面不夠廣,還要多學習啊!

3)通知太晚了,準備不夠充分。

4)多實踐。

問的問題這麼少,時間這麼短,應該是掛了,給自己點一首涼涼,以後好好搬磚好好學習。

然後,各位加油。

/*********************** 後續 *************************/

收到二面通知了,但是明天沒空,點了時間不合適,不知道HR會不會打電話再約時間。

作者:輓歌

連結:[https://www.nowcoder.com/discuss/73302?type=2&order=3&pos=489&page=1](https://www.nowcoder.com/discuss/73302?type=2&order=3&pos=489&page=1)

來源:牛客網

成都騰訊現場面試,今天上午9點半,簽到等了一會兒就進去面試。

1\. 自我介紹(面試官是寫 C++ 的),然後簡單說了兩句專案

2\. 什麼是分散式

多節點部署,分散式儲存,分散式計算,分散式部署

3\. 我看到你專案裡面用了 Redis,講講 Redis

4\. 讓你設計一個 Redis 或者說一個  cache,怎麼做

map。

5\. 給你一段邏輯連續的記憶體,你怎麼設計(全程懟我怎麼保證充分利用空間和動態分配)

壓縮連結串列

6\. 講講常用排序的優缺點,應用場景

7\. 手寫快排

8\. 讓你設計一個視訊點播,你怎麼設計這個模組

視訊分類,視訊列表,播放使用udp

這個一開始我寫的是功能模組,後來面試官明示說從接入、儲存...來談

9\. 在上面那個我說道了擁塞控制,就開始問 TCP 擁塞控制機制

10\. 既然你的設計就是類似 TCP(我用的 UDP 來設計),為什麼不用 TCP

慢,需要建立連線,重發,保證有序等,實際上不需要

11\. 邏輯題:6個賽道,36匹馬,找出 top 1(如果是 top 6 呢)

1 6次跑完還剩6只,再跑一次

2 很麻煩

12\. 興趣愛好

13\. 你自己的優缺點

總共面了一個小時,兩個設計懟的太久了,細節扣的很仔細。大家簡歷一定不要留坑!

作者:初生小牛不怕虎

連結:[https://www.nowcoder.com/discuss/71195?type=2&order=3&pos=653&page=2](https://www.nowcoder.com/discuss/71195?type=2&order=3&pos=653&page=2)

來源:牛客網

記性不大好,只能想到一部分了,後面想到什麼再補充吧,暫時分享給大家這些,祝大家好運!

一面:

主要寫Java是吧

記憶體模型描述一下

併發控制,鎖怎麼管理的

balabala不太記得了

手撕程式碼:

單鏈表倒置

二分法查詢排序陣列

二面:

介紹專案

自己負責的部分

做這個專案感覺有什麼收穫

手撕程式碼:

求兩個集合的交集和並集

括號匹配,帶優先順序的小括號中括號大括號

30瓶水,其中有一瓶毒藥,小白鼠喝了毒藥之後一天會死,求只有一天時間,用最少的小白鼠找出毒藥

輸出a~z全排列

全排列演算法或者dfs

HR面:

自我介紹

專案主要做的啥?自己負責的部分?

覺得最不好解決的幾個問題?怎麼解決的?

家是哪裡的,爸爸媽媽都是幹嘛的

還投了別的什麼公司嗎?偏向於哪個?

找實習比較看中什麼?

你還有什麼問題嗎?

作者:袖手旁觀1111

連結:[https://www.nowcoder.com/discuss/70644?type=2&order=3&pos=721&page=1](https://www.nowcoder.com/discuss/70644?type=2&order=3&pos=721&page=1)

來源:牛客網

3.20 一面

自我介紹

全程聊專案,面試官會打斷提問

面試官介紹自己部門(IEG)

3.27 二面

自我介紹都沒有,面試官甩過來連結,直接開始寫程式碼。

兩道都是leetcode原題,medium

227\. Basic Calculator II

81. Search in Rotated Sorted Array II

旋轉陣列用二分

第一道只講了思路沒寫出來,第二道寫出來了

一小時後狀態變成不合適,全程一個後臺開發的問題都沒有問。。。我懷疑面了假的後臺崗位。。。

作者:這就是我的逃跑路線,jojo!

連結:[https://www.nowcoder.com/discuss/70311?type=2&order=3&pos=778&page=2](https://www.nowcoder.com/discuss/70311?type=2&order=3&pos=778&page=2)

來源:牛客網

騰訊:

前言:可以說是個傳奇了,之前根本沒報因為聽說沒java,後來群裡有人說自己報了人家問他java了,心想著鍛鍊下面試,結果一直沒訊息,內推快結束了突然約我面試,還是現場。。走完一二三面跪在了三面

一面:面試官說自己這邊主要後臺用php和go,我說進來再轉也行,面試官說好吧。。。

問:網路協議,三次握手揮手

答:blabla大概說說

好了,問題結束,面試官掏出一個本本讓我開始撕演算法,開啟手撕演算法加練寫字的奇妙旅程

演算法一:兩個有序數組合並取中位數

我:balbla寫寫寫(面試官發呆中)

我:寫完了,您看看(自己看了眼字真的難看,自己都看不懂)

面試官:。。。。。。橫看豎看左看右看,。。。好吧。。。。

1 合併完再求

2 合併過程中第n/2個數就是中位數

演算法二:給定二叉樹顯示最右邊的那一列節點(左神的書還是劍指offer的原題)

我:blabla寫寫寫

面試官:你這寫的是不是不對啊

我:。。。還真不對,改。。。寫好了

面試官:emmmmmmm(內心os:這人真的不是外星人麼,這啥語言?)

我:我所下思路,層次遍歷先右後左,存個temp值表示當前層數,第一次加的是最右邊的

面試官:好了,你等會

層次遍歷只打印最右邊的即可

二面:

問:自我介紹

問:aio nio bio瞭解麼?

答:瞭解,blablabla

問:select epoll區別

答:blablabla

問:同步非同步,阻塞非阻塞的區別

我:blablabla

問:並行和併發的區別

我:blablabla

面試官突然拿出一個本,沒錯就是剛才一面的那個,翻了一面讓我寫演算法

演算法三:寫個hash

我:??????

面試官:實現個hashmap,就最簡單的那種

我:。。。照著jdk1.7的hashmap寫了個,主要寫了put

面試官:emmmmmmmm,下一個

演算法四:一個樹,找最長路徑,說思路就行了(估計看我字難看)

我:遞迴找樹深度稍微變下

面試官:今天到這,如果還有面明天通知

遞迴找深度存最大值

三面:領進去前說是總監面,讓我在辦公室外面坐會等了會讓我進去了(ps:總監辦公室窗子外面視野真好)

問:自我介紹

我:。。。。。

問:好了,拿出兩張紙開始演算法吧

我:。。。。

演算法五:連結串列反轉

我:。。。。。。。

演算法六:找環入口

我:。。。。。。

好了撕演算法結束

問:大量int,記憶體裝不下,去重

答:之前沒背過,現說的一方法,面試官不滿意

面試官:今天到此結束

總結:謝謝騰訊面試官抽出時間給我這個語言不對口基礎也不紮實的菜雞面試,還給我練手撕演算法的機會,一開始緊張的一逼,後面不緊張了,字也寫到能讓人類勉強看懂的地步了,收穫很多。

網申

一面:

語言不合,撕演算法

演算法七:兩個陣列去重,分別根據無序和有序說下,寫個有序的演算法

演算法八:給個式子,括號匹配,然後括號去了怎麼算出結果

出酒店掛

總結:至此騰訊演算法課堂正式結束,總共8道演算法,秋招再見

作者:雄關漫道1

連結:[https://www.nowcoder.com/discuss/70129?type=2&order=3&pos=792&page=1](https://www.nowcoder.com/discuss/70129?type=2&order=3&pos=792&page=1)

來源:牛客網

【騰訊 - 微信&騰訊視訊 - c++ - 已掛】

微信一面 - 暫無後續:

1.TCP三次握手和握手時client&server的狀態,為什麼不是兩次握手;

2.syn flood瞭解嗎? DDOS?

洪泛攻擊,分散式請求攻擊

3.select&epoll是什麼?併發度各有什麼限制? epoll為什麼快?

就緒列表,根據場景

4.epoll的水平觸發和邊緣觸發?

水平不斷通知io就緒,邊緣觸發只有一次通知

5.程序間通訊?哪個最快?為什麼?

共享記憶體,不需要額外機制

6.XSS原理?

跨站點指令碼注入。嵌入js程式碼導致頁面被惡意篡改和重定向

7.為什麼要用https?http的缺點?

http明文傳輸不安全,https加密傳輸

8.https建立連線的過程?

數字證書,生成隨機數,公鑰加密,私鑰解密,以後都用該隨機數進行對稱加密

9.非對稱加密演算法瞭解哪些?

rsa

10.簡單聊了聊專案。

騰訊視訊一面:

1.TCP三次握手四次揮手的11個狀態;

2.C++用過嗎?說說函式過載;

3.函式過載的原理;

4.extern c的作用;

5.一致性雜湊的性質,演算法;

6.說說快排,時間複雜度是多少,怎麼算的;(tips:設快排複雜度為T(n),由於一次partition複雜度為O(n),有   T(n) = 2T(n/2) + O(n))

7.紅黑樹知道嗎?說說;

8.聊專案;

騰訊視訊二面 - 已掛:

加微信面,拍了張試卷,讓半小時內手撕程式碼,悄悄洩題

![](C:/Users/%E5%91%A8%E6%9D%B0%E4%BC%A6/AppData/Local/YNote/data/[email protected]/213e0c824fc048a4b2d64074055b7283/052798f2f2e7.png)

1 lru快取。過期刪除。

2 刪除空格,左移即可,或者計算空格數,然後從右到左把字串排好。

3 使用長度為26的陣列,儲存0和1,0對於無,1對應有,一共2的26次方種情況,然後列印

作者:吳祚煜

連結:[https://www.nowcoder.com/discuss/70021?type=2&order=3&pos=802&page=1](https://www.nowcoder.com/discuss/70021?type=2&order=3&pos=802&page=1)

來源:牛客網

聊一聊今天的騰訊實習面經吧。。然後211渣碩。。

很早就內推了騰訊身邊的同學早就接到電話面試了我遲遲沒接到以為涼涼了。

然後昨天晚上突然就到電話叫我去面試。

然後我是第一次面試。之前準備的也都是Java,投的是後臺,就抱著必死的決心去面試了。

第一次去漕河涇,那塊的整體工作氛圍還是不錯的。約的是下午2點,提早到了,面試官還在午休,然後就上去了。

去了之後在他們的茶水間的面的試,一邊喝茶一遍面試,整體氣氛很輕鬆。

然後第一個問題是:你會C++嗎,你對C++瞭解多少。(不會,本科課程要求水平)

第二個問題:那先做一套筆試題吧

筆試題題目大致如下:

第一部分簡答:

1、解構函式

2、作業系統記憶體管理

3、Linux指令

4、Tcp/ip

5、TCP協議

還有幾題記不太清了

第二部分撕程式碼:

1、快排

2、堆排(大、小)

做完之後就開始正式面試。由於我表達了我不會C++(建議大家對於不擅長的領域不要硬著頭皮回答,乾脆說不會比較好)

問了許多網路、作業系統的內容,這部分內容我在複習Java時都準備了,問題不難,都答上來了。

然後做了2道數學題:

1、桶中取球排列組合問題

2、二進位制問題,問題如下:

1000瓶水有1瓶水有毒,老鼠喝一滴就會死,但是需要一週毒發,請問最少需要多少老鼠多少時間才能找到那瓶有毒的水。

答案是10只老鼠1周,解法是十進位制轉二進位制

然後就問專案。具體就不展開了。

然後問了一下什麼時候能來實習。就把真實情況彙報了。

然後一面就結束了。

比較感謝面試官沒有因為C++而直接把我拒掉,面試時也沒有在C++這方面為難我,而且整個面試過程非常輕鬆愉快,整體感覺一面有點話癆,就感覺面試官是我的一個同學一樣親切,感謝面試官。

然後他讓我等5分鐘他去問組長。然後組長就來面試了,二面開始了。

組長首先了解家庭情況,學校學習情況。

然後第一個問題:瞭解Socket嗎?用過嗎?(很巧我最近的一個專案正好用過就回答的比較好,順便把專案介紹了一遍)

第二個問題:你研究生的研究方向是系統搭建嗎?(因為我有一個導師安排的公司實習是有系統搭建的部分,但是我的研究方向是影象分類DCNN,於是我跟他解釋了我的方向以及我為什麼要搭那個系統)

第三個問題:你深度學習影象識別成果?(論文寫好已投SCI,審稿中,然後順便把我的框架,資料集,方法,環境啥的都介紹了一下,中間把之前本科時做的一個相關專案也介紹了)

第四個問題:你對你未來職業規劃

第五個問題:你最希望做什麼工作(問我這個問題估計是因為我不會C++)

大概就記得這五個了,感覺主要問的技術方面不是很多,還是側重之前的實習、專案還有研究方向相關。順便了解了一下我的想法。

二面的時候在對面試官提問環節我對面試官問了很多問題,也是我想知道的,我還讓他帶我逛了一圈他們的辦公室。

然後就約我明天覆試了。

總結一下今天的面試體驗,漕河涇那邊整體工作氛圍很好,茶水間很棒,兩位面試官都很好,然後感覺可能一位就是我以後的同事或者導師,一位可能以後就是我的leader。

然後對於C++知識不瞭解的情況,第一位面試官就主動幫我圓,程式設計都是相關的,只要你有足夠的學習能力就沒有問題,然後說如果以後進來想做Java也有機會,公司也有專案需要Java。

然後說了很多對實習生的培養的東西,大概就是主要了解你這個人的整體水平吧。

最後攢一波人品祝我明天好運吧!

作者:牛陌王

連結:[https://www.nowcoder.com/discuss/69623?type=2&order=3&pos=844&page=1](https://www.nowcoder.com/discuss/69623?type=2&order=3&pos=844&page=1)

來源:牛客網

1、自我介紹

2、資料庫使用的怎麼樣等等

3、資料結構

*   B+樹

*   紅黑樹

*   圖的最短路徑

*   等等

4、網路程式設計

*   高併發與非同步的伺服器怎麼設計

網路io的話epoll大法好。非同步就用回撥模型唄,

高併發就要多執行緒開發程式碼。具體設計就是請求到達,處理,訪問io,以及回覆結果

*   epoll後的套接字怎麼存

紅黑樹+連結串列

*   等等

5、專案

面試的是搜尋平臺的面試官,說可能做的工作方向和你做的方向不匹配,涼涼~

作者:不稂不莠

連結:[https://www.nowcoder.com/discuss/68690?type=2&order=3&pos=953&page=1](https://www.nowcoder.com/discuss/68690?type=2&order=3&pos=953&page=1)

來源:牛客網

面試官背景:騰訊雲平臺部門

1. 自我介紹

2. 自己的專案介紹(下面的問題都是根據專案提問的)

(1) 騰訊雲COS物件儲存的原理

(2) 為什麼用Restful

(3) 為什麼Restful比傳統的http好?

介面含義明確

(4) 還知道什麼類似Restful的規則?

cap maven

(5) 用什麼做介面資料傳輸(引數格式)?(json...)

(6) Redis的應用場景?

(7) 為什麼不用memcached?和redis比較?

(8) 許可權是怎麼做的?(介紹shiro)(介紹資料庫實現許可權的設計)

(9) Redis用來快取哪些資訊?如果快取的資料資料庫更新了呢?

同步更新

(10) 使用者的登入狀態如何判斷?Session過期問題?如何判斷session過期?(這裡感覺自己太依賴框架了)session是在哪一層面做的?

session可以設定時限,判斷使用方法就行了,伺服器層面,也就是記憶體

(11) Js的繼承?.id和#id有什麼區別?DOM物件是什麼意思?

(12) 人生經歷中記憶最深刻的困難或者事情?是怎麼解決的?

3. 那我們現在來面基礎吧好吧

(1) 程序執行緒瞭解嗎?

(2) 執行緒裡面有什麼是獨立的?

運算元棧,區域性變數,暫存器

(3) 一個程序一定要有一個執行緒嗎?沒有執行緒的程序是什麼?

不用

守護程序

(4) 協程是什麼?

(5) 同步和互斥是怎麼做的?

(6) 執行緒間的同步和互斥是怎麼做的?

(7) 守護程序和殭屍程序,孤兒程序有什麼瞭解?

1 孤兒程序是子程序未結束時父程序異常退出,子程序變成孤兒,init程序會認做他爹。

2 殭屍程序是子程序結束後,父程序沒有顯示傳送通知,導致子程序的結構沒辦法被回收,變成殭屍程序,站用空間。

3 守護程序就是init程序,負責監控程序的狀態,以及認兒子,殺死父程序等操作

(8) 系統出現殭屍程序,為什麼產生和怎麼解決?

init程序會殺死父程序或者回收殭屍程序

(9) 軟連線和硬連線瞭解嗎?

硬連結不同名檔案指向同一個node,軟連線只是節點中儲存目標檔案的絕對路徑

(10) 硬連線和軟連線刪了,原物件會如何?

硬連結會刪除檔案,軟連線不會

(11) 硬連線和軟連線的底層原理?

硬連結不同名檔案指向同一個node,軟連線只是節點中儲存目標檔案的絕對路徑

(12) Inode是什麼?

檔案的根節點,儲存除了檔名之外的所有元資料資訊。真正儲存著資料所在硬碟地址的節點。

(13) 強型別和弱型別,靜態型別動態型別是什麼?

強型別如java,弱型別如Python

(14) TCP/UDP的瞭解?

(15) Tcp和udp的使用場景

(16) Tcp粘包

傳送緩衝區和接收緩衝區處理不及時或者大小設定不當,導致粘包和拆包

(17) Tcp的time_wait (到這裡我覺得面試官面不下去了)

(18) http1.0和1.1有什麼區別

header,長連線,二進位制

(19) https協議?原理?端到端中間的過程。

(20) 對稱加密和非對稱加密?

(21) Cookies和session的關係

(22) Cookies的最大儲存時間

(23) Mysql索引的原理,底層是怎麼存的?

(24) 主鍵和唯一鍵有什麼區別?

(25) Varchar和char的區別?

Varchar動態決定佔用空間大小,char固定

(26) UTF-8下面varchar能佔多少字元?GBK呢?

不懂

(27) 說下你知道的排序,比較一下他們的優缺點,複雜度和應用場景。

作者:早就戒了。

連結:[https://www.nowcoder.com/discuss/77167?type=2&order=3&pos=55&page=1](https://www.nowcoder.com/discuss/77167?type=2&order=3&pos=55&page=1)

來源:牛客網

早上早早的來到了酒店,等候著面試。

“XXX,請去1607”。此時時間9.27

來到面試官房間,簡單的握了手,寒暄幾句就開始面了。

說說你的XXX專案吧

然後就開始長達80分鐘的討論,討論內容全都是和專案的整體設計有關,面試官提出要求,我畫一下架構的設計,然後在再解釋。

整整80分鐘,首先問到了專案的架構設計,然後擴充套件,如果自己專案需要滿足10W QPS的需求,架構如何設計?

老生常談

專案裡面高併發下如何實現請求的過濾以及消峰?

訊息佇列,快取

叢集環境下如何保證資料的一致性?

主從複製,同步

伺服器叢集以後如何做到資料的共享?

共享儲存,或者服務註冊中心zk

說一說一致性Hash吧?

一個2的32次方個點的環。

問我MySQL主從複製會不會?回答不會。

通過binlog完成主從複製,主庫開一個執行緒打log到從庫的relaylog上,從庫根據這個log重寫操作

那你自己設計一下MySQL的主從複製應該如何解決?畫一下你的思路?

最後面試官告訴了我MySQL主從複製的原理。然後和他探討了一下我對這個原理的疑惑。

當時是使用了Redis主從複製的思想來考慮的。

你這種解決辦法是從結果來考慮,是不能從原因角度考慮?

說一下STL的Map?

我說我不會,然後講了一下java的實現,畫了一下資料結構圖。

講一下紅黑樹?

我說您直接看我部落格吧,裡面有對他的分析。

ali雲用的linux什麼版本?虛擬機器的呢?

6.3和7.0;

說一下常用的shell命令?

看過那些書?

選擇出最好的三本?

1 深入理解Javaweb技術內幕。

2 深入理解計算機系統

3 大型網站架構

學習過程?

為什麼碩士不報計算機?

你專案裡面的這些架構的設計是怎麼學習的?

還有一些架構設計的問題忘了了。

最後和麵試官聊了一下如何看待非科班轉計算機?以及自己學習的是Java,和騰訊的需要不符合怎麼辦?以及面試結果

總共82分鐘,非常感謝面試官對非科班的鼓勵,以及對我的肯定,說實話能得到騰訊面試官的肯定更加讓自己有信心了。本來想著就試一試,畢竟不是C 的,不管結果如何,起碼面試官面了82分鐘,就當做面了兩輪吧。

作者:mactawish

連結:[https://www.nowcoder.com/discuss/77189?type=2&order=3&pos=52&page=1](https://www.nowcoder.com/discuss/77189?type=2&order=3&pos=52&page=1)

來源:牛客網

騰訊一面,後臺開發技術面,已掛,把問題記下來。

面試官是一個二十多歲的男生,很和善,所以在面試的時候也沒感覺到怎麼緊張,然而他問的問題我都不會就很難受。

1\. 自我介紹,我就把做過的一些專案簡單說了說。

2\. 程序,執行緒,協程的區別,磕磕絆絆,協程根本不知道是個啥

3\. 排序,問我哪些是穩定性排序,沒答上來,讓我手寫快排,還好,寫出來了。

4\. java裡的sort方法,我說了collections的排序,得實現compare方法,巴拉巴拉說了一堆。

5\. linux伺服器效能監測,這個我直接說不會了。

6\. 一次性雜湊,我說沒聽說過,只知道雜湊,面試官就讓我說雜湊是什麼,我說了幾句,說是建立對映關係儲存資料,儘量保證雜湊值不重複什麼的,感覺沒回答到點子上。

7\. 問我MySQL怎麼進行資料儲存,然後又問了一個實際例子:

假如有一億QQ使用者,每個使用者都有500好友,每個人都可能玩很多騰訊出的遊戲,問如何儲存能使獲取一個人的好友玩的遊戲列表。

我想了半天,說不會,最後被提醒用kv儲存,面試官讓我回去看看bitmap,這一部分是印象最深耗時最長的部分。

8\. 面試官問我還有什麼問題想問的,我就問了問該怎麼準備面試,面試官就說了一大堆,要學好基礎啊什麼的(其實想想基礎部分答的確實很爛),對於實踐專案沒提什麼建議,主要還是基礎。

自我介紹的時候可能說專案多一點,然後面試官就一直問我實踐方向的事,然而我都回答的很爛,問基礎部分還是回答很爛,感覺一直get不到面試官的點,面試過程中他有多次重複一些話,應該就是因為我不理解他的意思吧。

晚上回到宿舍,開啟手機一看,已掛,早就料到了,所以也沒覺得什麼,不過還是有機會被別的部門撈出來,所以還是要努力去準備啊!

作者:不拿offer不睡覺

連結:[https://www.nowcoder.com/discuss/77226?type=2&order=3&pos=49&page=1](https://www.nowcoder.com/discuss/77226?type=2&order=3&pos=49&page=1)

來源:牛客網

本人大三一名渣渣本科生,除了有一次阿里的電話面試之外,這是第一次正式的面試。

因為準備得不是很充分,所以抱著去學習一下的心態去面試的。

給我面試的考官還是挺和善的,所以儘管第一次正式面試,也沒有太緊張。

1、首先簡單的自我介紹

2、接下來專案扯了很多時間。先簡單介紹專案,然後專案中負責哪些方面、