一個七年工作經驗程序猿的面試日記,看完受益匪淺

一個七年工作經驗程序猿的面試日記,看完受益匪淺

背景

在老東家五年了,總共工作整七年,經歷兩家公司。2019-10-31日離職。公司規模較小,項目壓力不大,非985/211畢業,統招本科,計算機專業。

目標:中大型公司,最好是大廠,嘿嘿,不過不抱希望,畢竟背景不太好。

準備過程

2019-10.31 週四

提了離職已經二十多天了,今天老闆簽了字,辦了離職手續,《某某直聘》上傳簡歷,刷新簡歷。

《某東供應鏈部門》打電話問了問我的學歷是否統招本科,約我明天下午去面試。不過他也算是大廠吧,沒有面試經驗咋辦,心裡很忐忑,沒關係,開始加油吧!

咦,有條消息,我一看是我同學給我發的截圖,原來他刷到我的簡歷了,他說幫我內推,內心還是挺激動的。內推公司:《打車》

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操作系統要惡補一下,由於自己高併發場景經驗較少,這個只能在業務量較大的公司才能學到。

另外,市場上的資料,不管是付費的還是非付費的確實對面試很有幫助,但是如果自己有個好項目搭配的話,更好一些,要不然面試官都沒法問。

別問我為什麼五年不離職,我也不知道是好事還是壞事?

整體面下來,感覺自己準備的勉強及格了,但還是不夠好,應該能回答的更好的,讓我想起了一句話,你本來可以做的更好。所以,告誡自己不要再浪費時間,多學習,多總結。很幸運,再次感謝同學的內推,謝謝你。

讀者福利

為感謝各位粉絲的支持,幫助各位喜歡java的朋友,我整理了將近5個G大小的學習資料哦,資料包含了架構學習、面試集錦、硬核知識點解析,視頻教程等。

轉發+關注+私信發送《架構資料》即可獲得免費領取方式!!

轉發+關注+私信發送《架構資料》即可獲得免費領取方式!!

轉發+關注+私信發送《架構資料》即可獲得免費領取方式!!

一個七年工作經驗程序猿的面試日記,看完受益匪淺

領取資料的朋友就有一些忘記私信而錯過寶貴資料,所以關鍵別忘了轉發後私信哦!

這些資料都以整理成了PDF文檔,如果有需要獲取到這個群裡面的文檔的話幫忙轉發一下然後再關注我私信回覆“架構資料”得到獲取方式吧!即可進群獲取下載!!!

一個七年工作經驗程序猿的面試日記,看完受益匪淺

更多Java架構進階資料展示

一個七年工作經驗程序猿的面試日記,看完受益匪淺

一個七年工作經驗程序猿的面試日記,看完受益匪淺


分享到:


相關文章: