Java面試題(一)java
一、面向對象的特徵有哪些方面?面試
二、訪問修飾符 public,private,protected,以及不寫(默認)時的區別?正則表達式
三、String 是最基本的數據類型嗎?sql
四、float f=3.4;是否正確?數據庫
五、short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?編程
六、Java 有沒有 goto?設計模式
七、int 和 Integer 有什麼區別?數組
八、&和&&的區別?緩存
九、解釋內存中的棧(stack)、堆(heap)和方法區(method area)的用法。安全
十、Math.round(11.5) 等於多少?Math.round(-11.5)等於多少?
十一、switch 是否能做用在 byte 上,是否能做用在 long 上,是否能做用在 String 上?
十二、用最有效率的方法計算 2 乘以 8?
1三、數組有沒有 length()方法?String 有沒有 length()方法?
1四、在 Java 中,如何跳出當前的多重嵌套循環?
1五、構造器(constructor)是否可被重寫(override)?
1六、兩個對象值相同(x.equals(y) == true),但卻可有不一樣的 hashcode,這句話對不對?
1七、是否能夠繼承 String 類?
1八、當一個對象被看成參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏究竟是值傳遞仍是引用傳遞?
1九、String 和 StringBuilder、StringBuffer 的區別?
20、重載(Overload)和重寫(Override)的區別。重載的方法可否根據返回類型進行區分?
2一、描述一下 JVM 加載 class 文件的原理機制?
2二、char 型變量中能不能存貯一箇中文漢字,爲何?
2三、抽象類(abstract class)和接口(interface)有什麼異同?
2四、靜態嵌套類(Static Nested Class)和內部類(Inner Class)的不一樣?
2五、Java 中會存在內存泄漏嗎,請簡單描述。
2六、抽象的(abstract)方法是否可同時是靜態的(static),是否可同時是本地方法(native),是否可同時被 synchronized 修飾?
2七、闡述靜態變量和實例變量的區別。
2八、是否能夠從一個靜態(static)方法內部發出對非靜態(non-static)方法的調用?
2九、如何實現對象克隆?
30、GC 是什麼?爲何要有 GC?
3一、String s = new String(「xyz」);建立了幾個字符串對象?
32 、 接 口 是 否 可 繼 承 ( extends ) 接 口 ?抽 象 類 是 否 可 實 現(implements)接口?抽象類是否可繼承具體類(concrete class)?
3三、一個」.java」源文件中是否能夠包含多個類(不是內部類)?有什麼限制?
3四、Anonymous Inner Class(匿名內部類)是否能夠繼承其它類?是否能夠實現接口?
3五、內部類能夠引用它的包含類(外部類)的成員嗎?有沒有什麼限制?
3六、Java 中的 final 關鍵字有哪些用法?
3七、指出下面程序的運行結果
3八、數據類型之間的轉換:
3九、如何實現字符串的反轉及替換?
40、怎樣將 GB2312 編碼的字符串轉換爲 ISO-8859-1 編碼的字符串?
4一、日期和時間:
4二、打印昨天的當前時刻。
4三、比較一下 Java 和 JavaSciprt。
4四、何時用斷言(assert)?
4五、Error 和 Exception 有什麼區別?
4六、try{}裏有一個 return 語句,那麼緊跟在這個 try 後的 finally{}裏的代碼會不會被執行,何時被執行,在 return 前仍是後?
4七、Java 語言如何進行異常處理,關鍵字:throws、throw、try、catch、finally 分別如何使用?
4八、運行時異常與受檢異常有何異同?
4九、列出一些你常見的運行時異常?
50、闡述 final、finally、finalize 的區別。
5一、類 ExampleA 繼承 Exception,類 ExampleB 繼承 ExampleA。
5二、List、Set、Map 是否繼承自 Collection 接口?
5三、闡述 ArrayList、Vector、LinkedList 的存儲性能和特性。
5四、Collection 和 Collections 的區別?
5五、List、Map、Set 三個接口存取元素時,各有什麼特色?
5六、TreeMap 和 TreeSet 在排序時如何比較元素?Collections 工具類中的 sort()方法如何比較元素?
5七、Thread 類的 sleep()方法和對象的 wait()方法均可以讓線程暫停執行,它們有什麼區別?
5八、線程的 sleep()方法和 yield()方法有什麼區別?
5九、當一個線程進入一個對象的 synchronized 方法 A 以後,其它線程是否可進入此對象 synchronized 方法 B?
60、請說出與線程同步以及線程調度相關的方法。
6一、編寫多線程程序有幾種實現方式?
6二、synchronized 關鍵字的用法?
6三、舉例說明同步和異步。
6四、啓動一個線程是調用 run()仍是 start()方法?
6五、什麼是線程池(thread pool)?
6六、線程的基本狀態以及狀態之間的關係?
6七、簡述 synchronized 和 java.util.concurrent.locks.Lock 的異同?
6八、Java 中如何實現序列化,有什麼意義?
6九、Java 中有幾種類型的流?
70、寫一個方法,輸入一個文件名和一個字符串,統計這個字符串在這個文件中出現的次數。
7一、如何用 Java 代碼列出一個目錄下全部的文件?
7二、用 Java 的套接字編程實現一個多線程的回顯(echo)服務器。
7三、XML 文檔定義有幾種形式?它們之間有何本質區別?解析 XML文檔有哪幾種方式?
7四、你在項目中哪些地方用到了 XML?
7五、闡述 JDBC 操做數據庫的步驟。
7六、Statement 和 PreparedStatement 有什麼區別?哪一個性能更好?
7七、使用 JDBC 操做數據庫時,如何提高讀取數據的性能?如何提高更新數據的性能?
7八、在進行數據庫編程時,鏈接池有什麼做用?
7九、什麼是 DAO 模式?
80、事務的 ACID 是指什麼?
8二、JDBC 可否處理 Blob 和 Clob?
8三、簡述正則表達式及其用途。
8四、Java 中是如何支持正則表達式操做的?
8五、得到一個類的類對象有哪些方式?
8八、如何經過反射調用對象的方法?
90、簡述一下你瞭解的設計模式。
9一、用 Java 寫一個單例類。
9二、什麼是 UML?
9三、UML 中有哪些經常使用的圖?
9五、用 Java 寫一個折半查找。
Java 面試題(二)
一、Java 中能建立 volatile 數組嗎?
二、volatile 能使得一個非原子操做變成原子操做嗎?
三、volatile 修飾符的有過什麼實踐?
四、volatile 類型變量提供什麼保證?
五、10 個線程和 2 個線程的同步代碼,哪一個更容易寫?
六、你是如何調用 wait()方法的?使用 if 塊仍是循環?爲何?
八、什麼是 Busy spin?咱們爲何要使用它?
九、Java 中怎麼獲取一份線程 dump 文件?
十、Swing 是線程安全的?
十一、什麼是線程局部變量?
十二、用 wait-notify 寫一段代碼來解決生產者-消費者問題?
1三、用 Java 寫一個線程安全的單例模式(Singleton)?
1四、Java 中 sleep 方法和 wait 方法的區別?
1五、什麼是不可變對象(immutable object)?Java 中怎麼建立一個不可變對象?
1六、咱們能建立一個包含可變對象的不可變對象嗎?
1七、Java 中應該使用什麼數據類型來表明價格?
1八、怎麼將 byte 轉換爲 String?
1九、Java 中怎樣將 bytes 轉換爲 long 類型?
20、咱們能將 int 強制轉換爲 byte 類型的變量嗎?若是該值大於byte 類型的範圍,將會出現什麼現象?
2一、存在兩個類,B 繼承 A ,C 繼承 B,咱們能將 B 轉換爲 C 麼?如 C = (C) B;
2二、哪一個類包含 clone 方法?是 Cloneable 仍是 Object?
2三、Java 中 ++ 操做符是線程安全的嗎?
2三、不是線程安全的操做。它涉及到多個指令,如讀取變量值,增長,而後存儲回內存,這個過程可能會出現多個線程交差。
2四、a = a + b 與 a += b 的區別
2五、我能在不進行強制轉換的狀況下將一個 double 值賦值給 long類型的變量嗎?
2六、3*0.1 == 0.3 將會返回什麼?true 仍是 false?
2七、int 和 Integer 哪一個會佔用更多的內存?
2八、爲何 Java 中的 String 是不可變的(Immutable)?
3一、64 位 JVM 中,int 的長度是多數?
3二、Serial 與 Parallel GC 之間的不一樣之處?
3三、32 位和 64 位的 JVM,int 類型變量的長度是多數?
3四、Java 中 WeakReference 與 SoftReference 的區別?
3五、WeakHashMap 是怎麼工做的?
3六、JVM 選項 -XX:+UseCompressedOops 有什麼做用?爲何要使用?
3七、怎樣經過 Java 程序來判斷 JVM 是 32 位 仍是 64 位?
3八、32 位 JVM 和 64 位 JVM 的最大堆內存分別是多數?
3九、JRE、JDK、JVM 及 JIT 之間有什麼不一樣?
40、解釋 Java 堆空間及 GC?
4一、你能保證 GC 執行嗎?
4二、怎麼獲取 Java 程序使用的內存?堆使用的百分比?
4三、Java 中堆和棧有什麼區別?
4四、「a==b」和」a.equals(b)」有什麼區別?
4五、a.hashCode() 有什麼用?與 a.equals(b) 有什麼關係?
4六、final、finalize 和 finally 的不一樣之處?
4七、Java 中的編譯期常量是什麼?使用它又什麼風險?
4八、List、Set、Map 和 Queue 之間的區別(答案)
4九、poll() 方法和 remove() 方法的區別?
50、Java 中 LinkedHashMap 和 PriorityQueue 的區別是什麼?
5一、ArrayList 與 LinkedList 的不區別?
5二、用哪兩種方式來實現集合的排序?
5三、Java 中怎麼打印數組?
5四、Java 中的 LinkedList 是單向鏈表仍是雙向鏈表?
5五、Java 中的 TreeMap 是採用什麼樹實現的?(答案)
5六、Hashtable 與 HashMap 有什麼不一樣之處?
5七、Java 中的 HashSet,內部是如何工做的?
5八、寫一段代碼在遍歷 ArrayList 時移除一個元素?
5九、咱們能本身寫一個容器類,而後使用 for-each 循環碼?
60、ArrayList 和 HashMap 的默認大小是多數?
6一、有沒有可能兩個不相等的對象有有相同的 hashcode?
6二、兩個相同的對象會有不一樣的的 hash code 嗎?
6三、咱們能夠在 hashcode() 中使用隨機數字嗎?
6四、Java 中,Comparator 與 Comparable 有什麼不一樣?
6六、在我 Java 程序中,我有三個 socket,我須要多少個線程來處理?
6七、Java 中怎麼建立 ByteBuffer?
6八、Java 中,怎麼讀寫 ByteBuffer ?
6九、Java 採用的是大端仍是小端?
70、ByteBuffer 中的字節序是什麼?
7一、Java 中,直接緩衝區與非直接緩衝器有什麼區別?
7二、Java 中的內存映射緩存區是什麼?
7三、socket 選項 TCP NO DELAY 是指什麼?
7四、TCP 協議與 UDP 協議有什麼區別?
7五、Java 中,ByteBuffer 與 StringBuffer 有什麼區別?(答案)
7六、Java 中,編寫多線程程序的時候你會遵循哪些最佳實踐?
7七、說出幾點 Java 中使用 Collections 的最佳實踐
7八、說出至少 5 點在 Java 中使用線程的最佳實踐。
7九、說出 5 條 IO 的最佳實踐(答案)
80、列出 5 個應該遵循的 JDBC 最佳實踐
8一、說出幾條 Java 中方法重載的最佳實踐?
8二、在多線程環境下,SimpleDateFormat 是線程安全的嗎?
8三、Java 中如何格式化一個日期?如格式化爲 ddMMyyyy 的形式?
8四、Java 中,怎麼在格式化的日期中顯示時區?
8五、Java 中 java.util.Date 與 java.sql.Date 有什麼區別?
8六、Java 中,如何計算兩個日期之間的差距?
8七、Java 中,如何將字符串 YYYYMMDD 轉換爲日期?
8九、如何測試靜態方法?(答案)
90、怎麼利用 JUnit 來測試一個方法的異常?
9一、你使用過哪一個單元測試庫來測試你的 Java 程序?
9二、@Before 和 @BeforeClass 有什麼區別?
9三、怎麼檢查一個字符串只包含數字?解決方案
9四、Java 中如何利用泛型寫一個 LRU 緩存?
9五、寫一段 Java 程序將 byte 轉換爲 long?
9六、在不使用 StringBuffer 的前提下,怎麼反轉一個字符串?
9七、Java 中,怎麼獲取一個文件中單詞出現的最高頻率?
9八、如何檢查出兩個給定的字符串是反序的?
9九、Java 中,怎麼打印出一個字符串的全部排列?
100、Java 中,怎樣才能打印出數組中的重複元素?
10一、Java 中如何將字符串轉換爲整數?
10二、在沒有使用臨時變量的狀況如何交換兩個整數變量的值?
10三、接口是什麼?爲何要使用接口而不是直接使用具體類?
10四、Java 中,抽象類與接口之間有什麼不一樣?
10五、除了單例模式,你在生產環境中還用過什麼設計模式?
10六、你能解釋一下里氏替換原則嗎?
10七、什麼狀況下會違反迪米特法則?爲何會有這個問題?
10八、適配器模式是什麼?何時使用?
10九、什麼是「依賴注入」和「控制反轉」?爲何有人使用?
1十、抽象類是什麼?它與接口有什麼區別?你爲何要使用過抽象類?
1十一、構造器注入和 setter 依賴注入,那種方式更好?
1十二、依賴注入和工程模式之間有什麼不一樣?
11三、適配器模式和裝飾器模式有什麼區別?
11四、適配器模式和代理模式以前有什麼不一樣?
11五、什麼是模板方法模式?
11六、何時使用訪問者模式?
11七、何時使用組合模式?
11八、繼承和組合之間有什麼不一樣?
11九、描述 Java 中的重載和重寫?
120、Java 中,嵌套公共靜態類與頂級類有什麼不一樣?
12一、 OOP 中的 組合、聚合和關聯有什麼區別?
12二、給我一個符合開閉原則的設計模式的例子?
12三、抽象工廠模式和原型模式之間的區別?
12五、嵌套靜態類與頂級類有什麼區別?
12六、你能寫出一個正則表達式來判斷一個字符串是不是一個數字嗎?
12七、Java 中,受檢查異常 和 不受檢查異常的區別?
12八、Java 中,throw 和 throws 有什麼區別
12九、Java 中,Serializable 與 Externalizable 的區別?
130、Java 中,DOM 和 SAX 解析器有什麼不一樣?
13一、說出 JDK 1.7 中的三個新特性?
13二、說出 5 個 JDK 1.8 引入的新特性?
13三、Java 中,Maven 和 ANT 有什麼區別?