個人背景介紹
本科應屆生,計算機科學專業,自己有幸拿到了網易雷火、京東、去哪兒、字節跳動、小紅書等互聯網公司的實習Offer,因為某些自身原因最終選擇了小紅書,所以來分享一下自己面經,希望對大家有幫助,從而少走一點彎路,同時也整理了相關面試題,大部分都是類似的,留在文末了。
自己的一點心得
注重實力,保持良好心態:面試過程中,繼續鞏固好自己的技術棧,然后保持一個良好的心態,尤其是還沒有Offer的時候,心態別崩,其實到最后大家都會找到工作的,唯一的區別就是公司的方向、規模、待遇方面,也別太在意別人拿到了牛X的Offer。好多之前一直沒Offer的人,可能突然某一天就收獲到了幾份Offer,所以不斷提升自己的綜合能力才是關鍵,與其在這羡慕別人,不如讓自己心態沉靜下來,認真復習、厚積薄發。
及時復盤,查漏補缺:每一場面試大家都要盡力展現出自己更優秀的一面,對於線上面試,自己都是有完整錄屏的,就是為了能夠之后總結面經、查漏補缺,對自己面試的真實表現也有一個完整的了解。對於線下面試,自己前幾場面試都是開着手機錄音的,之后復盤。最后因為一天要跑很多面試,就沒錄音了,面經就靠記憶寫啦~。在面試過程中,大家肯定也會發現企業都會問到的一些面試問題,對於這類高頻問題,最好自己總結下來,對以后的面試也是很有幫助的。我在文末將附上自己總結的面經題庫,基本涵蓋了所有的高頻面試題。
一面:(約30分鍾)
- 序數組排序,二分,復雜度
- 常見排序算法,說下快排過程,時間復雜度
- 有N個節點的滿二叉樹的高度。1+logN
- 單元點最短路的方法,時間復雜度
- 如何實現關鍵字輸入提示,使用字典樹,復雜度多少,有沒有其他方案,答哈希,如果是中文呢,分詞后建立字典樹?
- hashmap的實現講一下吧,講的很詳細了。講一下紅黑樹的結構,查詢性能等。
- Java中的垃圾回收講一下,講了分代,gc算法,gc root可達性分析等
- 死鎖是怎么產生的
- 線程和進程的區別
- 進程的通信方式
- CPU的執行方式
- 代碼中遇到進程阻塞,進程僵死,內存泄漏等情況怎么排查。通過ps查詢狀態,分析dump文件等方式排查。
- Linux了解么,查看進程狀態ps,查看cpu狀態 top。查看占用端口的進程號netstat grep
- 講一下Tomcat的基本架構和組件,以及請求的整個流程。說了一下connector和container架構和servlet請求過程。
二面:(約30分鍾)
- 快排的時間復雜度,冒泡時間復雜度,快排是否穩定,快排的過程
- 100w個數,怎么找到前1000個最大的,堆排序,怎么構造,怎么調整,時間復雜度。
- 先說了一下dfs遞歸實現。面試官說要優化。說了一下用迪傑斯特拉的思路,說可以。
- 四輛小車,每輛車加滿油可以走一公里,問怎么能讓一輛小車走最遠。說了好幾種方案,面試官引導我優化了一下,但是還是不滿意,最后他說跳過。
- hashmap的實現,hashtable,concurrenthashmap實現。
- MySQL的索引,B+樹性質。
- Linux的cpu 100怎么排查,top jstack,日志,gui工具
- Redis內存數據庫的內存指的是共享內存么
- Redis的持久化方式
- 秒殺系統的架構設計
三面:(約30分鍾)
- 十億個數的集合和10w個數的集合,如何求它們的交集。集合的數字不重復。
- 十億和數找到前100個最大的,堆排序,怎么實現,怎么調整。
- TCP和UDP的區別,具體使用場景呢。
- TCP四次揮手講一下過程,最后一次ack如果客戶端沒收到怎么辦。
- 對於socket編程,accept方法是干什么的,在三次握手中屬於第幾次,可以猜一下,為什么這么覺得。
- 對於單例模式,有什么使用場景了,講了全局id生成器,他問我分布式id生成器怎么實現,說了zk,問我zk了解原理不,講了zab,然后就沒問啦。
- 除了單例模式,知道適配器模式怎么實現么,有什么用
- 回到網絡,剛才你說到直播場景,知道直播的架構怎么設計么,要點是什么,說了幾個不太對,他說要避免廣播風暴,答不會。
- 問了一下最近看什么書,什么時候開始寫博客的
- 問了還有幾輪面試,他說這輪我可以過,有點小驚喜
HR面
- 自我介紹
- 實習收獲
- 之前實習公司的情況,拿到offer了嗎,會如何選擇呢
- 排一下公司,部門,薪資和城市等因素。
- 你的優缺點,如何改進
- 學生時代最成功的事
- 你的預期薪資
最后基本上大部分公司問的技術點也換湯不換葯,所以刷題肯定還是有幫助的,所以自己搜集還有加上自己的理解整理了一個pdf,涵蓋了不同的技術點。
收集整理了各方面的,下面的圖片截取了部分,有如果有需要的自取
各大公司面試題集合:
簡歷模板: