前言: 準備了體體面面的自我介紹,敗在了技術深度上;又或者技術知識背得完完全全,卻輸在了面試技巧,看看這個,一定要看到最後 115個Java面試題: 1. 什麼是Java虛擬機?為什麼Java被稱作是無關的編程語言? 2. JDK和JRE的區別是什麼? 3. static關鍵字是什麼意思?Java中 ...
前言:
準備了體體面面的自我介紹,敗在了技術深度上;又或者技術知識背得完完全全,卻輸在了面試技巧,看看這個,一定要看到最後
115個Java面試題:
- 什麼是Java虛擬機?為什麼Java被稱作是無關的編程語言?
- JDK和JRE的區別是什麼?
- static關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是strtic的方法
- 是否可以在strtic環境中訪問strtic變數?
- Java支持的數據類型有哪些?什麼是自動拆裝箱?
- Java中的方法覆蓋(Overriding)和方法重載(Overriding)是什麼意思?
- Java中,什麼是構造函數重載?什麼是複製構造函數
- Java支持多繼承麽?
- 介面和抽象類的區別是什麼?
- 什麼是值傳遞和引用傳遞
- 進程和線程的區別是什麼?
- 創建線程有幾種不同的方式?你喜歡那一種?為什麼?
- 概況的解釋下線程的幾種可用狀態
- 同步方法和同步代碼塊的區別是什麼?
- 在監視器(Monitor)內部,是如何做線程同步的?程式應該做那種級別的同步?
- 什麼是死鎖(deadlock)?
- 如何確保N個線程可以訪問N個資源同時又不導致死鎖?
- Java集合類框架的基本介面有哪些?
- 為什麼集合類沒有實現Cloneable和Serializable介面?
- 什麼是迭代器(Iterator)?
- Iterator和LististIterator的區別是什麼?
- 快速失敗(fail-fast)和安全失敗(fail-safe)的區別是什麼?
- Java中的HashMap的工作原理是什麼?
- hashCode()和equals()方法的重要性體現在什麼地方?
- HashMap和Hashtable有什麼區別?.數組(Array)和列表(ArrayList)有什麼區別?什麼時候應該使用Array而不是ArrayList?
- ArrayList和LinkedList有什麼區別?
- Comparable和Comparatoromparator介面是乾什麼的?列出他們的區別
- 什麼是Java優先順序隊列(PriorityQueue)?
- 你瞭解大O符號(big-O notation)麽?你能給出不同數據結構的例子麽?
- 如何權衡是使用無序的數組還是有序的數組?
- Java集合類框架的最佳實踐有哪些?
- Enumeration介面和Iterator介面的區別有哪些?
- HashSet和TreeSet有什麼區別?
- Java中辣椒回收有什麼目的?什麼時候進行垃圾回收
- System.ge()和Runtime.gc()會做什麼事情?
- finalize()方法什麼時候被條用?析構函數(finalization)的目的是什麼?
- 如果對象的引用被置為null,垃圾收集器是否會立即釋放對象占用的記憶體
- Java堆的結構是什麼樣子的?什麼是堆中的永久代(Perm Gen space)?
- 串列(serial)收集器和吞吐量(throughput)收集器的區別是什麼?
- 在Java中,對象什麼時候可以被垃圾回收?
- JVM的永久代中會發生垃圾回收麽?
Java中的兩種異常類型是什麼?他們有什麼區別?
Java中Exception和Error有什麼區別?
throw和thro ws有什麼區別?異常處理的時候,finally代碼塊的重要性是什麼?
異常處理完成以後,Exception對象會發生什麼變化?
finally代碼塊和finalize()方法有什麼區別?
什麼是(Applet)?
解釋一下Applet的生命周期
當Applet被載入的時候會發生什麼?
Applet和普通的Java應用程式有什麼區別?
Java Applet有哪些限制條件?
什麼是不受信任的Applet?
從網路上載入的Applet從本地文件系統載入的Applet有什麼區別
Applet類載入器是什麼?它會做哪些工作?
Applet安全管理器是什麼?它會做哪些工作?
彈出式選擇菜單(Choice)和列表(List)有什麼區別
什麼是佈局管理器?
滾動條(Scrollbar)和滾動面板(JScrollPane)有什麼區別?
哪些Swing的方法是線程安全的?
說出三種主持重繪(painting)的組件
什麼是裁剪(clipping)?
MenuItem和CheckboxMenuItem的區別是什麼?
邊緣佈局(BorderLayout)裡面的元素是如何佈局的?
網格包佈局(GridBagLayout)裡面的元素是如何佈局的
Window和Frame有什麼區別?
裁剪(clipping)和重繪(repainting)有什麼關係?
事件監聽器介面(event-listener interface)和事件適配器(event-adapter)有什麼關係
GUI組件如何處理它自己的事件?
Java的佈局管理器比傳統的視窗系統有哪些優勢?
Java的Swing組件使用了那種設計模式?
什麼是JDBC?
解釋下驅動(Driver)在JDBC中的角色
Class.forName()方法有什麼作用?
PreparedStatement比Statement有什麼優勢?
什麼時候用CallableStatement?用來準備CallableStatement的方法是什麼?
資料庫連接池是什麼意思?
什麼是RMI?
RMI體繫結構的基本原則是什麼?
RMI體繫結構分哪幾層?
RMI中的遠程介面(Remote Interface)扮演了什麼樣的角色?
java.rmi.Naming類扮演了什麼樣的角色?
RMI的綁定(Binding)是什麼意思?
Naming類的bind()和rebind()方法有什麼區別?
讓RMI程式能正確運行有哪些步驟?
RMI在stub扮演了什麼樣的角色?
什麼是分散式垃圾回收(DGC)?它是如何工作的?
RMI中使用RMI安全管理器(RMISecurityManager)的目的是什麼?
解釋下Marshalling和demarsahalling
解釋下Serialization和Deserialization
什麼是Servlet?
說一下Servlet的體繫結構
Applet和Servlet有什麼區別?
GenericServlet和HttpServlet有什麼區別?
解釋下Servlet的生命周期
doGet()方法和doPost()方法有什麼區別?
什麼是Web應用程式?
什麼是服務端包含(Server Side Include)?
什麼是Servlet鏈(Servlet Chaining)?
如何做到是哪一個客戶端的機器正在請求你的Servlet?
HTTP響應的結構是怎麼樣的?
什麼是cookie?session和cookie有什麼區別?
瀏覽器和Servlet通信使用的是什麼協議?
什麼是HTTP隧道?
sendRedirect()和forwand()方法有什麼區別
什麼是URL編碼和URL解碼
什麼是JSP頁面
JSP請求是如何被處理的
JSP有什麼優點
什麼是JSP指令(Directive)?JSP中有哪些不同類型的指令
什麼是JSP動作(JSP action)
什麼是Scriptlets
聲明(Decalaration)在哪裡?
什麼是表達式(Expression)
隱含對象是什麼意思?有哪些隱含對象
開源框架面試題
- BeanFactory 和 ApplicationContext 有什麼區別
- Spring Bean 的生命周期
- Spring IOC 如何實現
- 說說 Spring AOP
- Spring AOP 實現原理
- 動態代理(cglib 與 JDK)
- Spring 事務實現方式
- Spring 事務底層原理
- Spring 事務底層原理
- Spring MVC 運行流程
- Spring MVC 啟動流程
- Spring 的單例實現原理
- Spring 框架中用到了哪些設計模式
- 為什麼選擇 Netty
- 說說業務中,Netty 的使用場景
- 原生的 NIO 在 JDK 1.7 版本存在 epoll bug
- 什麼是 TCP 粘包/拆包
- TCP 粘包/拆包的解決辦法
- Netty 線程模型
- 說說 Netty 的零拷貝
- Netty 內部執行流程
設計模式
- 請列舉出在 JDK 中幾個常用的設計模式?
- 什麼是設計模式?你是否在你的代碼裡面使用過任何設計模式?
- Java 中什麼叫單例設計模式?請用 Java 寫出線程安全的單例模式
- 在 Java 中,什麼叫觀察者設計模式(observer design pattern)?
- 使用工廠模式最主要的好處是什麼?在哪裡使用?
- 舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是作用於對象層次還是層次?
- 在 Java 中,為什麼不允許從靜態方法中訪問非靜態變數?
- 設計一個 ATM 機,請說出你的設計思路?
- 在 Java 中,什麼時候用重載,什麼時候用重寫?
- 舉例說明什麼情況下會更傾向於使用抽象類而不是介面
spring 25題常見面試問題
- 什麼是 Spring 框架?Spring 框架有哪些主要模塊?
- 使用 Spring 框架能帶來哪些好處?
- 什麼是控制反轉(IOC)?什麼是依賴註入?
- 請解釋下 Spring 框架中的 IoC?
- BeanFactory 和 ApplicationContext 有什麼區別?
- Spring 有幾種配置方式?
- 如何用基於 XML 配置的方式配置 Spring?
- 如何用基於 Java 配置的方式配置 Spring?
- 怎樣用註解的方式配置 Spring?
- 請解釋 Spring Bean 的生命周期?
- Spring Bean 的作用域之間有什麼區別?
- 什麼是 Spring inner beans?
- Spring 框架中的單例 Beans 是線程安全的麽?
- 請舉例說明如何在 Spring 中註入一個 Java Collection?
- 如何向 Spring Bean 中註入一個 Java.util.Properties?
- 請解釋 Spring Bean 的自動裝配?
- 請解釋自動裝配模式的區別?
- 如何開啟基於註解的自動裝配?
- 請舉例解釋@Required 註解?
- 請舉例解釋@Autowired 註解?
- 請舉例說明@Qualifier 註解?
- 構造方法註入和設值註入有什麼區別?
- Spring 框架中有哪些不同類型的事件?
- FileSystemResource 和 ClassPathResource 有何區別?
- Spring 框架中都用到了哪些設計模式?
springbobt 22題常見面試問題
- 什麼是 Spring Boot
- Spring Boot 有哪些優點
- Spring Boot 的優點有
- Spring Boot 的優點有
- 如何重新載入 Spring Boot 上的更改,而無需重新啟動伺服器
- Spring Boot 中的監視器是什麼
- 如何在 Spring Boot 中禁用 Actuator 端點安全性
- 如何在自定義埠上運行 Spring Boot 應用程式
- 什麼是 YAML
- 如何實現 Spring Boot 應用程式的安全性
- 如何實現 Spring Boot 應用程式的安全性
- 如何使用 Spring Boot 實現分頁和排序
- 什麼是 Swagger?你用 Spring Boot 實現了它嗎
- 什麼是 Spring Profiles
- 什麼是 Spring Batch
- 什麼是 FreeMarker 模板
- 什麼是 FreeMarker 模板
- 什麼是 FreeMarker 模板
- 什麼是 CSRF 攻擊
- 什麼是 CSRF 攻擊
- 什麼是 AOP
- 什麼是 Apache Kafka
Redis
- 什麼是 Redis?簡述它的優缺點
- 什麼是 Redis?簡述它的優缺點
- redis 可以持久化其數據 redis 可以持久化其數據
- Redis 主要消耗什麼物理資源
- Redis 有哪幾種數據淘汰策略
- Redis 官方為什麼不提供 Windows 版本
- 一個字元串類型的值能存儲最大容量是多少
- 為什麼 Redis 需要把所有數據放到記憶體中
- Redis 集群方案應該怎麼做?都有哪些方案
- Redis 集群方案什麼情況下會導致整個集群不可用
- MySQL 里有 2000w 數據,redis 中只存 20w 的數據,如何保證 redis 中的數據都是熱點數據
- Redis 有哪些適合的場景
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個
- Redis 和 Redisson 有什麼關係
- Jedis 與 Redisson 對比有什麼優缺點
- 說說 Redis 哈希槽的概念
- Redis 集群的主從複製模型是怎樣的
- Redis 集群會有寫操作丟失嗎?為什麼
- Redis 集群之間是如何複製的
- Redis 集群最大節點個數是多少
- Redis 集群如何選擇資料庫
- Redis 中的管道有什麼用
- 怎麼理解 Redis 事務
- Redis 事務相關的命令有哪幾個
- Redis key 的過期時間和永久有效分別怎麼設置
- Redis 如何做記憶體優化
- Redis 回收進程如何工作的
- 加鎖機制
- 鎖互斥機制
- watch dog 自動延期機制
- 可重入加鎖機制
- 釋放鎖機制
- 上述 Redis 分散式鎖的缺點
- 使用過 Redis 分散式鎖麽,它是怎麼實現的
- 使用過 Redis 做非同步隊列麽,你是怎麼用的?有什麼缺點
- 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免
併發編程28題
Synchronized 用過嗎,其原理是什麼?
你剛纔提到獲取對象的鎖,這個“鎖”到底是什麼?如何確定對象的鎖?
什麼是可重入性,為什麼說 Synchronized 是可重入鎖?
JVM 對 Java 的原生鎖做了哪些優化?48
為什麼說 Synchronized 是非公平鎖?49
什麼是鎖消除和鎖粗化?49
為什麼說 Synchronized 是一個悲觀鎖?樂觀鎖的實現原理又是什麼?什麼是 CAS,它有什麼特性?
樂觀鎖一定就是好的嗎?
跟 Synchronized 相比,可重入鎖 ReentrantLock 其實現原理有什麼不同?
那麼請談談 AQS 框架是怎麼回事兒?
請儘可能詳盡地對比下 Synchronized 和 ReentrantLock 的異同。
ReentrantLock 是如何實現可重入性的?
除了 ReetrantLock,你還接觸過 JUC 中的哪些併發工具?
請談談 ReadWriteLock 和 StampedLock。
如何讓 Java 的線程彼此同步?你瞭解過哪些同步器?請分別介紹下。
CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢?
Java 線程池相關問題
Java 中的線程池是如何實現的?
創建線程池的幾個核心構造參數?
線程池中的線程是怎麼創建的?是一開始就隨著線程池的啟動創建好的嗎?
既然提到可以通過配置不同參數創建出不同的線程池,那麼 Java 中預設實現好的線程池又有哪些呢?請比較它們的異同
如何在 Java 線程池中提交線程?
什麼是 Java 的記憶體模型,Java 中各個線程是怎麼彼此看到對方的變數的?
請談談 volatile 有什麼特點,為什麼它能保證變數對所有線程的可見性?
既然 volatile 能夠保證線程間的變數可見性,是不是就意味著基於 volatile 變數的運算就是併發安全的?
請對比下 volatile 對比 Synchronized 的異同。
請談談 ThreadLocal 是怎麼解決併發安全的?
很多人都說要慎用 ThreadLocal,談談你的理解,使用 ThreadLocal 需要註意些什麼?
MySQL 性能優化的 21 個最佳實踐
- 為查詢緩存優化你的查詢
- EXPLAIN 你的 SELECT 查詢
- 當只要一行數據時使用 LIMIT 1
- 為搜索欄位建索引
- 在 Join 表的時候使用相當類型的例,並將其索引
- 千萬不要 ORDER BY RAND()
- 避免 SELECT *
- 永遠為每張表設置一個 ID
- 使用 ENUM 而不是 VARCHAR
- 從 PROCEDURE ANALYSE() 取得建議
- 儘可能的使用 NOT NULL
- Prepared Statements
- 無緩衝的查詢
- 把 IP 地址存成 UNSIGNED INT
- 固定長度的表會更快
- 垂直分割
- 拆分大的 DELETE 或 INSERT 語句
- 越小的列會越快
- 選擇正確的存儲引擎
- 選擇正確的存儲引擎
- 小心“永久鏈接”
ZooKeeper面試題目
- ZooKeeper 是什麼?
- ZooKeeper 提供了什麼?
- Zookeeper 文件系統
- 四種類型的 znode
- Zookeeper 通知機制
- Zookeeper 做了什麼?
- zk 的命名服務(文件系統)
- zk 的配置管理(文件系統、通知機制)
- Zookeeper 集群管理(文件系統、通知機制)
- Zookeeper 分散式鎖(文件系統、通知機制)
- 獲取分散式鎖的流程
- Zookeeper 隊列管理(文件系統、通知機制)
- Zookeeper 數據複製
- Zookeeper 工作原理
- zookeeper 是如何保證事務的順序一致性的?
- Zookeeper 下 Server 工作狀態
- zookeeper 是如何選取主 leader 的?
- Zookeeper 同步流程
- 分散式通知和協調
- 機器中為什麼會有 leader?
- zk 節點宕機如何處理?
- zookeeper 負載均衡和 nginx 負載均衡區別
- zookeeper watch 機制
Tomcat 面試題
- Tomcat 的預設埠是多少,怎麼修改?
- tomcat 有哪幾種 Connector 運行模式(優化)?
- Tomcat 有幾種部署方式?
- tomcat 容器是如何創建 servlet 類實例?用到了什麼原理
- tomcat 如何優化?
- 記憶體調優
- 垃圾回收策略調優
- 共用 session 處理
- 專業點的分析工具有
- 添加 JMS 遠程監控
- 關於 Tomcat 的 session 數目
- 監視 Tomcat 的記憶體使用情況
- 列印類的載入情況及對象的回收情況
- Tomcat 一個請求的完整過程
- Tomcat 工作模式?
最後
由於這套面試題涉及的範圍很泛,很廣,很雜,大家不可能一天兩天就看完和學完,即使你已經學過了有關的技術,那麼至少也需要一個月的時間才能消化和掌握,所以,大家應該早作准備,從拿到這套面試題之日起,就要堅持在每天閑暇之餘學習其中幾道題目,日積月累,等到出去面試時,一切都水到渠成,面試時就自然會游刃有餘了
**答題時,先答是什麼,再答有什麼作用和要註意什麼(這部分最重要,展現自己的心得)
答案的段落分別,層次分明,條理清晰都非常重要,從這些錶面的東西也可以看出一個人的習慣、辦事風格、條理等。
要講你做出答案的思路過程,或者說你記住答案的思想都寫下來。把答題想著是辯論賽。答題就是給別人講道理、擺事實。答題不局限於什麼格式和形式,就是要將自己的學識展現出來!
**別因為人家題目本來就模棱兩可,你就心裡膽怯和沒底氣了,不敢回答了。你要大膽地指出對方題目很模糊和你的觀點,不要把面試官想得有多高,其實他和你就是差不多的,你想想,如果他把你招進去了,你們以後就是同事了,可不是差不多的嗎?
關於就業薪水,如果你是應屆生,那不能要高工資,好比大餅的故事,沒有文憑還想拿高工資,就去中關村缺什麼補什麼吧!少數人基礎確實很好,在校期間確實又做過一些項目,那仍然是可以要到相對高的工資的。
最後由於篇幅原因,在這就不做全部展示了,這些題我已經整理成pdf文檔給那些有需要的朋友,同時整理也花費了蠻多時間的
答案,關註公眾號下麵二維碼,即可