前言
在今天,我收到了螞蟻金服A級的實習錄用offer,
從開始面試到拿到口頭offer(四面技術+一面HR)戰線大約拉了半個月,
從拿到口頭offer到收到正式錄用郵件大概又是半個月,
思前想后,決定還是做一個整理與總結,
一方面是回顧并記錄自己的努力程序,
一方面也是希望對后來者起到一些幫助,
前方高能預警,本篇文章萬字有余,通讀可能要很久,
目錄
如何進行知識積累
如何把握實踐與理論的天平
我應該如何整理筆記
怎么復習才不會忘
面試前
怎么寫出讓人眼前一亮的簡歷
如何突擊面試
面試前焦慮該怎么辦
面試開始
自我介紹到底要怎么說
面試中
技術面試的時候應該注意些什么
面試尬場怎么辦
如何學會埋坑
面試結束
面試官:“你有什么想問我的嗎”,該說什么?
我怎樣才能知道我是否通過了
我兩年半的技術人生
學習資料分享 ps:有需要可以幫忙點贊文章后,關注點這里來免費獲取
如何進行知識積累
在講面試技巧之前,顯然知識積累是不可或缺的,不然即使面試僥幸通過,在之后的作業中也會體驗極差,
如何把握實踐與理論的天平
實踐是什么?
比如你new Object()初始化了一個物件來使用;
比如你用HashMap結構作為容器存盤了一些資料;
比如你拿SpringBoot搭建了一個web網站后臺;
比如……
理論是什么?
初始化物件有什么代價?背后的底層實作邏輯是怎么樣的?初始化太多物件可能導致什么問題?為什么我經常初始化物件,明明是空間消耗大,反而導致程式在運行時間上變得緩慢?
HashMap適合什么場景?我現在這個場景真的是用HashMap最合適嗎?運用的時候有沒有什么需要注意的?有時候遇到一些特殊需求,在HashMap基礎上可以再優化性能嗎?
天天用SpringBoot,IOC、AOP到底是什么概念,背后怎么實作的?它們適用場景如何,我的用法是最佳實踐嗎?會不會有什么弊端,導致在生產環境出現問題?
……
實踐與理論的學習,到底應該側重實踐一些呢,還是側重理論一些呢?
都說實踐與理論要兩相結合,缺一不可,在我看來這是一句廢話,重點是如何權衡兩者,并且在不同的發展階段,兩者的側重比例是否又要發生變化呢?
在我看來,實踐決定方向,理論填補細節,
(1)首先要實踐,然后填補理論
程式員首先要實踐,才能夠識訓基本的技術視野和處理問題的能力,這兩者都是不可或缺的,
有了基本的視野之后,就可以根據自己學習的方向,去填補你的細節,例如:
我學習了Java,會寫一些應用程式了,也知道如何利用應用服務層的Java來對資料庫層的資料做一些處理,那么接下來: 1. 對資料怎么處理會更快(這里可能就會引出多執行緒,然后就可能引出執行緒池,又引出JDK提供的執行緒池有什么并發問題,怎么解決,然后可能又引入并發包,一下子串出好多) 2. 各種優化(比如初始化太多物件導致頻繁GC,全域變數太多導致占存一直很高blabla)
我學習了MySQL,會用SQL陳述句操作資料了,知道建索引可以加快訪問速度了,那么接下來: 1. 在SQL陳述句上是不是也可以做一些優化來提升性能(比如很有名的延遲關聯) 2. 索引到底應該怎么建才好(這就涉及到索引的很多知識,比如B+樹,比如一些匹配原則例如最左適配原則等等)
這種細節的填補是有邏輯性的,從我上面舉的兩個例子就可以看得出來,這種邏輯性的存在會使你在學習的程序中不會感到虛浮,會發現這些理論都是切實有用且有價值的,
但這樣的理論學習還不夠,因為它不系統,充分的發散思維使你能夠在實踐之外追求到很多理論知識,但那些你發散不到的部分就接觸不到了,這個時候你就需要系統性的學習,例如讀書,
當你第一次學會實踐,就好像在自己的腦海中制作了一個知識星球,它里面幾乎是空白的,但是球體本身存在,幫助你去界定、區分知識——借助這個球體的框架,當你在遇到一個新知識的時候,你會它有一個模糊的概念:這個知識到底是有用知識還是無用知識,它又在哪個范疇或層面里?
所以借助了一開始的實踐,然后你再去邏輯地發散、或者系統地讀書的時候, 就不會讓新知識成為無根之萍,而是切實地進入你的知識星球中,成為你知識架構的一部分,
(2)理論再回傳到實踐中
知識架構建立起來了,但它沒有經歷實踐的檢驗,就依然是不可用的,
一方面在于我們學習的理論知識可能是過時的,甚至是謬誤的;另一方面我們可能以為自己懂了但其實沒懂,這一點相信大家都能理解,
那么如何實踐呢?有些理論可能是很難實踐出來的,但是至少我們要對能實踐的一部分去做一下嘗試,就比如簡單的JVM排查和調優,通過MySQL EXPLAIN去檢查執行計劃并實踐優化等等,
我應該如何整理筆記
首先要強調筆記是很重要的,至少我認識的那些能夠面試進大廠的同學,每個人都會為自己做筆記,
而至于到底應該如何整理筆記,我認為最重要的有兩點:一是分門別類,二是控制粒度,
(1)分門別類
我們一定要能夠清晰地把我們要整理的知識模塊化,比如說JVM基礎,我們可以這樣分模塊:
運行時資料區
垃圾回收
類加載
JMM
JVM調優
然后分別根據每一個小模塊,單獨整理一篇筆記,
并且在篇末,或者另開一篇筆記,專門記錄針對這個模塊的比較大而廣的問題,
例如運行時資料區,我們就可以記錄這樣一些問題:
講講JVM運行時資料區的各個組成,是什么,有什么用
講講物件,它是如何創建的,里面包含一些什么資訊,如何定位到物件
記錄這種大的問題,有助于我們進行自測,不要問自己太多細小的問題,除非你切實覺得它很重要,
什么叫細小的問題呢?比如:類里靜態的基本資料型別存在方法區還是堆里?
這種問題列舉你是列舉不完的,它其實已經包含在了”講講JVM運行時資料區的各個組成,是什么,有什么用“這個問題里,
(2)控制粒度
什么叫控制粒度?其實就是控制你筆記記錄的詳細程度,
如果你筆記中對于知識點的描述非常簡潔,帶來的好處是閱讀起來就會很快,壞處是可能在閱讀時導致你忽略掉一些本不該忽略的細節,或者甚至是:”咦,我這記的是啥,我怎么看不懂了,“
那如果記得太詳細呢?很顯然,就會導致閱讀起來非常繁瑣,可能達不到一個理想的迅速復習的效果,
那到底應該控制在一個什么程度上呢?
我認為一篇良好的筆記應該滿足以下兩個條件:
這段筆記切實提到了所有應該提到的知識點,不需要我去聯想;
這段筆記對于這些知識點都有簡單的描述性文字,并且能夠言簡意賅,盡可能以串列列舉的形式,不要有敘述性的內容,
tips:什么叫敘述性內容?
舉個例子,比如下面這是一段對于垃圾回收演算法里的標記-清除演算法的筆記:
標記-清除演算法:
標記出所有需要回收的物件,根據標記統一回收,
問題:1. 低效率
2. 產生大量不連續記憶體碎片
帶有敘述性內容的寫法是怎么樣的呢:
標記-清除演算法:
它的基本原理是,標記出所有需要回收的物件,然后根據標記統一回收,
它有兩個問題,一是在于效率比較低,二是在于可能產生大量不連續的記憶體碎片,
非常顯然,閱讀前者的效率遠高于后者,
整理筆記時,我們盡可能省去不必要的鋪墊,例如”它的基本原理是“這句話就是完全不必要的,
我們也可以盡可能省去一些聯結詞,例如”首先“、”然后“、”最后“這種,以及對于一些列舉性內容,我們盡可能采取串列而非文字形式表達,會更加直觀易懂易記,
怎么復習才不會忘
每天都反復復習當然可以保證你不會忘,但會非常疲憊而且費時,
嚴格遵守網上的某些號稱貼合人類記憶曲線的復習方式,堅持起來壓力很大,最終往往也很難達到自己理想的效果,
實際上這種所謂”曲線“是有一定道理的,但是也要結合我們每個人自身的特殊情況,去找到最適合自己的一種記憶方式,
我認為這樣一種記憶法是比較有效的:
從第一次復習并記憶的時候開始算,隔比較短的一段時間再復習并記憶一次,隔不太短的一段時間再復習一次,然后堅持每隔較長的一段時間就復習一次,
那么這個”比較短的一段時間“、”不太短的一段時間“、“較長的一段時間”又分別是多久呢?我們可以自己來決定,但需要知道的是,我們的復習間隔時間應該是不斷變長的,直到一個比較穩定的值,
比如我個人的話,就喜歡第一次記憶完后,兩小時再復習一次,隔一天再復習一次,然后隔四五天復習一次,之后可能就一直是7-10天會復習一次,
無需刻意,比如我本來打算三天后復習一次,但是三天后突然有什么事耽擱了,所以我提前到前一天,或者滯后到后一天,又能怎么樣呢?記憶是量變的程序,一天兩天的偏移根本不會有什么質變可言,
但讓記憶周期大抵符合一個慢慢變長的規律,我想是有必要的,而如果你覺得最后每隔7-10天復習一次都會壓力很大,那你也可以半個月甚至二十天才看一次,不過這樣的話,等面試要來臨的時候,你可能就難免需要簡單突擊一下了,
面試前
怎么寫出讓人眼前一亮的簡歷
按照一般流程來說,你的簡歷會先給懂一點技術/不懂技術的HR初審,然后再交給研發的同事過審,經過這兩層都ok了,才會給你進面試的流程,
也就是說,你的簡歷不僅要讓專業人士看著厲害,還要讓非專業人士看著也厲害,
那么作為技術人員,簡歷到底應該怎么寫呢?
(1)綜述
我們不妨先概括后具體,先總體看一下簡歷應該寫一些什么東西,寫多長篇幅,排版成什么樣子,然后再分析每個模塊應該如何去寫,
寫什么東西
一個正常的簡歷應該有如下內容:
基本資訊及聯系方式
學習經歷
作業經歷(或實習經歷)
專案經歷
專業技能
自我評價(這個不一定要有,看前面篇幅)
寫多長篇幅
作為技術人員,我覺得簡歷1-2頁就好,3頁未免太過冗長,
排版成什么樣子
首先格式上來說,現在一般都是網申,也就是提交電子材料,所以HTML或者PDF格式為佳,
具體排版的話,盡可能簡潔明了,不要花里胡哨,技術人,又不是去做UI設計,搞那么好看,人家也不會欣賞,反而覺得你不務正業,
我個人建議簡歷的好看程度,達到markdown能支持的極限就可以了,不要超過markdown的能力,
(2)基本資訊及聯系方式
可能會包括以下一些資訊:
姓名,電話,郵箱:這幾個是必須的,不多說了,
求職意向:單獨列這條出來,我建議要寫,不然你本來做后端的,人家給你安排到測驗開發,你哭都來不及,
個人網站/博客/GitHub:如果有厲害的一定要記得寫,如果很水的話建議別寫了,
(3)學習經歷
可能會包括以下一些資訊:
學歷(或者畢業年份)
績點:如果不好看,請不要寫,不要寫,不要寫
專業:如果不是計算機相關專業,請不要寫,不要寫,不要寫
獎項:盡可能多寫,從高到低排,先寫厲害的,最后寫不厲害的,如果沒什么拿的出手的獎項,建議干脆什么也不要寫,不要孤零零寫個什么XX大學優秀團員上去,還不如不寫,
(4)作業經歷(或實習經歷)
這里就如實說就好,切記一定要準確,包括在職時間也寫明白,一兩個月的偏差也是在給自己埋炸彈,
應該包括以下資訊:
在職時間:例如2018.2~2019.3
作業單位:如果不是大家熟知的大廠,最好附上行業
部門:這個是可選項,不一定要寫,如果是厲害的部門請記得寫,比如騰訊微信
崗位:建議具體,如果公司里崗位就叫“研發工程師”,你可以寫成“JAVA研發工程師”或者“GO研發工程師”之類的,
(5)專案經歷
這是第二重要的部分!!第一重要的部分是下面的專業能力,但這也是決定你是否能簡歷過審的很重要的一部分,并且是可能導致面試官瘋狂追問你的來源,
一般寫2-3個專案經歷比較好,相對來說,要挑最厲害的、最對口的、最近的,
那么每個專案經歷中,應該寫一些什么呢?
專案名稱
專案簡介:1-2句話就好,讓別人知道你這是個什么專案,比如是個后臺管理系統?比如是個電商平臺?之類的
個人技術作業:請以串列形式列舉自己的核心作業,不要大段敘述性文字!! 后面是一些可選項,不一定要寫:
技術關鍵詞:專案中涉及到的技術關鍵詞
專案中的識訓
專案成果:專案上線后有什么成果,比如抗住了多大的QPS,比如做到了多大的規模等等,請注意這兩者是有區別的,前者可能更強調峰值,后者是長期的穩定性,當然還可以有其他的,但最好要有技術視角,
給一個優秀的范例(來自敖丙):

如果覺得這個有點太高大上了,再看一個普通一點的:

(6)專業技能
專業技能方面應該盡可能講得全面,把自己確定會的一個都不要漏掉,
但是一定要和崗位對口,比如你投個Java后臺,你非得寫個攝影技能上去,反正我個人感覺不是很好,
如果你不知道怎么寫,可以看一下崗位描述,一般投遞簡歷前你看到的崗位描述上都會有對于技術要求的說明,比如:
=我們的要求=
全日制211本科以上學歷,計算機相關專業,畢業時間2020.11-2021.10
JAVA基礎扎實,理解io、多執行緒、集合等基礎框架,對JVM原理有一定的理解
熟悉分布式、快取、訊息、搜索、推薦等技術,并能合理應用,解決實際問題
學習能力強,對代碼質量及系統性能具備精益求精的精神
良好的團隊溝通協同能力,抗壓能力,勇于接受挑戰
有作品或者實習經驗優先
我們可以根據崗位的要求,結合我們自身的優勢,來寫我們的專業技能,像這樣:

如何突擊面試
我個人覺得,突擊面試是在面試前1-10天的這個階段,
(1)筆試突擊復習
這個是毋庸置疑的,之前在怎么復習才不會忘里說,最后堅持每7-10天復習一次,如果你堅持了這種頻率,我覺得筆記突擊復習對你來說幾乎是不需要的,不過如果你覺得心有不安,可以在突擊階段每天復習一次,
切記一點,筆記突擊復習時,請記得自己問自己問題,然后模擬一下在面試官面前你會怎么回答,別只是記憶,你還要學會如何表達,
(2)針對性復習
針對性復習包含兩方面:把握公司面試特點+刷特定面經,
首先是把握公司特點,打個比方,如果你去面試位元組跳動,可能就需要多準備一點演算法、網路,他們很喜歡問這些,如果你去面試美團,你可能就更需要準備一些JUC并發包、框架,
把握公司特點很重要,你會發現即使同樣是面試JAVA崗位,不同公司的面試內容差別也會很大,
甚至不只是公司,到部門層面,差別也會很大,某公司A部門的JAVA崗,和該公司B部門的JAVA崗,就是要求不一樣的,也許一個更注重并發能力,一個更注重排查調優能力等等,這一點你可以從崗位要求里去了解,或者問部門里相關的人員,
其次是刷特定的面經,現在網上有很多人分享面經,可能不一定能直接找到你現在面試的部門的面經,但你至少可以找到同一家公司下、業務型別相近的面經,把他們題目拿過來,給自己模擬面試一遍,和前面說筆記突擊復習一樣,模擬你的表達,別只是心里想一想答案就過去了,
(3)每日一道演算法
如果你面試中可能會出現演算法題,建議你在突擊階段每天一道LeetCode以保持手感,不過這因人而異,有些人即使很久不做演算法,臨陣磨槍也不虛,
面試前焦慮該怎么辦
什么深吸一口氣?站在陽臺看看窗外?我覺得效果不是很大,
深呼吸在面試前半小時是有效的,它可以緩解你面試前過分緊張的情緒,但它是緩解緊張的,無法緩解焦慮,
焦慮的源頭在于:害怕意外的發生,我覺得緩解焦慮最有效的方式就是,為自己規劃好一切,
在突擊面試之前,時間尚早,相信你也不會有太多焦慮,當突擊面試階段開始,你就要開始學會為自己規劃,讓一切有條不紊地進行,你會發現你不再會為面試和其結果感到焦慮,因為你知道你自己做到了最好,
那如何規劃呢?
不妨給個例子:
比如我在下周六(2020-04/18)是阿里的一面,而今天是周日(2020-04-12),接下來我怎么安排呢?
2020-04-12 周日
復習單執行緒容器、JUC包,整理出相關的大而廣的面試問題,進行自測,
2020-04-13 周一
復習網路、作業系統
2020-04-14 周二
復習JAVA常見面試題、JVM
2020-04-15 周三
復習MySQL和Redis
2020-04-16 周四
復習Spring、IO、設計模式
2020-04-17 周五
網上查閱面經自測,做兩道演算法恢復一下手感
2020-04-18 周六
盯著自己準備好的各種大而廣的問題反復車輪式復習,直到面試前半小時,
半小時里再背一遍自我介紹,復習一下簡歷里的專案,
迎接面試,
如果這樣規劃以后,依然讓你感到十分焦慮,很簡單:把規劃再細化,
你會發現,當規劃的細致程度達到某種階段以后,你的焦慮會轉化成壓力和動力,不會再讓你手足無措,
最后說一個小tip,其實讓你面試前不焦慮還有一個非常簡單的辦法,就是多投遞簡歷,多面試,面多了你就會感到麻木,不會焦慮了,
面試開始
自我介紹到底要怎么說
如果是一面/二面,一般是純技術面,這個時候我建議可以遵照這樣一種自我介紹模板:
自報家門
介紹自己的技術方向和技術能力
我主攻的方向是XX,從技術上來說,我對于XX、XX(列舉一些技術點)比較熟悉(以引導面試官問你熟悉的內容)
介紹專案經歷(什么專案,在里面做什么事情,有什么難點,怎么克服的,有什么識訓)
我在之前XX(讀大學?在XX作業?之類的)的時候,很喜歡并善于研究 / 做過一些有價值的專案,比如blabla,期間遇到過一個問題至今印象深刻,blabla,經過這個專案,我吸收了一些blabla的知識,
tips:在介紹專案經歷的階段中,“在里面做什么事情”是最重要的模塊,一定要講清楚,做什么事情決定你在面試官第一印象中的高度,而“有什么難點,怎么克服的”是給你一個埋坑的機會,讓面試官更有可能在這個點上去追問你,
收尾
希望在未來,可以把這些知識(之前專案中提到的知識)運用在作業中,
也希望在本次面試中,可以得到面試官的一些建議和指導,
如果是三面/四面/HR面,并且你切實覺得可能不再那么純技術了,你的自我介紹可以向軟實力角度偏移,這里拿我的自我介紹給個例子:
tips:整理你自己的自我介紹的時候,請切記不要太書面語,背起來不舒服不說,真正到自我介紹的時候也會顯得生硬,
您好,我是來自XX大學XX專業的XX,
我想從技術理論、專案實踐、作業能力上來簡單介紹一下自己,
首先是技術理論,我主攻的方向是Java后臺,技術上來說,我對于Java基礎、JVM、并發容器、執行緒池等等還是比較熟悉的,另外在框架方面用SpringBoot比較多,讀過Spring的原始碼,而資料庫層面的話,磁盤資料庫中我對于MySQL尤其是InnoDB引擎比較熟悉,記憶體資料庫中對于Redis比較熟悉,
而在專案實踐方面,我對于理論和實踐的結合一直是比較看重的,從大一入學兩個月我就有帶領大一的學生隊伍參加院里的專案比賽,之后陸陸續續到今天累計也做了不下十幾個專案了,而在這些專案中,在綜合方面我主要擔任的也都是一個負責人的角色,而在技術方面我主要做的則都是Java后臺的部分,我開過會議,出過檔案,寫過代碼,也參加過有好幾百人作為聽眾的大型答辯,應該說不管在硬實力還是軟實力上,都得到了很不錯的鍛煉,
最后是我的作業能力,我現今任我們專業XX班的班長,已經歷時一年半,對于組織作業應該說是非常熟悉了,另外,我也有參與學校里一個較大型的資訊技術作業室,出任其中的技術部負責人,偶爾會帶領學弟學妹們進行一些專案實踐,以及參與引導部門及作業室的規劃安排,事務很多很雜,也培養了我強大的規劃力和執行力,相信這也能夠使我在未來的作業中得心應手,
面試中
技術面試的時候應該注意什么
要從表達和內容兩方面來講,
(1)表達
表達切記一定要口齒清楚,邏輯清晰,
口齒清楚
口齒清楚這一點相信大家都能領會,但是也不排除有些小朋友一緊張口齒就不利索,這個一定要注意,
更有甚者有時候遇到不太確定的問題,想要以口齒不清來蒙混過關,這種更不可取,基本是搬石砸腳,
邏輯清晰
如何保證這一點呢?有時候當遇到一個措手不及的問題,很難保證我們的邏輯又快又清晰,
所以最簡單的方式,就是用速度的犧牲來換取邏輯的明了,甚至有時候你可以短暫地沉默一會兒,好好整理一下思路,千萬別張口就來,導致說得亂七八糟不成體系,
(2)內容
對于一些切入點非常小的問題,直接回答就可以,比如說:
Q:物件的鎖資訊是存在哪里的?
A:在物件頭MarkWord里
但是對于一些切入點比較大的問題,例如:
Q:講講垃圾回收?
Q:集合里ArrayList和LinkedList有什么區別?
回答的內容切記不可過于簡短,但也不能胡亂堆砌,最好的方式是水平擴展或者垂直擴展,
不妨就拿上面的一個問題來舉個例子,比如說講講垃圾回收,
水平擴展的話,應該怎么講呢?
A:
有關垃圾回收,我們首先要考慮兩個問題,一是如何判斷物件可回收,二是用什么樣的方式來回收,
首先對于前者,有參考計數法和可達性分析兩種方法,它們分別……(講講它們的含義,優缺點)
而對于后者,市面上主要有標記-清除,標記-整理,復制三種回收演算法,它們分別……(講講含義,優缺點)
結合這些演算法,市面上就出現了很多垃圾收集器,例如Serial,ParNew,CMS,G1……(順便講講它們的回收邏輯,優缺點)
面試官:(暗自點頭)
水平擴展也就是從一個問題出發,把與它相關的整棵知識樹或者整顆知識樹的一部分(如果樹太大的話)講出來,體現你的知識是有架構有體系的,
垂直擴展的話,又應該怎么講呢?
A:
垃圾回收的話,自JDK1.8后,市面上就非常流行G1垃圾回收器了,它是不分新生代和老年代的,基本原理是……(講講含義,優點)
但是垃圾的頻繁回收勢必會導致用戶體驗的下降,雖然G1已經很優秀了,作為開發者我們還是需要關注JVM的優化(話鋒一轉,開始走向深度)
(講一些具體的優化策略)
面試官:(暗自點頭)
垂直擴展主要是需要自行找到一個切入點,或者面試官已經把切入點給到你了,那么接下來你要引入自己的思考,按照一個沒有漏洞的邏輯走向深度,體現你是勤于思考并且善于發現并解決問題的人,
面試尬場怎么辦
首先如果是因為你答不上來而尬場,你就乖乖說你不會,千萬別強撐,
如果不是這個情況,是面試官一時沉默的話:
有時候面試官可能很忙,他可能都沒來得及看完你的簡歷就來給你面試,換言之,他并沒有做太多的準備,所以臨時尬場也是非常正常的,
所以現在你要做的就是:讓面試官不要尬場,
打個比方:
Q:你說你熟悉執行緒池,那你說說看執行緒池都有些什么重要的引數?
A:比如有核心執行緒數、最大執行緒數、允許存活時間、阻塞佇列等等(順便簡單說一下這幾個引數都是什么含義)
Q:嗯不錯……(開始沉默)
一般面試官的沉默可能是你回答完這一個問題之后,他一時間想不到問什么,這個時候你可以繼續沿著這個問題擴展下去:
A:關于執行緒池還有一些需要注意的地方,比如當一個任務添加進來的時候……(講一下任務添加到執行緒池的流程)
A:考慮到這樣一個流程,所以我們在控制最大執行緒數、阻塞佇列的時候是需要注意的,如果最大執行緒數設定過大,或者阻塞佇列設定上限過長,可能導致OOM(又聯系回前面引數的問題)
是不是聯系回去不要緊,但是只要你依然在講這個問題相關的知識樹里的東西,就可以有效地緩解尬場,還會讓面試官覺得:
面試官:(嗯,這小伙基礎還挺扎實)
如何學會埋坑
埋坑是非常重要的一個技巧,
什么叫埋坑?就是在回答前一個問題的時候,適當地對面試官進行引導,讓他能夠問你想讓他的問題,
面試前是最容易埋坑的,一是簡歷里的專案經歷,專業技能;二是自我介紹階段,講一些自己擅長的技術點等等,引導面試官去問你,
而在面試的程序中,應該如何埋坑呢?
打個簡單的比方,
比如現在面試官問你:”ArrayList和LinkedList有什么區別?“
你先中規中矩地回答,回答完之后,我們可以根據我們的擅長點做一些不同的策略:
如果你比較擅長并發容器,你可以說:
ArrayList和LinkedList都屬于單執行緒框架,是并發不安全的,如果要并發安全的話,需要使用CopyOnWriteArrayList或者ConcurrentLinkedQueue
如果你比較擅長執行緒池,你可以說:
ArrayList和LinkedList分別是對陣列和鏈表的封裝,JAVA中比較重要的對于陣列、鏈表的封裝集合類還有執行緒池中的阻塞佇列,例如ArrayBlockingQeque和LinkedBlockingQueue
當然了,埋坑只能啟到一定的導向作用,最終決定權還是在面試官手上,不要太刻意,不然會適得其反,
面試結束
面試官:“你有什么想問我的嗎”該說什么?
這個問題可以給幾個例子:
您對我有什么建議嗎?
您平時作業中主要做些什么呢?
如果我有幸能夠被錄取的話,主要會做一些什么樣的作業呢?
我怎樣才能知道我是否通過了
我個人不建議在面試完后直接問面試官:”我通過了嗎?“
而且面試本來就是雙向選擇,你是在眾多offer中挑一個最喜歡的,人家也是在眾多面試者中挑最好的那一批,
所以如果你想要知道自己是否通過了,最好的方式是從面試官對你的態度中窺探,
比如你最后問:”您平時作業中主要都做些什么呢?“
他給你回答得非常詳細,而且還會主動跟你聊一點別的,比如告訴你進來以后會做什么之類的,那說明他還是很認可你的,
如果他只是簡單說一下,有點敷衍的樣子,不排除只是他作業忙的可能,但你最好也可以考慮一下,找找其他出路了,
另外,等面試結束后,如果你有推薦你去面試的推薦人或者HR的聯系方式,你也可以直接問他們面試的結果,
我兩年半的技術人生
最后附上我兩年半的技術生涯,中間不免有些彎路,但總體還是令我滿意的,
希望給有需要的人以參考,
2017(入學)
7-8月
參加社會上的Java語言基礎培訓課程,學習Java,基本上到可以簡單使用Swing的程度,對于反射泛型等中高級知識一竅不通;
10月
拉了五個也是大一的小伙伴參加學院的創新創業比賽,基于Java Swing寫了一個井字策略游戲,拿到學院的優勝獎;
11月
機緣巧合認識了一位研二的研究生,經他推薦進入一位教授的實驗室做商業網站;
12月
在研究生的帶領下認識SpringBoot和Mybatis,原理一竅不通,但是可以寫一點CRUD;
總結
Java語言最基礎內容的使用比較熟練了
有了可憐到幾乎可以忽略不計的web后臺開發經驗
當時學院演算法學習氛圍比較好,到年末我大概相當于共計刷了一百道LeetCode中等題
2018(大一~大二)
1-3月寒假
進入培訓機構學習web前端,了解了html-css-js,學會ajax;
4-6月
劃水度過,我不知道我在干嘛,就好好上課;
7-8月暑假
做一些基于SpingBoot的簡單實踐,初步學習Unity游戲引擎;
9-10月
劃水;
11-12月
學校各種創新比賽啟動,我都參加了,最后同時啟動了大約6-7個校園小專案;
總結
這是我多角度嘗試的一年(比如web前端、游戲開發),因為我還并沒有決定以后從事什么方向,大約在暑假后(9月),我才覺得自己未來應該會做Java后臺;
在后臺技術上提高不多,只是熟練了那么一丟丟;
專案啟動很多,那個時候覺得專案很重要很能鍛煉人,后來覺得其實做那么多差不多級別的專案并不是很有意義,
2019(大二~大三)
1-2月寒假
我啟動了太多專案,CRUD崽忙不過來了!!
3-6月
各種專案比賽遍地開花的幾個月:
3月:兩個創新培育專案,一個國創一個市創評級
4月:上海市計算機應用能力大賽二等獎
6月:校大夏杯創業大賽銅獎
但只有我自己心里清楚,獎是拿得很不錯,但是技術上其實都是一樣的東西,而且非常簡單非常基礎,全是傳統的小型單體web專案,業務驅動,
還是3-6月
比我大兩級的拿到螞蟻金服正式offer的學長來講了Java面經,我終于意識到自己太菜了,但是跟著大三春招的洪流,我也沒忍住投了幾個簡歷試試:
攜程:一站式面試,我不知道一站式是什么意思,去面了一面自我感覺良好,就直接走了!走了!沒在那等著繼續面下去,就沒了,
位元組跳動 · 北京:視頻面試,在第二面掛了,評價是”相對大二學生來說比較優秀,但是暫時還沒達到實習崗位的要求
7月
買了一堆螞蟻學長推薦的書籍,例如《高性能MySQL》、《深入理解Java虛擬機》、《Java并發編程實踐》、《圖解HTTP》等,開始有計劃地閱讀起來;
8月
去安歡訓場參加全國大學生計算機設計大賽的答辯,榮獲一等獎,還是那句話,真沒啥技術含量,但是提升了我答辯的能力和吹噓的水平;
9-12月
繼續讀書,
總結
這是我從實踐逐步轉戰理論學習的一年,之前的我太過于知其然而不知其所以然了,寫專案都是不考慮原理的,自螞蟻學長分享了Java面經之后,為我指出了方向,
這一年我仔細閱讀了《高性能MySQL》前七章,《深入理解Java虛擬機》近整本,也買了《MySQL技術內幕 InnoDB存盤引擎》看完了一整本,做了很多筆記,
我還買了很多其他雜七雜八的書,例如《輕量級微服務架構》、《圖解TCP/IP》、《大型網站架構》等等,有些是幾乎讀不懂,有些是沒怎么讀,大抵算是這一年走的彎路,
2020(大三)
1月
瘋狂整理、復習,中旬參加了攜程的日常實習面試,通過了,年前進入攜程實習;
2月
過年幾天還帶了兩本書回老家,但是真的學不進去,回來后因為疫情遠程辦公,同時不斷進行復習與整理,準備春招;
3月
開始進入春招面試階段,只投了位元組和阿里,都通過了;
4月
一直到今天4.11,一直是靜待offer,沒有什么事情,就不疾不徐地學一學SpringCloudAlibaba,平時就談談戀愛,打打游戲,看看電影,
我兩年半的技術生涯,主要走的是 實踐學習 → 理論學習 → 實踐理論相結合 這樣一條路線,
一開始的實踐學習就像是培訓班生活,只不過是自我培訓;
然后到理論學習層面,有幸聽到螞蟻學長的面經講座,加上有之前的實踐基礎,讓我的理論學習有方向感且不會太虛浮;
最后是實踐理論相結合層面,主要就是把我一些新學習的沒實踐過的理論付諸實踐,就比如學習了JVM調優和問題排查,就自己寫一個死鎖程式或者OOM程式然后用排查工具來排查一下問題,
學習資料分享
面經

學習圖譜

面試資料

視頻資料

檔案資料

=如何獲得這份優質的資料呢?
快速領取通道:(點這里)免費獲取!誠意滿滿!!!
Java面試精選題、架構實戰檔案傳送門:https://jq.qq.com/?_wv=1027&k=iWJZw1rp
整理不易,覺得有幫助的朋友可以幫忙點贊分享支持一下小編~
你的支持,我的動力;祝各位前程似錦,offer不斷!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205160.html
標籤:其他
