天天看點

面試官常問的 20 道 Java 題目(附答案)

1. 以下代碼的輸出結果是(A)

int i =3;

i = i++;

System.out.println(i);

A .3 B.4 C.5

2. Math.round(11.5)等于多少?Math.round(-11.5)等于多少?

Math.round(11.5)傳回(long)12,Math.round(-11.5)傳回(long)-11;

3. Collection 和 Collections的差別。

Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集合類的一個幫助類,他提供一系列靜态方法實作對各種集合的搜尋、排序、線程安全化等操作。

4. java中實作多态的機制是什麼?

方法的重寫Overriding和重載Overloading是Java多态性的不同表現。重寫Overriding是父類與子類之間多态性的一種表現,重載Overloading是一個類中多态性的一種表現。

5. java中向上轉型、向下轉型是什麼?

向上轉型:子類引用的對象轉換為父類類型稱為向上轉型。通俗地說就是是将子類對象轉為父類對象。此處父類對象可以是接口。

向下轉型:父類引用的對象轉換為子類類型成為向下轉型

6. 多線程建立有幾種方式?

三種,分别是:繼承Thread類;實作Runnable接口;實作Callable接口。

7. GC是什麼?為什麼要有GC?

GC是垃圾收集器。Java 程式員不用擔心記憶體管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

8. thorw與thows的差別?

throw抛出的是異常對象;throws抛出的是類,如果有多個類則使用逗号間隔

throw用于代碼塊或方法體;throws隻能用于方法參數清單後邊,不能用于代碼塊

如果throw抛出的異常是運作時異常,則可以不使用throws;否則必須顯示處理:try-catch或者throws

9. ArrayList與 LinkedList 的差別?

最明顯的差別是ArrrayList 底層的資料結構是數組,支援随機通路,而 LinkedList 的底層資料結構書連結清單,不支援随機通路。使用下标通路一個元素,ArrayList 的時間複雜度是 O(1),而 LinkedList 是 O(n)。LinkedList是雙向連結清單

10. Class.forName()和ClassLoader的差別?

Class.forName()除了将類的.class檔案加載到jvm中之外,還會對類進行解釋,執行類中的static塊,還會執行給靜态變量指派的靜态方法。

ClassLoader隻将.class檔案加載到jvm中,不會執行static中的内容。

11. Log4j常用的四個日志級别是哪四個?優先級順序是怎樣的?

優先級從高到低分别是 ERROR、WARN、INFO、DEBUG。

12. 攔截器和過濾器有什麼差別?程式中是先執行攔截器還是過濾器?

①攔截器是基于java的反射機制的,而過濾器是基于函數回調。

②攔截器不依賴與servlet容器,過濾器依賴與servlet容器。

③攔截器隻能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。

④攔截器可以通路action上下文、值棧裡的對象,而過濾器不能通路。

⑤在action的生命周期中,攔截器可以多次被調用,而過濾器隻能在容器初始化時被調用一次。

⑥攔截器可以擷取IOC容器中的各個bean,而過濾器就不行,這點很重要,在攔截器裡注入一個service,可以調用業務邏輯。

程式中先執行過濾器。

13. 請描述Mybatis結果集中 ResultMap 和ResultType的差別。

resultType和resultMap功能類似 ,都是傳回對象資訊 ,但是resultMap要更強大一些 ,可自定義。因為resultMap要配置一下,表和類的一一對應關系,是以說就算你的字段名和你的實體類的屬性名不一樣也沒關系,都會給你映射出來,但是,resultType就比較雞肋了,必須字段名一樣,比如說 cId和c_id 這種的都不能映射 。

14. Java中 @PostConstruct和@PreDestroy注解有什麼作用?

l 被@PostConstruct修飾的方法會在伺服器加載Servlet的時候運作,并且隻會被伺服器調用一次,類似于Serclet的inti()方法。被@PostConstruct修飾的方法會在構造函數之後,init()方法之前運作。

l 被@PreDestroy修飾的方法會在伺服器解除安裝Servlet的時候運作,并且隻會被伺服器調用一次,類似于Servlet的destroy()方法。被@PreDestroy修飾的方法會在destroy()方法之後運作,在Servlet被徹底解除安裝之前。

15. 編寫Webservice接口服務端(架構)有幾種方式?

Apache Axis1、Apache Axis2、Codehaus XFire、Apache CXF等

16. 常用的緩存架構有哪幾個?

Ehcache、Memcache、Redis

17. 如何在谷歌浏覽器中跟蹤調試頁面

浏覽器中打開開發者工具(F12)跟蹤調試。

Elemetts:跟蹤頁面DOM元素

Console:跟蹤控制台輸出

Network:跟蹤網絡請求

18. 簡述TCP三向交握的了解

第一次

第一次握手:建立連接配接時,用戶端發送syn包(syn=j)到伺服器,并進入SYN_SENT狀态,等待伺服器确認;SYN:同步序列編号(Synchronize Sequence Numbers)。

第二次

第二次握手:伺服器收到syn包,必須确認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(seq=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀态;

第三次

第三次握手:用戶端收到伺服器的SYN+ACK包,向伺服器發送确認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED(TCP連接配接成功)狀态,完成三次握手。

19. Linux下你常用的指令有哪些?

cd指令用來改變所在目錄。cd / 轉到根目錄中cd ~ 轉到使用者目錄下

ls指令用來檢視目錄的内容。

cp指令用來拷貝檔案cp <source filename> <target filename>

mv指令 mv t.txt Document 把檔案t.txt 移動到目錄Document中。

20. Nginx有什麼作用?

反向代理

負載均衡

動靜分離