- 相關(guān)推薦
Java面試技巧
Java的主要工作是通過編程語言來制作互聯(lián)網(wǎng)頁面、制作動(dòng)態(tài)效果以及網(wǎng)站等技術(shù)。下面是CN人才網(wǎng)小編為大家整理的,希望對(duì)大家有所幫助。
1.基本儀容和禮儀
其實(shí)不是針對(duì)面試,基本儀容和禮儀在日常生活也是非常重要的,是一個(gè)人是否有教養(yǎng),是否有素質(zhì)的基本要求。
穿著:如無特別需要,不要著正裝,休閑裝即可。但是不要光腳丫子大拖鞋,背心吊帶,男士不要穿露腳趾涼鞋。干凈整潔即可,表示對(duì)本次面試的重視和對(duì)面試官的尊重。
儀容:女士如果想化妝的話,淡妝即可,素顏也可以。男士頭發(fā)理一下,胡子剃掉。還是那句話,干凈整潔,萬萬不可口腔有異味,或者身上有體味(特別是腳丫子臭味,絕對(duì)不行!)
禮儀:多說“請(qǐng)”,“您”,“謝謝”,記得進(jìn)門后關(guān)門,前臺(tái)給你倒的水走的時(shí)候記得拿出去扔掉。坐下來面對(duì)面試官要有坐像,不要跟在家里一樣太隨便,說話口齒清楚,慢一點(diǎn)說,不要跟打機(jī)關(guān)槍一樣。切記,不可做作,細(xì)節(jié)處把握尺度就行。如果遇到和面試官有分歧的時(shí)候,立即閉嘴并閉嘴,不要爭(zhēng)論,不要試圖說服面試官,更不可恥笑或者蔑視面試官,哪怕你確實(shí)不知道比面試官高到哪里去了。記住,這是禮貌,跟你技術(shù)有多牛逼無關(guān)。
謙虛:任何時(shí)候,把自己放在一個(gè)相對(duì)低的姿態(tài),你是來面試,不是來教育面試官的,抱著一種接受檢閱和學(xué)習(xí)的態(tài)度面對(duì)面試,千萬千萬不要覺得自己主角光環(huán)加身,天下之大老子第一。相信我,這個(gè)世界牛人大把的,別人不說穿是因?yàn)榻o雙方留面子,你可別認(rèn)為是你真牛逼。謙虛,起碼不會(huì)讓你有成為一個(gè)跳梁小丑的機(jī)會(huì)。
2.專業(yè)基礎(chǔ)知識(shí)
什么重要的話說三遍已經(jīng)爛大街了,我就不說了。對(duì)于程序猿來說,專業(yè)基礎(chǔ)知識(shí)絕對(duì)是重中之重,是面試成功的最基礎(chǔ)要素。我說的專業(yè)基礎(chǔ)知識(shí),不是說你做了多少個(gè)項(xiàng)目,寫了多少行代碼,而是軟件開發(fā)的基礎(chǔ)知識(shí)。
我在面試的時(shí)候,有時(shí)候會(huì)遇到一些候選人,乍一看簡(jiǎn)歷也有好幾年工作經(jīng)驗(yàn),項(xiàng)目也寫的滿滿的,但是卻連“值類型引用類型本質(zhì)區(qū)別”,“構(gòu)造函數(shù)有哪些特點(diǎn),何時(shí)被調(diào)用”,“類和接口區(qū)別是什么”這樣的問題也回答不了,注意,是回答不了,也就是不知道,不是知道意思但是組織不了語言。這類候選人通常在連續(xù)回答不上幾個(gè)問題后,開口為自己辯解:“我動(dòng)手比較強(qiáng),寫代碼都沒問題,但是書上的概念我真的不太清楚”。能說出這個(gè)話,就說明此人根本就明白作為一個(gè)技術(shù)工作者最基本的專業(yè)素質(zhì)是什么。(我在這里就不展開談基礎(chǔ)知識(shí)在開發(fā)中的作用以及對(duì)自身成長(zhǎng)的作用,以后會(huì)專門撰文來討論)所以千萬不要覺得自己工作幾年,有些代碼經(jīng)驗(yàn)就已經(jīng)可以挑戰(zhàn)更加高薪的工作。
在面試前,一定要先審視一下自身的基礎(chǔ)知識(shí)掌握程度,如果有必要,自己買書回來或者網(wǎng)上找一些資料,利用空余時(shí)間系統(tǒng)的學(xué)習(xí)一遍,比如你所使用的語言本身,比如你擅長(zhǎng)的框架底層實(shí)現(xiàn),比如編譯原理,比如多線程的知識(shí),比如Http相關(guān)的知識(shí)等等。千萬不要沒有一點(diǎn)點(diǎn)基礎(chǔ)知識(shí)儲(chǔ)備或者基礎(chǔ)知識(shí)儲(chǔ)備不豐富就跑去面試,失敗的幾率非常大,如果眼睜睜的看著自己心儀的工作機(jī)會(huì)擦肩而過,我想是誰都會(huì)難過的吧。
3.溝通能力
面試的過程本質(zhì)上就是一次溝通的過程,候選人在短短的時(shí)間內(nèi)要盡量的向?qū)Ψ秸宫F(xiàn)自己的長(zhǎng)處,隱藏自己的短處,盡量讓對(duì)方問題得到圓滿答復(fù)并且留下較好印象。有些程序猿性格內(nèi)向,在陌生人面前比較靦腆,話語不多。當(dāng)然,這不能說是做錯(cuò)了,只能說是一些性格上的短處而已(如果很嚴(yán)重,那就有自卑的可能,需要重視并且糾正)。在面試時(shí),候選人一定要精神煥發(fā),昂首挺胸,眼神堅(jiān)定,切記切記眼神不要飄忽不定,切記切記不要甕聲甕氣。有人會(huì)問我,“那我回答不上面試官的問題,或者一時(shí)沒有想起來,心里沒底了怎么辦?”,怎么辦??回答不上也不能被嚇尿了啊,是吧,咱們遇到不會(huì)的問題,就老老實(shí)實(shí)的說“這個(gè)我不清楚”,或者“這個(gè)我不會(huì)”,千萬千萬不要不懂裝懂,顧左右而言他,打算糊弄過去,我告訴大家,搗糨糊是過不去的,面試官的問題肯定是他非常清楚答案的,你忽悠面試官就是在忽悠你自己,有意思嗎?當(dāng)然,也不要胡亂回答,否則只會(huì)成為面試官和他的同事茶余飯后的笑話。
在面試時(shí),盡量雙眼直視面試官(但不要瞪著人家。。。),背挺直,手機(jī)開飛行模式,說話口齒清楚,利落干脆,回答得上就盡量說,回答不上直接說不知道,不要羅里吧嗦,特別是談到薪酬,對(duì)方問你期望時(shí),最好在現(xiàn)有基礎(chǔ)上增加10%-20%,不要漫天要價(jià),也不要不好意思,放心大膽的說出你的期望,如果對(duì)方覺得略高,會(huì)再跟你商量。務(wù)必一開口就給人真誠(chéng),干練,干脆,專業(yè)的印象。
4.過往項(xiàng)目經(jīng)驗(yàn)
很多面試者不大重視自己的過往項(xiàng)目經(jīng)驗(yàn),這是我不能理解的地方。我每個(gè)做過的項(xiàng)目,雖然我在其中可能只是做一個(gè)模塊甚至一個(gè)功能,但是我都會(huì)想辦法搞清楚整個(gè)項(xiàng)目的業(yè)務(wù)流程,研發(fā)背景,內(nèi)部模塊功能,和外部如何實(shí)現(xiàn)集成,底層數(shù)據(jù)庫的設(shè)計(jì),整體系統(tǒng)架構(gòu)設(shè)計(jì)等等。我在面試候選人的時(shí)候,通常都會(huì)問最近一個(gè)項(xiàng)目相關(guān)的東西,有很多候選人都會(huì)表示是ta自己一個(gè)人設(shè)計(jì)開發(fā)了這個(gè)項(xiàng)目,但是連有哪些功能模塊,系統(tǒng)結(jié)構(gòu)(注意,不是架構(gòu))都回答不出來。有些面試者,在面試一些中高級(jí)的程序員時(shí),很喜歡從過往經(jīng)驗(yàn)入手,你再一遍介紹的時(shí)候他可能隨時(shí)提問。因?yàn)檫@樣有2個(gè)好處,第一是預(yù)防一問一答的形式,候選人事先背了很多問題的答案,第二是從候選人過往項(xiàng)目經(jīng)驗(yàn)入手,除了可以看出候選人是否虛假構(gòu)建了項(xiàng)目經(jīng)驗(yàn),還可以判斷該候選人對(duì)開發(fā)細(xì)節(jié)的把握以及對(duì)一些技術(shù)點(diǎn)的反應(yīng)能力和掌握情況,畢竟“突然襲擊”比“瞄準(zhǔn)射擊”要更加考驗(yàn)候選人。
所以,在面試前,應(yīng)該好好把自己以前的項(xiàng)目經(jīng)驗(yàn)都捋一捋,特別是上一個(gè)項(xiàng)目,從業(yè)務(wù)流程到產(chǎn)品設(shè)計(jì)到系統(tǒng)開發(fā),特別是項(xiàng)目?jī)?nèi)一些你做過的細(xì)節(jié)地方,你準(zhǔn)備在面試時(shí)拿出來說的,必須以此為點(diǎn),相關(guān)的東西都查查資料看一看。再一個(gè)就是項(xiàng)目里面的閃光點(diǎn),什么叫閃光點(diǎn),就是高大上的東西,需要自己多了解了解,在面試的時(shí)候拿出來說也可以加分。比如我以前做過一個(gè)項(xiàng)目,是一個(gè)類似網(wǎng)頁爬蟲的東西,把爬下來的東西根據(jù)數(shù)據(jù)庫里面的地址上傳到設(shè)置的路徑,再刪除這個(gè)文件。當(dāng)時(shí)我還是比較小白的階段,懵懵懂懂的聽人說多線程好像效率比較高,于是就用到了new Thread的多線程方式,確實(shí)解決了一些效率上的問題。后來換工作時(shí),我又把這個(gè)項(xiàng)目拿出來看了一遍,并且著重看了看多線程相關(guān)的東西,知道了還有異步編程(當(dāng)時(shí)好像C#還沒有Task),于是就自己學(xué)習(xí)了一番,然后動(dòng)手做做實(shí)驗(yàn)什么的,把多線程這一塊理論聯(lián)系實(shí)際又鞏固了一遍。果然,后來面試的時(shí)候談到這個(gè)上面的時(shí)候,面試官對(duì)這一塊很有興趣,越問越深,我也知無不言,為自己增分不少。
5.不要作弊
有些企業(yè)在面試程序員的時(shí)候,喜歡一開始扔一張?jiān)嚲碜尯蜻x人先做,然后再去面試。暫且先不談做卷子考察方式的好壞,在做試卷的時(shí)候,萬萬不要用移動(dòng)設(shè)備上網(wǎng)查詢答案。本身作弊的行為就讓人不齒,如果面試官在暗處進(jìn)行觀察,發(fā)現(xiàn)你作弊,那就太尷尬了。會(huì)就是會(huì),不會(huì)就是不會(huì),即便你用手機(jī)查答案把試卷寫的滿滿的,在接下來面試的時(shí)候,面試官再就試卷上的問題展開一問你,你還是不會(huì)。所以不管有沒有人監(jiān)督,在面試的做試卷環(huán)節(jié),千萬不要作弊。
6.熱門技術(shù)點(diǎn)的掌握
其實(shí)這是個(gè)增分項(xiàng)目,如果上面幾點(diǎn)都已經(jīng)通過面試的考核,那么這一點(diǎn)就會(huì)成為你絕對(duì)的亮點(diǎn)。首先要先自己了解一下當(dāng)前熱門的技術(shù),然后通過分析自己申請(qǐng)的職位,去看看可能涉及到哪些熱門的技術(shù),然后再去專門的找資料進(jìn)行學(xué)習(xí)和動(dòng)手實(shí)驗(yàn)。比如你是搞互聯(lián)網(wǎng)的,那么最好學(xué)習(xí)一下負(fù)載均衡相關(guān)的技術(shù),學(xué)習(xí)分布式數(shù)據(jù)庫的技術(shù),學(xué)習(xí)緩存技術(shù),學(xué)習(xí)頁面靜態(tài)化的技術(shù);如果你是搞數(shù)據(jù)分析的,那么最好學(xué)習(xí)一下Hadoop,學(xué)習(xí)一下微軟的Cube,學(xué)習(xí)一下惠普的Vertical;如果你是搞iOS的,那么可以看看Swift,可以看看Xamarin,可以看看WebSocket等等,當(dāng)然,我只是舉幾個(gè)例子,不一定非要這樣對(duì)應(yīng),你如果是搞Java的,也可以去看看Pathon如果你是搞.net的,也可以去看看Ruby on rails等等。所謂技多不壓身,就是這個(gè)道理。
#拓展知識(shí)#
java基礎(chǔ):
1.接口的意義(百度)
規(guī)范、擴(kuò)展、回調(diào)
2.抽象類的意義(樂視)
為其子類提供一個(gè)公共的類型
封裝子類中得重復(fù)內(nèi)容
定義抽象方法,子類雖然有不同的實(shí)現(xiàn)但是定義是一致的
3.內(nèi)部類的作用(百度,樂視)
內(nèi)部類可以用多個(gè)實(shí)例,每個(gè)實(shí)例都有自己的狀態(tài)信息,并且與其他外圍對(duì)象的信息相互獨(dú)立。
在單個(gè)外圍類中,可以讓多個(gè)內(nèi)部類以不同的方式實(shí)現(xiàn)同一個(gè)接口,或者繼承同一個(gè)類。
創(chuàng)建內(nèi)部類對(duì)象的時(shí)刻并不依賴于外圍類對(duì)象的創(chuàng)建。
內(nèi)部類并沒有令人迷惑的“is-a”關(guān)系,他就是一個(gè)獨(dú)立的實(shí)體。
內(nèi)部類提供了更好的封裝,除了該外圍類,其他類都不能訪問
4.父類的靜態(tài)方法能否被子類重寫,為什么?(獵豹)
不能
子類繼承父類后,用相同的靜態(tài)方法和非靜態(tài)方法,這時(shí)非靜態(tài)方法覆蓋父類中的方法(即方法重寫),父類的該靜態(tài)方法被隱藏(如果對(duì)象是父類則調(diào)用該隱藏的方法),另外子類可繼承父類的靜態(tài)與非靜態(tài)方法,至于方法重載我覺得它其中一要素就是在同一類中,不能說父類中的什么方法與子類里的什么方法是方法重載的體現(xiàn)
5.舉1-2個(gè)排序算法,并使用java代碼實(shí)現(xiàn)(美團(tuán))
6.java虛擬機(jī)的特性(百度、樂視)
Java語言的`一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無關(guān)性。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。一般的高級(jí)語言如果要在不同的平臺(tái)上運(yùn)行,至少需要編譯成不同的目標(biāo)代碼。而引入Java語言虛擬機(jī)后,Java語言在不同平臺(tái)上運(yùn)行時(shí)不需要重新編譯。Java語言使用模式Java虛擬機(jī)屏蔽了與具體平臺(tái)相關(guān)的信息,使得Java語言編譯程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。Java虛擬機(jī)在執(zhí)行字節(jié)碼時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。