上週陪同之前一起工作的同事去面試(喬治,小袁,鵬飛(面試人)),第一站是去深圳,第二站上海,第三站杭州。面試什麼公司我在這裡就不多說了,你們知道是一線公司就行。其實本來真的沒打算寫這篇文章,主要是自己的記憶力不是很好,再者是最近好多人詢問2018年最新的面試題有點多,我實在回答不過來,而且怕為了避免重複回答,給自己省點力氣,乾脆就在這裡統一回復了。
說實話,雖作為陪同人,面試的時候我是不可以一同進去面試的,鵬飛在面試完後出來也是憑藉他模糊的記憶,來慢慢回憶當時HR問的幾個問題,以下是我整理的一些面試題,雖然不是很完整,但差不多也是必問的幾個題目了(前言告訴大家,面試的答案我就不一個一個的寫出來了,畢竟等級的不同,回答時的答案也不同,這全靠大家自己慢慢領悟了)我能幫的也只有這麼多了。以下便是面試題。
第一站:(深圳)
1. 多個執行緒同時讀寫,讀執行緒的數量遠遠⼤於寫執行緒,你認為應該如何解決 併發的問題?你會選擇加什麼樣的鎖?
2. JAVA的AQS是否瞭解,它是⼲嘛的?
3. 除了synchronized關鍵字之外,你是怎麼來保障執行緒安全的?
4. 什麼時候需要加volatile關鍵字?它能保證執行緒安全嗎?
5. 執行緒池內的執行緒如果全部忙,提交⼀個新的任務,會發⽣什麼?佇列全部 塞滿了之後,還是忙,再提交會發⽣什麼?
6. Tomcat本身的引數你⼀般會怎麼調整?
7. synchronized關鍵字鎖住的是什麼東⻄?在位元組碼中是怎麼表示的?在內 存中的物件上表現為什麼?
8. wait/notify/notifyAll⽅法需不需要被包含在synchronized塊中?這是為什 麼?
9. ExecutorService你⼀般是怎麼⽤的?是每個service放⼀個還是⼀個項⽬ ⾥⾯放⼀個?有什麼好處?
第二,第三站
Spring
-
你有沒有⽤過Spring的AOP? 是⽤來⼲嘛的? ⼤概會怎麼使⽤?
-
如果⼀個接⼝有2個不同的實現, 那麼怎麼來Autowire⼀個指定的實現?
-
Spring的宣告式事務 @Transaction註解⼀般寫在什麼位置? 丟擲了異常 會⾃動回滾嗎?有沒有辦法控制不觸發回滾?
-
如果想在某個Bean⽣成並裝配完畢後執⾏⾃⼰的邏輯,可以什麼⽅式實 現?
-
SpringBoot沒有放到web容器⾥為什麼能跑HTTP服務?
-
SpringBoot中如果你想使⽤⾃定義的配置⽂件⽽不僅僅是 application.properties,應該怎麼弄?
-
SpringMVC中RequestMapping可以指定GET, POST⽅法麼?怎麼指定?
-
SpringMVC如果希望把輸出的Object(例如XXResult或者XXResponse)這 種包裝為JSON輸出, 應該怎麼處理?
-
怎樣攔截SpringMVC的異常,然後做⾃定義的處理,⽐如打⽇志或者包裝 成JSON
-
1.struts1和struts2的區別
-
.struts2和springMVC的區別
-
spring框架中需要引用哪些jar包,以及這些jar包的用途
-
springMVC的原理
-
springMVC註解的意思
-
spring中beanFactory和ApplicationContext的聯絡和區別
-
spring注入的幾種方式
-
spring如何實現事物管理的
-
springIOC和AOP的原理
-
hibernate中的1級和2級快取的使用方式以及區別原理
-
spring中迴圈注入的方式
MySQL
-
如果有很多資料插⼊MYSQL 你會選擇什麼⽅式?
-
如果查詢很慢,你會想到的第⼀個⽅式是什麼?索引是⼲嘛的?
-
如果建了⼀個單列索引,查詢的時候查出2列,會⽤到這個單列索引嗎?
-
如果建了⼀個包含多個列的索引,查詢的時候只⽤了第⼀列,能不能⽤上 這個索引?查三列呢?
-
接上題,如果where條件後⾯帶有⼀個 i + 5 < 100 會使⽤到這個索引嗎?
-
怎麼看是否⽤到了某個索引?
-
like %aaa%會使⽤索引嗎? like aaa%呢?
-
drop、truncate、delete的區別?
-
平時你們是怎麼監控資料庫的? 慢SQL是怎麼排查的?
-
你們資料庫是否⽀持emoji表情,如果不⽀持,如何操作?
-
你們的資料庫單表資料量是多少?⼀般多⼤的時候開始出現查詢效能急 劇下降?
-
查詢死掉了,想要找出執⾏的查詢程式⽤什麼命令?找出來之後⼀般你 會⼲嘛?
-
讀寫分離是怎麼做的?你認為中介軟體會怎麼來操作?這樣操作跟事務有 什麼關係? 14. 分庫分表有沒有做過?線上的遷移過程是怎麼樣的?如何確定資料是正 確的?
-
MySQL常用命令
-
資料庫中事物的特徵?
17. JDBC的使用?
-
InnodB與MyISAM的區別
-
MySQL為什麼使用B+樹作為索引?
JVM
-
你知道哪些或者你們線上使⽤什麼GC策略? 它有什麼優勢,適⽤於什麼 場景?
-
JAVA類載入器包括⼏種?它們之間的⽗⼦關係是怎麼樣的?雙親委派機 制是什麼意思?有什麼好處?
-
如何⾃定義⼀個類載入器?你使⽤過哪些或者你在什麼場景下需要⼀個⾃ 定義的類載入器嗎?
-
堆記憶體設定的引數是什麼? 5. Perm Space中儲存什麼資料? 會引起OutOfMemory嗎? 6. 做gc時,⼀個物件在記憶體各個Space中被移動的順序是什麼?
-
你有沒有遇到過OutOfMemory問題?你是怎麼來處理這個問題的?處理 過程中有哪些收穫?
-
1.8之後Perm Space有哪些變動? MetaSpace⼤⼩預設是⽆限的麼? 還是 你們會通過什麼⽅式來指定⼤⼩?
-
Jstack是⼲什麼的? Jstat呢? 如果線上程式週期性地出現卡頓,你懷疑可 能是gc導致的,你會怎麼來排查這個問題?執行緒⽇志⼀般你會看其中的什麼 部分?
-
StackOverFlow異常有沒有遇到過?⼀般你猜測會在什麼情況下被觸 發?如何指定⼀個執行緒的堆疊⼤⼩?⼀般你們寫多少?
多執行緒
-
什麼是執行緒?
-
執行緒和程式有什麼區別?
-
如何在Java中實現執行緒?
-
用Runnable還是Thread?
-
Thread 類中的start() 和 run() 方法有什麼區別?
-
Java中CyclicBarrier 和 CountDownLatch有什麼不同?
-
Java中的volatile 變數是什麼?
-
Java中的同步集合與併發集合有什麼區別?
10) 如何避免死鎖?
- Java中活鎖和死鎖有什麼區別?
12) Java中synchronized 和 ReentrantLock 有什麼不同?
13) Java中ConcurrentHashMap的併發度是什麼?
- 如何在Java中建立Immutable物件?
15) 單例模式的雙檢鎖是什麼?
- 寫出3條你遵循的多執行緒最佳實踐
17) 如何避免死鎖?
- 常用的執行緒池模式以及不同執行緒池的使用場景
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的使用
好了,到這裡面試題差不多已經寫完了,如果以上的面試題題目你已經全部理解,全部能回答出來了,那麼我可以在這裡告訴你,你牛批,我服。
如果以上題目還不會的,還回答不上來的,那麼你可以跟著我的腳步,我來介紹一下我總結出來的幾大體系,如果你想學習這些內容,我可以向大家推薦一下學習交流群:744642380 大家想學習的可以加群,但記得備註好資訊哦。(記住:加群:7446423804 請備註好資訊)
一下就是我總結出來的幾大體系圖:
一、原始碼分析
二、分散式架構
三、微服務
四、效能優化
五、Java工程化
總結:
以上就是我要說的寫的內容,希望以上的內容可以幫助到正在默默艱辛,遇到瓶疾且不知道怎麼辦的Java程式設計師們,我能幫你的只有這麼多了,面試題已經總結完了,我能幫的,也只有這麼多了,希望大家在往後的工作與面試中,一切順利。
作者:AI喬治 連結:https://www.jianshu.com/p/1fd6a3d4b739 來源:簡書 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。