互聯網後端知識點整理

前言

一些問題的整理,平時實際工做中可能會忽視的一些原理性問題,後續會選取一些有意思的點進行詳述。web

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. hibernate中的1級和2級緩存的使用方式以及區別原理
  18. 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異常有沒有遇到過?⼀般你猜想會在什麼狀況下被觸 發?如何指定⼀個線程的堆棧⼤⼩?⼀般大家寫多少?

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的使用
注: 轉載整理自文章 金三銀四跳槽季,上週剛面試回來後的面試總結,想進BAT必看
相關文章
相關標籤/搜索