1. 程式人生 > >java後端初中級工程師換工作小結

java後端初中級工程師換工作小結

注:本文適用於工作一到三年有一定經驗的java後端人員,我一共面試了五家公司,收到四個offer,每天跑來跑去也很累,最後的的offer很滿意之後就把其他的面試和offer都推掉了。入職前把這段時間的一點經驗寫下來,希望能幫助到跟我境況差不多的兄弟姐妹。

準備

機會永遠都是留給有準備的人

當你決定離職之前,你就應該開始為下一份工作做準備了。
那麼,該準備什麼呢?
我建議是第一是跟語言無關的部分,也就是所謂的基本功。具體也就是我們大學本科裡面最頭疼的那些東西,資料結構演算法,還有一些計算機網路的基本知識。
鑑於這個東西實在很枯燥,我不建議大家去看那些黑皮書,反正我是真的是看不下去啊。
那麼問題來了,看什麼


書籍我推薦:大話資料結構。
視訊我推薦:小甲魚的的課程。網易雲課堂:資料結構和演算法

首先,書裡面的程式碼雖然是用c語言寫的,但我相信語言大家都還是有一點c語言基礎的,再者說語言裡面很多東西都是通用的。而且正好可以嘗試用java再寫一遍,這樣效果更好。如果不想買書的,可以上網找找pdf版本,找不到我這裡也有,不過還是建議買一本。而視訊為什麼是這個呢?因為小甲魚就是按照這個書來講的,配合大話資料結構相得益彰,就是相當於教師加上教材。書裡面看不懂的地方都可以好好再聽一遍小甲魚的講解應該就差不多了。小甲魚除了講基本的資料結構,還穿插了很多的經典演算法問題的解決方案,最棒的地方是都是c語言寫的啊,我們想要現成的都沒有,所以跟著看,自己寫啦。

學習完基本的資料結構,就Java的資料結構相關的類實現原理,比如LinkedList,ArrayList,HashMap,TreeMap這一類的。結合api去看,很多你之前不懂得地方會恍然大悟。

除了資料結構,需要長時間準備還應該有設計模式

雖然說有23種設計模式,但是我覺得大家掌握最常用和經典的十個左右就差不多了。剩下的大概瞭解即可。

書籍我推薦:head first 設計模式大話設計模式
兩者隨意選一本即可,或者兩本對照著看也是可以的。
看的時候記住最重要的一點:
不要光顧著看!
不要光顧著看!
不要光顧著看!

比如你學習完了觀察者模式,已經大概瞭解了其實現原理。那麼現在合上書本,仔細在你的專案中想一下,哪裡是符合觀察者模式的應用場景的


你又是怎麼實現的?如果要改應該怎麼改呢?
如果你找到了符合的地方,那麼你就把原來的設計用觀察者模式重新寫下來
注意,不要隨便用在生產上,你現在只是要充分理解這個模式,而和實際結合是最好的學習方式。而當你寫完了到底要不要放在生產上,你可以先和你的技術組長說一下,設計模式切記不要生搬硬套

如果你沒有在你的專案中想到合適的應用場景,那麼沒關係,你就自己想一個區別於書上的例子,自己獨立完成。

每個模式都自己寫一遍實現邏輯,估計當你寫的時候肯定有不理解的地方,這時候就是你撕開的地方了,到底為什麼這麼寫,這麼寫好在哪裡,完成了時候就已經基本掌握這個模式了。然後還有最後一步,那就是寫部落格

不知道大家有沒有聽過學習的金字塔
簡單來說,學習的方式不同最後能記住的東西差了很多。

第一種,“聽講”,這種我們最常用的方式,學習效果最低的,內容只能留下5%。
第二種,通過“閱讀”方式學到的內容,可以保留10%。
第三種,用“聲音、圖片”的方式學習,可以達到20%。
第四種,是“示範”,採用這種學習方式,可以記住30%。
第五種,“小組討論”,可以記住50%的內容。
第六種,“做中學”或“實際演練”,可以達到75%。
最後一種在金字塔基座位置的學習方式,是“教別人”或者“馬上應用”,可以記住90%的學習內容。

看到這裡明白了吧?
寫部落格就是把你的理解交給別人,是最好的學習方式,而且你把你的部落格放在電子簡歷上,絕對是很棒的加分項。 我的面試官最後跟我說,錄用我的原因也有一部分是看了我的部落格,覺得我是一個愛好學習的人,在我技術和其他人差不多的情況下,更加願意給我機會

簡歷

我一開始也忽略了簡歷的重要性
隨便花了十幾分鍾填了一個線上模板就開始投遞了,結果是可以預料的。都石沉大海
我們首先要知道一件事情,即使是一家小公司釋出一個招聘的職位,那麼收到的簡歷也可能幾百個。HR會在這幾百個甚至上千個裡面選幾個出來面試,所以哪怕你技術再好,如果簡歷不能體現出你的水平,連見到面試官的機會都沒有,那怎麼能找到理想的工作呢?

那麼問題來了,簡歷怎麼寫呢?

我偷懶用的線上的模板,當然如果你的內容寫的不錯,問題還是不大的,但是建議還是不要用現成的模板,拉鉤的就挺坑,最上面是一張大大的照片還有教育經歷也佔了很大地方,結果最重要的專案經驗要到第二頁才能看到。

簡歷一般都有幾個模組,工作經歷,教育經歷,專案經驗,自我描述,技能評價等等。

教育經歷我就不說了,這個沒什麼技術含量。

工作經歷

寫上你的上一家公司,從事的職位(java後端開發),如果你在這三年的時間換了兩家以上的公司,我建議你還不要都寫上,HR是不喜歡那種經常跳槽的,在這個年限,一般最好是一家到兩家。這些按照實際情況寫就好了,都是死的東西,接下來就要寫上你的職責了。

有的人和我最開始寫的一樣

java 後端開發,最多加上一句 負責介面的編寫和實現

這麼寫和沒寫一樣
這麼寫和沒寫一樣
這麼寫和沒寫一樣

那應該怎麼寫呢?

1、根據業務需求調整資料模型,設計程式介面,實現介面業務邏輯,編寫介面文件。
2、根據前端組html及css,編寫jsp頁面及js指令碼。
3、日常版本的釋出及緊急回退。
4、處理日常bug和在生產發生的緊急問題。
5、新同事及實習生的業務培訓。
6、配合效能測試優化程式碼和sql。
7、參與新需求評審。

上面是我後來修改的的,你覺得兩者差了多少呢?

一定要具體,並且分條陳述,作為一個技術崗位,要體現出你的專業素養

專案經歷

這個千萬要寫,當然工作也這麼久了都會有專案經歷,但是也要有一個主次。

第一個放你最熟悉的,最好是近期的,你從頭開始做的專案,你能如數家珍侃侃而談的哪種。這也是面試官面試的時候主要和你談的地方,是除了技術問題之外最重要的一塊。(後面寫面試的時候我會詳談)

那麼專案怎麼寫呢?
我建議業務寫一兩句就好,如果你的專案介紹通篇都是滿滿的業務,那麼幾乎註定了你的簡歷不會進入被篩選的範圍內。
你想一下,你自己應聘的是什麼崗位?
技術崗!
那麼你應該寫什麼?
簡單的介紹專案的規模,有多少技術人員,是網際網路專案還是企業軟體,這些就可以了。
接下來你需要寫關於專案技術的那部分。
專案用了什麼框架?spring 還是struts2 ,持久化是用的是mybaits還是hibernate等等,有沒有使用RPC框架(Dubbo /HSF)?資料庫用的是什麼?有沒有用到redis?
版本控制工具是svn還是git,有沒有前後端分離?有沒有寫js ,如果有,你都用到了哪些前端元件, 能寫的都列出來,還有專案是這麼分層的?有幾個子模組,平時釋出版本是用的自動化工具嗎?(jennkins) ,專案管理用的是什麼?(maven)等等,也就是說要讓hr第一眼就能看到這是一個有經驗的開發人員
下面是我的一個專案,寫的也不是很好,僅供參考。
- 基於阿里雲平臺和中介軟體技術研發,應用包括雲伺服器 ECS,雲資料庫 RDS,Redis,DRDS物件儲存OSS,開放搜尋(OpenSearch),企業級分散式應用服務 EDAS(HSF服務框架)等技術。
- 使用maven進行專案管理,根據業務分成多個web子模組,方便開發測試和部署。
- spring +mybaits 框架開發,mysql分散式資料庫。
- 基於OpenSearch 的全平臺商品名稱搜尋,基於redis的商品類目儲存。
- 使用cas實行單點登入,shiro 認證、授權、加密和會話管理。
- poi ,jxl 匯入匯出excel,itext 生成pdf,Zxing生成二維碼。
- ajax 前後端互動,jquery及多個前端元件包括layer,jquery validate,autocomplete,jdate,datatable分頁等。
- 統一用jenkins釋出,敏捷開發,jira 平臺處理日常及生產問題。

自我介紹

這個模組就不要寫什麼工作努力了,與人和善,團隊協作這樣的空話了。
你可以寫你在專案中的作用,你解決了什麼樣的問題?得到了客戶怎樣的認可?可以寫寫你經歷過的加班,怎麼努力的保證了專案上線,這些都能體現出你的價值,你的閃光點。
除了主語言,還會什麼其他的語言/技術,或者喜歡逛技術論壇,最好附上自己的回答,寫技術部落格(放上你的部落格地址),當然如果有GitHub 上的專案就再好不過了。

好了,說了這麼多,簡歷大概就是這個樣子了。

投遞

現在招聘網站很多,專注it的就有拉勾啊,100offer ,boss直聘,獵聘,智聯招聘等等。
我建議不要太過廣泛的投遞,(我就吃到了這個苦頭,最多一天收到十幾個預約面試的電話)在投遞前至少看一下公司的性質,是否和你的期望相符,還有公司的地址距離你是否太遠,公司是否上市等等。

至於具體選擇哪家,各有千秋吧。

非利益相關,我只說我用的,我最開始用的是拉勾網。但是反饋很少,我大概看了一下,很多其實都是要求3-5年的工作經驗,是招聘中高階的程式設計師,而我勉強算三年的工作經驗,所以只收到了一個面試的預約。

後來,我就在智聯招聘上開始投遞,投遞的範圍也僅限於初中級的工作經驗一到三年的,我還用了那個十五天的簡歷置頂,效果還是很明顯的。我其餘四家的面試都是智聯招聘上找到我的。

在這裡我先說一下,投遞的第一天可能沒有人聯絡,那是很正常的。

因為HR處理簡歷是有一個週期的,每天都有很多的簡歷,你的可能要過一兩天才能被看到,但如果三天還沒有人聯絡你,你就要思考下,是不是你的簡歷寫的哪裡有問題了。

面試

如果你收到了面試邀請,那麼恭喜你,你已經成功了一小半。

HR 一般會和你確定時間,並且給你發一封郵件,你需要收到後回覆,並且檢視一下面試的地點,同一天最多安排兩家,並且查詢好路線,因為都是第一次去,所有找路一定會花更多的時間,所以至少提前留出一個小時以上的時間。現在天氣也已經很暖和了,在外面也不冷了,提前到達總比氣喘吁吁的直接面試好很多。

有的公司會有筆試,但是不用太介意,回答你會的就好,這個只是一個初步的篩選,無論筆試成績怎麼樣,都會讓你去面試的,面試才是最重要的地方
技術面試針對我們這種有一定工作經驗的,已經不會問你比如 java 有幾種基本型別這樣的問題了,主要集中在java的高階特性上面。一般分為兩個階段。

第一個階段是主語言本身以及它的高階特性,第二個階段是講述自己的專案,並在中間穿插著問題。

主語言本身以及它的高階特性
  • Java的資料結構相關的類實現原理,比如LinkedList,ArrayList,HashMap,TreeMap這一類的。(前期的準備)
  • Java併發包當中的類,它們都有哪些作用,以及它們的實現原理,這些類就是java.concurrent包。(重中之重,一定要仔細看看)
  • IO包和NIO包中的內容。這部分裡面NIO會是重點。(這個問的不是很多)
  • 設計模式 這個一般都會問,讓你說說熟悉的設計模式。(前期的準備)
  • Java的虛擬機器的內容。這部分主要包括三部分,GC、類載入機制,以及記憶體。
專案

業務上把你在專案中的責任著重體現出來,對專案的架構以及為什麼這麼設計要有認識。

一定要斟酌你說出的技術,最後挑那些你確實用過的地方去說,這樣才能防止你說出一個技術,面試官深入把你問倒的情況。但是如果真的有一兩個地方不熟悉也不要緊,你可以及時打住,並且坦誠的承認自己在這塊積累不夠不要在一個問題上硬挺,不懂裝懂。

還有最重要的一點,一定要說出你的閃光點
比如你解決了哪個很嚴重的生產問題,比如你應用了那些設計模式在你的專案裡面,比如你有什麼巧妙的解決一些棘手問題的技巧。

相信我,你仔細回想,是一定可以找到至少這樣一個閃光點的。

哪怕你說我能加班,我997,我熬夜通宵也把任務完成了。這也是你的閃光點啊,說明你責任心強

你不要等待面試官發問,很多問題你都可以引導面試到提問的。

這裡還有一點也是被問比較頻繁的。

就是專案中是怎麼高併發訪問的問題的?
你是怎麼去提高效能瓶頸的?
常規的優化手段都有哪些?

面試的時候並沒有固定的套路,你要懂得隨機應變,好的心理素質和知識儲備是兩大法寶,以不變應萬變,但無論怎樣,都要保持好的心態。

失敗是很正常的。

但是你要相信,只要你沒有虛度光陰,是一定能找到相對理想的工作的,每一次的失敗中你都要冷靜的想一下自己到底是哪裡的儲備不夠,並且立刻去了解這部分知識,從失敗中汲取經驗,成功就不遠了。

offer

最後,如果你收到了不止一個offer,儘快推掉不準備接受的其他的offer,這樣不要耽誤人家的招聘。記得要禮貌的拒絕,並表示歉意。

預祝大家都能找到理想的工作