又到了一年中的招聘旺季的時候,想必很多人都萌動了跳槽的心,筆者也抱著同樣的想法換了個公司,從10底開始面,面到1月初,面了有快二十五家公司。我是一個喜歡總結(jié)經(jīng)驗的人,每經(jīng)過一場面試,我在回來的路上都會仔細回想今天哪些問題可以答的更好,或者哪些問題是自己之前沒遇到過的,或者是哪個知識點今天又問了等等。
不會那就多做準備,往往機會都是留給有準備的人。到現(xiàn)在已經(jīng)找到滿意的工作了,對自己這段痛苦的面試做個總結(jié)。
個人介紹:
首先介紹下我面試時的自身條件情況,我把自己的情況分為優(yōu)勢和劣勢來說可能更有利于你們比較自身情況。
劣勢:
1.14年3月開始到上海工作,面試的時候是18年10月到12月,四年多的經(jīng)驗。分析:工作時只注重效率和結(jié)果,沒怎么去查看底層的實現(xiàn),再加上我也不是一個主動堅持學習的人。很多項目中用到的框架和中間件知其然而不知其所以然,對于技術(shù)領(lǐng)域來說,總結(jié)和沉淀的不夠。
2.學歷是個大專。分析:這個還是很有影響的,有工作經(jīng)驗后,公司對學校的要求就沒那么高了,但是只是大專學歷就有問題了,很多公司招聘根本都不招大專的,也就是你投的簡歷基本都不會被查看。這個我強烈要求不是本科或本科以上的進來去考一個本科的學歷。唉,學歷真是個敲門磚,你連門都進不去,那怎么還能好好的玩耍了。
3.前一家公司是傳統(tǒng)電信行業(yè),加入項目組時,項目已經(jīng)上線有段時間了,我們的任務就是有需求就開發(fā),有bug就優(yōu)化,其他時間就聊騷,各干各的,工作一年多跟在養(yǎng)老一樣,用一句話說就是編程5分鐘,扯淡2小時,項目經(jīng)驗嚴重不足,沒開發(fā)過很難的需求。分析:這一點是最傷的,公司招有經(jīng)驗的就想看你都干了些什么牛批的東西,結(jié)果你告訴面試官我寫的需求都是垃圾。
優(yōu)勢:
1.良好的溝通交流能力。分析:這個能力不會是關(guān)鍵性的,但是可以加分。
2.較強的學習能力和邏輯思維能力。分析:有些公司和面試官還是比較看重一個人的學習能力的,經(jīng)驗代表著你現(xiàn)在在什么級別,而學習能力則代表著你將來能到達什么級別。在工作項目中學習成長是比較快速的,如果你是一個不能主動堅持學習的人,那就在工作中不斷地學習吧,哈哈。
學習過程:
看了我的優(yōu)劣勢介紹,你會發(fā)現(xiàn)我的優(yōu)勢相對于我的劣勢來說,簡直不值一提。我自己對此也有清晰的認識,因此從過完年之后,我就開始抓緊空閑時間學習。學習的過程如下:
1.看面試題
正常人第一步肯定都會看面試題,我也不例外,在看的過程中,我發(fā)現(xiàn)有些文章寫的不錯,對我?guī)椭恍≈档猛扑]
2.深入學習
在看面試題的過程,你會遇到一些自己沒接觸過的或者以前沒深入學習過的知識,例如最常問的HashMap內(nèi)部實現(xiàn)原理,這就促使你得開始去看jdk的源碼或者是學習一些新的東西。看源碼是很重要的一步,起步很難,但是會讓你收益良多,看源碼的過程如果碰到無法理解的地方,可以百度看下別人的理解。我學習源碼的過程中,看過幾個人的關(guān)于源碼的文章寫的很不錯
3.熟悉項目
找出自己工作以來開發(fā)過的最叼的功能,將整個功能的流程和涉及的東西吃透。項目是面試中必問的環(huán)節(jié),一般是以一個功能點為基礎(chǔ)展開問,因此你必須對這個功能有很深的認識,不能有模糊的地方。如果有時間,能把涉及到的知識點也搞懂最好。
4.做面試題
有不少公司是有面試的,如果你沒有準備過,很容易在各種小地方犯錯,建議去一些面試題網(wǎng)站多做些題目,我自己是用的??途W(wǎng)。
5.學習記錄
把自己每天的學習時間和學習內(nèi)容記錄下來,可以讓自己更有動力的學習,學習是一個枯燥的過程,你必須讓自己時刻保持有動力。
投簡歷、約面試環(huán)節(jié)
關(guān)于如何寫好一份技術(shù)簡歷,可以看看我之前的一篇文章:如何寫好一份技術(shù)簡歷?
1.在哪些網(wǎng)站投?
拉勾網(wǎng)、BOSS直聘、獵聘網(wǎng)。
2.是否該海投?
投簡歷分為兩個情況。
1)沒有社招面試經(jīng)驗:建議采取海投的方式,只要職位要求跟自己比較匹配都可以投,累計面試經(jīng)驗。這個環(huán)節(jié)可以把投簡歷的網(wǎng)站增加兩家:智聯(lián)和無憂。
2)自認為社招面試經(jīng)驗已經(jīng)足夠:投那些職位匹配、公司滿意的職位。公司評價可以去看準網(wǎng)、百度、知乎等查詢。
3.一天約幾家面試合適?
最理想的情況為2家面試,上午一般在10點左右,下午一般在2點左右。建議把理想的公司放下午,因為下午的時間比較充足,可以讓公司更充分的了解你。我開始面的時候,每次都是上午面的不好,下午面的不錯。
4.投簡歷經(jīng)常沒下文?
我當初也沒想到簡歷篩選這關(guān)有這么難,可能是我的簡歷確實亮點不多,再者HR很多都不是行內(nèi)人,因此他們看得最直接的就是你上家的公司和你畢業(yè)的學校,如果你不是從牛逼的公司/學校出來,可能會碰到和我一樣的情況,應對的辦法就是多投。
5.是否該裸辭?
我一開始是邊上班邊投,然后利用調(diào)休時間,或者請假去面試。后來,面試機會越來越多,請假太頻繁了,自己都不好意思了,并且自己也已經(jīng)有足夠的信心,這個時候我選擇了裸辭。裸辭還有一個原因是,在面試過程中你會發(fā)現(xiàn),有的公司要人要的緊,如果你的辭職流程過長可能會導致你錯過這個公司。
6.注意事項
1)面試前一天把路線和時間算好,最好別遲到。
2)背個書包,帶好簡歷、充電寶、紙巾、雨傘。
面試環(huán)節(jié)
1.筆試常見的問題?
面試常見的問題上面給的面試題鏈接基本都有。我只提幾點:1)寫SQL:寫SQL很??疾靏roup by、內(nèi)連接和外連接。2)手寫代碼:手寫代碼一般考單例、排序、線程、消費者生產(chǎn)者。我建議排序算法除了冒泡排序,最好還能手寫一種其他的排序代碼。試想:如果一般面試者都寫的冒泡排序,而你寫的是快速排序/堆排序,肯定能給面試官留下不錯的印象。
2.面試流程?
1)讓你自我介紹
2)問Java基礎(chǔ)知識
3)問項目
4)情景問題,例如:你的一個功能上了生產(chǎn)環(huán)境后,服務器壓力驟增,該怎么排查。
5)你有什么想問面試官的
3.面試常問的知識點?
1)集合相關(guān)問題(必問):
1、HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實現(xiàn)。
2、HashMap和Hashtable的區(qū)別。
3、ArrayList、LinkedList、Vector的區(qū)別。
4、HashMap和ConcurrentHashMap的區(qū)別。
5、HashMap和LinkedHashMap的區(qū)別。
6、HashMap是線程安全的嗎。
7、ConcurrentHashMap是怎么實現(xiàn)線程安全的。
2)線程相關(guān)問題(必問):
1、創(chuàng)建線程的3種方式。
2、什么是線程安全。
3、Runnable接口和Callable接口的區(qū)別。
4、wait方法和sleep方法的區(qū)別。
5、synchronized、Lock、ReentrantLock、ReadWriteLock。
6、介紹下CAS(無鎖技術(shù))。
7、什么是ThreadLocal。
8、創(chuàng)建線程池的4種方式。
9、ThreadPoolExecutor的內(nèi)部工作原理。
10分布式環(huán)境下,怎么保證線程安全。
3)JVM相關(guān)問題:
1、介紹下垃圾收集機制(在什么時候,對什么,做了什么)。
2、垃圾收集有哪些算法,各自的特點。
3、類加載的過程。 雙親委派模型。
4、有哪些類加載器。
5、能不能自己寫一個類叫java.lang.String。
4)設(shè)計模式相關(guān)問題(必問):
1、先問你熟悉哪些設(shè)計模式,然后再具體問你某個設(shè)計模式具體實現(xiàn)和相關(guān)擴展問題。
5)數(shù)據(jù)庫相關(guān)問題,針對Mysql(必問):
1、給題目讓你手寫SQL。
2、有沒有SQL優(yōu)化經(jīng)驗。
3、Mysql索引的數(shù)據(jù)結(jié)構(gòu)。
4、SQL怎么進行優(yōu)化。
5、SQL關(guān)鍵字的執(zhí)行順序。
6、有哪幾種索引。
7、什么時候該(不該)建索引。
8、Explain包含哪些列。
9、Explain的Type列有哪幾種值。
6)框架相關(guān)問題:
1、Hibernate和Mybatis的區(qū)別。
2、Spring MVC和Struts2的區(qū)別。
3、Spring用了哪些設(shè)計模式。
4、Spring中AOP主要用來做什么。
5、Spring注入bean的方式。
6、什么是IOC,什么是依賴注入。
7、Spring是單例還是多例,怎么修改。
8、Spring事務隔離級別和傳播性。
9、介紹下Mybatis/Hibernate的緩存機制。
10、Mybatis的mapper文件中#和$的區(qū)別。
11、Mybatis的mapper文件中resultType和resultMap的區(qū)別。
12、Mybatis中DAO層接口沒有寫實現(xiàn)類,Mapper中的方法和DAO接口方法是怎么綁定到一起的,其內(nèi)部是怎么實現(xiàn)的。
7)其他遇到問題:
1、介紹下棧和隊列。
2、IO和NIO的區(qū)別。
3、接口和抽象類的區(qū)別。
4、int和Integer的自動拆箱/裝箱相關(guān)問題。 常量池相關(guān)問題。
5、==和equals的區(qū)別。
6、重載和重寫的區(qū)別。
7、String和StringBuilder、StringBuffer的區(qū)別。
8、靜態(tài)變量、實例變量、局部變量線程安全嗎,為什么。 try、catch、finally都有return語句時執(zhí)行哪個。
9、介紹下B樹、二叉樹。
10、ajax的4個字母分別是什么意思。
11、xml全稱是什么。
12、分布式鎖的實現(xiàn)。
13、分布式session存儲解決方案。
14、常用的linux命令。
更多面試題,也可以看一下我之前總結(jié)的一篇面試專題文章:Java程序員從阿里拿到offer回來,這些面試題你會嗎?
一些經(jīng)驗:
1.先投一些普通公司,等面出了心得再去投理想的公司。
2.不熟悉的技術(shù)不要主動提。
3.對于那種實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。
4.小公司喜歡在薪水上壓你,開的時候適當提高。
5.不要去參加招聘會,純粹是浪費時間。
6.把面試當作一次技術(shù)的交流,不要太在意是否能被錄取。 如果你正在找工作或者剛剛學校出來,又或者已經(jīng)工作但是經(jīng)常覺得難點很多,覺得自己java方面學的不夠精想要繼續(xù)學習的,想轉(zhuǎn)行怕學不會的。
7.公司一般面完就決定是否錄取了,讓你回去等消息這種情況一般沒戲,無論你自己覺得面的有多好。
8.盡量少通過電話面試,效果不好。
9.在面試的日子里,要保持每天學習,無論是學習新東西還是復習舊東西。
10.拿到offer了,問問自己這個公司讓自己100%滿意了嗎,如果不是,請繼續(xù)努力找更好的。
11.通過面試官可以大概判斷這家公司的情況。
12.拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。
13.理想的公司可以多投幾次,我有好幾次都是第一次投被篩掉,多投幾次就過的經(jīng)驗。
14.問到自己有深入研究過的知識,抓住機會好好表現(xiàn),不要輕易放過。
筆者:王賢