Java 進階面試問題必備
阿新 • • 發佈:2018-12-10
面向物件程式設計的基本理念與核心設計思想
- 解釋下多型性(polymorphism),封裝性(encapsulation),內聚(cohesion)以及耦合(coupling)。
- 繼承(Inheritance)與聚合(Aggregation)的區別在哪裡。
- 你是如何理解乾淨的程式碼(Clean Code)與技術負載(Technical Debt)的。
- 描述下常用的重構技巧。
- 闡述下 SOLID 原則。
- 其他的譬如 KISS,DRY,YAGNI 等原則又是什麼含義。
- 什麼是設計模式(Design Patterns)?你知道哪些設計模式?
- 你有了解過存在哪些反模式(Anti-Patterns)嗎?
- 你會如何設計登陸艦/數學表示式計算程式/一條龍?
- 你知道哪些基本的排序演算法,它們的計算複雜度如何?在給定資料的情況下你會傾向於使用哪種演算法呢?
Java 核心概念
- equals 與 hashCode 的異同點在哪裡?Java 的集合中又是如何使用它們的。
- 描述下 Java 中集合(Collections),介面(Interfaces),實現(Implementations)的概念。LinkedList 與 ArrayList 的區別是什麼?
- 基礎型別(Primitives)與封裝型別(Wrappers)的區別在哪裡?
- final 與 static 關鍵字可以用於哪裡?它們的作用是什麼?
- 闡述下 Java 中的訪問描述符(Access Modifiers)。
- 描述下 String,StringBuilder 以及 StringBuffer 區別。
- 介面(Interface)與抽象類(Abstract Class)的區別在哪裡。
- 覆蓋(Overriding)與過載(OverLoading)的區別在哪裡。
- 異常分為哪幾種類型?以及所謂的handle or declare原則應該如何理解?
- 簡述垃圾回收器的工作原理。
- 你是如何處理記憶體洩露或者棧溢位問題的?
- 如何構建不可變的類結構?關鍵點在哪裡?
- 什麼是 JIT 編譯?
Hibernate / 資料庫
- 請解釋下 ORM。
- 簡述下 Hibernate 的優劣特性。
- Hibernate 與 JPA 區別在哪?
- Hibernate 最新版提供了哪些特性?
- 什麼是懶載入(Lazy Loading)?
- 什麼是 N+1 難題?
- 介紹一些熟悉的 Hibernate 註釋。
- 簡介下 Hibernate Session 與 SessionFactory。
- Entity Beans 的狀態有哪些。
- Hibernate 中的快取分為幾層。
- Hibernate 中事務的支援分為幾級?
- 什麼是樂觀鎖(Optimistic Locking)?
- 簡述下 ACID 原則。
- 簡述下資料庫正則化(Normalizations)。
- 請介紹下你日常工作中優化慢查詢(Slow Query)的策略。
Spring
- 新版的 Spring 中有哪些新特性?
- 介紹下 Spring 的優勢與缺陷。
- 什麼是控制反轉(Inversion of Control)與依賴注入(Dependency Injection)?
- 你用過哪些 Spring 的模組?
- Spring 中是如何使用依賴注入的?
- Spring 中提供了幾種自動注入的機制?
- 介紹下 Spring MVC。
- Spring 中 Scopes 有哪些?
- Spring 中 Bean 的生命週期包含哪些步驟?
- Spring Bean 與 EJB Bean 的區別在哪裡?
其他主題
- 介紹下切面程式設計(Aspect Oriented Programming)。
- 概述下 GET 與 POST 的區別。
- Web Server、Web Container 與 Application Server 的區別是什麼?
- 簡要介紹下從瀏覽器輸入 URL 開始到獲取到請求介面之後 Java Web 應用中發生了什麼。
- 什麼是 N 層架構?
- 微服務(MicroServices)與巨石型應用(Monolithic Applications)之間的區別在哪裡?
- 你知道哪些商業級設計模式?
- 你是如何測試一個應用的?知道哪些測試框架?
- 你是如何測試單個方法的?
- 在你的職業生涯中,算得上最困難的技術挑戰是什麼?
- 什麼是領域驅動開發(Domain Driven Development)?
- 介紹下一些你最愛的 IDE 的常用外掛。
- 除了 IDE 之外,你的日常工作中還會用到哪些工具?
- 你使用什麼版本管理工具?
- 分支(Branch)與標籤(Tag)之間的區別在哪裡?
- 你常用的持續整合(Continuous Integration)、靜態程式碼分析(Static Code Analysis)工具有哪些?
Java高架構師、分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師視訊免費獲取架構群:854180697 群連結:https://jq.qq.com/?_wv=1027&k=5UwECNa
寫在最後:歡迎留言討論,加關注,持續更新!