BAT常問問題總結以及回答(問題彙總篇)

幾個大廠的面試題目目錄:html

java基礎(40題)http://www.javashuo.com/article/p-xxngsyga-a.htmljava

多線程(51題)mysql

設計模式(8點)linux

JVM(12題)面試

數據結構與算法(17題)redis

數據庫(22題)算法

Spring (13題)sql

Netty(7大題)shell

緩存(9題)數據庫

技術框架(8題)

技術深度(12題)

分佈式(33題)

系統架構(18題)

linux(9大題)

TCP/IP(19點)

軟能力(12點)


java 基礎

  1. 八種基本數據類型的大小,以及他們的封裝類
  2. 引用數據類型
  3. Switch可否用string作參數
  4. equals與==的區別
  5. 自動裝箱,常量池
  6. Object有哪些公用方法
  7. Java的四種引用,強弱軟虛,用到的場景
  8. Hashcode的做用
  9. HashMap的hashcode的做用
  10. 爲何重載hashCode方法?
  11. ArrayList、LinkedList、Vector的區別
  12. String、StringBuffer與StringBuilder的區別
  13. Map、Set、List、Queue、Stack的特色與用法
  14. HashMap和HashTable的區別
  15. JDK7與JDK8中HashMap的實現
  16. HashMap和ConcurrentHashMap的區別,HashMap的底層源碼
  17. ConcurrentHashMap能徹底替代HashTable嗎
  18. 爲何HashMap是線程不安全的
  19. 如何線程安全的使用HashMap
  20. 多併發狀況下HashMap是否還會產生死循環
  21. TreeMap、HashMap、LindedHashMap的區別
  22. Collection包結構,與Collections的區別
  23. try?catch?finally,try裏有return,finally還執行麼
  24. Excption與Error包結構,OOM你遇到過哪些狀況,SOF你遇到過哪些狀況
  25. Java(OOP)面向對象的三個特徵與含義
  26. Override和Overload的含義去區別
  27. Interface與abstract類的區別
  28. Static?class?與non?static?class的區別
  29. java多態的實現原理
  30. foreach與正常for循環效率對比
  31. Java?IO與NIO
  32. java反射的做用於原理
  33. 泛型經常使用特色
  34. 解析XML的幾種方式的原理與特色:DOM、SAX
  35. Java1.7與1.8,1.9,10 新特性
  36. 設計模式:單例、工廠、適配器、責任鏈、觀察者等等
  37. JNI的使用
  38. AOP是什麼
  39. OOP是什麼
  40. AOP與OOP的區別

多線程

  1. 什麼是線程?
  2. 什麼是線程安全和線程不安全?
  3. 什麼是自旋鎖?
  4. 什麼是Java內存模型?
  5. 什麼是CAS?
  6. 什麼是樂觀鎖和悲觀鎖?
  7. 什麼是AQS?
  8. 什麼是原子操做?在Java Concurrency API中有哪些原子類(atomic classes)?
  9. 什麼是Executors框架?
  10. 什麼是阻塞隊列?如何使用阻塞隊列來實現生產者-消費者模型?
  11. 什麼是Callable和Future?
  12. 什麼是FutureTask?
  13. 什麼是同步容器和併發容器的實現?
  14. 什麼是多線程?優缺點?
  15. 什麼是多線程的上下文切換?
  16. ThreadLocal的設計理念與做用?
  17. ThreadPool(線程池)用法與優點?
  18. Concurrent包裏的其餘東西:ArrayBlockingQueue、CountDownLatch等等。
  19. synchronized和ReentrantLock的區別?
  20. Semaphore有什麼做用?
  21. Java Concurrency API中的Lock接口(Lock interface)是什麼?對比同步它有什麼優點?
  22. Hashtable的size()方法中明明只有一條語句」return count」,爲何還要作同步?
  23. ConcurrentHashMap的併發度是什麼?
  24. ReentrantReadWriteLock讀寫鎖的使用?
  25. CyclicBarrier和CountDownLatch的用法及區別?
  26. LockSupport工具?
  27. Condition接口及其實現原理?
  28. Fork/Join框架的理解?
  29. wait()和sleep()的區別?
  30. 線程的五個狀態(五種狀態,建立、就緒、運行、阻塞和死亡)?
  31. start()方法和run()方法的區別?
  32. Runnable接口和Callable接口的區別?
  33. volatile關鍵字的做用?
  34. Java中如何獲取到線程dump文件?
  35. 線程和進程有什麼區別?
  36. 線程實現的方式有幾種(四種)?
  37. 高併發、任務執行時間短的業務怎樣使用線程池?併發不高、任務執行時間長的業務怎樣使用線程池?併發高、業務執行時間長的業務怎樣使用線程池?
  38. 若是你提交任務時,線程池隊列已滿,這時會發生什麼?
  39. 鎖的等級:方法鎖、對象鎖、類鎖?
  40. 若是同步塊內的線程拋出異常會發生什麼?
  41. 併發編程(concurrency)並行編程(parallellism)有什麼區別?
  42. 如何保證多線程下 i++ 結果正確?
  43. 一個線程若是出現了運行時異常會怎麼樣?
  44. 如何在兩個線程之間共享數據?
  45. 生產者消費者模型的做用是什麼?
  46. 怎麼喚醒一個阻塞的線程?
  47. Java中用到的線程調度算法是什麼
  48. 單例模式的線程安全性?
  49. 線程類的構造方法、靜態塊是被哪一個線程調用的?
  50. 同步方法和同步塊,哪一個是更好的選擇?
  51. 如何檢測死鎖?怎麼預防死鎖?

設計模式

  1. 裝飾器模式
  2. 工廠模式
  3. 單例模式
  4. 觀察者模式
  5. 動態代理模式
  6. 適配器模式
  7. 模板模式
  8. 策略模式

JVM

  1. 內存模型以及分區,須要詳細到每一個區放什麼。
  2. 對象建立方法,對象的內存分配,對象的訪問定位。
  3. GC的兩種斷定方法:引用計數與引用鏈。
  4. GC的三種收集方法:標記清除、標記整理、複製算法的原理與特色,分別用在什麼地方,若是讓你優化收集方法,有什麼思路?
  5. GC收集器有哪些?CMS收集器與G1收集器的特色。
  6. Minor?GC與Full?GC分別在何時發生?
  7. 幾種經常使用的內存調試工具:jmap、jstack、jconsole。
  8. 類加載的五個過程:加載、驗證、準備、解析、初始化。
  9. 雙親委派模型:Bootstrap?ClassLoader、Extension?ClassLoader、ApplicationClassLoader。
  10. 分派:靜態分派與動態分派。
  11. JVM過去過來就問了這麼些問題,沒怎麼變,內存模型和GC算法這塊問得比較多,能夠在網上多找幾篇博客來看看。
  12. 推薦書籍:《深刻理解java虛擬機》

數據結構與算法

  1. 鏈表與數組。
  2. 隊列和棧,出棧與入棧。
  3. 鏈表的刪除、插入、反向。
  4. 字符串操做。
  5. Hash表的hash函數,衝突解決方法有哪些。
  6. 各類排序:冒泡、選擇、插入、希爾、歸併、快排、堆排、桶排、基數的原理、平均時間複雜度、最壞時間複雜度、空間複雜度、是否穩定。
  7. 快排的partition函數與歸併的Merge函數。
  8. 對冒泡與快排的改進。
  9. 二分查找,與變種二分查找。
  10. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。
  11. 二叉樹的前中後續遍歷:遞歸與非遞歸寫法,層序遍歷算法。
  12. 圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。
  13. KMP算法。
  14. 排列組合問題。
  15. 動態規劃、貪心算法、分治算法。(通常不會問到)
  16. 大數據處理:相似10億條數據找出最大的1000個數.........等等
  17. 算法的話實際上是個重點,由於最後都是要你寫代碼,因此算法仍是須要花很多時間準備,這裏有太多算法題,寫不全,個人建議是沒事多在OJ上刷刷題(牛客網、leetcode等),劍指offer上的算法要能理解並本身寫出來,編程之美也推薦看一看

數據庫

  1. 事務四大特性(ACID)原子性、一致性、隔離性、持久性
  2. 數據庫隔離級別,每一個級別會引起什麼問題,mysql默認是哪一個級別
  3. innodb和myisam存儲引擎的區別
  4. MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景
  5. 查詢語句不一樣元素(where、jion、limit、group by、having等等)執行前後順序
  6. 數據庫的優化(從sql語句優化和索引兩個部分回答)
  7. 索引有B+索引和hash索引,各自的區別
  8. B+索引數據結構,和B樹的區別
  9. 索引的分類(主鍵索引、惟一索引),最左前綴原則,哪些狀況索引會失效
  10. 彙集索引和非彙集索引區別。
  11. 有哪些鎖(樂觀鎖悲觀鎖),select時怎麼加排它鎖
  12. 關係型數據庫和非關係型數據庫區別
  13. 數據庫三範式,根據某個場景設計數據表(能夠經過手繪ER圖)
  14. 數據庫的讀寫分離、主從複製
  15. 使用explain優化sql和索引
  16. long_query怎麼解決
  17. 內鏈接、外鏈接、交叉鏈接、笛卡兒積等
  18. 死鎖斷定原理和具體場景,死鎖怎麼解決
  19. varchar和char的使用場景。
  20. mysql併發狀況下怎麼解決(經過事務、隔離級別、鎖)
  21. 數據庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)
  22. 查詢語句不一樣元素(where、jion、limit、group by、having等等)執行前後順序

Spring

  1. IOC和DI是什麼?
  2. Spring IOC 的理解,其初始化過程?
  3. BeanFactory 和 FactoryBean的區別?
  4. BeanFactory和ApplicationContext的區別?
  5. ApplicationContext 上下文的生命週期?
  6. Spring Bean 的生命週期?
  7. Spring AOP的實現原理?
  8. Spring 是如何管理事務的,事務管理機制?
  9. Spring 的不一樣事務傳播行爲有哪些,幹什麼用的?
  10. Spring 中用到了那些設計模式?
  11. Spring MVC 的工做原理?
  12. Spring如何解決循環依賴?
  13. Spring 如何保證 Controller 併發的安全?

Netty

  1. BIO、NIO和AIO
  2. Netty 的各大組件
  3. Netty的線程模型
  4. TCP 粘包/拆包的緣由及解決方法
  5. 瞭解哪幾種序列化協議?包括使用場景和如何去選擇
  6. Netty的零拷貝實現
  7. Netty的高性能表如今哪些方面

緩存

  1. Redis用過哪些數據數據,以及Redis底層怎麼實現
  2. Redis緩存穿透,緩存雪崩
  3. 如何使用Redis來實現分佈式鎖
  4. Redis的併發競爭問題如何解決
  5. Redis持久化的幾種方式,優缺點是什麼,怎麼實現的
  6. Redis的緩存失效策略
  7. Redis集羣,高可用,原理
  8. Redis緩存分片
  9. Redis的數據淘汰策略

技術框架

  1. 看過哪些開源框架的源碼
  2. 爲何要用Redis,Redis有哪些優缺點?Redis如何實現擴容?
  3. Netty是如何使用線程池的,爲何這麼使用
  4. 爲何要使用Spring,Spring的優缺點有哪些
  5. Spring的IOC容器初始化流程
  6. Spring的IOC容器實現原理,爲何能夠經過byName和ByType找到Bean
  7. Spring AOP實現原理
  8. 消息中間件是如何實現的,技術難點有哪些

技術深度

  1. 事務的實現原理
  2. 有沒有看過JDK源碼,看過的類實現原理是什麼。
  3. HTTP協議
  4. TCP協議
  5. 一致性Hash算法
  6. JVM如何加載字節碼文件
  7. 類加載器如何卸載字節碼
  8. IO和NIO的區別,NIO優勢
  9. Java線程池的實現原理,keepAliveTime等參數的做用。
  10. HTTP鏈接池實現原理
  11. 數據庫鏈接池實現原理
  12. 數據庫的實現原理

分佈式

  1. 什麼是CAP定理
  2. CAP 理論和 BASE 理論
  3. CAP 理論
  4. CAP 理論和最終一致性
  5. 最終一致性實現方式
  6. CAP 理論和 BASE 理論
  7. 一致性 Hash
  8. 分佈式事務,兩階段提交。
  9. 如何實現分佈式鎖
  10. 如何實現分佈式Session
  11. 如何保證消息的一致性
  12. 負載均衡
  13. 正向代理(客戶端代理)和反向代理(服務器端代理)
  14. CDN實現原理
  15. 怎麼提高系統的QPS和吞吐量
  16. Dubbo的底層實現原理和機制
  17. 描述一個服務從發佈到被消費的詳細過程
  18. 分佈式系統怎麼作服務治理
  19. 接口的冪等性的概念
  20. 消息中間件如何解決消息丟失問題
  21. Dubbo的服務請求失敗怎麼處理
  22. 重連機制會不會形成錯誤
  23. 對分佈式事務的理解
  24. 如何實現負載均衡,有哪些算法能夠實現?
  25. Zookeeper的用途,選舉的原理是什麼?
  26. 數據的垂直拆分水平拆分。
  27. zookeeper原理和適用場景
  28. zookeeper watch機制
  29. redis/zk節點宕機如何處理
  30. 分佈式集羣下如何作到惟一序列號
  31. 用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎
  32. MQ系統的數據如何保證不丟失
  33. 列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問

系統架構

  1. 如何搭建一個高可用系統
  2. 哪些設計模式能夠增長系統的可擴展性
  3. 介紹設計模式,如模板模式,命令模式,策略模式,適配器模式、橋接模式、裝飾模式,觀察者模式,狀態模式,訪問者模式。
  4. 抽象能力,怎麼提升研發效率。
  5. 什麼是高內聚低耦合,請舉例子如何實現
  6. 什麼狀況用接口,什麼狀況用消息
  7. 若是AB兩個系統互相依賴,如何解除依賴
  8. 如何寫一篇設計文檔,目錄是什麼
  9. 什麼場景應該拆分系統,什麼場景應該合併系統
  10. 系統和模塊的區別,分別在什麼場景下使用
  11. 實戰能力
  12. 有沒有處理過線上問題?出現內存泄露,CPU利用率標高,應用無響應時如何處理的。
  13. 開發中有沒有遇到什麼技術問題?如何解決的
  14. 若是有幾十億的白名單,天天白天須要高併發查詢,晚上須要更新一次,如何設計這個功能。
  15. 新浪微博是如何實現把微博推給訂閱者
  16. Google是如何在一秒內把搜索結果返回給用戶的。
  17. 12306網站的訂票系統如何實現,如何保證不會票不被超賣。
  18. 如何實現一個秒殺系統,保證只有幾位用戶能買到某件商品。

LINUX

  1. 硬連接和軟鏈接區別
  2. kill用法,某個進程殺不掉的緣由(進入內核態,忽略kill信號)
  3. linux用過的命令
  4. 系統管理命令(如查看內存使用、網絡狀況)
  5. 管道的使用 |
  6. grep的使用,必定要掌握,每次都會問在文件中查找
  7. shell腳本
  8. find命令
  9. awk使用

TCP/IP

  1. OSI與TCP/IP各層的結構與功能,都有哪些協議。
  2. TCP與UDP的區別。
  3. TCP報文結構。
  4. TCP的三次握手與四次揮手過程,各個狀態名稱與含義,TIMEWAIT的做用。
  5. TCP擁塞控制。
  6. TCP滑動窗口與回退N針協議。
  7. Http的報文結構。
  8. Http的狀態碼含義。
  9. Http?request的幾種類型。
  10. Http1.1和Http1.0的區別
  11. Http怎麼處理長鏈接。
  12. Cookie與Session的做用於原理。
  13. 電腦上訪問一個網頁,整個過程是怎麼樣的:DNS、HTTP、TCP、OSPF、IP、ARP。
  14. Ping的整個過程。ICMP報文是什麼。
  15. C/S模式下使用socket通訊,幾個關鍵函數。
  16. IP地址分類。
  17. 路由器與交換機區別。
  18. 網絡其實大致分爲兩塊,一個TCP協議,一個HTTP協議,只要把這兩塊以及相關協議搞清楚,通常問題不大。
  19. 推薦書籍:《TCP/IP協議族》

軟能力

  1. 如何學習一項新技術,好比如何學習Java的,重點學習什麼
  2. 有關注哪些新的技術
  3. 工做任務很是多很是雜時如何處理
  4. 項目出現延遲如何處理
  5. 和同事的設計思路不同怎麼處理
  6. 如何保證開發質量
  7. 職業規劃是什麼?短時間,長期目標是什麼
  8. 團隊的規劃是什麼
  9. 能介紹下從工做到如今本身的成長在那裏
  10. 說說你認爲的服務端開發工程師應該具有哪些能力
  11. 網絡必備,高併發,JVM必會,各類分佈式技術,看源碼的能力。
  12. 說說你認爲的架構師是什麼樣的,架構師主要作什麼。
相關文章
相關標籤/搜索