Java面經分享:各種BAT經典面試題、後端面試經驗

聘相關

聲明:

1,程序員相關的哈

2,萬事無定論,比如說,就算你小學畢業,但是java基礎卻紮實到變態,我相信open的公司還是會給你機會的。

3,心態很重要,雖然日常的心態不容易控制,面試那倆小時的心態,只要你想,就能控制。

1,先來一份前輩的勸戒

1,堅持三年 ,不管在哪幹,有一個好的平臺,堅持三年以上才能出效果。

2,如果跳的話,新公司需要穩定,最少過了B輪融資,,五萬比一是創業型公司的失敗率

3,不要着急,不要比較爲了5000塊的工資差價跳,不值得跳,從一萬到三萬,並且有一個好的平臺的話,才值得跳。

4,長期的看普華挺好的,從平臺上講,除了BAT華爲,基本沒有更好的

5,每天要多投些簡歷,每天投個幾十份,彆着急,多面面。

2,再來一份傲驕的互聯網公司的不收標準

符合以下條件的不要

1,二本以下,特別是學校名XXX學院

2,應屆或者未畢業

3,在職並且不打算換工作

4,目標非北京

5,純 windows / asp / c# / c sharp / .net / dot net

6,純嵌入式

7,純移動端 android / iOS

8,特別底層,比如操作系統內核裁剪

9,非計算機專業,計算機工作經驗在一年以下

10,最近的項目,空白超過半年,比如現在8月份,項目經歷只寫到2月

11,87 年以前,除非背景特別牛

12,有基礎培訓經歷的,比如達內

13,碩士學校比本科差的

說到這,如果小哥你已經不想着跳了。就不用往下看了(你往下看,我寫的也不一定能看,哈哈)

面試的心態很重要

如果可以的話,**建議以一個和麪試官交流的心態去面試**。而且普通面試大部分問答都是有一些套路的。

一般公司的筆試、面試(以java說)

**java** java基礎必考,線程、集合(list、map、linklist、array,什麼無key遍歷map啊,鏈表倒置啊,這幾個東西的數據結構和插入查詢特性啊,線程創建方式和同步啊)相關必問。最好能說清楚常見的設計模式、要能手寫一個單列模式。

傲驕公司的筆試、面試(不知道什麼樣的公司驕傲?那算了,如果你不是剛畢業那就轉行吧,哈哈)

總括

這樣的公司,一般算法和數據結構是必考的,操作系統也經常被問。如果是校招的話,筆試中還會有一些排列組合啊,語文表達啊,思維拓展啊(你咋不去高中招?高中剛畢業的時候比較符合需求!!),其次,筆試過了還會有好幾輪面試,不管你說你扣過源碼,還是跟過還可以的項目,都會被往深裏問,再往深裏問,再再往深裏問!

比如說:你說你看過springMVC的源碼,描述一遍請求處理流程肯定是必需的,然後你說完了,就會被挑一個點,接着往深裏問!比如說:你說根據request找到handler,然後用handlerMapping找到對應的handlerAdapter,那麼這一步具體是怎麼實習的???問的我一臉矇蔽啊,雖然還知道點,但是這種問題根本不會提前想到,只能現場組織語言。

再比如說:說說,你在這個項目裏做的得意的東西是什麼?然後你就說,說完了會問細節,怎麼實現的?然後你再說,再說完了就讓你優化,然後你墨跡半天終於優化完了,重點來了,讓你重構!!如果讓你從新設計這個系統,你會有哪些改進的地方??,,想想都心酸 ,,哈哈哈哈。

下邊是一個簡單的面試記錄

問:說說你的突出點

答:java基礎紮實(這個慌說的次數多了,現在說起來都沒感覺了,哈哈),框架使用熟練(這個慌說了你們也發現不了,所以也沒啥感覺),熟悉Tomcat源碼,springMVC源碼和結構。

問:如果想要統計springMVC每一個訪問時長,放到log文件裏,你在哪裏做這個統計?爲什麼?

答:在preHandle攔截器裏記錄訪問開始的時間,在postHandle裏判斷是哪個訪問,計算訪問時間並存儲。

問:在posthandler裏計算,並存儲是吧。答:是。

問:爲什麼?

答了一個錯誤答案,然後又是一頓鄙視。,,

再問:用一個什麼變量存?ThreadLocal?還是一個函數內部局部變量,?

答:線程內,(其實是在猜)。

問:爲什麼? 你不要猜,也不用在乎我的反應,無論你答什麼我都會問你爲什麼。

答:函數內變量可能會不能覆蓋整個訪問的歷程,,一頓鄙視,然後突然反應過來,不對,我說的有問題,外層函數是可以的,那就放在函數內局部變量裏,節省資源。

問:如果我想把計算結果存到log裏,在哪裏做這個事情?

答:(悠長的停頓) 在posthandler處理結束,返回請求之前

問:爲什麼?

答:不佔用處理請求的資源,(錯誤答案,已經慌亂)

問:確定?

答:不確定,,,停頓,,不對 ,還是會佔用資源。

問:然後呢

答:(不說話了,,,)(後來想想,這事兒應該另起一個線程去做)

(鄙視狀,,,)

問:恩,說說Tomcat

答:(內心:幸虧沒問tomcat優化,JVM優化,,不過,說說?說啥啊?難道說說這個幹啥用的?還是說說哪個公司出的?說這些會不會直接趕人啊,,,就這樣過了最少一分鐘,哈哈)然後我就說了下tomcat的結構,和啓動過程。

接着問:Tomcat和裏面的Servlet是一個進程還是多個進程,

答:一個進程內

一頓鄙視,再問:爲什麼,,,??

答:因爲我覺得進程是分配資源的基本單位,一般來講,一個應用就是一個進程。

問:你確定?

(內心:大爺的,估計已經掛了,那我還怕個球,,,於是乎,坐直,平視,語氣和神態突然就平靜了)

答:確定。

問:你大學什麼專業?學過操作系統嗎?

答:計算機科學與技術,當然學過,我清楚的記得這一點,進程是分配資源的基本單位,不過,可能太久了,記不清了(其實內心是:你長的美,你說的都對)。

問:ok,一個應用可以啓多個進程嗎?

答:不可以

問:(鄙視狀)確定?

答:(平靜狀)不太確定

問:呵呵

答:麻煩您給講講吧,我不太懂。

問:一個應用當然是可以啓多個線程的,更何況還有跨應用的線程調用,資源也是可以動態分配的,,,(當時沒聽太懂,也記不清了。)。末了來一句,難道你就沒打開過你的資源管理器看過嗎?

答:當然看過,不過都是卡了纔看,看哪個程序佔用太高,給結束了。(內心:看過,但是跟這個問題有毛關係嗎??)

上邊是倆個長問題,還有一些其他的,例如:

問:你覺得要做一個厲害的程序員應該具備哪些特點?

這個就是一些,FQ啊,工具啊,總結啊,交流啊什麼的;比如說,善用google,要至少對一個跨平臺的工具很瞭解,善於學習最新的技術,善於掌握有力的工具,多逛各大社區,善於總結。(我就隨便一寫,找工作的話,要提前準備類似問題。)

問:我看你學了這麼多東西,但是好像沒有認真的去思考過爲什麼,你有沒有想過當你記憶達到一個上限時你還能學什麼?你還能幹什麼?

這個當然是要反駁的,我說我當然有思考,然後問你思考的啥,然後答當時就想知道Tomcat到springMVC的銜接是怎麼銜接的,然後被鄙視:那你直接打幾個斷點調試一下不完了嗎,java的調試不是很強嗎?(貌似這個他也不太確定。而我也不知道斷點打到哪去,更不用提怎麼調試,哈哈)。

問:我看你這寫的有一個瞭解分佈式處理,分佈式處理是什麼?我怎麼沒聽過。(這個就是一個概念問題,不重要。)

如有錯誤歡迎指正,暫時就這樣吧,最近略忙,後邊可能會改。

總結:想成爲進階架構師,那麼資源肯定也是少不了的,如果你對技術提升很感興趣,小編在這裏提供了一份針對架構進階視頻資料,資源分享包括但不限於(分佈式架構、高可擴展、高性能、高並 發、Jvm性能調優、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。

歡迎工作一到五年的Java工程師朋友們加入Java高級互聯網架構羣:643459718  免費領取架構師資料