1、面向對象的特征有哪些方面?
2、通路修飾符 public,private,protected,以及不寫(預設)時的差別?
3、String 是最基本的資料類型嗎?
4、float f=3.4;是否正确?
5、short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?
6、Java 有沒有 goto?
7、int 和 Integer 有什麼差別?
8、&和&&的差別?
9、解釋記憶體中的棧(stack)、堆(heap)和方法區(method area)的用法。
10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
11、switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
12、用最有效率的方法計算 2 乘以 8?
13、數組有沒有 length()方法?String 有沒有 length()方法?
14、在 Java 中,如何跳出目前的多重嵌套循環?
15、構造器(constructor)是否可被重寫(override)?
16、兩個對象值相同(x.equals(y) == true),但卻可有不同的 hashcode,這句話對不對?
17、是否可以繼承 String 類?
18、當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,并可傳回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞?
19、String 和 StringBuilder、StringBuffer 的差別?
20、重載(Overload)和重寫(Override)的差別。重載的方法能否根據傳回類型進行區分?
21、描述一下 JVM 加載 class 檔案的原理機制?
22、char 型變量中能不能存貯一個中文漢字,為什麼?
23、抽象類(abstract class)和接口(interface)有什麼異同?
24、靜态嵌套類(Static Nested Class)和内部類(Inner Class)的不同?
25、Java 中會存在記憶體洩漏嗎,請簡單描述。
26、抽象的(abstract)方法是否可同時是靜态的(static),是否可同時是本地方法(native),是否可同時被 synchronized 修飾?
27、闡述靜态變量和執行個體變量的差別。
28、是否可以從一個靜态(static)方法内部發出對非靜态(non-static)方法的調用?
29、如何實作對象克隆?
30、GC 是什麼?為什麼要有 GC?
31、String s = new String(“xyz”);建立了幾個字元串對象?
32 、 接 口 是 否 可 繼 承 ( extends ) 接 口 ?抽 象 類 是 否 可 實 現(implements)接口?抽象類是否可繼承具體類(concrete class)?
33、一個”.java”源檔案中是否可以包含多個類(不是内部類)?有什麼限制?
34、Anonymous Inner Class(匿名内部類)是否可以繼承其它類?是否可以實作接口?
35、内部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?
36、Java 中的 final 關鍵字有哪些用法?
37、指出下面程式的運作結果
38、資料類型之間的轉換:
39、如何實作字元串的反轉及替換?
40、怎樣将 GB2312 編碼的字元串轉換為 ISO-8859-1 編碼的字元串?
41、日期和時間:
42、列印昨天的目前時刻。
43、比較一下 Java 和 JavaSciprt。
44、什麼時候用斷言(assert)?
45、Error 和 Exception 有什麼差別?
46、try{}裡有一個 return 語句,那麼緊跟在這個 try 後的 finally{}裡的代碼會不會被執行,什麼時候被執行,在 return 前還是後?
47、Java 語言如何進行異常處理,關鍵字:throws、throw、try、catch、finally 分别如何使用?
48、運作時異常與受檢異常有何異同?
49、列出一些你常見的運作時異常?
50、闡述 final、finally、finalize 的差別。
51、類 ExampleA 繼承 Exception,類 ExampleB 繼承 ExampleA。
52、List、Set、Map 是否繼承自 Collection 接口?
53、闡述 ArrayList、Vector、LinkedList 的存儲性能和特性。
54、Collection 和 Collections 的差別?
55、List、Map、Set 三個接口存取元素時,各有什麼特點?
56、TreeMap 和 TreeSet 在排序時如何比較元素?Collections 工具類中的 sort()方法如何比較元素?
57、Thread 類的 sleep()方法和對象的 wait()方法都可以讓線程暫停執行,它們有什麼差別?
58、線程的 sleep()方法和 yield()方法有什麼差別?
59、當一個線程進入一個對象的 synchronized 方法 A 之後,其它線程是否可進入此對象 synchronized 方法 B?
60、請說出與線程同步以及線程排程相關的方法。
61、編寫多線程程式有幾種實作方式?
62、synchronized 關鍵字的用法?
63、舉例說明同步和異步。
64、啟動一個線程是調用 run()還是 start()方法?
65、什麼是線程池(thread pool)?
66、線程的基本狀态以及狀态之間的關系?
67、簡述 synchronized 和 java.util.concurrent.locks.Lock 的異同?
68、Java 中如何實作序列化,有什麼意義?
69、Java 中有幾種類型的流?
70、寫一個方法,輸入一個檔案名和一個字元串,統計這個字元串在這個檔案中出現的次數。
71、如何用 Java 代碼列出一個目錄下所有的檔案?
72、用 Java 的套接字程式設計實作一個多線程的回顯(echo)伺服器。
73、XML 文檔定義有幾種形式?它們之間有何本質差別?解析 XML文檔有哪幾種方式?
74、你在項目中哪些地方用到了 XML?
75、闡述 JDBC 操作資料庫的步驟。
76、Statement 和 PreparedStatement 有什麼差別?哪個性能更好?
77、使用 JDBC 操作資料庫時,如何提升讀取資料的性能?如何提升更新資料的性能?
78、在進行資料庫程式設計時,連接配接池有什麼作用?
79、什麼是 DAO 模式?
80、事務的 ACID 是指什麼?
82、JDBC 能否處理 Blob 和 Clob?
83、簡述正規表達式及其用途。
84、Java 中是如何支援正規表達式操作的?
85、獲得一個類的類對象有哪些方式?
88、如何通過反射調用對象的方法?
90、簡述一下你了解的設計模式。
91、用 Java 寫一個單例類。
92、什麼是 UML?
93、UML 中有哪些常用的圖?
95、用 Java 寫一個折半查找。
Java 面試題(二)
1、Java 中能建立 volatile 數組嗎?
2、volatile 能使得一個非原子操作變成原子操作嗎?
3、volatile 修飾符的有過什麼實踐?
4、volatile 類型變量提供什麼保證?
5、10 個線程和 2 個線程的同步代碼,哪個更容易寫?
6、你是如何調用 wait()方法的?使用 if 塊還是循環?為什麼?
8、什麼是 Busy spin?我們為什麼要使用它?
9、Java 中怎麼擷取一份線程 dump 檔案?
10、Swing 是線程安全的?
11、什麼是線程局部變量?
12、用 wait-notify 寫一段代碼來解決生産者-消費者問題?
13、用 Java 寫一個線程安全的單例模式(Singleton)?
14、Java 中 sleep 方法和 wait 方法的差別?
15、什麼是不可變對象(immutable object)?Java 中怎麼建立一個不可變對象?
16、我們能建立一個包含可變對象的不可變對象嗎?
17、Java 中應該使用什麼資料類型來代表價格?
18、怎麼将 byte 轉換為 String?
19、Java 中怎樣将 bytes 轉換為 long 類型?
20、我們能将 int 強制轉換為 byte 類型的變量嗎?如果該值大于byte 類型的範圍,将會出現什麼現象?
21、存在兩個類,B 繼承 A ,C 繼承 B,我們能将 B 轉換為 C 麼?如 C = (C) B;
22、哪個類包含 clone 方法?是 Cloneable 還是 Object?
23、Java 中 ++ 操作符是線程安全的嗎?
23、不是線程安全的操作。它涉及到多個指令,如讀取變量值,增加,然後存儲回記憶體,這個過程可能會出現多個線程交差。
24、a = a + b 與 a += b 的差別
25、我能在不進行強制轉換的情況下将一個 double 值指派給 long類型的變量嗎?
26、3*0.1 == 0.3 将會傳回什麼?true 還是 false?
27、int 和 Integer 哪個會占用更多的記憶體?
28、為什麼 Java 中的 String 是不可變的(Immutable)?
31、64 位 JVM 中,int 的長度是多數?
32、Serial 與 Parallel GC 之間的不同之處?
33、32 位和 64 位的 JVM,int 類型變量的長度是多數?
34、Java 中 WeakReference 與 SoftReference 的差別?
35、WeakHashMap 是怎麼工作的?
36、JVM 選項 -XX:+UseCompressedOops 有什麼作用?為什麼要使用?
37、怎樣通過 Java 程式來判斷 JVM 是 32 位 還是 64 位?
38、32 位 JVM 和 64 位 JVM 的最大堆記憶體分别是多數?
39、JRE、JDK、JVM 及 JIT 之間有什麼不同?
40、解釋 Java 堆空間及 GC?
41、你能保證 GC 執行嗎?
42、怎麼擷取 Java 程式使用的記憶體?堆使用的百分比?
43、Java 中堆和棧有什麼差別?
44、“a==b”和”a.equals(b)”有什麼差別?
45、a.hashCode() 有什麼用?與 a.equals(b) 有什麼關系?
46、final、finalize 和 finally 的不同之處?
47、Java 中的編譯期常量是什麼?使用它又什麼風險?
48、List、Set、Map 和 Queue 之間的差別(答案)
49、poll() 方法和 remove() 方法的差別?
50、Java 中 LinkedHashMap 和 PriorityQueue 的差別是什麼?
51、ArrayList 與 LinkedList 的不差別?
52、用哪兩種方式來實作集合的排序?
53、Java 中怎麼列印數組?
54、Java 中的 LinkedList 是單向連結清單還是雙向連結清單?
55、Java 中的 TreeMap 是采用什麼樹實作的?(答案)
56、Hashtable 與 HashMap 有什麼不同之處?
57、Java 中的 HashSet,内部是如何工作的?
58、寫一段代碼在周遊 ArrayList 時移除一個元素?
59、我們能自己寫一個容器類,然後使用 for-each 循環碼?
60、ArrayList 和 HashMap 的預設大小是多數?
61、有沒有可能兩個不相等的對象有有相同的 hashcode?
62、兩個相同的對象會有不同的的 hash code 嗎?
63、我們可以在 hashcode() 中使用随機數字嗎?
64、Java 中,Comparator 與 Comparable 有什麼不同?
66、在我 Java 程式中,我有三個 socket,我需要多少個線程來處理?
67、Java 中怎麼建立 ByteBuffer?
68、Java 中,怎麼讀寫 ByteBuffer ?
69、Java 采用的是大端還是小端?
70、ByteBuffer 中的位元組序是什麼?
71、Java 中,直接緩沖區與非直接緩沖器有什麼差別?
72、Java 中的記憶體映射緩存區是什麼?
73、socket 選項 TCP NO DELAY 是指什麼?
74、TCP 協定與 UDP 協定有什麼差別?
75、Java 中,ByteBuffer 與 StringBuffer 有什麼差別?(答案)
76、Java 中,編寫多線程程式的時候你會遵循哪些最佳實踐?
77、說出幾點 Java 中使用 Collections 的最佳實踐
78、說出至少 5 點在 Java 中使用線程的最佳實踐。
79、說出 5 條 IO 的最佳實踐(答案)
80、列出 5 個應該遵循的 JDBC 最佳實踐
81、說出幾條 Java 中方法重載的最佳實踐?
82、在多線程環境下,SimpleDateFormat 是線程安全的嗎?
83、Java 中如何格式化一個日期?如格式化為 ddMMyyyy 的形式?
84、Java 中,怎麼在格式化的日期中顯示時區?
85、Java 中 java.util.Date 與 java.sql.Date 有什麼差別?
86、Java 中,如何計算兩個日期之間的差距?
87、Java 中,如何将字元串 YYYYMMDD 轉換為日期?
89、如何測試靜态方法?(答案)
90、怎麼利用 JUnit 來測試一個方法的異常?
91、你使用過哪個單元測試庫來測試你的 Java 程式?
92、@Before 和 @BeforeClass 有什麼差別?
93、怎麼檢查一個字元串隻包含數字?解決方案
94、Java 中如何利用泛型寫一個 LRU 緩存?
95、寫一段 Java 程式将 byte 轉換為 long?
96、在不使用 StringBuffer 的前提下,怎麼反轉一個字元串?
97、Java 中,怎麼擷取一個檔案中單詞出現的最高頻率?
98、如何檢查出兩個給定的字元串是反序的?
99、Java 中,怎麼列印出一個字元串的所有排列?
100、Java 中,怎樣才能列印出數組中的重複元素?
101、Java 中如何将字元串轉換為整數?
102、在沒有使用臨時變量的情況如何交換兩個整數變量的值?
103、接口是什麼?為什麼要使用接口而不是直接使用具體類?
104、Java 中,抽象類與接口之間有什麼不同?
105、除了單例模式,你在生産環境中還用過什麼設計模式?
106、你能解釋一下裡氏替換原則嗎?
107、什麼情況下會違反迪米特法則?為什麼會有這個問題?
108、擴充卡模式是什麼?什麼時候使用?
109、什麼是“依賴注入”和“控制反轉”?為什麼有人使用?
110、抽象類是什麼?它與接口有什麼差別?你為什麼要使用過抽象類?
111、構造器注入和 setter 依賴注入,那種方式更好?
112、依賴注入和工程模式之間有什麼不同?
113、擴充卡模式和裝飾器模式有什麼差別?
114、擴充卡模式和代理模式之前有什麼不同?
115、什麼是模闆方法模式?
116、什麼時候使用通路者模式?
117、什麼時候使用組合模式?
118、繼承群組合之間有什麼不同?
119、描述 Java 中的重載和重寫?
120、Java 中,嵌套公共靜态類與頂級類有什麼不同?
121、 OOP 中的 組合、聚合和關聯有什麼差別?
122、給我一個符合開閉原則的設計模式的例子?
123、抽象工廠模式和原型模式之間的差別?
125、嵌套靜态類與頂級類有什麼差別?
126、你能寫出一個正規表達式來判斷一個字元串是否是一個數字嗎?
127、Java 中,受檢查異常 和 不受檢查異常的差別?
128、Java 中,throw 和 throws 有什麼差別
129、Java 中,Serializable 與 Externalizable 的差別?
130、Java 中,DOM 和 SAX 解析器有什麼不同?
131、說出 JDK 1.7 中的三個新特性?
132、說出 5 個 JDK 1.8 引入的新特性?
133、Java 中,Maven 和 ANT 有什麼差別?