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