魯班簡稱LB 據說,金三銀四,截止今天為止面試黃金時間已經過去十之八九,而LB恰逢是這批面試大軍其中的一名小兵,很不幸今年恰逢遇上了互聯網寒冬(即各大公司都在裁員,對外提供崗位相對較少的,這意味著很多猿即將面臨著更多的競爭對手和相對較少的崗位困境),LB求職過程種種被虐,屍體趟過召喚師峽谷每個角落, ...
魯班簡稱LB
據說,金三銀四,截止今天為止面試黃金時間已經過去十之八九,而LB恰逢是這批面試大軍其中的一名小兵,很不幸今年恰逢遇上了互聯網寒冬(即各大公司都在裁員,對外提供崗位相對較少的,這意味著很多猿即將面臨著更多的競爭對手和相對較少的崗位困境),LB求職過程種種被虐,屍體趟過召喚師峽谷每個角落,如今歷歷在目,終究,當初的一名無名小卒如今已是一名超級兵哈哈,但是從這個事情上卻學到了不少的東西,LB不虧。
經驗也總是用來交流用的,於是LB覺得有必要記錄下來,也許對猿們會有一絲幫助。
首先,找工作得有一份體面的簡歷,這裡就會衍生一個如何書寫簡歷的問題,LB將從如下角度總結:
關於簡歷
如何書寫簡歷
HR角度較為關註信息
1.個人信息(年齡,聯繫方式等)
2.求職意向(工作年限,工作地,崗位)
3.教育經歷(專業,學校,畢業時間)
證書(如ACM,軟證,外語水平)
面試官角度較為關註信息
1.專業技能
4-5項熟悉2-3項瞭解,建議層次分明,邏輯有序,建議別寫精通,除非很NB,不然被問到不是很深的問題你答不出,面試官認為你不真實。
2.自我評價
是否有博客(文章數太少不寫,減分),是否有GITHUB(提交數和STRA太少不寫,減分),是否有積極學網課(如極客時間星球,虛假減分)。
3.項目難點
隊列和緩存高可用,分散式應用衍生問題解決方案,JVM的排查技能,資料庫層面優化和分庫分表等,這些東西都需要你嵌入到你的項目中。
那麼什麼是‘’優秀‘’的簡歷(網圖)
看圖
哈哈哈,我大佬說,看到這種簡歷直接扔垃圾桶吧,原因很簡單,你既然那麼牛逼還特麽需要自己投簡歷找工作麽,早就被挖了,這種一看就是啥經驗都沒有培訓生或者不懂行規的應屆生簡歷寫的東西,那麼合格的簡歷剛剛上面已經說了,專業技能模塊不能寫太多,層次分明就可以,大概這樣:
暫不評價技術如何,光從這個專業技能在簡歷的書寫規則上是很符合層次分明的,而且一行代表一個領域,總體上來看就是一個標準的JAVA後臺開發路線的技術棧,而且從內容上來看,也有一定的側重點,這樣給面試官的感覺就會比較友好,提問方便。與人方便自己方便。
如何投遞簡歷
拉鉤,公司官方網
這種看RP了,有時候投出去也大概率不會被看到,稱之為海投,收到面試邀請不管怎麼樣,去了再說,畢竟是一種經歷,總能學到東西的,但如果是你比較想去的公司,沒有很大得取勝信心,建議別投先,畢竟如果被刷,那就得含淚在等一年了。
BOSS直聘,脈脈
搜索你想去的公司,然後加HR或者技術官後給他們發簡歷,本質和BOSS直聘差不多,他們看到你的簡歷,並且覺得OK,一般都非常願意幫你內推的,因為內推錄用了,是有推薦金的。
朋友內推,獵頭內推
這種獲得面試機會幾率較高,因為是直推的。
關於面試
面試需要準備3個部分的東西
演算法智力題筆試
項目技術面試
HR跪舔與防坑寶典
首先是演算法編程題
這個沒辦法的,會就會不會的話,短時間之內也是做不出來的,有些公司硬性規定必須要你寫出來,否則免談,LB遇到個一個很奇葩的一次面試就是,筆試題出了編程題目,沒想到一面後面完了,還讓你去做一道編程題,二面也是,估計HR面也是。。無可厚非,因為他們認為動手能力才是最重要的,所以對於猿們唯一的辦法就是提前刷題,如果不是面試對演算法有較高要求的公司,一般的公司只要把LeetCode簡單的題目刷了就能做出來大部分的題目,甚至會遇到一模一樣的題目,連標點符號也一樣哦。
然後就是智力題
其實也不是什麼智力題,網上一搜程式員面試智力題一大推,看來看去也就是那幾類問題,頭腦比較聰明的猿基本不需要準備。
這裡重點講講技術面
面試官:能寫出一段能體現你水平的代碼~
LB:好的~
幾秒後~
1 while{ 2 Scanner scan = new Scanner(System.in); 3 String question = scan.nextLine(); 4 String answer =question.replace ('你', '我'). replace ('嗎', ' '). replace ('?', '!') ); 5 Sysem.out.println (answer ); 6 }
面試官:呀,這難道就是.....
LB:沒錯,是失傳已久的Artificial Intelligence
面試官:你究竟是什麼人?
LB:閣下莫問出處,這個程式我示範給您看下
面試官:好的
LB:在嗎?
電腦:在!
LB:你可以人機對話嗎?
電腦:我可以人機對話!
LB:你會自己思考嗎?
電腦:我會自己思考!
面試官也躍躍欲試:你可以滾出去嗎?
電腦:我可以滾出去!
寒冷的冬天,外出的農夫,看見一條凍僵的蛇,於是把蛇帶回了家,解凍之後,泡進酒里,蛇終於醒了,看到如此場景,蛇說:我也是醉了。
emmm~
言歸正傳,技術面就是看你的技術棧,然後結合項目去提問,並根據項目遇到的問題,要求回答出解決方案,並且根據遇到的問題會繼續問深一層或者變形,考察你是否真的對問題進行了仔細的思考和深入的研究,以及問題對應的技術功底是否深厚,所以這裡提到的重點是項目結合技術棧,如果你的項目沒有用到你寫的技術,那麼就是扯蛋,那麼面試官就會認為這個候選人只是停留在理論基礎或者是初學,並沒有實踐,如果是應屆生還說的過去,否則多半會被PASS。
那什麼基礎功底
比如問你某些關鍵字的作用如static
如果你答出static修飾變數、修飾方法我會認為你合格,答出靜態塊,我會認為你不錯,答出靜態內部類我會認為你很好,答出靜態導包我會對你很滿意,滿意的原因是能看出你確實非常熱衷研究技術。這比你在自我評價寫一萬句本人熱愛研究技術,學習能力強之類的廢話更有說服力。
又如問你對鎖部分的瞭解
1.一般人回答出Synchronized具有多線程的同步作用,能防止多個線性同時訪問同一臨界資源。
2.但是卻很少人提到 Synchronized的局限性(無法解決業務層面併發)。
3.可以說明鎖的用法,如可以創建 Reentrantlock類的可重入鎖,而且可以通過其中的lock和unlock方法行加鎖和解鎖的操作。
4.說出可重入鎖、公平鎖和讀寫鎖,如詞鎖的含義、公平數的含義,以及在創建 Reentrantlock和 Semaphore時如何通過參數強它是否是公平鎖,也可以說明在讀寫鎖中加讀鎖和寫鎖的條件,由此介紹通過讀寫線程吞吐量的做法。
5.在協調多個線程處理臨界資源時,可以使用鎖,但這不是唯一的解決方法,還可以用 Condition和 Semaphore管理多線程竟爭的方法。首先,說明這兩個類的基本用法如可以通過 Reentrantlock來創建 Condition,過 Condition的awat和 signal來實現類似加鎖和解鎖的功能,可以通過 Semaphore acquire和 release方法來申請和釋放資源。另外,說明用 Condition和 Semaphore的特點(在哪些場景下用它們比較合適)通過 Condition類的相關方法,可以在不同的線程中創建多個阻塞隊列,從而能精準的控制喚醒某個阻塞隊列的線程,而不是只喚醒預設的阻塞隊列的線程,而 Semaphore可以用在多個線程競爭少量資源的場合中。如10張票,20個線程的搶購場景。
再如問你對框架里的瞭解
因為一般的候選人,大多僅僅是能“山寨”別人的代碼,也就是說能在現有框架的基礎上,照著別人寫的流程,擴展出新的功能模塊。比如要寫個股票掛單的功能模塊,是會模仿現有的下單流程,然後從前端到後端再到資料庫,依樣畫葫蘆寫一遍,最多把功能相關的代碼點改掉。其實我們每個人都這樣過來的,但在面試時,如果你僅僅表現出這樣的能力,就和大多數人的水平差不多了,在這點就沒法體現出你的優勢了。
我們知道,如果單純使用SSM框架,大多數項目都會有痛點。比如資料庫性能差,或者業務模塊比較複雜,併發量比較高,用Spring MVC里的Controller無法滿足跳轉的需求。所以一般還會被問:你除了依照現有框架寫業務代碼時,還做了哪些改動?
對於這個問題,不在乎聽到什麼回答,只關心回答符不符邏輯。一般只要答對,面試官就會給出“在框架層面有自己的體會,有一定的瞭解”,否則,就只會給出“只能在項目經理帶領下編寫框架代碼,對框架本身瞭解不多”。
回答例如有:增加了Redis緩存,以避免頻繁調用一些不變的數據。或者,在MyBitas的xml里,select語句where條件有isnull,即這個值有就增加一個where條件,對此,會對任何一個where增加一個不帶isnull的查詢條件,以免該語句當傳入參數都是null時,做全表掃描。或者對返回信息做了壓縮處理,以增加網路傳輸性能。
小結:
技術面試非常重要,這裡說的重要不是說對於整個求職過程重要,因為在求職過程哪怕是HR面都有權利決定不要你,所以說沒有重不重要的,這裡說的重要的是指這是檢驗你自身水平的能力的考察,通過面試其實可以反映出你的自身很多問題,比如,知識面有了,但是不夠全面,或者知識面全了但是不夠深入,或者把需求轉化為實際產品的能力不足等等,這些東西才是對於你來說是重要的,如果你的能力有了,還會害怕找不到工作嗎?這裡最怕的就是明知自己能力不足,又不願意專研學習,還想著高新,只能說你不適合當一名程式員。
那麼問題來了,我知道自己的情況,但是又不知道努力的方向,或者不知道怎麼提升自己,怎麼辦?如果你能提出這樣的問題,LB只能說,你獨立解決問題能力確實也是挺差的,因為在我們開發當中,經常會遇到一些需求,都不知道怎麼去做,或者用一些完全沒接觸過用的框架,如果團隊中有人熟悉那還好,但是也別指望別人教你太多,所以這個時候就只能靠自己了,無它,需要你通過網上找教學資料(視頻,博客,官方網)的方式快速學習,這些資料花幾塊錢隨手可得,然後一步一個腳印慢慢的把產品做出來。
HR跪舔與防坑寶典(LB總結了一些)
自我介紹
您好,很榮幸有機會來參加公司的面試
1.個人經歷(我是誰,我來自哪裡,年齡,學歷,從業經歷)實習加上正職
2.公司為什麼要選你(應聘崗位中最重要的3個技能點,說清楚相關經驗)我能做好我要做的事情,我相信自己
3.你為什麼要選這家公司(就公司的產品,文化,影響力等)著重說出你選擇的理由如貴公司的高技術開發環境很吸引我,貴公司在近年來市場上很有競爭力,貴公司能夠提供一個與眾不同的發展道理
高頻問題
1.上一家公司,你為什麼會離職?
1.公司很好,但是公司調整了業務,接下來的發展路線和自己的目標不一致,所以要換工作
2.工作太清閑,學不到知識,我不怕累,就是想多鍛煉自己,想找具有挑戰力工作
3.公司的管理制度不也是很完善,沒有晉升機會,我比較想進步,找一個更好的平臺
4.我想去優秀的公司,讓自己變得更好
2.為什麼來我們這裡?
1.對原單位充滿感恩,這是我人生中非常重要的經歷,我認同原單位領導和文化
2.兩份工作的本質是一致的,行業和工作性質都有緊密聯繫
3.選擇一份新的工作不代表背叛過去,發揚原公司魅力,同時為了尋求更大的成長和突破
4.不承諾一份工作乾一輩子,保證在我的任期內盡職盡責
3.你怎麼看待自己以後的職涯?(包括工作和家庭的分配,怎麼平衡家庭和工作的關係、加班、選擇一家公司時的考量、地點等)(離職穩定性)
我準備在技術領域有所作為,我希望在我3到5年內,具備什麼樣的素質,在行業內達到什麼樣的水平,產出什麼樣的工作成果,將規劃量化,具體化
4.對薪資期望(不要直接說數,絕不能表現出沒到多少錢或者什麼層級我就不去)
薪資應該基於你求職行業的市場價格和自身的價值,例如目前這個崗位的平均工資是8K,雖然我剛畢業,但是在我工作期間已經有過兩份的相關經驗而且都是作為核心成員參與項目,因此可以很快上手這份工作,所以我希望能夠在轉正後的工資能達到10K等等
5.可以接受降薪嗎?(先瞭解公司薪酬體系,根據行業和自身能力來定位)
如果候選人的調性符合(足夠官方),可以這麼回答:我也瞭解咋們公司現在的薪資架構,我相信公司會根據我的能力給出一個合理的薪水方案,我相信只要把事情做好,該有的一定會有的對於這樣的部門,“ 畢竟貴公司在做一個從來沒有人做的這麼好的事情,所以肯定是有難度的,肯定是要付出大量努力的 ”
6自己覺得自己工作上的短板/優點是什麼?
1.不能避而不談,
2.不能變相誇自己,
3.不能暴露重大缺陷,
4.可以將一些能接受能改進的缺點
綜上:缺點加說明加改進
7.說說自己性格上的優缺點(描述一下自己的性格)
我不懂得如何拒絕他人,我拉不下麵子去指出別人的問題,我做事的時候希望馬上就能看到成效,有時候會比較貪心,想同時做好幾項工作,我比較慢熱,不善於和陌生人打交道,我有意識的讓自己在改正,讓自己更加有親和力,我非常在意別人對自己的工作評價,得不到好評就會焦慮,其實我也在開導自己別太功利心了。沉著冷靜,條例清楚,立場堅定,頑強向上,樂於助人和關心他人,適應能力等等
8.怎麼看待加班(你能接受996、997、007嗎)?
可以接受版本
如果候選人的調性符合(足夠官方),可以這麼回答:我覺得我們要實現夢想,一定是要付出比較多努力的,所以我已經做好了準備,也願意和小伙伴們一起戰鬥我是可以加班的,我現在加班強度就是比較大的。因為我喜歡這個事情,我想把這個事情做好。項目忙的時候可能一個月都沒有休息日,我覺得要應對這麼忙的工作,光有心理準備其實還不夠,還要有特別好的身體素質,所以我準備把健身的習慣一直堅持下去
不接受版本
加班是應該的,不加班也是應該的,沒有把事情做完是不應該的,因為能力低完成工作慢造成的加班,並不是一件好事,不加班是能力,加班是態度,能力不夠的情況下,態度去補。
9.你談戀愛了沒?(狀態是否穩定,會不會因為感情影響工作,很快結婚,休婚假產假)
我還沒有談戀愛,目前不考慮戀愛問題,我希望自己變得更優秀以後,在談一場穩定的戀愛,所以現在想把主要的精力放在工作上。
我已經有男朋友或女朋友,我們都在這個城市工作,目前準備先工作幾年,有精力能力了在考慮結婚。
10.是否還面試其他公司(HR確認求職意向與誠信度)
實話實說,選擇名聲較大較好的公司來說,職位和現在的求職相思相近,表是自己求職意向專一,還在等候結果
11.項目中遇到的最大挑戰是什麼?怎麼解決的?
因人而已,需要描述問題產生的原因,查找解決問題的方式,對比那種更加好,遇到什麼問題,最終怎麼一步一步解決的
12.最有成就感的事情是?
做有挑戰性的事情,並且能夠做好,或者是堅持一個習慣很久,如堅持寫博客,堅持看書
13.你有什麼問題想問的?
1.你作為一個資深的CODER,我想知道,你平時是怎麼學習技術,有什麼好的學習途徑,怎麼才能做到像你一樣強呢?
2.公司的業務和技術棧是什麼呢?
3.技術難點怎麼解決,有什麼技術支持
4.每天有多少時間花在寫代碼上
14.收到OFFER該問的5個問題
1.試用期工資和時間(正常來說合同是3年,試用期是3個月)
2.轉正考核的方式,轉正工資
3.工作時間以及加班計算(一周五天工作制,一天8小時)
4.培訓晉升機制
5.福利情況(五險一金,餐補,其他補貼如電腦補貼)