相信很多程式員都有一個進大廠的夢想,畢竟在更高的平台,接觸的項目也是更為先進的,自然自己的視野也會變得更廣闊。而有了這些經曆經驗,薪酬待遇更是水漲船高,畢竟在追求财富自由的路上,我們都才剛剛起步。
有了夢想,就要付諸實踐,讓夢想照進現實。在這裡筆者為大家分享一位粉絲的勵志經曆,看他是如何一步步從CRUD,跳槽晉級阿裡P7的。
交代背景
普通大學畢業,渾渾噩噩的過了四年,當走出校門後才開始為自己的未來擔憂。因為不是重點,大學學習氛圍本不就很好,再加上本人的一點惰性,四年時光相當于荒廢了,隻拿到一紙畢業證書,想來也是唏噓。
開始工作後,因為能力不行,人還比較直,在工作中是各種不順,想着慢慢混經驗的我,終于被自己的無知打敗,成了無業遊民。在此本人居然還沾沾自喜,認為終于能好好休息一陣兒啦,終于不用每天加班到十一二點了。但是僅僅過了一周,面臨房租、吃飯的問題,逐漸顯露了出來。
每天大手大腳,毫無節制,而自己又沒有了收入來源,逐漸意識到危機,于是開始了自救計劃。每天上午狂練基礎,下午就是各種投履歷,因為實在快要堅持不下去啦···
當時對于工作饑不擇食的我,很快就入職了一家小公司,從事的最簡單的CRUD,一做就是五年啊。終于在今年這個特殊的時期,決定試水一下自由市場。
疫情跳槽的艱難抉擇
2020年的上半年,注定是不平凡的。
新年伊始,疫情來的猝不及防,打亂了太多人計劃。本人原計劃繼續在公司曆練幾年,再想着往更高的平台去争取,但這場疫情無情的打碎了我的想法。因為疫情,很多大公司都面臨裁員,更何況在經濟寒冬下無數小公司了。
既然無法抗拒,那也不能随波逐流。既然哪哪也去不了,那索性在家深入自學。從Java多線程,再到RPC架構,從微服務架構,再到高并發、高擴充。狂打基礎,狂刷面試題,想着奮力一搏,也進進大廠,那得多美滋滋~~~
抉擇後的學習路線
Java多線程
- 程序和多線程的概念及線程的優點
- 使用多線程
- currentThread0方法
- isAlive0方法
- sleep0方法
- getld0方法
- 停止線程
- 暫停線程
- yield方法
- 線程的優先級
- 守護線程
- 等待/通知機制
- 方法join的使用
- 類ThreadLocal的使用
- 類InheritableThreadLocal的使用
微服務設計原理及架構
- 分布式架構
- 微服務架構
- 建構微服務架構的系統方法
- 微服務架構的挑戰
- 服務模組化方法
- 服務拆分
- 服務內建
- 服務治理
- 負載均衡
- 資料一緻性
- 微服務架構實作技術
- 微服務架構和研發過程轉變
JVM實戰調優
- Java虛拟機概述
- Java執行引擎工作原理:方法調用
- Java資料結構與面向對象
- Java位元組碼實戰
- 常量池解析
- 類變星解析
- Java棧幀
- 類方法解析
- 執行引擎
- 類的生命周期
······
有了足夠的基礎知識作為支撐,在網上也就開始了投遞履歷,先後收到美團、拼多多、位元組跳動和螞蟻金服的面試通知,于是就開始了網上面試。
美團二面
一面
- 自我介紹
- 講講JVM
- Lock和Synchronized的差別
- mybatis用過是吧,說說mybatis底層是怎麼實作的。
- BIO,NIO,AIO知道嗎,然後又說了說select,epoll
- https過程說一說,為什麼既要用非對稱,又要用對稱
- 寫道題,二叉樹右視圖
- 反問環節
二面是在下午,早上面試官親自打電話約時間
- 介紹下你之前在公司實習做的啥。
- 你詳細介紹一下你覺得最能凸顯你能力的一個。
- 你之前都是做的圖像相關的是吧,資料庫用過嗎
- 講講資料庫的事務吧,知道多少說多少
- 剛才提到了隔離級别,mysql中分别都是怎麼實作的
- 索引了解嗎,知道多少說多少
- 剛才提到了B+樹,B+樹詳細說說,指針都是怎麼指的,為什麼能減少磁盤IO
- 再來做個算法題吧,給一個點集,找出在一條直線上的最多點數,我想的太簡單了,重複點,浮點數精度的都沒考慮到,難怪面試官讓我再好好檢查檢查
- 反問環節
能感覺到自己發揮的不是很好,還是有點緊張,之後就沒有下文啦······
阿裡二面
有了之前失敗的經曆,這邊就是志在必得!!!
一面
- HashMap資料結構? put, get過程?擴容機制? JDK1.8版本中相比1.7做了哪些優化?容量怎麼計算的?
- ConcurrentHashMap資料結構?如何保證線程安全的?相比1. 7做了什麼優化?
- 為什麼String被設計成不可變的?
- 限流算法有哪些?差別是什麼?令牌桶如何實作?
- 一緻性hash算法?
- JVM記憶體模型(有些面試官其實隻是上你回答記憶體布局) ?各個記憶體區域分别是做什麼的?有哪些是共享的?
- 年輕代,老年代差別?垃圾回收算法分别是?垃圾回收器有哪些?
- CMS具體的工作流程? G1與CMS差別?
- GC Root對象有哪些?
明顯感覺難度提升,但發揮還算不錯。
二面
- spring和Springboot的差別。
- Spring中bean的加載,Springboot沒有配置 包路徑,它是怎麼實作包路徑掃描的。
- Spring注解原理。
- SpringdataJPA和Mybatis的差別。
- 類加載機制? tomcat為什麼打破雙親委派?
- 線程池有哪些?一般怎麼用?這些參數的意義是什麼?
- 線程通信的方式?
- Thread有幾種狀态?
- sleep與wait差別
- volatile作用?原理?
因為比較熟悉多線程,中間雖然有卡頓,但還是在面試官的指引下答了出來,感覺問題不大。果然在幾天後,收到了阿裡的offer。
換做是你,你能答到什麼程度呢?
筆者根據這幾次面經,整理了一些常見面試題,希望能幫到有準備面試的朋友。
大廠真題
專項面試題
有對這些面試真題感興趣的,想要深度學習的朋友,請幫忙轉發此文章,并關注小編,私信回複【學習】即可~~~
後記
面試造火箭,工作擰螺絲。隻有把平時基礎做好了,自己能力上去後,就有更多的可能性去選擇自己想要的工作生活。最後預祝大家都有一個美好的前程~~~
喜歡筆者請多多點贊評論轉發,關注筆者,後續筆者會再帶來更豐富的學習内容更新,真心希望能夠幫到大家更好的提升自己~~~