1. 程式人生 > >【offer收割機必備】我簡歷上的Java專案都好low,怎麼辦?

【offer收割機必備】我簡歷上的Java專案都好low,怎麼辦?

開發十年,就只剩下這套架構體系了! >>>   

(1)高階工程師必備:系統設計能力

我們一般在招聘高階及以上工程師的時候,一定會嚴格考察一項能力,系統設計能力。

因為如果你僅僅是對各種各樣的技術都熟悉,有技術廣度,也有一定的技術深度,實際上是不夠的。如果你的系統設計能力不到位,可能導致你在開發系統的時候會亂用技術。

比如說,有的系統他有一些自己特殊的業務場景和技術挑戰,實際上在這個場景之下比較合適的是採用 “快取 + 資料庫” 的技術方案來應對。

但是呢,有的工程師會很多技術,但是缺少這種準確的分析系統問題,提出合理的技術方案的能力,也就是缺少系統設計能力,導致他可能會引入Elasticsearch這種技術來嘗試解決這個問題。

那麼結果必然是失敗的。所以之前很多人找我問問題,說我在XX場景下,用了XX技術,但是沒有起到我想要的那個結果啊?

我幫他一看,這不是必然的麼,你的XX技術應該用在YY場景下,結果你用到XX場景下,肯定是不行的。

這就是系統設計能力的重要性。

那麼落地到現在的網際網路行業的面試,大家應該會注意到,很多大廠都會越來越開始問一些系統設計類的問題,舉幾個例子來看看:

1

 如果讓你設計一個秒殺系統,你會如何設計?

2

 如果讓你來設計一個訊息中介軟體,你會從哪些方面來考慮?核心的架構以及資料結構如何設計?

3

 如果讓你來負責一個電商雙11大促系統,你會如何來考慮和設計?

4

 我們公司有這樣的一個業務場景,XXXX,我給你畫個圖,YYYY,   就根據這樣的一個場景以及面臨的問題。如果讓你來設計這個系統, 你會如何考慮?

其實如果你在面試的時候遇到上面的那些問題,就是典型的系統設計問題。

面試中的系統設計問題主要分為兩類,一類是常規性的,比如秒殺系統的設計,另外一類是那個公司自己的業務場景下的系統設計。

第一類系統設計問題其實很好快速突擊準備,你可以到網上搜一搜網際網路公司常問的一些系統設計問題。

收集好一些典型問題之後,百度一些技術部落格給出的技術架構設計的思路,將這些思路自己進行整理總結,然後轉化為自己的語言,最後落地到紙上畫出架構圖。

到面試現場,你能夠畫圖把這個系統設計思路說清楚,這個基本就OK了。

這個準備時間不長,突擊的話可能幾天時間也足夠了。

當然,還是那句話,最好的結果,必然是你自己本身做過類似的一些有挑戰的系統。

此時你遇到這種系統設計問題,直接可以很牛叉的說,這類系統我之前做過,然後把自己之前的專案經驗都現場畫圖給說出來。

第二類系統設計問題就不太好準備了,因為完全考驗的是你實打實的系統設計能力,短時間內針對一個業務場景和技術難點,能否迅速給出一個初步的架構設計和技術方案。

第二類系統設計問題,從長期積累和準備的角度,我的建議是在平時自己在開發系統的時候多思考,自己的這個系統有沒有什麼技術難題,針對這個技術難題應該用什麼什麼技術,什麼方案來解決,這就是潛移默化的在積累系統設計能力。

但是如果從臨時抱佛腳的角度,平時沒那樣的積累,遇到第二類靈活開放的系統設計問題,那也不能一問三不知,大眼瞪小眼。

因此,我的建議是:

對於你要面試的公司,儘可能的多做了解。比如公司業務背景,大概使用者量,這些都可以瞭解一下。

如果目標公司有官方的社群或者官方公眾號,關注一下,看看上面的技術分享。

然後如果面試時,面試官針對他們公司的具體業務出了一個系統設計題目,你如果沒有思路,建議儘可能的結合第一類的常規系統設計題目來思考套用。

舉個例子,比如你面試一個p2p金融業務的公司,如果被問到大量使用者同時搶標,如何設計架構?

你沒有做過,但是你可以結合一些常規的系統設計題,比如秒殺系統的設計思路,套用在這個新的業務上。

而你如果在面試這家公司前,大致瞭解了其業務背景,那麼對你回答這類系統設計相關的題目,肯定也是很有幫助的。

(2)如何讓你的專案經驗更有技術含量

在解決了系統設計問題之後,任何一個公司,任何一個面試,都一定會涉及到你作為一個工程師最最核心的價值和能力,就是你的經驗,具體來說就是你做過的專案。

這塊是面試準備時的重中之重,應該作為最高優先順序來對待。

 

有很多同學,做的專案其實挺不錯,但是平時疏於總結,面試前也不準備,結果面試時支支吾吾,半天答不上來,白白浪費面試機會。

比如一個非常典型的專案經驗的面試考察情景如下:面試官反覆的追問專案的各個地方的技術實現細節,就想看看有沒有哪個地方是有一定的技術難度的,可以體現出這個候選人的一些專案上的亮點。

但是呢,候選人說來說去,總是從業務的角度去說,就說有哪些子系統組成,分別是幹什麼的,如何互動的,看來看去都是系統業務的東西,就是沒看到什麼有技術含量的東西在專案裡體現出來了。

如果出現上述的情況,那麼這個候選人要拿大廠offer的概率就很低了。

因為你的專案裡沒看出來什麼東西,沒什麼亮眼的地方。你看起來就跟千千萬萬個普通的工程師沒任何區別。

而且,在薪水方面,你要價23k,但是另外一個人要價是20k,還有一個人要價是18k。

在這種情況下,你覺得你的offer好拿麼?我們為什麼不找一個更年輕,更有活力的,有衝勁的小夥子,他也做過跟你類似的一些沒太大技術含量的專案。

雖然你工作了5年,人家就工作了3年,但是從技術和專案兩塊考察,你跟他沒太大區別。你不過就是比他多工作了2年,多做了幾個沒技術含量的專案罷了。

但是在薪資要求方面,你可比人家多了5k,在這個時候,面試官在沒更好選擇的情況下,一定會找那個薪資要求僅18k的小夥子。

這也是為什麼很多同學不好好準備出去面試,結果面半天,老是被人家說:你先回去等通知,我們要再多面試幾個候選人綜合考察一下。到最後面試好多次也拿不到幾個offer。

其實原因很簡單,你沒什麼能打動面試官的亮點,沒什麼太突出的能力。而你的工作年限越長,薪資要求越高,就越是不容易拿到好公司的offer。

上面說的,是一個極端,這類同學對自己做過的專案毫不重視,導致無法在面試中復現專案中的各種技術細節、技術難點。

這樣,即使你的專案很牛,那又有何用,你當時做專案的時候,面試官又不在場。。。

然而,也有不少同學,他們的專案其實並不高階,甚至是有點low。但是呢,人家憑藉自己精心的準備,加上一些面試技巧,巧妙的讓自己的專案脫胎換骨,瞬間變得高大上。

所以說,專案準備,百轉千回,這裡面有不少門道,接下來咱們就來聊聊。

同樣,咱們分為兩條路線來談:一個是長期準備型;一個是短期突擊,臨陣磨槍。 

對於前者,我個人的建議,還是像之前說過的一樣,平時你工作的時候,一定多給自己設立技術挑戰。總結起來一句話:沒有困難,製造困難也要上。

這裡面可能會存在對於架構的過度設計的問題,站在公司的層面會覺得花那麼多時間設計這些架構實在是無用功,但是從個人發展的角度,為了你的職業生涯發展,你有時不得不過度設計一下。

況且,這個對公司也未必是一件壞事,萬一你公司以後規模發展起來了呢?這個誰又說的清楚。

舉個例子,你在公司目前是負責一個OA辦公系統,就內部幾十個人使用,主要就是寫寫業務,crud啥的,看起來很low的專案。

然後呢,你使用的技術就是簡單的SSM,可能連SpringBoot都沒上,整個專案就部署的一個單體工程,沒有微服務、沒有快取、跟所有高併發高可用等技術完全絕緣。

確實,幾十個人用,你何必殺雞焉用宰牛刀呢?

但是想象一下,如果你的公司是一個世界500強,這套OA系統有上萬人使用,那麼情況肯定就不同了,可能就需要另外一套技術架構。你完全可以在工作中給自己做這樣的假設,設定這樣的難題。

當然,這只是筆者舉的一個例子,之所以用這個舉例,是想說明一下,無論你做的是什麼專案,你都可以從某種角度出發,給自己製造各種技術難題,然後解決難題。

你可以在不要給工作量增添太多的情況下,儘可能從公司發展的角度去考慮,向領導闡述你的考慮,這樣公司未來發展5~10年,這套架構都夠用了。

並且在面試時,你在闡述專案經驗的時候,可以讓面試官看到你在裡面有更多的技術架構的設計,考慮到了解決更多的技術問題,那麼自然你的面試表現就會更好,就更加容易會拿到更好的offer了。

上述就是所說的第一點,長期情況下應該如何積累自己的專案面試經驗。

接下來說說第二點,專案的短期突擊應該如何進行,才能儘可能的讓我們的專案顯得更加吸引人。我估計可能更多的同學需要這方面的技巧。

但是筆者還是事先強調,這種短期突擊、臨陣磨槍,效果肯定是比不上長期的一步步穩紮穩打,這只是一種應對面試的退而求其次之選。

如果大家有時間,或者說通過這種短期突擊的打法拿到了心儀的offer,還是應該沉下心來,一步步積累,技術的東西,來不得半點馬虎。

如果你之前因為種種原因,在面試前沒有做過多的長期積累,那麼短期的情況下,應該如何臨陣磨槍呢?

我這裡的建議是,你自己至少應該反覆思考,你目前負責的系統應該引入什麼樣的技術架構,採用何種技術方案,才能抗住各種衝擊。

突擊準備,你肯定沒有大把時間來付諸實踐,但是你一定要自己思考,同時百度一下國內大型網際網路公司的技術架構,他們使用了哪些高大上的技術,對於某個技術難點採用了什麼技術方案。

然後在面試的時候,可以對面試官闡述一下你對這個專案一些問題的思考,以及技術方案、架構如何來設計,這樣設計可以解決什麼技術問題,有沒有更好的方案選擇。

這樣一來,你起碼比普通工程師多一些思考,提出更多的方案,這也能成為你更加亮眼的地方。

還是那句話,做,總比不做強。你對自己的專案思考了很多的技術方案,這樣和麵試官總還有一些技術上的交流和探討的東西。你的專案也不至於說充滿了各種CRUD,毫無亮點可言。

歡迎工作一到五年的Java工程師朋友們加入Java填坑之路:789337   293

群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的