初級(jí)Java工程師o(wú)ffer攻略

寫(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上的社招投遞
51job上的社招投遞
51job上的社招投遞
51job上的校招投遞

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直聘上的投遞

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)成果!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容