歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java 面試題及答案

Java 面試題及答案

日期:2017/3/1 9:45:06   编辑:Linux編程

1.Java 八個基本數據類型

基本數據類型包括byte、int、char、long、float、double、boolean和short。

String 不是基本數據類型。

2.String 傳值是值傳遞。

例:

public static String change(String source) {
String source2 = source;
source2 += "im changed";
return source2;
}

String source = new String("hello");
public static void main(String[] args) throws ParseException {
change(source);
System.out.print(source);
}

輸出結果:hello

3.STRING與STRINGBUFFER的區別

JAVA平台提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數據。這個String類提供了數值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當你知道字符數據要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態構造字符數據。

另外StringBuilder 比 StringBuffer 要快,將StringBuilder的實例用於多個線程是不安全的。如果需要這樣的同步,則建議使用StringBuffer。[StringBuilder類可以用於在無需創建一個新的字符串對象情況下修改字符串。StringBuilder不是線程安全的,而StringBuffer是線程安全的,但其在單線程中的性能比StringBuffer高。

4.JAVA中的Collection FrameWork

Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap

5.try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後? 會執行,在return前執行。

1.無論try裡面有沒有return語句,finally語句一定都會執行。

2.如果finally中沒有return語句,try裡面有return,那麼在執行try中的return語句之前會先去執行finally中的代碼,再去執行try中的return語句;如果在finally中也包含return語句,將會直接返回,不再去執行try中的return語句。

6.forward 和redirect的區別

轉發是服務器行為,重定向是客戶端行為。

轉發過程:客戶浏覽器發送http請求----》web服務器接受此請求--》調用內部的一個方法在容器內部完成請求處理和轉發動作----》將目標資源 發送給客戶;在這裡,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客 戶浏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到服務器做了轉發的。轉發行為是浏覽器只做了一次訪問請求。

重定向過程:客戶浏覽器發送http請求----》web服務器接受後發送302狀態碼響應及對應新的location給客戶浏覽器--》客戶浏覽器發現 是302響應,則自動再發送一個新的http請求,請求url是新的location地址----》服務器根據此請求尋找資源並發送給客戶。在這裡location可以重定向到任意URL,既然是浏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶浏覽器路徑欄顯示的是其重定向的 路徑,客戶可以觀察到地址的變化的。重定向行為是浏覽器做了至少兩次的訪問請求的。

7.Java中的23種設計模式:
Factory(工廠模式), Builder(建造模式), Factory Method(工廠方法模式),
Prototype(原始模型模式),Singleton(單例模式), Facade(門面模式),
Adapter(適配器模式), Bridge(橋梁模式), Composite(合成模式),
Decorator(裝飾模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解釋器模式), Visitor(訪問者模式),
Iterator(迭代子模式), Mediator(調停者模式), Memento(備忘錄模式),
Observer(觀察者模式), State(狀態模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)

Copyright © Linux教程網 All Rights Reserved