上週面試回來後的Java面試總結,想進BAT必看

上週陪同以前一塊兒工做的同事去面試(喬治,小袁,鵬飛(面試人)),第一站是去深圳,第二站上海,第三站杭州。面試什麼公司我在這裏就很少說了,大家知道是一線公司就行。其實原本真的沒打算寫這篇文章,主要是本身的記憶力不是很好,再者是最近好多人詢問2018年最新的面試題有點多,我實在回答不過來,並且怕爲了不重複回答,給本身省點力氣,乾脆就在這裏統一回復了。java


說實話,雖做爲陪同人,面試的時候我是不能夠一同進去面試的,鵬飛在面試完後出來也是憑藉他模糊的記憶,來慢慢回憶當時HR問的幾個問題,如下是我整理的一些面試題,雖然不是很完整,但差很少也是必問的幾個題目了(前言告訴你們,面試的答案我就不一個一個的寫出來了,畢竟等級的不一樣,回答時的答案也不一樣,這全靠你們本身慢慢領悟了)我能幫的也只有這麼多了。如下即是面試題。程序員

第一站:(深圳)

1. 多個線程同時讀寫,讀線程的數量遠遠⼤於寫線程,你認爲應該如何解決 併發的問題?你會選擇加什麼樣的鎖?web

2. JAVA的AQS是否瞭解,它是⼲嘛的?面試

3. 除了synchronized關鍵字以外,你是怎麼來保障線程安全的?redis

4. 何時須要加volatile關鍵字?它能保證線程安全嗎?spring

5. 線程池內的線程若是所有忙,提交⼀個新的任務,會發⽣什麼?隊列所有 塞滿了以後,仍是忙,再提交會發⽣什麼?數據庫

6. Tomcat自己的參數你⼀般會怎麼調整?緩存

7. synchronized關鍵字鎖住的是什麼東⻄?在字節碼中是怎麼表示的?在內 存中的對象上表現爲何?安全

8. wait/notify/notifyAll⽅法需不須要被包含在synchronized塊中?這是爲什 麼?性能優化

9. ExecutorService你⼀般是怎麼⽤的?是每一個service放⼀個仍是⼀個項⽬ ⾥⾯放⼀個?有什麼好處?

第二,第三站

Spring

1. 你有沒有⽤過Spring的AOP? 是⽤來⼲嘛的? ⼤概會怎麼使⽤?

2. 若是⼀個接⼝有2個不一樣的實現, 那麼怎麼來Autowire⼀個指定的實現?

3. Spring的聲明式事務 @Transaction註解⼀般寫在什麼位置? 拋出了異常 會⾃動回滾嗎?有沒有辦法控制不觸發回滾?

4. 若是想在某個Bean⽣成並裝配完畢後執⾏⾃⼰的邏輯,能夠什麼⽅式實 現?

5. SpringBoot沒有放到web容器⾥爲何能跑HTTP服務?

6. SpringBoot中若是你想使⽤⾃定義的配置⽂件⽽不只僅是 application.properties,應該怎麼弄?

7. SpringMVC中RequestMapping能夠指定GET, POST⽅法麼?怎麼指定?

8. SpringMVC若是但願把輸出的Object(例如XXResult或者XXResponse)這 種包裝爲JSON輸出, 應該怎麼處理?

9. 怎樣攔截SpringMVC的異常,而後作⾃定義的處理,⽐如打⽇志或者包裝 成JSON

10. 1.struts1和struts2的區別

11. .struts2和springMVC的區別

12. spring框架中須要引用哪些jar包,以及這些jar包的用途

13. springMVC的原理

14. springMVC註解的意思

15. spring中beanFactory和ApplicationContext的聯繫和區別

16. spring注入的幾種方式

17. spring如何實現事物管理的

18. springIOC和AOP的原理

19. hibernate中的1級和2級緩存的使用方式以及區別原理

20. spring中循環注入的方式

MySQL

1. 若是有不少數據插⼊MYSQL 你會選擇什麼⽅式?

2. 若是查詢很慢,你會想到的第⼀個⽅式是什麼?索引是⼲嘛的?

3. 若是建了⼀個單列索引,查詢的時候查出2列,會⽤到這個單列索引嗎?

4. 若是建了⼀個包含多個列的索引,查詢的時候只⽤了第⼀列,能不能⽤上 這個索引?查三列呢?

5. 接上題,若是where條件後⾯帶有⼀個 i + 5 < 100 會使⽤到這個索引嗎?

6. 怎麼看是否⽤到了某個索引?

7. like %aaa%會使⽤索引嗎? like aaa%呢?

8. drop、truncate、delete的區別?

9. 平時大家是怎麼監控數據庫的? 慢SQL是怎麼排查的?

10. 大家數據庫是否⽀持emoji表情,若是不⽀持,如何操做?

11. 大家的數據庫單表數據量是多少?⼀般多⼤的時候開始出現查詢性能急 劇降低?

12. 查詢死掉了,想要找出執⾏的查詢進程⽤什麼命令?找出來以後⼀般你 會⼲嘛?

13. 讀寫分離是怎麼作的?你認爲中間件會怎麼來操做?這樣操做跟事務有 什麼關係? 14. 分庫分表有沒有作過?線上的遷移過程是怎麼樣的?如何肯定數據是正 確的?

15. MySQL經常使用命令

16. 數據庫中事物的特徵?

17. JDBC的使用?

18. InnodB與MyISAM的區別

19. MySQL爲何使用B+樹做爲索引?

JVM

1. 你知道哪些或者大家線上使⽤什麼GC策略? 它有什麼優點,適⽤於什麼 場景?

2. JAVA類加載器包括⼏種?它們之間的⽗⼦關係是怎麼樣的?雙親委派機 制是什麼意思?有什麼好處?

3. 如何⾃定義⼀個類加載器?你使⽤過哪些或者你在什麼場景下須要⼀個⾃ 定義的類加載器嗎?

4. 堆內存設置的參數是什麼? 5. Perm Space中保存什麼數據? 會引發OutOfMemory嗎? 6. 作gc時,⼀個對象在內存各個Space中被移動的順序是什麼?

7. 你有沒有遇到過OutOfMemory問題?你是怎麼來處理這個問題的?處理 過程當中有哪些收穫?

8. 1.8以後Perm Space有哪些變更? MetaSpace⼤⼩默認是⽆限的麼? 仍是 大家會經過什麼⽅式來指定⼤⼩?

9. Jstack是⼲什麼的? Jstat呢? 若是線上程序週期性地出現卡頓,你懷疑可 能是gc致使的,你會怎麼來排查這個問題?線程⽇志⼀般你會看其中的什麼 部分?

10. StackOverFlow異常有沒有遇到過?⼀般你猜想會在什麼狀況下被觸 發?如何指定⼀個線程的堆棧⼤⼩?⼀般大家寫多少?

多線程

1) 什麼是線程?

2) 線程和進程有什麼區別?

3) 如何在Java中實現線程?

4) 用Runnable仍是Thread?

6) Thread 類中的start() 和 run() 方法有什麼區別?

7) Java中CyclicBarrier 和 CountDownLatch有什麼不一樣?

8) Java中的volatile 變量是什麼?

9) Java中的同步集合與併發集合有什麼區別?

10) 如何避免死鎖?

11) Java中活鎖和死鎖有什麼區別?

12) Java中synchronized 和 ReentrantLock 有什麼不一樣?

13) Java中ConcurrentHashMap的併發度是什麼?

14) 如何在Java中建立Immutable對象?

15) 單例模式的雙檢鎖是什麼?

16) 寫出3條你遵循的多線程最佳實踐

17) 如何避免死鎖?

18. 經常使用的線程池模式以及不一樣線程池的使用場景

Netty

1.BIO、NIO和AIO的區別?

2.NIO的組成?

3.Netty的特色?

4.Netty的線程模型?

5.TCP 粘包/拆包的緣由及解決方法?

6.瞭解哪幾種序列化協議?

7.如何選擇序列化協議?

8.Netty的零拷貝實現?

9.Netty的高性能表如今哪些方面?

10.NIOEventLoopGroup源碼?

Redis

1.Redis與Memorycache的區別?

2.Redis的五種數據結構?

3.漸進式rehash過程?

4.rehash源碼?

5.持久化機制

6.reaof源碼?

7.事務與事件

8.主從複製

9.啓動過程

10.集羣

11.Redis的6種數據淘汰策略

12.redis的併發競爭問題?

Hadoop

1.HDFS的特色?

2.客戶端從HDFS中讀寫數據過程?

3.HDFS的文件目錄結構?

4.NameNode的內存結構?

5.NameNode的重啓優化?

6.Git的使用?

7.Maven的使用

好了,到這裏面試題差很少已經寫完了,若是以上的面試題題目你已經所有理解,所有能回答出來了,那麼我能夠在這裏告訴你,你牛批,我服。

若是以上題目還不會的,還回答不上來的,那麼你能夠跟着個人腳步,我來介紹一下我總結出來的幾大致系。

如下就是我總結出來的幾大致系圖:

1、源碼分析


2、分佈式架構


3、微服務


4、性能優化


5、Java工程化


總結:

以上就是我要說的寫的內容,但願以上的內容能夠幫助到正在默默艱辛,遇到瓶疾且不知道怎麼辦的Java程序員們,我能幫你的只有這麼多了,面試題已經總結完了,我能幫的,也只有這麼多了,但願你們在日後的工做與面試中,一切順利。

我有一個微信公衆號,常常會分享一些Java技術相關的乾貨;若是你喜歡個人分享,能夠用微信搜索「Java團長」或者「javatuanzhang」關注。

相關文章
相關標籤/搜索