暑期實習總結與建議(真誠版)
一、暑期過程(略啰嗦)
3.7 從美團離職,開始找暑期,4.18 收到唯一一個 offer 和一個 hr 面(接了 offer,結束暑期)。
第一場面試是 3.17 的字節(jié),連 HashMap 和 HashTable 的區(qū)別、B 樹和 B+ 樹的區(qū)別這些很基礎的東西都說不上來,后來接連面了十幾場,也只能說答上來 60% - 70% 左右。
四月初清明那會已經(jīng)基本上心灰意冷了,開始投日常,沒想到剩的兩個流程都走到了最后。
二、準備暑期的學習建議
2.0 要構建自己的知識體系
具體來說就是寫文檔 / 博客。個人覺得這一點非常非常重要。
2.1 熟悉基礎八股
什么是基礎八股呢,舉例子:
HashMap 的底層原理、Redis 主從復制過程、InnoDB 為什么采用 B+ 樹的數(shù)據(jù)結構、AQS 原理、G1 垃圾回收器、瀏覽器訪問網(wǎng)站的全過程、IO多路復用
怎么熟悉?構建自己的知識體系 + JavaGuide 等總結的八股 + 網(wǎng)上其他人整理的各模塊的常用八股 + 面經(jīng)補充
這個階段要注重理解,只有真正理解了,才能記得住,才能承受住面試官的拷打。
2.2 深入底層
現(xiàn)在的面試很多時候不會局限于基礎八股,會考察比較硬核的計算機基礎知識,主要體現(xiàn)在操作系統(tǒng)上,比如說:
線程上下文切換涉及到哪些操作?為什么切換是比較重的操作?
CPU Cache 和內(nèi)存是怎么交換數(shù)據(jù)的?
從操作系統(tǒng)的角度,一次磁盤 IO 的流程?
2.3 靈活運用
這部分不太好描述,對應的能力是在學習計算機知識的過程中自己沉淀的理解,舉幾個例子吧:
Java 在日常編碼的過程中如何保證線程安全?
實現(xiàn)一個線程安全的無鎖隊列,說說你的方案,元素的入隊和出隊的實現(xiàn)方式?
Redis Client 是怎么傳輸命令到 Server 的?(比較特別的是七層網(wǎng)絡模型中的表示層,也就是數(shù)據(jù)如何編碼和序列化)(面試時甚至讓我寫對應的 JSON)
2.4 實戰(zhàn)能力
比如:你們 MySQL 機器的配置是?一次 IO 需要多少時間?訪問一次內(nèi)存需要多少時間?同機房的網(wǎng)絡傳輸大概多快?
2.5 系統(tǒng)設計題
個人感覺這部分可以找?guī)讉€典型場景吃透,推薦 http://fangfengwang8.cn/discuss/743518189807505408
2.6 算法
我自己是只刷了 hot 100,刷了 1.5 遍,大概 3.25 之后就沒刷過了
我個人的考量是 hot 100 刷透是完全夠的,再深入刷性價比不高
面試的時候也會對 hot 100 拓展,比如:升序數(shù)組中重復元素的個數(shù)、非遞歸實現(xiàn)二叉樹的后序遍歷、含重復元素的數(shù)組的全排列
三、關于面試
最想說的是:不要過于懷疑自己的能力而內(nèi)耗,很多時候是運氣問題!
面試問的很難答的不好不代表不會過,體現(xiàn)出自己的思考就好
面試前可以花幾個小時時間把體系過一遍,每次過的時候把不熟悉的地方重點標記一下,多看兩遍
3.1 面試官對候選人的期待是什么?
我基本上每場面試的反問都會問這個問題,總結了一下:
- 不強求很契合的技術棧,更多是對候選人本身特質(zhì)的考察,所以會對簡歷上信息做針對性提問,準備面試的時候突出你擅長的領域即可
- 舉例:簡歷上寫了單例模式,面試官會問:項目中如何使用單例模式的、單例模式的實現(xiàn)有哪些、單例模式的經(jīng)典應用場景
- 總結一下,就是 what(實現(xiàn)方式有哪些)、why(優(yōu)缺點、和其他的比較)、how(項目中怎么用的、經(jīng)典應用場景)
- 聰明、對技術感興趣、有鉆研能力
最后祝大家都能拿到滿意的 offer??????
#實習進度記錄#