一位親戚家的年輕人立刻要從大學畢業了,學軟件工程,參加過培訓的普通新手程序員,不是TOP學校也不是高學歷,因而找我這十幾年的老程序員給點建議。程序員
說來慚愧,本身當年也不過是對計算機的興趣加上熱血和自信,稀裏糊塗就跳上了程序員的車,幹了十幾年仍是個程序員,還真沒怎麼仔細考慮這車到底是怎麼開的。這要是沒畢業就一堆大公司排隊等着籤協議的高手,咱也不敢給啥建議不是。也曾經三言兩語地給過其餘一些新人建議,也有同窗借鑑了建議經過改進找到了工做。因此這一次準備借這個機會把這事總結一下,拿出分析程序邏輯的勁頭,仔細講一講個人建議。面試
職業的人生從程序員開始,找工做是第一步。新手程序員,剛從學校畢業或者剛培訓出來,沒有什麼實際工做經驗,而後不少崗位又須要經驗,這是新手最大的挑戰。算法
因此,新手找工做的目標,就是積累實際工做經驗。說白了,就是看看實際工做中怎麼寫代碼,怎麼面對需求,怎麼分析業務,怎麼作項目,怎麼開發工程,怎麼與同事協做,怎麼處理線上問題,等等不少相似的,怎麼應對工做的方方面面。即便是經歷了培訓機構的培訓,所謂的真實項目、實戰培訓,歸根結底那也是培訓,和實際的工做狀況其實遠遠不同。數據庫
可是,單純爲了積累工做經驗去找工做也是不夠的,找工做也要有方向。有人在這時候去大談職業規劃,我以爲對於萌新來講,就是揠苗滋長。這第一個工做,是從學校進入社會的第一步,每每還處於懵懂的狀態,這時候連對職場的體會都沒有呢,談職業規劃真的有點空中樓閣的味道。編程
做爲一個程序員,思考的方式很重要。第一份工做只是一個入門,但會影響一我的思考的基礎方式,我的覺得最應該在意的是開發是否正規,因此找工做的方向,是去更規範更前沿更有競爭力的互聯網或者軟件公司。這些公司每每正在經歷或通過了市場的殘酷考驗,造成了比較完整正規的協同開發能力,不會像手工做坊那樣稀裏糊塗地作事。緩存
接下來具體講講,萌新程序員找工做的三板斧。數據結構
簡歷這東西,是突破企業招聘的第一個敲門磚,其餘的面試啊答題啊編程能力啊都在後面呢,因此對簡歷這一項必須重視。架構
不少公司在招人的時候,HR或者獵頭要先篩一輪簡歷,而後技術人員才篩,而後經過了才通知去面試。甚至更大的公司極可能篩簡歷的輪次就多一兩輪,找工做首先要經過這幾輪簡歷篩選。框架
總的來講,簡歷這第一板斧的基本原則是:點到不點破。數據結構和算法
第一是要點到。總結本身的特色,本身的優點,就是能引發看簡歷的人興趣的那些亮點。對於萌新程序員來講,原本項目經驗不夠豐富,亮點不夠明顯,因此這份簡歷不能太籠統,要寫出本身最擅長的,最好確確實實相對於其餘人是優點。
技術方面,不能歸納起來一句「擅長Java開發,熟練使用IDEA、Eclipse」就完事了,老是有本身學得比較深刻的技術點,舉個例子,好比Spring Boot項目搭建、Spring MVC應用、數據庫事務配置、SQL索引處理,這種技術點最好能寫上幾個,既豐富內容,也證實本身確實學習過。
工做方面,首先是工做任務描述要具體,不能是相似「多個功能接口與頁面的編輯」這種千篇一概的話,儘量寫出具體成果和業績來,其次既然是作技術,很大程度上工做經歷也是爲了考察技術點,因此工做中採用了什麼技術,應用了什麼框架,有哪些技術邏輯,尤爲是可以顯示本身特色的證實,每個點要儘量點到,讓這些點去佐證你相對於其餘人的優點。
有人說若是不寫這些,等面試的時候再具體說不同嗎?還真不同,由於面試官拿到這樣一份沒有具體點的簡歷,他不知道你的側重是啥,亮點是啥,優點在哪裏,那爲啥要讓你來面試呢?要知道面試官面試一我的,成本其實很高的。
第二是不點破,畢竟是簡歷而已,不用針對具體的技術點說詳細的原理,也不用細緻地講過程。剛纔說的那些技術點和工做業績,寫在簡歷上是爲了證實你的優勢,也是爲了引發面試官的興趣,讓面試官產生進一步瞭解你的想法,就能經過篩選進入面試環節了。不過既然寫了,那就必須準備好面試時候被提問。凡是點到的點,都要準備應付面試被考察,技術點要儘量深刻一些原理,工做經歷要有完整的做事邏輯,這個以後再細說。
還有,簡歷不要有錯別字。不要小看這件小事,由於認真,是優秀工程師的第一要求。我曾經上各個官網去核對每個技術名詞的寫法包括大小寫,MySQL,MyBatis,RabbitMQ,等等。
由於應屆畢業生儲備的知識和經驗通常不會有多豐富,因此考察基礎能力和發展潛力是側重點。
以前我作Team Leader的時候,也在負責招聘各級工程師,也曾屢次做爲面試官參與應屆畢業生的統一招聘。我的覺得,對於一個萌新工程師的最基本要求就是,能經過一些思考,寫出邏輯清晰完整、開發習慣良好的代碼。其餘的各類技術點,知識點,項目經歷,都是加分項。固然,面試都是擇優錄用,因此首先必定要給面試官展示出你能達到最基本要求,並且最好能展示你的知識和你的努力,獲取一些其餘的加分項。
在應屆畢業生招聘過程當中,不管是企業要求,仍是我我的意見,通常都要出一到兩個筆試的算法題,這個算法題的做用就是考察一我的的思考能力,看邏輯是否清晰完整,考慮事情是否周全,能不能把業務落實到代碼上。用個人話講就是,可以用代碼來展現清晰完整的邏輯,是程序員的基本功。
由於極可能是紙上手寫答題,因此不必定非要寫得很是完整很是精確,但必定要經過這道題的回答,體現出你儘可能清晰的邏輯,儘可能完整的思路。最好要對基本的數據結構和算法有一些瞭解,好比基本的鏈表操做,基本的排序算法,這些極可能對解題有着重要的幫助。若是是計算機以及軟件類專業的,更應該熟悉這些數據結構和算法,由於這都是大學的課程學過的。若是說一個計算機專業的畢業生,連鏈表是什麼東西都一臉懵逼,面試官會滿意嗎?
因此,若是面試以前沒有積累過,那仍是要針對性地找一些題目去練習,固然難度我以爲不用過高,通常難度的就能夠了,畢竟通常的企業招聘也不是在招天才是不。練習的目的也不是記住這些題的答案,甚至是解題技巧,而是經過這些題去鍛鍊一下本身的思考能力和積累一些解題的思路方法。真到了面試答題的時候,有相似的題固然好,即便沒有,也能展現出本身積累的分析能力和解題能力。
針對某一項語言種類的招聘,好比Java工程師,確定要問Java的一些基礎知識,好比LinkedList和ArrayList,我作面試官時,通常不會太深刻,底層原理之類的通常不會問應屆生,由於這是知識性質的,學校可能沒有專門學過。可是有的面試性質可能不同,由於有可能企業要招的是一個比較懂Java的人,因此面試官會問好比一些涉及Java的內部原理的東西。
準備崗位所需的基礎知識,也是一個重要的點。由於沒有更多的項目能力和更高級的架構能力去考察,因此面對應屆畢業生,不少面試官會看重知識點,即便這個點看起來是死記硬背的,好比Java裏HashMap的默認初始容量這種。每每是要經過這些貌似死記硬背的知識點篩選出基礎知識更紮實牢固的同窗,因此這些知識吧,其實面試以前仍是捋一遍,也能夠網上搜一搜Java的基礎知識題作一作,把基礎的知識點搞清楚。
前面曾經說過,簡歷點到不點破的那些點,在面試準備的時候都要搞明白,儘量深刻,既然寫到了簡歷裏,就要有針對性的準備好。面試官在瀏覽簡歷的時候,極可能會考察這些點的實際執行狀況、技術原理、實現方式、一些常見問題的處理等等具體的內容。這不只僅是驗證一我的在工做中確實是有這些經驗的,更重要的是體現一我的深刻鑽研的精神和能力。
在我我的作面試官的過程當中,都會看候選人的簡歷去挖掘一些點,好比簡歷上說到事務,我可能就會問一些事務的基礎,在程序裏事務是如何配置的,如何實現的?好比簡歷上寫的用過緩存,我可能就會問緩存雪崩是怎麼回事,該怎麼辦?緩存擊穿了又怎麼辦?好比說簡歷裏涉及到消息隊列的,我可能會問,有沒有可能丟消息,有沒有可能重複消息,這些怎麼處理?
因此做爲候選人,不能簡單地說我用了什麼框架,配置一下參數,能作出來功能,就好了。若是能和麪試官講講,這裏用了什麼技術,爲何要這樣配置,爲何經過框架配置了就行,那面試官就會以爲你不只知其然還知其因此然,天然是要加分給你的。
最後就是面試了,面試的過程其實就是告訴面試官,我能行,而後想辦法證實我能行。因此首先要自信本身能行,沒有經過面試沒關係,其實有的時候真的看臉,不是不夠優秀,是緣分沒有到而已。
面試自己也是實踐的過程。面試作過的題,儘量記下來,無論是會的仍是不會的,回來仔細思考解答。和麪試官的溝經過程,也要認真覆盤。到實踐中去總結學習,積累經驗,逐步提升。
固然,所謂三板斧只是我我的的建議,也只是個基礎。有不少我曾經面試過的應屆畢業生都很是優秀,已經遠遠超出了三板斧提到的能力。因此最重要的仍是好好學習每天向上,我相信,只要努力,找一份起步的新手工做並不難。所謂江山代有才人出,長江後浪推前浪,但願你們能更快地成長,更快地發展,更快地找到滿意的工做。