四面阿裏
面試崗比特是研發工程師,直接找螞蟻金服的大佬進行內推,參與了阿裏巴巴中間件部門的提前批面試,一共經曆了四次面試,拿到了口頭offer。
一面:
- 自我介紹
- 項目中做了什麼,難點呢。
- Java的線程池說一下,各個參數的作用,如何進行的。
- Redis講一下
- 分布式系統的全局id如何實現。用zookeeper如何實現的呢,機器號+時間戳即可。
- 分布式鎖的方案,redis和zookeeper那個好,如果是集群部署,高並發情况下哪個性能更好。
- kafka了解麼,了解哪些消息隊列。
- 想做業務還是研究。
- 然後出了一道題,linux的訪問權限是rwx格式的。使用一個類支持訪問權限的增删改查,並且注意使用的數據格式以及方法效率,規範。給了一個多小時寫題。
耗時將近30分鐘。
二面:
- 介紹你做的項目和其中的難點。
- 上次面試官問的問題,反射的作用是什麼。
- 數據倉庫,多線程和並發工具等。
- 私有雲,docker和k8s等。
- 了解哪些中間件,dubbo,rocketmq,mycat等。
- dubbo中的rpc如何實現。
- 自己實現rpc應該怎麼做
- dubbo的服務注册與發現。
- 聽說我是非科班,於是問了些排序算法
耗時將近30分鐘。
三面:
三面不是面試,而是筆試,耗時三個小時,考的是Java核心的基礎。但是好像不能透題,就不說了。都挺有難度的。
大概說一下就是有幾個考點,Java並發的知識點,集合類,線程池,多線程之間的通信等。
HR面:
聊人生談理想,HR小姐姐非常溫柔,交流十分愉快。30分鐘。
五面騰訊
面試崗比特是後臺開發工程師,我沒有選擇意向事業群。
SNG的部門撈了我的簡曆,開始了面試,他們的技術棧主要是Java,所以比較有的聊一共經曆了四次技術面試和一次HR面試,拿到offer。
一面:
- 有序數組排序,二分,複雜度
- 常見排序算法,說下快排過程,時間複雜度
- 有N個節點的滿二叉樹的高度。1+logN
- 朋友之間的點對點關系用圖維護,怎麼判斷兩人是否是朋友,並查集,時間複雜度,過程。沒講清楚
- 單元點最短路的方法,時間複雜度
- 如何實現關鍵字輸入提示,使用字典樹,複雜度多少,有沒有其他方案,答哈希,如果是中文呢,分詞後建立字典樹?
- hashmap的實現講一下吧,講的很詳細了。講一下紅黑樹的結構,查詢性能等。
- Java中的垃圾回收講一下,講了分代,gc算法,gc root可達性分析等
- 講一下兩個項目你都做了什麼把。
- 除了代碼之外你還學習了什麼技術,框架。
- 死鎖是怎麼產生的
- 線程和進程的區別
- 進程的通信方式
- CPU的執行方式
- 代碼中遇到進程阻塞,進程僵死,內存泄漏等情况怎麼排查。通過ps查詢狀態,分析dump文件等方式排查。
- Linux了解麼,查看進程狀態ps,查看cpu狀態 top。查看占用端口的進程號netstat grep
- 10g文件,只有2g內存,怎麼查找文件中指定的字符串出現比特置。MapReduce分割文件處理。
二面:
- 快排的時間複雜度,冒泡時間複雜度,快排是否穩定,快排的過程
- 100w個數,怎麼找到前1000個最大的,堆排序,怎麼構造,怎麼調整,時間複雜度。
- 一個矩陣,從左上角到右下角,每個比特置有一個權值。可以上下左右走,到達右下角的路徑權值最小怎麼走。
- 四輛小車,每輛車加滿油可以走一公裏,問怎麼能讓一輛小車走最遠。說了好幾種方案,面試官引導我優化了一下,但是還是不滿意,最後他說跳過。
- hashmap的實現,hashtable,concurrenthashmap實現。
- MySQL的索引,B+樹性質。
- Linux的cpu 100怎麼排查,top jstack,日志,gui工具
- Linux大文件怎麼查某一行的內容。
- Redis內存數據庫的內存指的是共享內存麼
- Redis的持久化方式
- 秒殺系統的架構設計
三面:
- 十億個數的集合和10w個數的集合,如何求它們的交集。
- 十億和數找到前100個最大的,堆排序,怎麼實現,怎麼調整。
- TCP和UDP的區別,具體使用場景呢。
- TCP四次揮手講一下過程,最後一次ack如果客戶端沒收到怎麼辦。
- 對於socket編程,accept方法是幹什麼的,在三次握手中屬於第幾次,可以猜一下,為什麼這麼覺得。
- Linux操作系統了解麼,了解一點點,就沒問了。
- 對於單例模式,有什麼使用場景了,講了全局id生成器,他問我分布式id生成器怎麼實現,說了zk,問我zk了解原理不,講了zab,然後就沒問啦。
- 除了單例模式,知道適配器模式怎麼實現麼,有什麼用
- 回到網絡,剛才你說到直播場景,知道直播的架構怎麼設計麼,要點是什麼,說了幾個不太對,他說要避免廣播風暴,答不會。
- Redis和MySQL有什麼區別,用於什麼場景。
- 問了一下最近看什麼書,什麼時候開始寫博客的
- 問了還有幾輪面試,他說這輪我可以過,有點小驚喜
四面:
三面過了半個多月,終於安排四面了。
- 自我介紹
- 項目,收獲
- Linux了解哪些,基礎命令和知識。問我proc文件系統了解麼,答不了解。
- TCP和UDP的核心區別在哪,講了滑動窗口保證可靠有序傳輸,UDP不可靠。TCP需要連接而UDP不需要。
- TCP的四次揮手,time wait狀態有什麼意義。
- 說完這個他問我有什麼想問他的了。
- 我問他為什麼隔了這麼久才面試,而且之前三面都只是初試,然後他說最近他在休假,所以就。。。害我擔心了好久。他說接下來等HR面就行了。
HR面:
自我介紹
實習收獲
臺灣交流體驗
之前實習公司的情况,拿到offer了嗎,會如何選擇呢
排一下公司,部門,薪資和城市等因素。
你的優缺點,如何改進
學生時代最成功的事
你的預期薪資
三面頭條
面試崗比特是後臺研發工程師,地點選擇了上海,通過大佬內推,跳過死亡筆試,直接視頻面,從3點開始,斷斷續續到晚上8點結束。
一共三輪技術面試,每一輪都要寫代碼,問問題的風格有點像騰訊,也喜歡問一些底層知識,讓我有點懵逼。
一面:
- 寫一個題,找一個無序數組的中比特數
- 寫了個快排,然後讓我找到無序數組第k大的一個數,我說先排序再找,實際上可以用快排的partition函數。
- 快排的時間複雜度,最壞情况呢,最好情况呢,堆排序的時間複雜度呢,建堆的複雜度是多少,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,沒細問
- 寫題時間到。第一題:寫一個層序遍曆。
- 第二題:寫一個插入樹節點到一顆排序樹的插入方法,使用遞歸方式找到插入比特置即可。
- 第三題:一個有向圖用鄰接矩陣錶示,並且是有權圖,現在問怎麼判斷圖中有沒有環。
- 第四題:一個二叉樹,找到二叉樹中最長的一條路徑。
三面:
三面的面試官真的高冷啊,不苟言笑就算了,我問他他都不愛搭理的,搞得我內心慌得一比,感覺凉凉。
1 介紹一下項目
2 你談到的並發技術,chm和countdownlatch怎麼使用的
3 為什麼要這麼處理,使用線程池是不是也可以。我說也可以
4 操作系統的進程通信方式,僵屍進程和孤兒進程是什麼,如何避免僵屍進程,我說讓父進程顯示通知,那父進程怎麼知道子進程結束了,答不會。
5 計算機網絡TCP和UDP有什麼區別,為什麼迅雷下載是基於UDP的,我說FTP是基於TCP,而迅雷是p2p不需要TCP那麼可靠的傳輸保證。
6 他說不對,我說是不是因為要建立連接,開銷比較大,他說不對
7 我說p2p的發送節點很多,所以不是那麼需要各種傳輸保證,他說不對。
8 我說TCP會自動分包而TCP可以自己定義數據長度。。他還是說不對。
最後他說算了。我們問下一個吧。
9 操作系統的死鎖必要條件,如何避免死鎖。
10 寫一個LRU的緩存,需要完成超時淘汰和LRU淘汰。
我說用lhm行不行,他說用linkedlist和hashmap可以。
於是我就寫了put和get函數,進行了隊頭隊尾操作。
他說get複雜度會不會太高,我瞎掰了半天沒找到辦法,他說那就這樣吧,今天面試到這。
11 媽蛋,過期淘汰的處理我還沒寫呢,你就說結束了,感覺凉了啊,我說我要不要把剩下邏輯下完,他說不用,心凉了一大截~
然後就是HR小姐姐讓我等結果了。溜了溜了
最後
筆者已經把面試題和答案整理成了面試專題文檔
CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】

?

?

?