說在前面
先說下自己基本情況,我是大學土木, 保研本校計算機, 保研的時候因為跨專業是以被調成了專碩, 總共兩年, 是以隻讀了半年就要準備找工作. [跨保相關的經驗, 我最後有連結] 我們實驗室基本都是做的縱向課題, 并且專碩學碩的培養計劃是一緻的, 接觸橫向的機會并不多. 考慮到做算法兩年時間(實際上隻有一年)很難有競争力, 并且這兩年算法的内卷比較嚴重的情況, 我開始了自己的自學研發的道路.
在整個學習和準備找實習的過程中, 掘金和牛客真的給了我很大幫助, 是以在我上岸之後, 在學長的建議下對我自己的經曆進行一個總結, 回饋大家, 大家如果有什麼問題歡迎留言和小窗.
4月8号收到阿裡釘釘實習的口頭offer,我的春招實習基本進入尾聲,面的崗位都是後端java(位元組要轉go),以美團位元組阿裡的oc收官。總體結果挺出乎我的意料的,因為我的履歷上沒有别人那麼漂亮的java項目(兩個項目一個是我畢設的車輛路徑算法設計cpp,一個是做的橫向課題web開發python), 也沒有大廠的實習經曆, 我覺得履歷能看的主要就是權重和數模一等獎這些. 我自己從一月底開始琢磨實習的事情,過完大年初三開始複習準備,總體時間甚至有些倉促,而且作為一個開始準備的時候,用java寫leetcode都要偶爾翻doc查api的菜雞,我都有點意外我可以走到現在. 回顧整個過程, 我覺得一定是我做對了什麼事,是以把自己的經驗梳理一下,給大家作為參考。
要不要投實習
實習招聘戰場上,通常有兩類人,一類是已經準備的差不多的大佬,在我都不敢投大廠的時候,oc已經拿到手軟。一類是啥都沒準備,突然意識到秋招前我是不是該先試試水的菜雞,比如我。
是以這裡第一個問題, 要不要投實習? 實驗室不放的話投實習有什麼意義? 實習面試太菜會不會影響秋招?
首先是要去投, 就算沒有準備好, 也要邊準備邊投. 實習面試的經曆非常重要, 甚至對于沒有準備好的同學更重要, 沒有準備好通常的狀态, 比如我手上沒有實習經曆, 沒有見過大廠的真題, 沒有感受過大廠面試的過程. 這種情況, 春天的實習招聘就是你的複活甲, 投不了吃虧投不了上當, 血賺不虧. 如果這個時候不投, 秋招的時候就真的裸奔上戰場了, 實習0offer可怕還是秋招0offer可怕, 應該大家都有衡量.
比如我們學校很多實驗室是不放實習的, 我和朋友聊的過程也經常遇到這種情況, 我們實驗室也是理論上不放實習, 但我覺得實習固然重要, 對于沒有實習經曆的同學, 實習面試的經曆也很重要, 像阿裡這種來不了實習也可以直通終面的情況,真的非常友好. 是以, 即使實驗室不放, 我也強烈建議要去投一投, 把面試經驗沉澱一下. 如果過了, 接到oc去不了拒掉的話,好好和hr溝通,據說人家秋招還會來問你意向(不是鴿offer,鴿offer可能被拉黑)
然後面試被刷影不影響秋招, 我面過的大廠, 都是回複的有通過記錄的秋招有優勢, 沒有通過也不會影響. 我甚至之前看到過大佬的分享, 說進阿裡的童鞋有很多是有不止一次面試記錄, 是否能過與能力, 部門情況, 運氣, 臨場表現息息相關, 過了不代表強, 不過也不能代表一無是處.
總結就是, 實習階段的面試是很低成本的試錯機會, 大家要抓住這樣的穩賺不賠的機會.
面試準備
接下來說下我的面試的準備,兩個月的時間邊準備邊面,比較倉促, 但也很适合目前還沒有準備好的同學。
計算機基礎,作業系統,計網和資料結構。我在面試前都把教材過了一遍,并且要總結,有的我用了我以前的筆記,有的搬了些部落格和github的内容. 這部分複習花了大概15天, 期間也每天在刷算法題. 有了自己的知識點總結, 之後是一個查漏補缺的過程,把牛客上見到的題不會的,找到答案補充進去,高頻的問題,拎出來答案準備好,每次面試前過一遍。參考我的github,note_md高頻部分, 另外, 推薦大家可以借鑒github上cyc2018的這種總結方式, 對知識點進行梳理. 上面提到了我自己的項目, 但是做的的确不如cyc好, 連結在文末會給出.
計算機基礎是大廠面試的重中之重,并且千萬不要背答案, 背不完也沒有用. 阿裡的面試為例, 作業系統和算法的部分, 有的地方我記不住的,面試官提示一下,我給面試官展示了把完整的知識點推出來的思路, 我覺得這個過程其實比直接給答案更加分。
算法題要刷,我的順序是兩遍劍指,挑出還不會的最優解的, 再過一遍. 然後cyc2018的leetcode題庫,先刷完資料結構部分,再刷算法部分。面試手撕原題命中率很高。刷題時,遇到不太熟的,比如我是dp和trie字典樹不熟的,系統性的翻教材學一遍做好筆記,針對性的做點算法題鞏固。算法題啊,沒必要死磕,剛開始刷的時候20分鐘完全沒頭緒很正常,看一遍答案,明天回頭自己寫一遍。 我劍指上都有三刷記不住最優解的,記不住的別強求。每天一個半小時起步吧,開始的時候每天花半天時間。
再是java基礎,這個部分比較雜,我建議找個比較全的java知識點思維導圖,掌握的勾掉,不熟的先從高頻到低頻準備,然後對導圖上的知識一個個補洞, 準備的過程并不是找到高頻題答案就行了, 最好能讀一讀源碼(時間不夠可以看源碼分析的部落格, 然後和自己學的作業系統/計網的知識點串一串)。學習資料和順序,JavaSE我推薦《core java 第一卷》, 比較厚, 前六章一定要看, 後面的按需跳着看, 最好能和《java程式設計思想》比較着看,我覺得後者講的更清楚。 jvm隻要看最經典的《深入java虛拟機》那本,我自己對java基礎的複習主要是看部落格+源碼,并發這部分有看《java concurrency in practice》 的中文版,但是直接看部落格+源碼也還行。時間不夠的話不要太留戀難點,我到現在AQS都沒完整讀透,準備的過程要寫demo,跑通過的東西記憶會深刻很多, 同時要寫部落格或做筆記, 以後這就是你知識體系的外存 。
然後再回到計算機基本功,問的高頻題和履歷延伸到東西都是比較容易準備的。 難的是開放題,沒法準備隻能靠自己的計算機基礎去嘗試給答案,不過也可能是我自己基礎不紮實或者見識有限積累不夠。但我的總體建議是, 聯系你學過的作業系統,計網中學過的解決問題的方法進行遷移。這部分真的靠日常積累。
怎麼準備履歷
首先是政策和态度, 你要對自己履歷的每個字負責。如果認真準備它們就是你的亮點, 否則就是面試官抓到你的漏洞。履歷是你最能控住全場的部分,别的問題沒法準備, 但是履歷上的東西是可以提前準備的。每個字都要想面試官會拿着這個怎麼問,自己按照背景,亮點,不足,可能可以改進的方向準備好回答,然後積累不同面試過程中面試官對你項目問的問題,履歷相關的東西面幾次就脫口而出了。
履歷沒有java項目怎麼辦,我覺得面試Java用java相關當然最好,但是我真的沒有完整的好看的Java項目,這是我的短闆,被阿裡hr吊着打,差點挂我。但是沒有的話臨時湊的不如一個不是Java但是非常完整的,完整到你複盤過,和更好的比較過,最好比較完回頭改進過,如果做到最後一步這個項目就比較完整了,我隻做到找優秀的相似項目比較,但是也是以得到過好評。 Java項目可以反映你對這門語言和其生态的熟悉程度, 但是一個不完整的項目也會讓你在面試時漏洞百出。
自己的項目,用過的架構相關的高頻面試題一定要熟,源碼有餘力最好能讀一讀,讀不完沒關系, 從來沒看過就是态度問題。 問到源碼沒有看過的部分, 可以說那部分沒看過,但是正在看這個部分,就扯回你熟悉的領域了。我自己會暗搓搓搜一些Spring面試高頻知識點,但是主要是為了應急啦,我現在不急了還是每天啃一點spring源碼。
然後關于履歷模闆,身邊居然有很多朋友問我要這東西,這點我其實挺想不通的,這玩意網上應該很多吧,這裡也給大家看一下我整理的一些模闆吧,都挺簡約的,沒什麼花裡胡哨的
需要的同學轉發本文+關注+私信【模闆】即可
面試套路
首先說一下我最近面了這麼多的一個感想,實習不一定要有好看的項目,但是基礎一定要紮實,同時要帶着面試官往你擅長的地方走,自己的戰線不要打得太開。舉個反例,一下說自己熟悉mysql,一下說自己Spring用的6,再往zk,dubbo一扯,面試官對你的期望很高,一問都沒看過源碼,然後很容易涼涼。
相反,開始不要給面試官太高期待,比如我,我知道我菜, 是以自我介紹的時候就說熟悉javaSE,用過mysql,redis,Spring還在學,源碼這些可能不太熟。 然後面試官在你圈的範圍開始問了之後,一旦問到了你精心準備的部分可以給他設個連環套,面試官可能會對你刮目相看。比如hashmap套concurrentHashMap套volatile, 他如果順着準備的這條問,就這三條我聊源碼可以說40分鐘不止,類似的在mysql,redis,以及其他的JavaEE架構這些技術上也有對常問的點準備到侃侃而談,不常問的點不至于一句都說不上來,一個面試的基本盤就搭起來了。面試官他有可能會跳出你畫的圈,對我來說比如問到javaEE相關的,如果正好你也有準備,同樣是回答一個知識點,面試官在不同期待值下的感受應該是有差別的。
另外,遇到不會的知識點,但是你有自己的推測的,可以說,這部分我不太熟,如果我來做可能會xxx,因為我覺得(推測原因),我下去會了解下這一部分。在我有限的嘗試中,這裡面試官點頭的情況還蠻多的,主要是我瞎猜的準? 對于那種要麼是要麼不是或者你就算猜都編不出理由的,坦誠地說不好意思這部分有點糊。一方面,你需要展示出你遇到問題時,是比較主動的想解決方案的姿态,另一方面也要坦誠,但是如果你這不會那不會說的太多,估計要涼。比如我的蘑菇街,我說最近自己寫demo做了一個比較簡陋的web伺服器,多嘴說了句參考了tomcat源碼,然後被抓住問了一堆tomcat我不太熟的,就沒了。
政策和心态
我是從牛客的貼意識到去面實習的重要性,也是在牛客和掘金上找的大部分實習,以及面經。看大家都有offer,我那時每天過的都非常難受,不敢刷牛客掘金,感覺人和人的差别真的太大了,又對自己沒有什麼信心,面了的都要麼涼要麼沒有消息,每天晚上一兩點不敢停下學習,不敢睡覺,躺床上也會懷疑人生。
我自己準備過程的心态的确不夠好,非常焦慮,但是我覺得政策上還是有可取之處。面試準備上點面結合, 高頻題是點, 計算機基礎是面; 選擇公司時, 沒有面試經驗的時候,适當多投一些,自己想去的公司往後排一點。再重複一遍, 過了不管一面還是兩面都是有積極作用的,沒過的話,不會影響秋招, 白嫖一個心儀廠的試錯機會。像我這種面着面着就進去了的也是可能的,我是真的菜雞。
btw。 選擇計算機行業, 意味着在一定程度上以技術安身立命, 投機取巧一定是不牢靠的,要做好長期規劃和持續內建,比如我缺的分布式相關的知識和項目練習,我也會在近期盡快補上,努力成為一個真大佬。
然後打個廣告,阿裡釘釘急缺履歷,其他bu挂了有機會撈,java後端和前端,base杭州/北京, 球球了,我也有找履歷kpi,目前還有三十多個hc, 大家走過路過,投個履歷,我還可以線上賣藝幫忙改履歷,還有阿裡學長幫忙改和提建議,及時跟進我每輪面完最多一天就知道結果,一周走完流程,人超級好。
我上岸真的有很大一部分的運氣和學長的幫助, 以及各輪面試的面試官都非常平等的和我交流技術探讨問題, 沒有因為我沒有好看的Java項目放棄我, 很多問題考得很活有難度但也很過瘾.
對我們感興趣的或者求撈的, 可以私信把『姓名+電話+郵箱+院校+投遞崗位』發給我,後續會給這些同學們發内推郵件,然後填郵件完成投遞。也可以掃二維碼投遞, 記得和我私信說一下, 我這邊幫你對接.
以上是我暫時想到的東西,然後擺一波資源
書單(也是我從别的大佬找來的通過我自己驗證的優先看的章節, 其他章節也要慢慢看完)
- 劍指offer
- 深入了解Java虛拟機 第二章 第三章 第七章 第十二章 第十三章
- mysql必知必會 + leetcode-database題目
- 高性能mysql 第一章 第五章和第六章
- redis設計與實作 字典 跳躍表 過期機制 持久化 事件 複制 Sentinel 叢集 釋出與訂閱 事務
這些書網上找找應該也都能找到,懶得找的朋友可以找我要,關注+私信【學習書籍】即可
項目資源
- spring boot
- spring cloud微服務
這些練手項目, 如果是自己如果想不到做什麼可以模仿的項目, 但是我依然建議大家自己去想一想項目, 比如模仿spring寫個IoC容器, 模仿tomcat實作個小web伺服器, 這些都是我這樣的菜雞的選擇, 大佬繞道.