又跳槽!3年Java經驗收割成都大廠的面試心得(乾貨滿滿&文末有福利)

Cuzzz發表於2024-06-18

中廠->阿里->位元組,成都->杭州->成都

系列文章目錄和關於我

0.前言

筆者在不足兩年經驗的時候從成都一家金融科技中廠跳槽到杭州阿里淘天集團,又於今年5月份從杭州淘天跳槽到成都位元組。自認為自己在面試這方面有一點心得,處於記錄和分享的目的便有了此文,此文純主觀,也許對3年社招的同學有所幫助。

本文主要是面試技巧,技術方面不涉及。

1.面試前

1.1 專案亮點梳理

也許你和我一樣,寫簡歷的時候寫到專案亮點環節,感覺無從下手。

筆者在阿里甚至很少寫資料庫,大多做一些查詢展示的功能,那麼專案亮點從何而來?

亮點不等於高併發

實際618這種高峰情況下,生產環境有些介面qps小於機器數doge。不要覺得自己沒有高併發的經驗就覺得自己沒有亮點。

你缺少發現亮點的眼睛

由於你是實際寫專案的人,“不知廬山真面目,只緣身在此山中”,很多時候你也許需要另外一個人聽你描述專案,在對方的問題中你將找到專案的亮點!(這個人可以是我,詳見文末!)

亮點不一定是你已經實現的

在真實場景中,也許因為排期、不要過度設計、或者其他原因,真正實現的方式是一口氣梭哈,甚至在極端場景下是有題的。

  • 亮點可以來自你yy想出的:也許你可以想一個更加完善、更加具備擴充套件性、穩定性的設計,只要你能較完備的設計出方案,並且方案是可行的,那麼這可以作為你的亮點,即使你沒有寫程式碼。

    例子:我在淘天的時候有一個依賴第三方抽獎介面的功能,程式碼實現是呼叫第三方介面,然後同步落表,並依靠訊息來保證最終一致性。在這個背景下,我yy了使用本地訊息表的分散式事務,這便成為了我的專案亮點。

  • 亮點專案不一定是你做的專案:雖然這有點不誠實,但是大部分情況下核心功能輪不到你做,如果你能主動的去梳理這個功能,瞭解需求背景、技術方案、穩定性等相關內容並融合貫通,那麼這個專案又何必是你做過的?doge

想清楚怎麼描述你這個專案

一般來說,面試的時候會讓你做一個自我介紹並簡要的說一下你自認為比較有挑戰的專案。

這個時候你需要簡要的描述這個專案,並且能簡要的說出技術挑戰(吊一下面試官的胃口,引導面試官doge),我是這樣做的

  1. 簡單的說明一下需求背景,一般一句話,不要太長!因為我是業務開發,這一句話主要要表現你對業務是有理解的,甚至有自己的理解,最好能知道需求的目的!不要太長,因為你面試的是技術開發,不是產品!

  2. 分條說專案的難點or亮點:

    比如合理的設計分庫分表,滿足後續業務迭代,並實現冷熱資料分離利用本地訊息表,基於訊息和重試機制實現最終一致性。這裡是簡單的說一下你的幾個專案,因此大概說一些技術難點即可,不需要展開,因為你應該不只有一個專案。

  3. 提一下成果:

    比如最終業務成果(業務指標,模糊的說一下,太精確就涉密了),技術成果(效能最佳化了多少,能抗多少qps,這個成功要和你克服的難點對應起來!)

如上是說,簡單介紹專案,主要是簡要說一下,一般後續面試官回挑它感興趣的點進一步挖掘,面試前你要準備好如何應答,我一般是這樣梳理的:

  • 業務背景和業務上的限制:

    業務上下游及背景,有些時候一個專案是有早期的枷鎖的,可以提一下。這裡一樣簡短,主要是給面試官一個背景,不然上來說這個專案xxxx,人家直接懵逼了!

  • 實現了什麼功能:大致說一下核心介面的功能,大致流程,有哪些模型。

  • 難點,以及怎麼解決的:難點1 :xxxx,你設計了一個什麼樣的方案並最終解決。

  • 你為什麼這麼做:這裡要體現出你對技術的思考,比如分散式事務,你為什麼不用tcc(需要上下游改造,別人不try 你做不到,那麼上下游會配合你麼?),等等其他選型都可以說一下,最終你選擇了本地事務+訊息重試保證最終一致性(為什麼?因為實現簡單,並且需求不需要實時的一致性,最終一致性即可,那麼中間這一段不一致的時間,你是如何解決的,前端是如何表達的,等等)

  • 目前還有什麼不足,後續如何做

    這裡主要是體現,你有規劃,是主動的,有技術追求的。而不是一個純粹的執行者!

1.2 簡歷編寫

排版啥的我就不說了

規避你的弱點

比如你學歷不好,但是在公司拿過很好的績效,有不俗的成果,那麼工作經歷應該放在學歷上面。

讓面試官看到你想讓他看到的

和談戀愛一樣,你po在微信的肯定是最好的一面。寫簡歷一樣,把你最自信的技術棧加粗,放在最容易能看到的地方。

針對性的寫簡歷

如何你有多個專案ABCD,篇幅限制只能寫2專案,專案A和B和你投遞的公司是更為契合的,那麼何不把業務最match的專案寫上暱?,在工作經歷也可以體現出更匹配的地方!

example:筆者投遞過螞蟻的SRE,雖然自己不是做SRE的,但是平時也會關注一些穩定性相關的,我在工作經歷中寫了自己有系統穩定治理經驗,參加過大促穩定性保障,並加粗。雖然這個SRE和我這個狹義的穩定性不是完全的一致的,但是也是有一點關係的。

1.3 降低預期

天生我材必有用

也許是沒hc了,而不是你不夠優秀!

另外人和人是有磁場的,你也許就是和這個面試官不對付,而不是你哪裡不好(當然不好的地方要覆盤)

吃個口香糖,上個廁所

面試前放鬆一下,一直繃著也不太好!

2.面試中

2.1 保持溝通

特別寫leetcode,有的同學不知道咋寫就尬住了,你可以說一下你的思路,或者你的問題(題目看不懂,或者你的思路解決了不了這個問題)和麵試官溝通,反饋。

因為面試你的人是你未來的師兄or上級,工作中你肯定不是啥都知道的,也是需要溝通請教的,溝通到位反而是一個加分項。

即使你很會寫,也要在寫的過程保持溝通,比如實現程式碼的第一步,第二步!

2.2 良好的表達

表達有條理,語速適中,分情況,分條的表達。

特別需要注意一點,你需要介紹一點業務背景,但是不要過度介紹,因為招聘的是開發,而不是產品。

適當的表達,利於面試官瞭解背景,在表達中突出自己的對業務的瞭解,也是不錯的,畢竟是業務開發,還是要懂業務的。比如你聊到分庫分表,設計了x張表,x個庫,是希望使用者的資料集中在一個庫一個表,減少分頁查詢聚合的開銷,預留了很多空間是因為後面有哪些需求計劃(模糊,不要涉密)會帶來資料量的暴增。

2.3 體現你對技術的思考

  • 能比較多個技術選型,知道自己選擇這個技術選型後的舍與得,每個方案的缺點和有點。
  • 能體現技術在業務上的取捨:比如分散式最終一致性,中間態是怎麼做的,比如隔一段時間進行回查,比如表達一個抽獎中的狀態(因為本地寫了INIT記錄,然後呼叫第三方,第三方maybe超時了,這時候INIT表達為抽獎中,回查就是來彌補這個超時)
  • 能知道使用的中介軟體解決了什麼問題,為什麼要使用,底層原理。

2.4 合理的猜

問到你不懂的點,你可以說不知道,但是自己可以猜一下,根據你其他的知識聯想,或者自己的技術scene來推斷該如何解決,給出你的解決方案,這也是體現你能力的點。

比如你不帥,但是你有錢。

2.5 幽默

我是一個比較逗的人,在面試位元組的時候問到抽獎介面流量很高,如何解決,說了常規解決方案1,2,3等等,面試官還是繼續問還有沒有其他的解決方案,我說:"能不能抽幾個倒黴蛋預設中一些廉價獎品,一般抽獎會有一些兜底獎品,比如積分,可以提前跑任務寫中獎記錄,而不是呼叫下游去抽獎doge,如果業務可以接受的話"。這個方案好麼,不那麼好(前提是你前面給出了很多其他技術方案,不要上來就讓業務做閹割),但是把面試官乾笑了

人家寫了一天程式碼,開了一天會,還要面試你,如果你風趣幽默,是不是在一眾候選人中脫穎而出暱,更有記憶點暱?

3.面試後

覆盤,不懂的點及時弄懂,其他比如表達某一個專案不清楚,可以再梳理梳理。

4.福利

筆者目前在提供免費的簡歷修改建議,以及幫找專案亮點,可以檢視《系列文章目錄和關於我》文末的二維碼,加群私聊群主1v1。

  • 為什麼我原因被白嫖:
    • 後續發展副業doge。
    • 交個盆友。
    • 你的專案會被我學會,變成我的系統設計經驗。
  • 我什麼水平,夠格幫你麼?
    • 3年經驗,大廠p6,脈脈正常水平。
    • 另外本身免費,要求不要太高哈,而且我也是剛開始(目前幫助了2位朋友)。
    • 交流向,不是我教你,是我們互相學習。
  • 目前暫定週末(工作日不行)1到2位,1次1個半小時,騰訊會議的方式,時間靈活。

img

相關文章