面試崗位:linux
後端研發工程師程序員
找牛客大佬要了白金碼,跳過死亡筆試,直接視頻面,從3點開始,到晚上8點結束。面試
每一個面試官給個人感受都是怎麼這麼高冷啊。sql
一面:docker
寫一個題,找一個無序數組的中位數編程
寫了個快排,而後讓我找到無序數組第k大的一個數,我說先排序再找,實際上能夠用快排的partition函數。windows
快排的時間複雜度,最壞狀況呢,最好狀況呢,堆排序的時間複雜度呢,建堆的複雜度是多少,nlgn。後端
操做系統瞭解麼,Linux和windows數組
說說Linux的磁盤管理,一臉懵逼緩存
Linux有哪些進程通訊方式,五大件
Linux的共享內存如何實現,大概說了一下。
共享內存實現的具體步驟,我說沒用過
socket網絡編程,說一下TCP的三次握手和四次揮手,中間網絡很差,面試官都沒聽清楚,很尷尬
跳過網絡,問了項目的一些東西
問我如何把docker講的很清楚,我從物理機,虛擬機到容器具體實現稍微說了下。
問我cgroup在linux的具體實現,不會。
多線程用過哪些,chm和countdownlatch用過
二面:
自我介紹
Java的集合類哪些是線程安全
分別說說這些集合類,hashmap怎麼實現的,扯了不少
MySQL索引的實現,innodb的索引,b+樹索引是怎麼實現的,爲何用b+樹作索引節點,一個節點存了多少數據,怎麼規定大小,與磁盤頁對應。
MySQL的事務隔離級別,分別解決什麼問題。
Redis瞭解麼,若是Redis有1億個key,使用keys命令是否會影響線上服務,我說會,由於是單線程模型,能夠部署多個節點。
問我知不知道有一條命令能夠實現上面這個功能。不知道
Redis的持久化方式,aod和rdb,具體怎麼實現,追加日誌和備份文件,底層實現原理的話知道麼,不清楚。
Redis的list是怎麼實現的,我說用ziplist+quicklist實現的,ziplist壓縮空間,quicklist實現鏈表。
sortedset怎麼實現的,使用dict+skiplist實現的,問我skiplist的數據結構,大概說了下是個實現簡單的快速查詢結構。
瞭解什麼消息隊列,rmq和kafka,沒細問
寫題時間到。第一題:寫一個層序遍歷。
第二題:寫一個插入樹節點到一顆排序樹的插入方法,使用遞歸方式找到插入位置便可。
第三題:一個有向圖用鄰接矩陣表示,而且是有權圖,如今問怎麼判斷圖中有沒有環。
我說直接dfs走到原點即爲有環,剛開始寫的時候我又問了一嘴是否是隻要找到一個就行,面試官說是的,而後我說這樣應該用bfs,有一次訪問到原節點就是有環了。
面試官問我不用遞歸能不能作這個題,其實我都還沒開始寫。而後我就說沒有思路,他提示我拓撲圖。我沒明白拓撲圖能帶來什麼好處。如今一想,好像當訪問過程當中找不到下一個節點時就說明有環。作一個訪問標記應該就能夠。
第四題:一個二叉樹,找到二叉樹中最長的一條路徑。
我先用求樹高的方式求出了根節點的左右子樹高度,加起來即是。
而後面試官提示須要考慮某個子樹深度特別大的狀況,因而我用遍歷的方式刷新最大值,用上面那個方法遍歷完整個樹便可。
面試官說複雜度比較高,可是因爲時間問題就說結束了。
三面:
介紹一下項目
你談到的併發技術,chm和countdownlatch怎麼使用的
爲何要這麼處理,使用線程池是否是也能夠。我說也能夠
操做系統的進程通訊方式,殭屍進程和孤兒進程是什麼,如何避免殭屍進程,我說讓父進程顯示通知,那父進程怎麼知道子進程結束了,答不會。
計算機網絡TCP和UDP有什麼區別,爲何迅雷下載是基於UDP的,我說FTP是基於TCP,而迅雷是p2p不須要TCP那麼可靠的傳輸保證。
操做系統的死鎖必要條件,如何避免死鎖。
寫一個LRU的緩存,須要完成超時淘汰和LRU淘汰。
我說用lhm行不行,他說用linkedlist和hashmap能夠。
因而我就寫了put和get函數,進行了隊頭隊尾操做。
他說get複雜度會不會過高,我瞎掰了半天沒找到辦法,他說那就這樣吧,今天面試到這。
過時淘汰的處理我還沒寫呢,就說結束了,感受涼了啊,我說我要不要把剩下邏輯下完,他說不用,心涼了一大截~
而後HR小姐姐讓我等結果了。
面試經歷只是提供給你們一點臨時的應付技巧,真正的本領仍是要靠平時的學習和積累,只有學習的多了,技術掌握的透徹,纔會在面試的時候臨危不亂,處變不驚。臨時抱佛腳雖然有時可行,可是,也有抱不住的時候啊。
所以在這裏也給那些技術想達到這個高度甚至想往架構師發展的Java程序員提供一份詳細的進階路線圖,主要針對2到5年及以上工做經驗的Java開發人員,從廣度到深度架構圖還比較全面的,裏面的技術包涵了Java高併發、微服務、源碼分析、源碼分析、高性能、分佈式等技術,這些也是目前互聯網企業比較經常使用的技術,那麼來詳細看看。(文末有高清完整樹圖領取)
1.源碼分析
2.分佈式專題
3.微服務專題
4.性能優化
裏面包含的技術不是讓你所有掌握,可是不少東西是面試官必問的,因此你不能不知道,但願給那些須要這些信息的人幫助。
最後
以上就是筆者分享進階架構師學習線路,分享了一波進階線路圖譜,那麼資源確定也是少不了的,若是你對技術提高很感興趣,小編在這裏提供了一份針對上面導圖的架構進階視頻資料,資源分享包括但不限於(分佈式架構、高可擴展、高性能、高並 發、Jvm性能調優、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。
資料獲取方式:加QQ羣:705127209 進羣免費領取資料!
點擊連接加入羣聊【Java高級架構】:點擊進羣