寫(xiě)在最前面的話
這篇文章是以我自己的親身經(jīng)歷來(lái)寫(xiě)的,坐標(biāo)深圳,以數(shù)據(jù)說(shuō)話,全網(wǎng)首發(fā),100%真實(shí)可靠!首先介紹一下我自己,我來(lái)自某不知名二本,有一年的Java實(shí)習(xí)經(jīng)驗(yàn),并且華麗的錯(cuò)過(guò)了校招,只能走社招。從8月15號(hào)來(lái)到深圳,花費(fèi)1天時(shí)間找房子,最后經(jīng)過(guò)一番考量,最終定居在福田區(qū),福田區(qū)這邊花銷比較高但最可能也會(huì)離你將來(lái)工作的地方要近。找好了房子之后,明天剛好是周末,周末投簡(jiǎn)歷,人家肯定看不到(其實(shí)也能看到,墊在底下咯)。也就是說(shuō)我從8月19號(hào)正式開(kāi)始闖蕩江湖,找到9月27號(hào),扣掉不可能有面試的星期六和星期天,總共耗時(shí)一個(gè)月。深圳這邊畢業(yè)生的行情大概是6-7K+五險(xiǎn)一金(像我這樣的渣渣就這價(jià),985/211應(yīng)該會(huì)高個(gè)1-2K,如果你立志要進(jìn)BAT這樣的大公司,這個(gè)我就不清楚了),我的工資就在這個(gè)范圍內(nèi)。本次一共斬獲4個(gè)offer,我選擇了我最看好的那家,抱大佬的大腿美滋滋~
投簡(jiǎn)歷
我一直都是網(wǎng)投(網(wǎng)投的話,一般就四家吧。51job,智聯(lián),拉勾還有boss),如果還是沒(méi)有找到工作的話,就要跑跑廣州這邊的宣講會(huì)了,顯示一下我的誠(chéng)意。接下來(lái)我把我投遞的情況曬出來(lái),讓大家感受一下社會(huì)的殘酷。(一袋米要扛幾樓!
51job戰(zhàn)績(jī):




51job總計(jì)投了60份簡(jiǎn)歷,已查閱7份,感興趣2份,邀面試3家,校招至今為止一個(gè)電話都沒(méi)打過(guò)(公司邀面試不一定會(huì)把你扔進(jìn)“邀面試”那一欄,還有可能會(huì)單獨(dú)給你發(fā)郵件,給你打電話,所以不要灰心,說(shuō)不定你還有機(jī)會(huì)!)
智聯(lián)戰(zhàn)績(jī):
智聯(lián)我沒(méi)投過(guò),因?yàn)槁?tīng)說(shuō)上面有好多傳銷,我一慫就一封也沒(méi)投(其實(shí)傳銷到哪個(gè)平臺(tái)都有,之后我會(huì)寫(xiě)一下如何擦亮你的眼睛,至少能夠辨識(shí)80%的傳銷),其實(shí)說(shuō)不準(zhǔn)你的機(jī)會(huì)就來(lái)自于智聯(lián)招聘,還是投一下吧
拉勾戰(zhàn)績(jī):



拉勾總計(jì)投了71份簡(jiǎn)歷,已查閱54份,待溝通1份,被轉(zhuǎn)發(fā)18份(會(huì)把郵件發(fā)送到你的郵箱里),界面設(shè)計(jì)的最漂亮的拉勾,全軍覆沒(méi)。當(dāng)真驗(yàn)證了那句,拉鉤上吊一百年,不合適~ 我一開(kāi)始就信的拉勾,投的懷疑人生。我就算再怎么差也不至于到一個(gè)面試都沒(méi)有吧???全是被轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)完就沒(méi)回復(fù)了。而且一個(gè)公司只能投一次,投完你以后都沒(méi)有機(jī)會(huì)了。后來(lái)我干脆用他的海投機(jī)器人了。我發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象,海投投的5年以上,10年以上的也會(huì)被轉(zhuǎn)發(fā)。敢情一個(gè)剛畢業(yè)的就能進(jìn)公司當(dāng)老大了???我覺(jué)得這樣的天才可以開(kāi)高薪,畢竟他值這個(gè)價(jià),但也不能一進(jìn)去就當(dāng)老大吧,這樣看來(lái)被轉(zhuǎn)發(fā)大多數(shù)情況只是個(gè)美麗的謊言

Boss直聘戰(zhàn)績(jī):

boss總計(jì),投了11份簡(jiǎn)歷,4個(gè)面試,向boss打過(guò)84個(gè)"花樣招呼",從剛開(kāi)始的已讀不鳥(niǎo)你,到我們不招剛畢業(yè)的,再到我想要一份你的簡(jiǎn)歷,最后到你方便過(guò)來(lái)面試嗎。其實(shí)這需要一定的技巧,說(shuō)好聽(tīng)點(diǎn)叫態(tài)度,說(shuō)難聽(tīng)點(diǎn)叫湊字?jǐn)?shù)。我建議大家趕緊把那個(gè)打招呼關(guān)掉,你寫(xiě)一段自我介紹加入常用語(yǔ)(字?jǐn)?shù)控制在80~100字),然后發(fā)完自我介紹,就問(wèn)我們可以聊聊嗎這一類的廢話,一句就好。如果他還是已讀不回復(fù),就用這兩句話每天轟炸他,早晚會(huì)回的(各位看技術(shù)文章的boss輕點(diǎn)打,疼)
擦亮眼睛勿進(jìn)傳銷
我投簡(jiǎn)歷的時(shí)候,其實(shí)也投過(guò)簡(jiǎn)歷給那種疑似傳銷的公司,雖然人家根本沒(méi)聯(lián)系我(慘,傳銷都看不上),這個(gè)時(shí)候你還需要借助天眼查。其實(shí)很簡(jiǎn)單,你要看的就是注冊(cè)資金,注冊(cè)資金少于100萬(wàn)的,開(kāi)的工資還挺高,多數(shù)是傳銷。還有那種提供的薪資不低,大概6-8K還包住宿,卻歡迎18-28歲轉(zhuǎn)行人員的,這一類的企業(yè)也很有問(wèn)題,你說(shuō)你一個(gè)剛轉(zhuǎn)行的就能拿6-8K還提供住宿,我怎么就不信呢?剛轉(zhuǎn)行的最多就是培訓(xùn)過(guò)了,并沒(méi)有什么真實(shí)的項(xiàng)目經(jīng)歷,甚至有的人一點(diǎn)都不懂,你說(shuō)你不給公司創(chuàng)造價(jià)值,公司卻要培養(yǎng)你還包住,公司里的人都是不吃飯的鐵人嗎?這樣的公司也有鬼。還有就是那種你需要會(huì)的一個(gè)技術(shù)都不寫(xiě),就是一堆假大空的有責(zé)任心,有上進(jìn)心,肯吃苦的廢話,工資卻能開(kāi)上8K,敢情你是請(qǐng)了個(gè)大爺來(lái)啊。還有一種是地址不明的,xx地鐵站,具體地址都不寫(xiě)明的,反正這類公司我是不愿意去。其實(shí)那種注冊(cè)資金100萬(wàn)在居民樓里的公司不一定是傳銷,有可能是初創(chuàng)公司,就是環(huán)境慘的不是一點(diǎn)半點(diǎn)。天眼查里的預(yù)警并不都是壞事,可能公司搬遷找不到該公司,后來(lái)公司登記新地址,這樣的信息是會(huì)成預(yù)警的。如果公司下面有訴訟,這個(gè)你就要小心了,多數(shù)是沒(méi)發(fā)工資被告了
包裝簡(jiǎn)歷
我的簡(jiǎn)歷得到過(guò)大部分面試公司的好評(píng),我覺(jué)得我有資格來(lái)講講簡(jiǎn)歷怎么寫(xiě)。簡(jiǎn)歷也需要一定的包裝,但是請(qǐng)確保簡(jiǎn)歷的真實(shí)性。不要為了能得到面試機(jī)會(huì)而欺騙HR,哪怕簡(jiǎn)歷寫(xiě)虛假的工作經(jīng)歷,面試說(shuō)實(shí)話也不行。你欺騙的結(jié)果大概率是大眼瞪小眼,回去等消息。那我要做的究竟是什么呢?精煉個(gè)人簡(jiǎn)介,就比如:
本人有x年/x月的xx經(jīng)驗(yàn),對(duì)貴公司的xx有濃厚的興趣。熱愛(ài)編程,在網(wǎng)上發(fā)表過(guò)技術(shù)文章。英語(yǔ)xx水準(zhǔn),能夠看懂開(kāi)發(fā)文檔。具有xx的使用經(jīng)驗(yàn),使用過(guò)xx系統(tǒng)/軟件
反正你就一個(gè)優(yōu)點(diǎn),一個(gè)論據(jù)的寫(xiě),控制在100字左右
教育背景別寫(xiě)那一大堆的課程,跟個(gè)流水賬似的,誰(shuí)看誰(shuí)頭疼
工作經(jīng)歷不是項(xiàng)目經(jīng)歷,需要你把工作或者實(shí)習(xí)的內(nèi)容用簡(jiǎn)練的語(yǔ)言描述概括。概括完在用一句話寫(xiě)大家對(duì)你的評(píng)價(jià)
項(xiàng)目經(jīng)歷主要突出三個(gè)要點(diǎn):xx級(jí)別的項(xiàng)目(是你的實(shí)習(xí)項(xiàng)目,還是個(gè)人開(kāi)源項(xiàng)目等等),技術(shù)難度大不大(這個(gè)你要自己把控,不要過(guò)分抬舉自己),工作量(你完成了多少,完成的情況)
剩下的東西都不是特別重要,千萬(wàn)不要瞎寫(xiě)什么精通,除非你真的有個(gè)兩三年工作經(jīng)驗(yàn)
面試所需基礎(chǔ)
這個(gè)是本文的重頭戲,如果你不具備這些基礎(chǔ),找工作舉步維艱!我剛來(lái)深圳那會(huì)基礎(chǔ)都不行,一邊面試一邊補(bǔ),我現(xiàn)在的基礎(chǔ)肯定是及格了,現(xiàn)在分享出來(lái)我認(rèn)為重要的知識(shí)點(diǎn),只為幫助更多的人!我敢打包票,我說(shuō)的這些60%會(huì)出現(xiàn)。本節(jié)以一問(wèn)一答的形式向大家展示面試基礎(chǔ)
java基本類型有哪些?
分類去計(jì),整數(shù)型有byte,short,int,long,浮點(diǎn)型有float,double,布爾型有boolean,字符型有char,還有個(gè)void,別忘了
什么是裝箱和拆箱?
裝箱:值類型轉(zhuǎn)化為引用類型? ? 拆箱:引用類型轉(zhuǎn)化為值類型
StringBuffer和StringBuilder誰(shuí)是線程安全的?為什么?請(qǐng)簡(jiǎn)單說(shuō)一下什么是線程安全
StringBuffer是線程安全的,StringBuilder不是線程安全的,StringBuffer比StringBuilder多了synchronized修飾符。線程安全指多個(gè)線程執(zhí)行同一段代碼時(shí)采用加鎖機(jī)制,使每次的執(zhí)行結(jié)果和單線程執(zhí)行結(jié)果一致,不存在執(zhí)行時(shí)出意外。不安全指不提供加鎖機(jī)制保護(hù),有可能出現(xiàn)多個(gè)線程先后更改數(shù)據(jù)造成所得數(shù)據(jù)是臟數(shù)據(jù)
Redis常用的數(shù)據(jù)類型有哪些?
String,List,Set,Hash(鍵值對(duì))
Map是無(wú)序的嗎?
HashMap是無(wú)序的,LinkedHashMap是有序的,TreeMap是按key排序的
ArrayList和數(shù)組(Array)的區(qū)別是什么?
ArrayList不用定長(zhǎng)度,會(huì)自動(dòng)擴(kuò)容。數(shù)組需要定長(zhǎng),超過(guò)定下的長(zhǎng)度會(huì)報(bào)數(shù)組越界。數(shù)組可以包含基本類型和對(duì)象類型的數(shù)據(jù),ArrayList只能包含對(duì)象類型的數(shù)據(jù)
什么是樂(lè)觀鎖?什么是悲觀鎖?在Java是怎么體現(xiàn)的?
樂(lè)觀鎖:認(rèn)為讀多寫(xiě)少,遇到并發(fā)的可能性低,所以不會(huì)上鎖,但是在更新的時(shí)候判斷一下在此期間別人有沒(méi)有更新去更新這個(gè)數(shù)據(jù),采取在寫(xiě)時(shí)先讀出當(dāng)前版本號(hào),然后加鎖操作。體現(xiàn):atomicInteger
悲觀鎖:認(rèn)為寫(xiě)多,每次拿數(shù)據(jù)的時(shí)候認(rèn)為別人會(huì)修改,所以每次在讀寫(xiě)數(shù)據(jù)時(shí)都會(huì)上鎖,這樣別人想讀這個(gè)數(shù)據(jù)就會(huì)block,直到拿到鎖為止。體現(xiàn):互斥鎖
簡(jiǎn)單描述進(jìn)程和線程
進(jìn)程:當(dāng)一個(gè)程序進(jìn)入內(nèi)存,即變成一個(gè)進(jìn)程
線程:輕量級(jí)進(jìn)程,線程是進(jìn)程的執(zhí)行單元
一個(gè)程序運(yùn)行后,至少一個(gè)進(jìn)程,一個(gè)進(jìn)程至少包含一個(gè)線程
Java執(zhí)行順序是怎樣的?
父類靜態(tài)代碼塊→子類靜態(tài)代碼塊→父類非靜態(tài)代碼塊→父類構(gòu)造函數(shù)→子類非靜態(tài)代碼塊→子類構(gòu)造函數(shù)
請(qǐng)你比較一下Java和JavaScript
Java是面向?qū)ο蟮恼Z(yǔ)言,即使是開(kāi)發(fā)簡(jiǎn)單程序也要有類。JavaScript是基于對(duì)象的語(yǔ)言,有豐富的內(nèi)部對(duì)象供開(kāi)發(fā)者使用,比如document,location,Math
請(qǐng)你講講&和&&的區(qū)別
&是邏輯與,&&是短路與。短路與只要與左邊的條件為false就能判斷整個(gè)條件為false,而邏輯與兩邊都需要判斷
int和Integer有什么區(qū)別?
int默認(rèn)值是0,Integer默認(rèn)值是null。int是基本類型,Integer是引用類型。Integer范圍是-128~127? int的范圍是-2^31~(2^31)-1
String是基本類型嗎?
String是final類型,因此不斷繼承這個(gè)類,不能修飾這個(gè)類。為了提高效率節(jié)省空間,應(yīng)該用StringBuffer
什么是值傳遞?什么是引用傳遞?
值傳遞是對(duì)基本類型變量而言的,傳遞的是該變量的一個(gè)副本,改變副本不影響原變量
引用傳遞一般是對(duì)于對(duì)象型變量而言,傳遞的是該對(duì)象地址的一個(gè)副本,并不是原對(duì)象本身
一般認(rèn)為Java內(nèi)的傳遞都是值傳遞
請(qǐng)說(shuō)明“==”比較的是什么?
如果兩個(gè)對(duì)象完全相同時(shí),“==”將返回true,“==”兩邊是基本類型,就比較數(shù)值是否相等
若不重寫(xiě)hashCode()的話,hashCode()如何計(jì)算?
該方法直接返回對(duì)象的地址
你對(duì)synchronized和Lock有什么了解?
synchronized是Java的關(guān)鍵字,當(dāng)他修飾一個(gè)方法或者一個(gè)代碼塊時(shí),能夠保證在同一時(shí)刻最多只有一個(gè)線程執(zhí)行該代碼(互斥的體現(xiàn))
Lock是一個(gè)接口,synchronized能做的他都能做,synchronized在發(fā)生異常時(shí),會(huì)自動(dòng)釋放線程占有的鎖,不會(huì)導(dǎo)致死鎖的發(fā)生。而Lock在發(fā)生異常時(shí),如果你沒(méi)有在finally中主動(dòng)unlock()去釋放鎖,就很有可能導(dǎo)致死鎖
請(qǐng)你介紹一下volatile?
volatile是Java關(guān)鍵字用來(lái)保證有序性和可見(jiàn)性
可見(jiàn)性:一個(gè)線程修改了某個(gè)變量的值,這個(gè)新值對(duì)其它線程來(lái)說(shuō)是立即可見(jiàn)的
有序性:禁止進(jìn)行指令重排序
volatile只能保證單次讀/寫(xiě)的原子性。i++這種操作不能保證原子性(i++的過(guò)程是讀取i值,把i+1,再把i+1賦給i,這個(gè)過(guò)程中任何一步都可能會(huì)被其它線程改動(dòng),像i=1這種的就可以保證原子性)
synchronized修飾一個(gè)靜態(tài)方法,鎖住了什么?如果修飾成員方法,又鎖住了什么?
synchronized修飾靜態(tài)方法鎖住的是類,線程想執(zhí)行對(duì)應(yīng)同步代碼,需要獲得類鎖
synchronized修飾成員方法鎖住的是對(duì)象,線程想執(zhí)行對(duì)應(yīng)同步代碼,需要獲得對(duì)象鎖
若對(duì)一個(gè)類不重寫(xiě),他的equal()方法是如何比較的?
比較的是對(duì)象的地址
請(qǐng)解釋hashCode()和equals()方法有什么聯(lián)系?
相同的對(duì)象必須具有相等的Hash碼,兩個(gè)對(duì)象的Hash碼相同,他們并不一定相同
什么是構(gòu)造函數(shù)?什么是構(gòu)造函數(shù)重載?
每當(dāng)新對(duì)象被創(chuàng)建的時(shí)候,構(gòu)造函數(shù)就會(huì)被調(diào)用,每個(gè)類都有構(gòu)造函數(shù)
構(gòu)造函數(shù)重載和方法重載很相似??梢杂卸鄠€(gè)構(gòu)造函數(shù),參數(shù)列表不同
Java中的方法覆蓋和方法重寫(xiě)是什么意思?
重寫(xiě):子類重新定義父類的方法,重寫(xiě)必須有相同方法名,參數(shù)列表和返回類型
重載:方法名相同,參數(shù)列表不相同(注意!int fun(int x)和int fun(int y)不算重載)
什么是多態(tài)?
重載和重寫(xiě)就是多態(tài)的具體表現(xiàn)形式
內(nèi)部類可以引用它包含的類的成員嗎?如果可以,有什么限制?
一個(gè)內(nèi)部類對(duì)象可以訪問(wèn)創(chuàng)建他的外部類對(duì)象的內(nèi)容
內(nèi)部類不是static的,那么它可以訪問(wèn)創(chuàng)建他的外部類對(duì)象的所有屬性
內(nèi)部類是static的,那么它可以訪問(wèn)創(chuàng)建他的外部類對(duì)象的static屬性
Java如何進(jìn)行異常處理?
每當(dāng)一個(gè)方法出現(xiàn)異常后便拋出一個(gè)異常對(duì)象,該對(duì)象中包含有異常信息。調(diào)用這個(gè)對(duì)象中的方法可以捕獲這個(gè)異常并進(jìn)行處理
Java的接口和抽象類的相同和不同處?
相同:都不能實(shí)例化
不相同:抽象類中的方法是public,private,protected,default? 接口方法是public,default
抽象類可以是public,private,protected,default? 接口方法是public
一個(gè)子類只能繼承一個(gè)抽象類,可以實(shí)現(xiàn)多個(gè)接口
抽象類可以有構(gòu)造方法,接口內(nèi)不能有構(gòu)造方法
Java的異常有幾種?Exception和Error的區(qū)別是什么?
Exception分為兩類,編譯時(shí)異常和運(yùn)行時(shí)異常
Error:一般發(fā)生在嚴(yán)重故障時(shí),他們?cè)趈ava程序處理的范疇之外
Exception:程序可以處理的異常,可以捕獲且可以恢復(fù)。遇到這類異常應(yīng)盡快處理
請(qǐng)說(shuō)明final,finally,finalize的區(qū)別?
final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可重寫(xiě),類不可繼承
finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,代表總執(zhí)行
finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法
面向?qū)ο蟮奶卣?/p>
封裝,繼承,多態(tài),抽象
Java是否支持多繼承?
類不支持多繼承,接口支持多繼承
是否可以在static環(huán)境中訪問(wèn)非static變量?
不可以,static是靜態(tài)常量,屬于類,調(diào)用非static變量需要new,而類的加載先于實(shí)例創(chuàng)建
請(qǐng)說(shuō)明static關(guān)鍵字是什么意思?Java是否可以重寫(xiě)一個(gè)private或static的方法?
static關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒(méi)有所屬類的實(shí)例變量(沒(méi)有new)的情況下被訪問(wèn)
不可以,private只能被自身類訪問(wèn)
不可以,static是編譯時(shí)靜態(tài)綁定的,override是運(yùn)行時(shí)動(dòng)態(tài)綁定的
List、Set、Map是否繼承自Collection接口?
List、Set是。Map不是
請(qǐng)說(shuō)說(shuō)常用的集合類及方法?
最常用的集合類是List和Map
List里最常用的就是ArrayList.他是可變長(zhǎng)度的列表
Map里最常用的就是HashMap,他按鍵值對(duì)進(jìn)行存儲(chǔ),但HashMap線程不安全
請(qǐng)說(shuō)明Collection和Collections的區(qū)別?
Collection是集合類的上級(jí)接口,繼承他的主要有Set和List
Collections是針對(duì)集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)集合的各種操作,如sort()
HashMap和HashTable的區(qū)別?
HashMap允許key和value是null,而HashTable不允許key或value是null
HashTable(這是一個(gè)遺留類)是線程安全的,HashMap是線程不安全的
請(qǐng)說(shuō)明ArrayList是否會(huì)越界?
ArrayList并發(fā)add()可能出現(xiàn)數(shù)組下標(biāo)越界異常
如果HashMap的可以是一個(gè)自定義的類,怎么辦?
就必須重寫(xiě)hashCode()和equals()
請(qǐng)說(shuō)明線程的基本狀態(tài)及狀態(tài)間的關(guān)系?
新建狀態(tài),運(yùn)行狀態(tài),銷毀狀態(tài),就緒狀態(tài)(萬(wàn)事俱備,只欠cpu),阻塞狀態(tài)(阻塞可能因?yàn)檎{(diào)用wait()進(jìn)入等待池,也可能調(diào)用同步方法進(jìn)入等鎖池,或是sleep()等待休眠,發(fā)生I/O中斷)
什么是線程池?
創(chuàng)建和銷毀對(duì)象很費(fèi)時(shí)間,創(chuàng)建一個(gè)對(duì)象要申請(qǐng)內(nèi)存及其他資源,在對(duì)象創(chuàng)建之后JVM試圖跟蹤每一個(gè)對(duì)象,虛擬機(jī)就能在對(duì)象銷毀之后進(jìn)行垃圾回收,所以提高效率的一個(gè)方案就是盡可能減少創(chuàng)建和銷毀對(duì)象的次數(shù),這就是池化思想的來(lái)源。線程池就是事先創(chuàng)建若干個(gè)可執(zhí)行的線程放入一個(gè)池中,需要時(shí)從池中獲取,不用自己創(chuàng)建,用完了可以放回池子里,不用銷毀,從而減少了創(chuàng)建和銷毀的開(kāi)銷
舉例說(shuō)明同步和異步
同步和異步最大的區(qū)別就在于一個(gè)要等待,一個(gè)不要等待
異步:發(fā)短信,發(fā)起者不關(guān)心接收者狀態(tài),不用等待對(duì)方回短信就可以進(jìn)行下一次發(fā)送
同步:打電話,發(fā)起者需要等待對(duì)方接聽(tīng),接通后才能通信
當(dāng)一個(gè)線程進(jìn)入對(duì)象的synchronized方法A之后,其它線程是否可進(jìn)此對(duì)象的synchronized方法B?
不能。其它線程只能訪問(wèn)該對(duì)象的非同步方法,同步方法則不能進(jìn)入。A方法的對(duì)象鎖已經(jīng)被取走,試圖進(jìn)入B方法的線程只能在等鎖池里等待對(duì)象鎖
請(qǐng)問(wèn)sleep()和yield()有什么區(qū)別?
sleep()給其他線程機(jī)會(huì)時(shí),不考慮優(yōu)先級(jí)。yield()只會(huì)給同級(jí)或更高級(jí)的線程機(jī)會(huì)
執(zhí)行sleep()后轉(zhuǎn)入阻塞狀態(tài),執(zhí)行yield()后轉(zhuǎn)入就緒狀態(tài)
stop()和suspend()為何不推薦使用?
stop()會(huì)解除由線程獲取的所有鎖定,如果線程處于不連貫狀態(tài),很難檢查出問(wèn)題所在。suspend()容易發(fā)生死鎖,調(diào)用suspend()時(shí),目標(biāo)線程會(huì)停下來(lái),但仍然持有之前的鎖定
請(qǐng)說(shuō)明sleep()和wait()有什么區(qū)別?
sleep是Thread的方法,wait是Object的方法
sleep方法暫停指定時(shí)間,讓出cpu給其他線程,但他監(jiān)控狀態(tài)依舊保持著,當(dāng)指定時(shí)間到了又會(huì)自動(dòng)恢復(fù)運(yùn)行狀態(tài)
在調(diào)用sleep方法的過(guò)程中,線程不會(huì)釋放對(duì)象鎖,而調(diào)用wait方法的時(shí)候線程會(huì)放棄對(duì)象鎖
請(qǐng)分析同步方法和同步代碼塊的區(qū)別是什么?
同步方法默認(rèn)用this或當(dāng)前類對(duì)象作為鎖
同步代碼塊可以選擇以什么來(lái)加鎖
請(qǐng)簡(jiǎn)述一下線程池的運(yùn)行流程?
當(dāng)需要任務(wù)大于核心線程數(shù),把任務(wù)往存儲(chǔ)任務(wù)隊(duì)列里放,當(dāng)存儲(chǔ)隊(duì)列滿了的話就增加線程池創(chuàng)建的線程數(shù)量,當(dāng)線程數(shù)量達(dá)到最大,就開(kāi)始執(zhí)行拒絕策略
請(qǐng)簡(jiǎn)單描述一下死鎖?
兩個(gè)線程或兩個(gè)以上線程都在等待對(duì)方執(zhí)行完畢才能繼續(xù)往下執(zhí)行,結(jié)果就是陷入了無(wú)盡的循環(huán)
請(qǐng)說(shuō)明一下synchronized的可重入怎么實(shí)現(xiàn)?
每個(gè)鎖關(guān)聯(lián)一個(gè)線程持有者和一個(gè)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器為0時(shí)表示該鎖沒(méi)有被任何線程持有,那么任何線程都可以獲得該鎖而調(diào)用方法。當(dāng)一個(gè)線程請(qǐng)求成功后,JVM會(huì)記下持有鎖的線程,并將計(jì)數(shù)器記為1。此時(shí)其它線程請(qǐng)求該鎖,則必須等待,而持有鎖的線程如果再次請(qǐng)求這個(gè)鎖,就可以再次拿到鎖,同時(shí)計(jì)數(shù)器會(huì)遞增。當(dāng)線程退出一個(gè)synchronized方法/塊時(shí),計(jì)數(shù)器會(huì)遞減,如果計(jì)數(shù)器為0則釋放該鎖
JDK和JRE的區(qū)別?
JDK是Java開(kāi)發(fā)工具包,JRE是Java運(yùn)行環(huán)境,JDK中包含了JRE
請(qǐng)簡(jiǎn)單描述一下垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么方法可以主動(dòng)通知虛擬機(jī)嗎?
當(dāng)對(duì)象被創(chuàng)建時(shí),GC就開(kāi)始監(jiān)控這個(gè)對(duì)象,GC采用有向圖的方式記錄和管理堆中的所有對(duì)象,通過(guò)這種方式確定哪些對(duì)象是可達(dá)的,哪些是不可達(dá)。當(dāng)GC確定一些對(duì)象“不可達(dá)”時(shí),GC有責(zé)任回收這些內(nèi)存空間
Java中內(nèi)存泄漏是什么意思?
不再會(huì)被使用的對(duì)象內(nèi)存不能被回收就是內(nèi)存泄漏
運(yùn)行時(shí)異常和一般異常有什么區(qū)別?
運(yùn)行時(shí)異常不是必須要catch
一般異常必須要catch,不管你是否樂(lè)意
依賴注入有幾種?
Set注入,構(gòu)造器注入,接口注入
Redis的List在什么場(chǎng)景下使用?
Redis中List的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)是雙向鏈表,所以可以非常便捷地應(yīng)用于消息隊(duì)列(生產(chǎn)者/消費(fèi)者模型)。消息的生產(chǎn)者只需通過(guò)Ipush將消息放入list,消費(fèi)者便可以通過(guò)rpop取出該消息,并且可以保證消息的有序性
緩存的優(yōu)點(diǎn)是什么?
減少對(duì)數(shù)據(jù)庫(kù)的讀操作,降低數(shù)據(jù)庫(kù)壓力。加快了響應(yīng)速度
為什么Redis是單線程的?為什么Redis讀寫(xiě)速率快?
CPU不是Redis的瓶頸,Redis的瓶頸是機(jī)器內(nèi)存或網(wǎng)絡(luò)帶寬。Redis是純內(nèi)存數(shù)據(jù)庫(kù)
GET和POST的區(qū)別
GET方式通過(guò)URL提交數(shù)據(jù),POST方式數(shù)據(jù)放在請(qǐng)求頭或消息體提交
GET提交的數(shù)據(jù)最多只要1024字節(jié),POST則沒(méi)有限制
使用GET的時(shí)候參數(shù)會(huì)顯示在地址欄上,而POST則不會(huì),所以敏感數(shù)據(jù)還是使用POST好
數(shù)據(jù)庫(kù)ACID特征
原子性:事務(wù)是是一個(gè)不可分割的工作單位,事務(wù)要么都發(fā)生,要么都不發(fā)生
一致性:事務(wù)前后數(shù)據(jù)的完整性必須保持一致
隔離性:多個(gè)用戶并發(fā)訪問(wèn)數(shù)據(jù)庫(kù),多個(gè)并發(fā)事務(wù)之間互相隔離
持久性:一個(gè)事務(wù)一旦提交,他對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變是永久的,數(shù)據(jù)庫(kù)發(fā)生故障也不會(huì)對(duì)其有影響
瀏覽器從接受一個(gè)URL到展示,經(jīng)歷了什么?
DNS解析→TCP連接→發(fā)送HTTP請(qǐng)求→服務(wù)器處理請(qǐng)求并返回HTTP報(bào)文→瀏覽器解析,渲染頁(yè)面
除了以上這些之外,你還需要掌握??嫉?b>設(shè)計(jì)模式和算法
常用的設(shè)計(jì)模式
單例模式,工廠模式,觀察者模式,裝飾模式,代理模式,策略模式,適配器模式
??妓惴?/p>
冒泡排序,快速排序,二分查找
面試
技術(shù)面試,無(wú)非就是Java基礎(chǔ)+項(xiàng)目經(jīng)歷(+設(shè)計(jì)模式),如果是剛畢業(yè)或是還在校的學(xué)生,問(wèn)的60%是Java基礎(chǔ),10%~20%的數(shù)據(jù)結(jié)構(gòu)和算法(不過(guò)公司確實(shí)更看重這一塊,這一塊答好基本就穩(wěn)了),剩下的才是項(xiàng)目經(jīng)驗(yàn)(項(xiàng)目經(jīng)驗(yàn)主要是你干了什么,有多大的工作量,用到了什么技術(shù)),問(wèn)到的東西還會(huì)拓展,一般就是驗(yàn)證這個(gè)東西是不是你寫(xiě)的,你對(duì)這個(gè)技術(shù)熟悉到什么程度,如果你確實(shí)是使用過(guò)一般都沒(méi)問(wèn)題
機(jī)試的話,至今只有一次經(jīng)歷,還敗北了。是讓你用他給的數(shù)據(jù)庫(kù)現(xiàn)場(chǎng)做一個(gè)聊天室,數(shù)據(jù)庫(kù)用SQLServer這個(gè)倒是問(wèn)題不大,socket我不會(huì)現(xiàn)場(chǎng)學(xué)也還行,但是那句“不準(zhǔn)用C/S模式”給我搞懵了,沒(méi)做出來(lái)。關(guān)于其他公司的機(jī)試我也不好發(fā)言,不過(guò)你也不用緊張,機(jī)試是可以上網(wǎng)百度的
HR面試,無(wú)非就是想了解你個(gè)人的情況,你在校期間/這幾年工作期間干了什么,取得了什么成績(jī),這個(gè)就暢所欲言吧,一般都是個(gè)人Show Time,一定要示強(qiáng)不示弱,不要說(shuō)什么我覺(jué)得我哪里哪里不好。但是,也會(huì)有一些比較刁鉆的問(wèn)題,比如說(shuō):你對(duì)未來(lái)的規(guī)劃是怎么樣的?千萬(wàn)不要說(shuō)些假大空的話,我希望我在xx領(lǐng)域有所建樹(shù),這一類的千萬(wàn)不要有,你真的有規(guī)劃就說(shuō)說(shuō)自己的理解,沒(méi)有就說(shuō)我希望根據(jù)公司的安排共同成長(zhǎng)。請(qǐng)你說(shuō)一下自己的優(yōu)缺點(diǎn)? 不要說(shuō)沒(méi)有發(fā)現(xiàn),也不要那么耿直,最好就是優(yōu)點(diǎn)留一兩個(gè),把它當(dāng)成缺點(diǎn)說(shuō)。談薪資的話看你對(duì)公司的意向了,你很想加入,為了穩(wěn)你可以低一點(diǎn),如果不喜歡可以要高點(diǎn),高出他那個(gè)范圍。反正你都會(huì)被壓價(jià)格的,這個(gè)暫時(shí)也沒(méi)想到有什么好對(duì)策,有時(shí)真的很怕竹籃打水一場(chǎng)空...唉...
后記
以下是我對(duì)這次找工作的感慨,也總結(jié)了一些東西以告誡還在路上的行者。
金九銀十不僅僅意味著機(jī)會(huì),同時(shí)也代表了會(huì)有幾千個(gè)競(jìng)爭(zhēng)者和你競(jìng)爭(zhēng)同一個(gè)崗位,在職位發(fā)布不密集的時(shí)段求職其實(shí)也是一種思路。有校招就走校招,這是你能進(jìn)入心儀公司最好的機(jī)會(huì),如果你錯(cuò)過(guò)了,越是大公司越是不缺應(yīng)聘者,就算你再怎么有經(jīng)驗(yàn)都好,xx屆畢業(yè)生這個(gè)死條件大概率會(huì)把你拍死在沙灘上。招聘公司還是Boss直聘比較靠譜,不過(guò)大多數(shù)是小于100人的小公司,怎么做抉擇這個(gè)看你的了,如果你有足夠的實(shí)力拿小公司的offer,那就挑戰(zhàn)一下大公司的offer吧?;ヂ?lián)網(wǎng)是個(gè)大蛋糕,誰(shuí)都想來(lái)切一塊,隨著入行的人越來(lái)越多,你需要會(huì)的東西也越來(lái)越多,以上的這些基礎(chǔ)你都會(huì)了,別高興的太早,只不過(guò)才完成了萬(wàn)里長(zhǎng)征的第一步,你要把我沒(méi)提到的知識(shí)點(diǎn)也好好鞏固一下,再往深一點(diǎn)挖掘原理,死扣細(xì)節(jié),想方設(shè)法折磨自己,狂野生長(zhǎng)。
不要害怕,不要認(rèn)慫,固執(zhí)的人不怕累,真正的強(qiáng)者不低頭,不怕有千萬(wàn)人阻擋,只怕自己投降!此句,愿與君共勉!
轉(zhuǎn)載請(qǐng)注明出處!不要忽視他人的勞動(dòng)成果!