逆風而行!從考研失敗到收穫到自己滿意的後端開發Offer,分享一下自己的經歷!

大家好,我是Guide哥,這篇文章是一位讀者的投稿。這篇文章分享了他從確定Java後端方向 -> 考研 -> 考研失敗->準備春招 -> 收貨自己滿意的offer 的心路歷程。

Guide哥:建議好好看看,作者分享的內容很棒!相關閱讀:《V2.0 版本的 《JavaGuide面試突擊版》來啦!帶着它的在線閱讀版本來啦!》

個人情況

我本科是某雙非一本,大學四年也沒做過太多有成就的事情。和很多在校生一樣,我也經歷過很迷茫的時間段,倒騰過單片機。

當時還出於對黑客的崇拜,折騰過一個月的網絡安全。反正什麼都去接觸一點,以此來消磨我無聊的時間,不過後面談了女朋友就不無聊了,哈哈。

Guide 哥:竟然有女朋友!

唯一感覺有收穫的應該就是呆過 ACM 訓練營,無奈自己太菜,拿的獎項都很小,藍橋杯省一等獎這種水平。從大三開始,給自己明確了目標,還是老實實學習一個領域的技術吧。當時從知乎上查看了有很多方向,前端,後端,大數據,人工智能。根據我自己的興趣(好就業)給自己明確了 Java 後端開發的方向。

考研

當時出於想繼續學習提升自己的目的,選擇了考研。這個地方想說一點就是,到大三了一定要規劃好自己將來要做什麼考研,就業,考公務員等等,堅定自己的信心和決心!。不要像我一樣,在考研開始到結束的期間總會在某個時間段會心態上波動,覺得一整年的考研可能因此錯過很多的機會,比如秋招。萬一最後沒考上研,就很尷尬了,畢業即失業?

尤其是自己考研期間複習不理想的時候,胡思亂想的東西就會越來越多。經常會找同學,朋友以及考上研的學長談心來調節自己的心態。這個地方特別想感謝我的女朋友,在我每次心態爆炸,迷茫想放棄的時候,都願意花自己的時間陪我出去散心,雖然她也在備戰考研。有機會的話,還是建議能找幾個比較自律的研友,可以互聯督促約束。

Guide 哥:此處@一下這位老哥的女朋友。

這一切都過來的時候,纔會覺得自己當初的想法比較幼稚,天無絕人之路。既然選擇了遠方,便只顧風雨兼程。專心做好一件事就行,只要自己保持上進心,相信未來一定會越來越好,一切美好都將與你環環相扣。

好在我最後還是堅持的走完了考研的旅程,雖然結果不那麼的美好,但是我覺得一切都是值得的,至少我的計算機基礎,高數,英語在這一年裏都得到了很大的提高。

準備春招

我從考研結束之後,就開始着手準備春招的內容,複習以前做過的項目和學習過的技術棧。由於時間比較緊,任務比較重。這個時候,我覺得可以面向面經來學習準備,我花了一個上午的時間去牛客網刷面經,

最終按照不同的模塊整理了一份不重複的面試常見問題,接着一切的學習任務都圍繞着這個面試題來展開復習,查閱相關的書籍資料。

總結了一下,需要準備的內容也就是:

  1. 算法
  2. 項目
  3. 牛客網總結的常見面試知識點的複習。

算法的話,我的時間比較緊,複習的主要是 《劍指 offer》 + leetcode 的 top100。剛開始可以按分專題模塊來刷,後面就可以隨機練習。

項目的話,我覺得如果有機會能接觸到真實的項目是非常好的,因爲這一塊當你面試的時候針對某些細節你可以自信的和麪試官聊很多,如果要是自己包裝的話,可能聊起來會覺得很虛。不過也沒有關係,即使是自己跟着網課學習的或者找的開源項目,我覺得首先得保證能完全喫透這個項目的細節,細到數據庫的表各個字段的含義,項目中哪些功能在哪一個模塊實現,爲什麼這樣實現,有沒有更好的實現方式了。這些我覺得都是你需要思考的問題,因爲面試中會出現各種不同的情況,面對不同的面試官,問的問題也是千奇百怪的。

關於項目經歷,我再補充一下,避免大家踩坑。

不管是網課的項目,還是開源的項目。你能發現,別人也能發現,怎麼才能避免雷同,體現自己的特色,項目中真正具有你的思考在裏面。我有如下建議送給你:

  1. 可以替換其中的相關技術棧(比如 kafka 換成 RocketMQ),同時還需要準備自己選型這個技術棧的理由,一定要能夠自圓其說。
  2. 可以自己在這個項目的基礎之上添加一些額外的功能。這些內容都算是你自己寫的,也是自己思考的點,面試的時候可以自信的和麪試官介紹。對於項目介紹的部分,我覺得可以主動突出自己的亮點和難點。比如常見的考察 JVM 相關的問題,可以通過"自己創造難點,遇到的問題"來將這個問題主動出來,將主動權握在自己的手中。比如我當時爲了說明項目中解決的問題,在項目的讀寫分離部分是通過 MyBatis 的數據源的動態切換,這一模塊中使用了 Threadlocal 來進行隔離,因此拋出由於團隊人員在開發過程中忘記 remove,最終導致項目上線後定期出現的 oom 問題,你可以聊你的解決方案以及定位問題的方法,接着面試官還有可能會考察 ThreadLocal 相關的問題,沿着這一條鏈路下來,可以思考着面試中面試官可能會問的這些問題,提前做好準備,讓自己能夠更有信心得去準備面試。對於面試,一定需要記住提早開始面起來,不要像我一樣"等待一切都準備好"再投簡歷開始面試,這樣會錯過很多的機會。面了 2-3 家之後就慢慢培養出感覺來,從一開始自我介紹都結結巴巴,到最後把握面試的過程,這個階段是需要練習的,可以剛開始投遞自己最不想去的公司,當成自己練習的過程。

好在自己準備的還算充分,感覺比較幸運的是在這個疫情籠罩加上互聯網寒冬時期,各大互聯網公司裁員的情況下,經歷了幾個月的反覆準備讓自己拿了一些的 offer,最終也獲得了自己比較滿意的 offer。面經部分,個人覺得 SHEIN 這家公司問的比較全面,涵蓋了常見的題目。如下,僅供參考學習。

SHEIN 面經分享

SHEIN 是一家成立於 2008 年的快時尚出口跨境電商互聯網公司,集商品設計、倉儲供應鏈、互聯網研發以及線上運營於一體。

一面(45min 左右)

  1. 自我介紹
  2. 詳細的聊了 TCP 三次握手四次揮手,以及各個環節可能會出現的相關問題。
  3. 有沒有做過 MySQL 調優,MySQL 的一些優化方法,還問到了 MySQL 選錯索引的問題,整條 MySQL 執行會經過哪些過程。
  4. HashMap 和 ConcurrentHashMap 1.7 和 1.8 的變化。hash 擴容爲什麼要擴大兩倍,擴大 3 倍爲什麼不行。
  5. 本地緩存 GuavaCache 和 Redis 的區別,爲什麼項目中採用了多級緩存的設計
  6. 介紹常見的設計模式(這一塊,我覺得結合 jdk 或者 spring 相關源碼,或者自己的項目使用的設計模式聊比較好)
  7. 爲什麼要使用 SpringBoot,他能帶來哪些好處。
  8. 線程池你在項目中怎麼使用的,線程池內部原理的流程是什麼樣的。
  9. 阻塞隊列有沒有看過底層是怎麼實現的
  10. synchronize 和 ReentrantLock 的區別,需要先介紹各自的底層實現。
  11. 有沒有什麼想問他的。

二面(1h 左右)

二面問了挺久,總共一個半小時,基本圍繞着簡歷來問,

  1. 問了一些 Java 基礎,HashMap,HashSet,重寫了 hashCode 方法需不需要重寫 equal 方法,如何解決哈希衝突的等等.
  2. B+樹,InnoDB 與 MyIsam 的區別,還問了事務隔離級別讀提交與可重複讀的的一些區別.
  3. 接下來又問了 Java 併發知識點,Synchronized 與 ReentrantLock 區別,可見性的問題,CAS,問到 Unsafe 是什麼,原子類等等.
  4. JVM 問的比較多,程序計數器的作用,虛擬機棧裏面的棧幀存放着什麼,本地方法棧又是幹什麼用的,新生代與老年代,垃圾回收算法,垃圾收集器等等問題。
  5. Spring 問了 IOC 和 AOP,這一塊問的相對較少.
  6. 問了很多基礎之後纔開始問項目,項目從第一個開始問,問的很細,難點在哪,怎麼解決,點贊後站內信的通知異步是怎麼實現的等等,問完第一個項目接着問第二個項目。
  7. 問了 netty 如何使用的,nio 相關問題,最後問到 Linux 的 io ,select,epoll 這些。
  8. HashMap 存儲了 50w 的數據,給出最快速給遍歷方法
  9. 有沒有什麼想問他的。

三面(25min 左右)

三面問的技術問題就相對少了,主要問了跳錶,Java 併發的知識點,Linux 的基礎命令,Git 的常規問題,JVM 的回收算法介紹了下,還問了讓我來介紹 Git 給不懂 Git 的人聽,你會怎麼跟他介紹。

四面 ( CTO 面 時間很短,不到 5 分鐘)

大概就隨便和我聊了下,爲什麼想來南京,有沒有參加秋招,本科期間代碼量怎麼樣,我當時都還沒開始聊起來,他就說大概就這些了。 感覺有點虛,畢竟問的時間那麼短,當時我還問了之前認識的一個老哥,他也面了 CTO 面,他也是 5 分鐘左右,總體感覺 CTO 挺幽默的。

五面 HR 面

主要介紹了公司的情況,薪酬待遇,問能不能提前去實習等等一些問題。

總體感覺 shein 的面試效率還是很高的,基本一天一面。 HR 的態度非常好,中間由於一些事情耽誤,還鴿了一次技術面試,HR 根據我的時間以及面試官的時間幫我額外安排了一次面試。對這家公司的映像非常好。
值得一提的是感覺現在互聯網上的資料太過於多,各大線上架構師等培訓機構的出現,間接的促進了面試難度在逐年加大,有些問題不能不理解的單單去記憶背誦,以此來期望面試通過,這個方法肯定行不通。
記得比較深刻的是有一場面試,我間接提了好幾嘴自己對於 HashMap,ConcurrentHashMap 比較熟悉,面試官都不買賬。包括後續問我對 Java 那一塊比較熟悉除了集合部分(衰)。對於 JVM 的考察也不再是考察背誦垃圾回收算法以及常見的垃圾收集器,而是問爲什麼要按這個比例設定,如果不這樣會導致什麼問題等等。對於常見的排序和二叉樹的時間複雜度被問到後,面試官希望你能夠給他推導出來。所以,希望準備面試的小夥伴,

寫在最後

還是要準備紮實的基礎,不要靠直接背誦面試題這種方式來應付面試,方能以不變應萬變。最後,喫水不忘挖井人,非常感謝 Guide 哥的幫助,Guide 哥的公衆號和 github 在我學習 Java 的道路上包括後續的準備面試的過程中對我的幫助都非常大。

Guide 哥:這個彩虹屁 🌈 很喜歡,哈哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章