面試TodoList


面試TodoList

知乎看到的Java面經,看到其中部分題目有啟發性就記下來了,抽時間逐個解決吧。查看原文

第一站深圳

  1. 多個線程同時讀寫,讀線程的數量遠遠⼤於寫線程,你認為應該如何解決 並發的問題?你會選擇加什么樣的鎖?
  2. JAVA的AQS是否了解,它是⼲嘛的?
  3. 除了synchronized關鍵字之外,你是怎么來保障線程安全的?
  4. 什么時候需要加volatile關鍵字?它能保證線程安全嗎?
  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. spring框架中需要引用哪些jar包,以及這些jar包的用途
  11. springMVC的原理
  12. springMVC注解的意思
  13. spring中beanFactory和ApplicationContext的聯系和區別
  14. spring注入的幾種方式
  15. spring如何實現事務管理的
  16. springIOC和AOP的原理
  17. 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. 分庫分表有沒有做過?線上的遷移過程是怎么樣的?如何確定數據是正確的?
  14. MySQL常用命令
  15. 數據庫中事物的特征?
  16. JDBC的使用?
  17. InnodB與MyISAM的區別
  18. 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?
  5. Thread 類中的start() 和 run() 方法有什么區別?
  6. Java中CyclicBarrier 和 CountDownLatch有什么不同?
  7. Java中的volatile 變量是什么?
  8. Java中的同步集合與並發集合有什么區別?
  9. 如何避免死鎖?
  10. Java中活鎖和死鎖有什么區別?
  11. Java中synchronized 和 ReentrantLock 有什么不同?
  12. Java中ConcurrentHashMap的並發度是什么?
  13. 如何在Java中創建Immutable對象?
  14. 單例模式的雙檢鎖是什么?
  15. 寫出3條你遵循的多線程最佳實踐
  16. 如何避免死鎖?
  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的並發競爭問題?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM