前言
一些問題的整理,平時實際工做中可能會忽視的一些原理性問題,後續會選取一些有意思的點進行詳述。web
JAVA多線程、併發相關
- 多個線程同時讀寫,讀線程的數量遠遠⼤於寫線程,你認爲應該如何解決 併發的問題?你會選擇加什麼樣的鎖?
- JAVA的AQS是否瞭解,它是⼲嘛的?
- 除了synchronized關鍵字以外,你是怎麼來保障線程安全的?
- 何時須要加volatile關鍵字?它能保證線程安全嗎?
- 線程池內的線程若是所有忙,提交⼀個新的任務,會發⽣什麼?隊列所有 塞滿了以後,仍是忙,再提交會發⽣什麼?
- Tomcat自己的參數你⼀般會怎麼調整?
- synchronized關鍵字鎖住的是什麼東⻄?在字節碼中是怎麼表示的?在內 存中的對象上表現爲何?
- wait/notify/notifyAll⽅法需不須要被包含在synchronized塊中?這是爲什 麼?
- 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
- 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表情,若是不⽀持,如何操做?
- 大家的數據庫單表數據量是多少?⼀般多⼤的時候開始出現查詢性能急 劇降低?
- 查詢死掉了,想要找出執⾏的查詢進程⽤什麼命令?找出來以後⼀般你 會⼲嘛?
- 讀寫分離是怎麼作的?你認爲中間件會怎麼來操做?這樣操做跟事務有 什麼關係?
- 分庫分表有沒有作過?線上的遷移過程是怎麼樣的?如何肯定數據是正 確的?
- MySQL經常使用命令
- 數據庫中事物的特徵?
- JDBC的使用?
- InnodB與MyISAM的區別
- MySQL爲何使用B+樹做爲索引?
JVM
- 你知道哪些或者大家線上使⽤什麼GC策略? 它有什麼優點,適⽤於什麼 場景?
- JAVA類加載器包括⼏種?它們之間的⽗⼦關係是怎麼樣的?雙親委派機 制是什麼意思?有什麼好處?
- 如何⾃定義⼀個類加載器?你使⽤過哪些或者你在什麼場景下須要⼀個⾃ 定義的類加載器嗎?
- 堆內存設置的參數是什麼?
- Perm Space中保存什麼數據? 會引發OutOfMemory嗎?
- 作gc時,⼀個對象在內存各個Space中被移動的順序是什麼?
- 你有沒有遇到過OutOfMemory問題?你是怎麼來處理這個問題的?處理 過程當中有哪些收穫?
- 1.8以後Perm Space有哪些變更? MetaSpace⼤⼩默認是⽆限的麼? 仍是 大家會經過什麼⽅式來指定⼤⼩?
- Jstack是⼲什麼的? Jstat呢? 若是線上程序週期性地出現卡頓,你懷疑可 能是gc致使的,你會怎麼來排查這個問題?線程⽇志⼀般你會看其中的什麼 部分?
- StackOverFlow異常有沒有遇到過?⼀般你猜想會在什麼狀況下被觸 發?如何指定⼀個線程的堆棧⼤⼩?⼀般大家寫多少?
Netty
- BIO、NIO和AIO的區別?
- NIO的組成?
- Netty的特色?
- Netty的線程模型?
- TCP 粘包/拆包的緣由及解決方法?
- 瞭解哪幾種序列化協議?
- 如何選擇序列化協議?
- Netty的零拷貝實現?
- Netty的高性能表如今哪些方面?
- NIOEventLoopGroup源碼?
Redis
- Redis與Memorycache的區別?
- Redis的五種數據結構?
- 漸進式rehash過程?
- rehash源碼?
- 持久化機制
- reaof源碼?
- 事務與事件
- 主從複製
- 啓動過程
- 集羣
- Redis的6種數據淘汰策略
- redis的併發競爭問題?
Hadoop
- HDFS的特色?
- 客戶端從HDFS中讀寫數據過程?
- HDFS的文件目錄結構?
- NameNode的內存結構?
- NameNode的重啓優化?
- Git的使用?
- Maven的使用
注: 轉載整理自文章
金三銀四跳槽季,上週剛面試回來後的面試總結,想進BAT必看