背景
在老東家五年了,總共工做整七年,經歷兩家公司。2019-10-31日離職。公司規模較小,項目壓力不大,非985/211畢業,統招本科,計算機專業。目標:中大型公司,最好是大廠,嘿嘿,不過不抱但願,畢竟背景不太好。linux
準備
撰寫簡歷,天天下班回家 7-12點看視頻,刷博客,看面試題。學習內容:JavaGuide,《某某時間》系列專題,《某某課堂》學習視頻。準備內容:Java 基礎,集合,線程池,鎖,MySQL索引,事務,Spring等。git
2019-10.31 週四
提了離職已經有二十多天了,今天老闆簽了字,辦了離職手續,《某某直聘》上傳簡歷,刷新簡歷。《某東供應鏈部門》打電話問了問個人學歷是否統招本科,約我明天下午去面試。不過他也算是大廠吧,沒有面試經驗咋辦,內心很忐忑,不要緊,開始加油吧!咦,有條消息,我一看是我同窗給我發的截圖,原來他刷到個人簡歷了,他說幫我內推,心裏仍是挺激動的。內推公司:《打車》github
2019-11-01 週五
早上五點半爬起來了,開始看視頻,刷資料,準備面試,一直到12:00,沒吃飯。公司太遠了,在亦莊,要兩個小時才能到,出了地鐵口,映入眼簾的即是他們的大樓。找到部門,給了張面試題。面試
- HashMap,HashTable,ConcurrentHashMap的共同點和區別?
- Spring的 init-method,destroy-method的實現方式?
- 說幾種實現冪等的方式?
- 說幾種分佈式鎖的實現方式?
- 有一個List集合,多線程計算總和,說出你的思路和使用到的框架。
- 一個開放題目,數三角形的
作完題目,感受還比較OK,來了一個面試官,大概三十多左右。算法
- 自我介紹
- 介紹一下項目
- JVM內存模型
- MySQL事務隔離的底層實現?
- MySQL索引介紹一下?
- 命中索引要注意什麼?
- List去重,手寫代碼,考察基礎
二面:部門負責人數據庫
- 簡單聊聊,介紹團隊業務,有什麼要問的嗎?等待通知。(說好的《打車》內推呢,咋還不給我打電話呀,算了,可能簡歷沒過。)
總結:MySQL事務隔離底層實現細節還要多補充一下,JVM細節在多看看。緩存
接到《某某租房》公司面試邀約。下週一下午面,正好週六日在準備準備。微信
2019-11-04 週一
坐地鐵展轉到了公司大樓。你好,來面試的。領到一份面試題,來到三樓休息室,一大堆人跟菜市場似的。我擦,競爭壓力這麼大啊,看了一眼面試題,好多不會的,算了,不作了,走吧。來都來了,試試唄。開始作題。多線程
- String new String 的關係 ==,equals
- 兩個鏈表相交,求交點
- 三個線程順序打印ABC
- 若是aab,aba相等,給兩個字符串,判斷是否相等
- 畫一下RPC的架構圖
一面:一位說話比較輕柔的技術官。架構
- 自我介紹
- String ,new String 這道題爲何這麼選?緣由?
- 說一下項目
- 手寫一個單例
- JVM內存模型,JAVA 棧能分配對象嗎?
- 說一下類加載過程,雙親委派模型源碼看過嗎?介紹一下
- 什麼狀況下棧會溢出?
- 棧幀介紹一下?
- MySQL索引瞭解嗎?畫一下?
- 從業務角度出發,如何設計MySQL數據庫?有哪些優化點?
- 垃圾回收瞭解嗎?介紹一下?
- 講一下AOP的原理?Cglib能代理final方法嗎?
面試官對我說:我以爲還OK,你等一下,咱們領導開會,讓HR通知你改天二面吧。:好的,啓程回家。
同窗微信:咱們HR給你打電話了嗎?:沒有,那我讓他約你。
HR:你好,爲了避免耽誤時間,約您電話面試。(同窗介入)
HR:你好,週五直接來公司面試。。。。
2019-11-05 週二
相安無事,幫表弟的朋友扣了個人駕照9分。。。下午去某公司面試,結果面試官沒有接到電話,保安也不讓我去問,算了,走人吧。
2019-11-06 週三
《某某租房》複試。面試官很年輕,比我大兩歲,人家已是研發經理了,看看我。哎。。。。
- 項目爲何不用RPC框架?
- 瞭解RPC嗎?,畫一下流程圖?
- RPC和HTTP協議有什麼區別?
- 長鏈接是物理真實存在的嗎?
- 介紹一下項目?
- MQ 消息丟了怎麼辦?發消息是原子操做嗎?
三面:研發總監
- 鎖介紹一下?有哪些?
- 線程阻塞從操做系統的角度介紹一下?
- 其餘的記不清了
下午四面:技術總監
- HTTPS的流程
- 你認爲你還欠缺什麼?
- 如何學習的?
- 瞎扯淡,行了,簽字,錄用了
HR談offer,回家嘍。
2019-11-07 週四
《某某優鮮》下午兩點,找大樓找了半天。公司好幾層,我擦,沒見過這陣仗。上樓等一會,沒有面試題。
一面:
- 你的項目如何拆分的?爲何這麼拆?
- 如何保證服務高可用?
- MySQL掛了怎麼辦?(掛就掛了,很慚愧,公司沒實現數據庫高可用。。。。)
- 項目經歷有點差啊,就不問你互聯網項目問題了
- 說一下 WebSocket協議
- 說一下HTTPS協議
二面:
- SpringBoot瞭解嗎?和Spring的區別?
- 若是想作定製化開發,怎麼作?
- @Conditional 說一下
- 事務的傳播機制?
- 說說MySQL索引?
- 可重入鎖的原理?(state ,AQS)
- 拆分服務,服務治理有了解嗎?
HR:簡單聊了一下,爲何五年不離職?你這樣的不多見啊。還有一輪部門老大面試,你先回去吧,電話面。
晚上收到通知,週五6點電話面試。
2019-11-08 週五
該來的終於來了,要面對最終BOSS了。不過還好不用坐地鐵了,上午看了幾個視頻,準備了一下,中午12點,洗個澡,收拾收拾。騎車出發,心情很忐忑。騎車到了地方,公司LOGO映入眼簾,兩座大樓。給HR打電話,接待,上樓,等了一會,一個年輕的面試官過來了。
- 設計一個秒殺系統,講一下你的思路。(我擦!!!)
- 如何設計限流?
- 庫存怎麼扣減? decrby 能夠嗎?
- 庫存扣減失敗怎麼辦?
- 畫一下項目結構?
- a,b,c 聯合索引, a=1,b=1,c>1 能命中索引嗎? a=1,b>1,c=1能命中索引嗎?
- JVM 堆說一下?觸發Full GC 的場景有哪些?
- 說說G1垃圾回收器?老年代,年輕代如何分配?
- Redis 鎖出錯怎麼辦?
- Redis 扣減庫存有問題怎麼辦?
- 設計一個轉帳系統? A->B轉100塊,有沒有思路?
- Redis 有哪些持久化方式?
- Redis 數據會存放到磁盤嗎?
- Redis爲何這麼快?
- Linux 統計top10 IP訪問日誌,用到哪些命令?(不會)
- Linux 本身用過哪些命令呢?
- 如何查看Dump日誌?怎麼產生的?命令有哪些?
- 一個線程池 ,10個核心,100個最大線程數,100個隊列,10000個請求打過來,描述一下線程池如何運行? 拒絕了怎麼辦?
- 考察一下基礎知識吧,String new String 的區別? (== equals )
二面:(和一面問了好幾個重複的問題,害的我又講了一遍)
- 項目你認爲有哪些難點?(活動報名超員,聯想到秒殺)
- 秒殺場景如何處理?
- 能夠用Redis decrby 作庫存扣減嗎?如何作?(能夠用 lua保證原子性)
- lua過重,有別的方案嗎?
- 庫存如何恢復?
- 防止超賣還不行,未支付的訂單如何處理?
- 用戶名密碼如何防止被盜?(js加密,不行,仍是能破解,哦,https。。。。)
- 說說https的流程?
- 有了解過哪些非對稱加密算法?對稱加密算法呢?
- c,b,a 索引問題,c=1,b=1,a=1 能命中索引嗎? c>1,b=1,c=1 能命中索引嗎?爲何?
- 評論業務如何區分模塊的? (bizId)
- 某個業務打爆數據庫了怎麼辦?(分庫,拆分服務,單獨部署,還有呢?MQ)
- 瞭解限流嗎?降級?算了,你也沒接觸過,不問了。(ORZ)
- Linux 統計top10 IP訪問日誌,用到哪些命令?(不會)
- 說一說你對HashMap的結構理解,若是Key相同怎麼辦,鏈表是前插仍是後插?紅黑樹呢?
- 用過哪些Linux命令?(mkdir,ll,等。。。。linux確實是個人弱項,之後要惡補了。)
- 1 2 2 3 3 4 4 5,如何肯定3的索引位置? (計數統計,O(N) O(N),還有更好的方法嗎?循環吧。(正確答案二分法,我提到了,可是思路卻錯了,被批了一頓)
- GIT 團隊開發如何去作?若是有個 feature 不用上線怎麼辦呢?
- maven 若是包衝突,不解決會有什麼問題?如何解決包衝突問題?
- 設計一下Dubbo的線程池? 每次請求50ms 200 QPS,客戶端500ms超時,如何設計? 直接打入200個請求呢?隊列多大?線程池多大?(回答的很差)
- Integer a1=10000 Integer a2=10000,他倆 == 結果? 怎麼才能相等呢?(equals,== 比較的引用地址,考察Integer 緩存)
- Integer a1=100 Integer a2=100 呢? 參數能夠設置嗎?如何設置?
部門老大面:
- 你是某某同窗吧?(舍友)
- 說一下之後的打算?
- 技術成長?業務方面有哪些選擇?
- 不能光看技術,要熟悉業務
- 若是DB要掛了,用哪些方式去解決?(說了一些我認爲的方案,可是明顯不是。。畢竟沒接觸過,因此只能本身理解)
- 如何統計QPS?有沒有了解市面上的框架?如何實現,原理呢?
- 他們該問的都問了,聊聊非技術的吧
- 等一下,我讓HR找你。
HR面:
- 離職緣由?
- 五年怎麼離職了呢?
- 指望薪資?
- 週一等消息吧。
和同窗簡單聊了聊。同窗說個人回答還能夠,只不過經驗少一些。(哎,小公司業務量小,確實吃虧)。慢慢來!我說,有此次面試機會我已經滿足了!!!要否則個人簡歷確定是過不了的。
總結
面試以前確實要多作準備,不過有實戰經驗的話更佳,怪不得大廠跳大廠較爲容易一些。小公司也不要氣餒,一些公司不看項目,看你對高併發項目的理解,哪怕本身沒作過,有本身的方案也能夠。基礎必須紮實,不要只背理論,深刻了解,瞭解的越深越好,雖然說面試造火箭,工做擰螺絲,你有造火箭的能力還怕擰很差螺絲嗎?
面了整整一週,總共四家公司,最終結果本身仍是能夠接受的。 JVM,MySQL必須掌握,其餘基礎知識要牢固,而且要用到實戰上,要否則學再多也是理論,Linux操做系統要惡補一下,因爲本身高併發場景經驗較少,這個只能在業務量較大的公司才能學到。
另外,市場上的資料,不論是付費的仍是非付費的確實對面試頗有幫助,可是若是本身有個好項目搭配的話,更好一些,要否則面試官都無法問。
別問我爲何五年不離職,我也不知道,是好事仍是壞事?
總體面下來,感受本身準備的勉強及格了,但仍是不夠好,應該能回答的更好的,讓我想起了一句話,你原本能夠作的更好。因此,告誡本身不要再浪費時間,多學習,多總結。很幸運,再次感謝同窗的內推,謝謝你。
於 2019-11-08 21:02
2019年11月11日更新
已經收到 offer。很開心。日後繼續加油,像大牛看齊!