1. 程式人生 > >Java開發崗位面試題整理

Java開發崗位面試題整理

線程數 本地 簡單 線程間通信 syn 低耦合 刪除 不同方法 ola

一、Java基礎

  1. String類為什麽是final的

  2. HashMap的源碼,實現原理,底層結構。

  3. 說說你知道的幾個Java集合類:list、set、queue、map實現類。

  4. 描述一下ArrayList和LinkedList各自實現和區別

  5. Java中的隊列都有哪些,有什麽區別。

  6. 反射中,Class.forName和classloader的區別。

  7. Java7、Java8的新特性

  8. Java數組和鏈表兩種結構的操作效率,在哪些情況下(從開頭開始,從結尾開始,從中間開始),哪些操作(插入,查找,刪除)的效率高。

  9. Java內存泄露的問題調查定位:jmap,jstack的使用等等。

  10. string、stringbuilder、stringbuffer區別

  11. hashtable和hashmap的區別

13 .異常的結構,運行時異常和非運行時異常,各舉個例子。

  1. String 類的常用方法

  2. Java 的引用類型有哪幾種

  3. 抽象類和接口的區別

  4. java的基礎類型和字節大小

  5. Hashtable,HashMap,ConcurrentHashMap底層實現原理與線程安全問題。

  6. 如果不讓你用Java Jdk提供的工具,你自己實現一個Map,你怎麽做。說了好久,說了HashMap源代碼,如果我做,就會借鑒HashMap的原理,說了一通HashMap實現。

  7. Hash沖突怎麽辦?哪些解決散列沖突的方法?

  8. HashMap沖突很厲害,最差性能,你會怎麽解決?從O(n)提升到log(n)。

  9. rehash

  10. hashCode() 與 equals() 生成算法、方法怎麽重寫。

二、Java IO

  1. 講講IO裏面的常見類,字節流、字符流、接口、實現類、方法阻塞。

  2. 講講NIO

  3. String 編碼UTF-8 和GBK的區別?

  4. 什麽時候使用字節流、什麽時候使用字符流?

  5. 遞歸讀取文件夾下的文件,代碼怎麽實現?

三、Java Web

  1. session和cookie的區別和聯系,session的生命周期,多個服務部署時session管理。

  2. servlet的一些相關問題

  3. webservice相關問題

  4. jdbc連接,forname方式的步驟,怎麽聲明使用一個事務。

  5. 無框架下配置web.xml的主要配置內容

  6. jsp和servlet的區別

四、JVM

  1. Java的內存模型以及GC算法

  2. jvm性能調優都做了什麽

  3. 介紹JVM中7個區域,然後把每個區域可能造成內存的溢出的情況說明。

  4. 介紹GC 和GC Root不正常引用

  5. 自己從classload 加載方式,加載機制說開去,從程序運行時數據區,講到內存分配,講到String常量池,講到JVM垃圾回收機制,算法,hotspot。

  6. jvm 如何分配直接內存, new 對象如何不分配在堆而是棧上,常量池解析。

  7. 數組多大放在JVM老年代

  8. 老年代中數組的訪問方式

  9. GC 算法,永久代對象如何 GC , GC 有環怎麽處理。

  10. 誰會被 GC ,什麽時候 GC。

  11. 如果想不被 GC 怎麽辦

  12. 如果想在 GC 中生存 1 次怎麽辦

五、開源框架

  1. hibernate和ibatis的區別

  2. 講講mybatis的連接池

  3. spring框架中需要引用哪些jar包,以及這些jar包的用途

  4. springMVC的原理

  5. springMVC註解的意思

  6. spring中beanFactory和ApplicationContext的聯系和區別

  7. spring註入的幾種方式

  8. spring如何實現事物管理的

  9. springIOC

  10. spring AOP的原理

  11. hibernate中的1級和2級緩存的使用方式以及區別原理(Lazy-Load的理解)

  12. Hibernate的原理體系架構,五大核心接口,Hibernate對象的三種狀態轉換,事務管理。

六、多線程

  1. Java創建線程之後,直接調用start()方法和run()的區別

  2. 常用的線程池模式以及不同線程池的使用場景

  3. newFixedThreadPool此種線程池如果線程數達到最大值後會怎麽辦,底層原理。

  4. 多線程之間通信的同步問題,synchronized鎖的是對象,衍伸出和synchronized相關很多的具體問題,例如同一個類不同方法都有synchronized鎖,一個對象是否可以同時訪問。或者一個類的static構造方法加上synchronized之後的鎖的影響。

  5. 了解可重入鎖的含義,以及ReentrantLock 和synchronized的區別

  6. 同步的數據結構,例如concurrentHashMap的源碼理解以及內部實現原理,為什麽他是同步的且效率高。

  7. atomicinteger和Volatile等線程安全操作的關鍵字的理解和使用

  8. 線程間通信,wait和notify

  9. 定時線程的使用

  10. 場景:在一個主線程中,要求有大量(很多很多)子線程執行完之後,主線程才執行完成。多種方式,考慮效率。

  11. 進程和線程的區別

  12. 什麽叫線程安全?

  13. 線程的幾種狀態

  14. 並發、同步的接口或方法

  15. HashMap 是否線程安全,為何不安全。 ConcurrentHashMap,線程安全,為何安全。底層實現是怎麽樣的。

  16. J.U.C下的常見類的使用。 ThreadPool的深入考察; BlockingQueue的使用。(take,poll的區別,put,offer的區別);原子類的實現。

  17. 簡單介紹下多線程的情況,從建立一個線程開始。然後怎麽控制同步過程,多線程常用的方法和結構

  18. volatile的理解

  19. 實現多線程有幾種方式,多線程同步怎麽做,說說幾個線程裏常用的方法。

七、網絡通信

  1. http是無狀態通信,http的請求方式有哪些,可以自己定義新的請求方式麽。

  2. socket通信,以及長連接,分包,連接異常斷開的處理。

  3. socket通信模型的使用,AIO和NIO。

  4. socket框架netty的使用,以及NIO的實現原理,為什麽是異步非阻塞。

  5. 同步和異步,阻塞和非阻塞。

  6. OSI七層模型,包括TCP,IP的一些基本知識

  7. http中,get post的區別

  8. 說說http,tcp,udp之間關系和區別。

  9. 說說瀏覽器訪問www.taobao.com,經歷了怎樣的過程。

  10. HTTP協議、 HTTPS協議,SSL協議及完整交互過程;

  11. tcp的擁塞,快回傳,ip的報文丟棄

  12. https處理的一個過程,對稱加密和非對稱加密

  13. head各個特點和區別

  14. 說說瀏覽器訪問www.taobao.com,經歷了怎樣的過程。

八、數據庫MySql

  1. MySql的存儲引擎的不同

  2. 單個索引、聯合索引、主鍵索引

  3. Mysql怎麽分表,以及分表後如果想按條件分頁查詢怎麽辦

  4. 分表之後想讓一個id多個表是自增的,效率實現

  5. MySql的主從實時備份同步的配置,以及原理(從庫讀主庫的binlog),讀寫分離。

  6. 寫SQL語句和SQL優化

  7. 索引的數據結構,B+樹

  8. 事務的四個特性,以及各自的特點(原子、隔離)等等,項目怎麽解決這些問題。

  9. 數據庫的鎖:行鎖,表鎖;樂觀鎖,悲觀鎖

  10. 數據庫事務的幾種粒度

  11. 關系型和非關系型數據庫區別

九、設計模式

  1. 單例模式:飽漢、餓漢。以及餓漢中的延遲加載,雙重檢查。

  2. 工廠模式、裝飾者模式、觀察者模式。

  3. 工廠方法模式的優點(低耦合、高內聚,開放封閉原則)

十、算法

  1. 使用隨機算法產生一個數,要求把1-1000W之間這些數全部生成。

  2. 兩個有序數組的合並排序

  3. 一個數組的倒序

  4. 計算一個正整數的正平方根

  5. 說白了就是常見的那些查找、排序算法以及各自的時間復雜度。

  6. 二叉樹的遍歷算法

  7. DFS,BFS算法

  8. 比較重要的數據結構,如鏈表,隊列,棧的基本理解及大致實現。

  9. 排序算法與時空復雜度(快排為什麽不穩定,為什麽你的項目還在用)

  10. 逆波蘭計算器

  11. Hoffman 編碼

  12. 查找樹與紅黑樹

十一、並發與性能調優

  1. 有個每秒鐘5k個請求,查詢手機號所屬地的筆試題,如何設計算法?請求再多,比如5w,如何設計整個系統?

  2. 高並發情況下,我們系統是如何支撐大量的請求的

  3. 集群如何同步會話狀態

  4. 負載均衡的原理

5 .如果有一個特別大的訪問量,到數據庫上,怎麽做優化(DB設計,DBIO,SQL優化,Java優化)

  1. 如果出現大面積並發,在不增加服務器的基礎上,如何解決服務器響應不及時問題“。

  2. 假如你的項目出現性能瓶頸了,你覺得可能會是哪些方面,怎麽解決問題。

  3. 如何查找 造成 性能瓶頸出現的位置,是哪個位置照成性能瓶頸。

  4. 你的項目中使用過緩存機制嗎?有沒用用戶非本地緩存
    答案參考java面試題網http://www.wityx.com

Java開發崗位面試題整理