臨近畢業(yè),學(xué)生都在找工作,而一般單位對(duì)于JAVA工程師要求還是比較高的,起碼懂編程語言。今天,小編就和大家聊聊面試java工程師,面試官一般問什么問題?
如果可以的話,“建議以一個(gè)和面試官交流的心態(tài)去面試“。而且普通面試大部分問答都是有一些套路的。
面試的過程中,肯定會(huì)有答不上來的時(shí)候,這個(gè)時(shí)候,坦然的說不知道,就行了;或者再說出來點(diǎn)你知道的,例如思路?!爸攸c(diǎn)“答不出來的時(shí)候一定要淡定,你和面試官是平等的!反過來讓你問面試官,他也肯定有答不上來的!
java基礎(chǔ)必考,線程、集合(list、map、linklist、array,什么無key遍歷map啊,鏈表倒置啊,這幾個(gè)東西的數(shù)據(jù)結(jié)構(gòu)和插入查詢特性啊,線程創(chuàng)建方式和同步?。┫嚓P(guān)必問。最好能說清楚常見的設(shè)計(jì)模式、要能手寫一個(gè)單列模式。
“框架“:主要說你熟練的,會(huì)問一些,但是一般都比較基礎(chǔ),只要找;除非,你說你看過這個(gè)框架的源碼,剛好面試官也比較了解。
“數(shù)據(jù)庫(kù)“可能會(huì)問你都用過什么,最好有一個(gè)用的熟練的,沒事兒去配置一下主從數(shù)據(jù)庫(kù)費(fèi)不了多少時(shí)間,然后就好答這個(gè)問題了。sql,一般是必考的,分組查詢,排序,連結(jié)查詢。很可能會(huì)讓你手寫sql語句。我還遇到了一個(gè)讓你查前多少行的,以及不用框架實(shí)現(xiàn)分頁查詢的。
“源碼“其實(shí)源碼沒有那么的高大上,即使你說你熟練源碼,剛好面試官也熟悉,他最多也只能問問你這框架從啟動(dòng)到配置完成,從接收請(qǐng)求,到處理完成再返回的“流程“然后再問一下,你從這些源碼里學(xué)到了什么?這個(gè)問題,建議去百度(我都是臨面試了才去百度這些有套路的問題)。
“前端“你要是像我一樣,囂張到簡(jiǎn)歷寫的連前端你都會(huì)不少,(不過現(xiàn)在確實(shí)很多公司的招聘后端的要求也要會(huì)一些前端)那就很可能要多面你一會(huì)兒了,再問問你簡(jiǎn)歷里寫的用過的框架,手寫幾串js的代碼啊,還有可能會(huì)通過js代碼考察下對(duì)DOM概念的理解。正則表達(dá)式也是有可能的。
一般算法和數(shù)據(jù)結(jié)構(gòu)是必考的,操作系統(tǒng)也經(jīng)常被問。如果是校招的話,筆試中還會(huì)有一些排列組合啊,語文表達(dá)啊,思維拓展?。阏Σ蝗ジ咧姓??高中剛畢業(yè)的時(shí)候比較符合需求!?。?,其次,筆試過了還會(huì)有好幾輪面試,不管你說你扣過源碼,還是跟過還可以的項(xiàng)目,都會(huì)被往深里問,再往深里問,再再往深里問!
下邊是一個(gè)簡(jiǎn)單的面試記錄
問:說說你的突出點(diǎn)
答:java基礎(chǔ)扎實(shí)(這個(gè)慌說的次數(shù)多了,現(xiàn)在說起來都沒感覺了,哈哈),框架使用熟練(這個(gè)慌說了你們也發(fā)現(xiàn)不了,所以也沒啥感覺),熟悉Tomcat源碼,springMVC源碼和結(jié)構(gòu)。
問:如果想要統(tǒng)計(jì)springMVC每一個(gè)訪問時(shí)長(zhǎng),放到log文件里,你在哪里做這個(gè)統(tǒng)計(jì)?為什么?
答:在preHandle攔截器里記錄訪問開始的時(shí)間,在postHandle里判斷是哪個(gè)訪問,計(jì)算訪問時(shí)間并存儲(chǔ)。
問:在posthandler里計(jì)算,并存儲(chǔ)是吧。答:是。
問:為什么?
答了一個(gè)錯(cuò)誤答案,然后又是一頓鄙視。,,
再問:用一個(gè)什么變量存?ThreadLocal?還是一個(gè)函數(shù)內(nèi)部局部變量,?
答:線程內(nèi),(其實(shí)是在猜)。
問:為什么?你不要猜,也不用在乎我的反應(yīng),無論你答什么我都會(huì)問你為什么。
答:函數(shù)內(nèi)變量可能會(huì)不能覆蓋整個(gè)訪問的歷程,,一頓鄙視,然后突然反應(yīng)過來,不對(duì),我說的有問題,外層函數(shù)是可以的,那就放在函數(shù)內(nèi)局部變量里,節(jié)省資源。
問:如果我想把計(jì)算結(jié)果存到log里,在哪里做這個(gè)事情?
答:(悠長(zhǎng)的停頓)在posthandler處理結(jié)束,返回請(qǐng)求之前
問:為什么?
答:不占用處理請(qǐng)求的資源,(錯(cuò)誤答案,已經(jīng)慌亂)
問:確定?
答:不確定,,,停頓,,不對(duì),還是會(huì)占用資源。
問:然后呢
答:(不說話了,,,)(后來想想,這事兒應(yīng)該另起一個(gè)線程去做)
(鄙視狀,,,)
問:恩,說說Tomcat
答:(內(nèi)心:幸虧沒問tomcat優(yōu)化,JVM優(yōu)化,,不過,說說?說啥???難道說說這個(gè)干啥用的?還是說說哪個(gè)公司出的?說這些會(huì)不會(huì)直接趕人啊,,,就這樣過了最少一分鐘,哈哈)然后我就說了下tomcat的結(jié)構(gòu),和啟動(dòng)過程。
接著問:Tomcat和里面的Servlet是一個(gè)進(jìn)程還是多個(gè)進(jìn)程,
答:一個(gè)進(jìn)程內(nèi)
一頓鄙視,再問:為什么,,,??
答:因?yàn)槲矣X得進(jìn)程是分配資源的基本單位,一般來講,一個(gè)應(yīng)用就是一個(gè)進(jìn)程。
問:你確定?
(內(nèi)心:大爺?shù)?,估?jì)已經(jīng)掛了,那我還怕個(gè)球,,,于是乎,坐直,平視,語氣和神態(tài)突然就平靜了)
答:確定。
問:你大學(xué)什么專業(yè)?學(xué)過操作系統(tǒng)嗎?
答:計(jì)算機(jī)科學(xué)與技術(shù),當(dāng)然學(xué)過,我清楚的記得這一點(diǎn),進(jìn)程是分配資源的基本單位,不過,可能太久了,記不清了(其實(shí)內(nèi)心是:你長(zhǎng)的美,你說的都對(duì))。
問:ok,一個(gè)應(yīng)用可以啟多個(gè)進(jìn)程嗎?
答:不可以
問:(鄙視狀)確定?
答:(平靜狀)不太確定
問:呵呵
答:麻煩您給講講吧,我不太懂。
問:一個(gè)應(yīng)用當(dāng)然是可以啟多個(gè)線程的,更何況還有跨應(yīng)用的線程調(diào)用,資源也是可以動(dòng)態(tài)分配的,,,(當(dāng)時(shí)沒聽太懂,也記不清了。)。末了來一句,難道你就沒打開過你的資源管理器看過嗎?
答:當(dāng)然看過,不過都是卡了才看,看哪個(gè)程序占用太高,給結(jié)束了。(內(nèi)心:看過,但是跟這個(gè)問題有毛關(guān)系嗎??)
上邊是倆個(gè)長(zhǎng)問題,還有一些其他的,例如:
問:你覺得要做一個(gè)厲害的程序員應(yīng)該具備哪些特點(diǎn)?
這個(gè)就是一些,F(xiàn)Q啊,工具啊,總結(jié)啊,交流啊什么的;比如說,善用google,要至少對(duì)一個(gè)跨平臺(tái)的工具很了解,善于學(xué)習(xí)最新的技術(shù),善于掌握有力的工具,多逛各大社區(qū),善于總結(jié)。(我就隨便一寫,找工作的話,要提前準(zhǔn)備類似問題。)
問:我看你學(xué)了這么多東西,但是好像沒有認(rèn)真的去思考過為什么,你有沒有想過當(dāng)你記憶達(dá)到一個(gè)上限時(shí)你還能學(xué)什么?你還能干什么?
這個(gè)當(dāng)然是要反駁的,我說我當(dāng)然有思考,然后問你思考的啥,然后答當(dāng)時(shí)就想知道Tomcat到springMVC的銜接是怎么銜接的,然后被鄙視:那你直接打幾個(gè)斷點(diǎn)調(diào)試一下不完了嗎,java的調(diào)試不是很強(qiáng)嗎?(貌似這個(gè)他也不太確定。而我也不知道斷點(diǎn)打到哪去,更不用提怎么調(diào)試,哈哈)。
問:我看你這寫的有一個(gè)了解分布式處理,分布式處理是什么?我怎么沒聽過。(這個(gè)就是一個(gè)概念問題,不重要。)
以上就是小編面試java工程師時(shí),面試官一般問的問題,希望每個(gè)面試的小伙伴都能找到合適的工作!
-
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68556 -
JAVA
+關(guān)注
關(guān)注
19文章
2971瀏覽量
104853
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論