當下最新Java開發面試題彙總,歡迎補充
前言
為了方便之後的面試複習,我把各類面試題給彙總了一下,每道題都是經過自己篩選後覺得需要掌握的,此次整理包括 Java、資料結構與演算法、計算機網路、作業系統、資料庫等。文末我會把這些完整的答案放送給大家。
Java 篇
(1). Java基礎知識
java中==和equals和hashCode的區別
int與integer的區別
抽象類的意義
介面和抽象類的區別
能否建立一個包含可變物件的不可變物件?
談談對java多型的理解
String、StringBuffer、StringBuilder區別
泛型中extends和super的區別
程序和執行緒的區別
final,finally,finalize的區別
序列化的方式
string 轉換成 integer的方式及原理
靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?
成員內部類、靜態內部類、區域性內部類和匿名內部類的理解,以及專案中的應用
講一下常見編碼方式?
如何格式化日期?
Java的異常體系
什麼是異常鏈
throw和throws的區別
反射的原理,反射建立類例項的三種方式是什麼。
java當中的四種引用
深拷貝和淺拷貝的區別是什麼?
什麼是編譯器常量?使用它有什麼風險?
你對String物件的intern()熟悉麼?
a=a+b與a+=b有什麼區別嗎?
靜態代理和動態代理的區別,什麼場景使用?
Java中實現多型的機制是什麼?
如何將一個Java物件序列化到檔案裡?
說說你對Java反射的理解
說說你對Java註解的理解
說說你對依賴注入的理解
說一下泛型原理,並舉例說明
Java中String的瞭解
String為什麼要設計成不可變的?
Object類的equal和hashCode方法重寫,為什麼?
(2).多執行緒
開啟執行緒的三種方式?
說說程序,執行緒,協程之間的區別
執行緒之間是如何通訊的?
什麼是Daemon執行緒?它有什麼意義?
在java中守護執行緒和本地執行緒區別?
為什麼要有執行緒,而不是僅僅用程序?
什麼是可重入鎖(ReentrantLock)?
什麼是執行緒組,為什麼在Java中不推薦使用?
樂觀鎖和悲觀鎖的理解及如何實現,有哪些實現方式?
Java中用到的執行緒排程演算法是什麼?
同步方法和同步塊,哪個是更好的選擇?
run()和start()方法區別
如何控制某個方法允許併發訪問執行緒的個數?
在Java中wait和seelp方法的不同;
Thread類中的yield方法有什麼作用?
什麼是不可變物件,它對寫併發應用有什麼幫助?
談談wait/notify關鍵字的理解
為什麼wait, notify 和 notifyAll這些方法不在thread類裡面?
什麼導致執行緒阻塞?
講一下java中的同步的方法
談談對Synchronized關鍵字,類鎖,方法鎖,重入鎖的理解
static synchronized 方法的多執行緒訪問和作用
同一個類裡面兩個synchronized方法,兩個執行緒同時訪問的問題
你如何確保main()方法所在的執行緒是Java程式最後結束的執行緒?
談談volatile關鍵字的作用
談談ThreadLocal關鍵字的作用
談談NIO的理解
什麼是Callable和Future?
ThreadLocal、synchronized 和volatile 關鍵字的區別
synchronized與Lock的區別
ReentrantLock 、synchronized和volatile比較
在Java中CycliBarriar和CountdownLatch有什麼區別?
CopyOnWriteArrayList可以用於什麼應用場景?
ReentrantLock的內部實現
lock原理
Java中Semaphore是什麼?
Java中invokeAndWait 和 invokeLater有什麼區別?
多執行緒中的忙迴圈是什麼?
怎麼檢測一個執行緒是否擁有鎖?
死鎖的四個必要條件?
物件鎖和類鎖是否會互相影響?
什麼是執行緒池,如何使用?
Java執行緒池中submit() 和 execute()方法有什麼區別?
Java中interrupted 和 isInterruptedd方法的區別?
用Java實現阻塞佇列
BlockingQueue介紹:
多執行緒有什麼要注意的問題?
如何保證多執行緒讀寫檔案的安全?
多執行緒斷點續傳原理
斷點續傳的實現
實現生產者消費者模式
Java中的ReadWriteLock是什麼?
用Java寫一個會導致死鎖的程式,你將怎麼解決?
SimpleDateFormat是執行緒安全的嗎?
Java中的同步集合與併發集合有什麼區別?
Java中ConcurrentHashMap的併發度是什麼?
什麼是Java Timer類?如何建立一個有特定時間間隔的任務?
(3).集合
Collection 和Collections 的區別?
修改物件A的equals方法的簽名,那麼使用HashMap存放這個物件例項的時候,會呼叫哪個equals方法?
List,Set,Map的區別
List和Map的實現方式以及儲存方式
HashMap的實現原理
HashMap如何put資料(從HashMap原始碼角度講解)?
HashMap的擴容操作是怎麼實現的?
HashMap在JDK1.7和JDK1.8中有哪些不同?
ConcurrentHashMap的實現原理
HashTable實現原理
ArrayMap和HashMap的對比
HashMap和HashTable的區別
HashMap與HashSet的區別
集合Set實現Hash怎麼防止碰撞
陣列和連結串列的區別
Array和ArrayList有何區別?什麼時候更適合用Array
.EnumSet是什麼?
Comparable和Comparator介面有何區別?
Java集合的快速失敗機制 “fail-fast”?
fail-fast 與 fail-safe 之間的區別?
BlockingQueue是什麼?
Iterator類有什麼作用
poll()方法和remove()方法區別?
JAVA8的ConcurrentHashMap為什麼放棄了分段鎖,有什麼問題嗎,如果你來設計,你如何設計。
(4).JVM
什麼情況下會觸發類的初始化?
談談你對解析與分派的認識。
你知道哪些或者你們線上使⽤什麼GC策略?它有什麼優勢,適⽤於什麼場景?
Ja0v00a類載入器包00括⼏種0?它們之間的⽗⼦關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?
如何⾃定義⼀個類載入器?你使⽤過哪些或者你在什麼場景下需要⼀個⾃定義的類載入器嗎?
堆記憶體設定的引數是什麼?
Perm Space中儲存什麼資料?會引起OutOfMemory嗎?
做GC時,⼀個物件在記憶體各個Space中被移動的順序是什麼?
你有沒有遇到過OutOfMemory問題?你是怎麼來處理這個問題的?處理 過程中有哪些收穫?
StackOverflow異常有沒有遇到過?⼀般你猜測會在什麼情況下被觸發?如何指定⼀個執行緒的堆疊⼤⼩?⼀般你們寫多少?
記憶體模型以及分割槽,需要詳細到每個區放什麼。
分派:靜態分派與動態分派。
虛擬機器在執行時有哪些優化策略
請解釋StackOverflowError和OutOfMemeryError的區別?
.在JVM中,如何判斷一個物件是否死亡?
計算機網路
從網路載入一個10M的圖片,說下注意事項
OSI網路體系結構與TCP/IP協議模型
TCP的3次握手和四次揮手
為什麼TCP連結需要三次握手,兩次不可以麼,為什麼?
TCP協議如何來保證傳輸的可靠性
TCP與UDP的區別
TCP與UDP的有哪些應用
HTTP1.0與2.0的區別
HTTP報文結構
HTTP的長連線和短連線?
HTTP與HTTPS的區別以及如何實現安全性
如何驗證證書的合法性
Get與POST的區別
TCP的擁塞處理
TCP是如何進行流量控制
TCP和UDP分別對應的常見應用層協議
IP地址的分類
有了唯一的Mac地址為啥還需要IP地址?
交換機、集線器與路由器有什麼區別?
網橋的作用
ARP是地址解析協議,簡單語言解釋一下工作原理。
網路介面卡(網絡卡)的功能?
IO中同步與非同步,阻塞與非阻塞區別
URI和URL的區別
GET請求中URL編碼的意義
常見狀態碼及原因短語
說說Session、Cookie 與 Application
如何避免瀏覽器快取
什麼是分塊傳送。
談談SQL 注入
DDos 攻擊
DDos攻擊有那些預防方法?
什麼是XSS 攻擊
從輸入網址到獲得頁面的過程
資料結構與演算法
這部分要會手動實現一些資料結構,我總結了以下一些重要的資料結構
資料結構
連結串列(增刪查操作)
單向連結串列
雙向連結串列
佇列(增刪查操作)
普通佇列
優先隊友
樹
二叉樹(前序、中序、後序)
平衡樹(儘量會實現程式碼)
堆
紅黑樹(瞭解性質、應用場景)
B樹(瞭解性質、應用場景)
圖
深度優先搜尋
廣度優先搜尋
最短路徑
最小生成樹
Prim演算法
Kruskal演算法
拓撲
字串
Knuth-Morris-Pratt演算法
Boyer-Moore演算法
雜湊
幾種演算法思想
遞迴
遞推
貪心
列舉
動態規劃
回溯法
分治
必學十大排序演算法
選擇排序
插入排序
氣泡排序
希爾排序
歸併排序
快速排序
堆排序
計數排序
桶排序
基數排序
資料庫
請簡潔描述Mysql中InnoDB支援的四種事務隔離級別名稱,以及逐級之間的區別?
在Mysql中ENUM的用法是什麼?
CHAR和VARCHAR的區別?
事務是如何通過日誌來實現的,說得越深入越好
drop,delete與truncate的區別
區域性性原理與磁碟預讀
資料庫正規化
儲存過程與觸發器的區別
鎖的優化策略
什麼情況下設定了索引但無法使用
什麼情況下不宜建立索引?
解釋MySQL外連線、內連線與自連線的區別
完整性約束包括哪些?
Mysql 的儲存引擎,myisam和innodb的區別。
如何進行SQL優化
樂觀鎖和悲觀鎖是什麼,INNODB的標準行級鎖有哪2種,解釋其含義。
MVCC的含義,如何實現的
MYSQL的主從延遲怎麼解決。
spring
1. spring概述
使用Spring框架的好處是什麼?
Spring由哪些模組組成?
解釋AOP模組
解釋WEB 模組
核心容器(應用上下文) 模組。
什麼是Spring IOC 容器?
IOC的優點是什麼?
ApplicationContext通常的實現是什麼?
Bean 工廠和 Application contexts 有什麼區別?
Bean 工廠和 Application contexts 有什麼區別?
2. spring依賴注入
什麼是Spring的依賴注入?
有哪些不同型別的IOC(依賴注入)方式?
什麼是Spring beans?
一個 Spring Bean 定義 包含什麼?
解釋Spring支援的幾種bean的作用域。
Spring框架中的單例bean是執行緒安全的嗎?
解釋Spring框架中bean的生命週期
哪些是重要的bean生命週期方法? 你能過載它們嗎?
什麼是bean裝配?
什麼是bean的自動裝配?
解釋不同方式的自動裝配 。
自動裝配有哪些侷限性 ?
3. spring 註解
怎樣開啟註解裝配?
談談@Required、 @Autowired、 @Qualifier註解。
4, spring 資料訪問
在Spring框架中如何更有效地使用JDBC?
使用Spring通過什麼方式訪問Hibernate?
Spring框架的事務管理有哪些優點?
5. Spring面向切面程式設計(AOP)
解釋AOP
Aspect 切面
在Spring AOP 中,關注點和橫切關注的區別是什麼?
通知
有幾種不同型別的自動代理?
什麼是織入。什麼是織入應用的不同點?
6. springMVC
什麼是Spring的MVC框架?
DispatcherServlet
WebApplicationContext
什麼是Spring MVC框架的控制器?
@Controller 註解
@RequestMapping 註解
JavaWeb
servlet與Tomcat
Servlet生命週期
forward和redirect的區別
tomcat容器是如何建立servlet類例項?用到了什麼原理?
什麼是cookie?Session和cookie有什麼區別?
Servlet安全性問題
Tomcat 有哪幾種Connector 執行模式(優化)?
JSP
jsp靜態包含和動態包含的區別
jsp有哪些內建物件?作用分別是什麼?
jsp和servlet的區別、共同點、各自應用的範圍?
寫出5種JSTL常用標籤
JSP是如何被執行的?執行效率比SERVLET低嗎?
說出Servlet和CGI的區別?
簡述JSP的設計模式。
最後
當然還有一些其他的,例如 redis,訊息佇列以及一些情景題,篇幅較長就不一一列出。這套完整的面試完檔我會打包在一起放送給大家。
有需要面試資料以的朋友們可以關注我,加群956058372獲取。