問題一: list.map.set的存儲特點?
List以特定次序來持有元素,可有重復元素.
Set無法擁有重復元素內部排序.
Map保存key-value值,value可多值
問題二:final,finally,finalize的區別
final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改被聲明為final的方法也同樣只能使用,不能被重寫。
finally—再異常處理時提供finally塊來執行任何清除操作。如果拋出一個異常 ,那么相匹配的catch子句就會執行,然后控制就會進入finally塊(如果有的話)。
finalize—方法名。Java技術允許使用finalize方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋 ;finalize方法以整理系統資源或者執行其他清理工作finalize方法是在垃圾收集器刪除對象之前對這個對象調用的。
問題三:簡單介紹下java?Spring的AOP,IOC的講述對struts2的了解,1,2的比較xml的了解 J2ee的webserviced的協議?
Spring AOP:代理機制Spring提供的自動代理機制Spring的IoC來實組件之間的依賴關系注入,使控制層與業務實現分離,即客戶通過調用業務委托接口來調用具體的業務組件的實例,避免控制層與業務層的藕合帶來的維護或升級困難。由Spring為DAO生成代理對象來為DAO添加事務服務,由IoC容器DAO的代理實例注入到業務組件中業務組件通過DAO的委托接口調用DAO對象,使得上層組件不直接依賴于DAO的實現類,使得持久層更換或修改不影響上層組件。
問題四:數據庫里面游標,索引是怎么用的?在oracle數據庫中,用get和load方法這2個方法來查沒有的數據那么分別會反饋什么樣的結果?
declare cur cursor keyset for
get返回null,loadclassnotfoundException
問題五:概述反射和序列化
Reflection是Java被視為動態(或準動態)語言的一個關鍵性質。這個機制允許程序在運行時透過Reflection
APIs取得任何一個已知名稱的class的內部信息,包括其modifiers(諸如public,
static等等)、superclass(例如Object)、實現之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于運行時改變fields內容或喚起methods。本文借由實例,大面積示范Reflection
APIs。
序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸于網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements
Serializable只是為了標注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object
obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流
問題六:Servlet的生命周期分為3個階段:?和CGI的區別?
Servlet的生命周期主要由3個過程組成。
(1)init方法:服務器初始化servlet。
(2)service方法:初始化完畢,servlet對象調用該方法響應客戶的請求。
(3)destroy方法:調用該方法消滅servlet對象。
其中,init方法只在servlet第一次被請求加載的時候被調用一次,當有客戶再請求servlet服務時,web服務器將啟動一個新的線程,在該線程中,調用service方法響應客戶的請求。與cgi的區別在于servlet處于服務器進程中,它通過多線程方式運行其service方法,一個實例可以服務于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產生新的進程,服務完成后就銷毀,所以效率上低于servlet。
問題七:適配器模式與橋梁模式的區別
適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。又稱為轉換器模式、變壓器模式、包裝模式(把已有的一些類包裝起來,使之能有滿足需要的接口)。適配器模式的用意是將接口不同而功能相同或者相近的兩個接口加以轉換,包括適配器角色補充一些源角色沒有但目標接口需要的方法。就像生活中電器插頭是三相的,而電源插座是兩相的,這時需要一個三相變兩相的轉換器來滿足。比如,在JavaI/O庫中使用了適配器模式,象FileInputStream是一個適配器類,其繼承了InputStrem類型,同時持有一個對FileDiscriptor的引用。這是將一個FileDiscriptor對象適配成InputStrem類型的對象形式的適配器模式。StringReader是一個適配器類,其繼承了Reader類型,持有一個對String對象的引用。它將String的接口適配成Reader類型的接口。等等。
橋梁模式的用意是要把實現和它的接口分開,以便它們可以獨立地變化。橋梁模式并不是用來把一個已有的對象接到不相匹配的接口上的。當一個客戶端只知道一個特定的接口,但是又必須與具有不同接口的類打交道時,就應該使用橋梁模式。比如,JDBC驅動器就是一個橋梁模式的應用,使用驅動程序的應用系統就是抽象化角色,而驅動器本身扮演實現化角色。應用系統和JDBC驅動器是相對獨立的。應用系統動態地選擇一個合適的驅動器,然后通過驅動器向數據庫引擎發出指令就可以訪問數據庫中的數據。
工廠模式
工廠模式:工廠模式是一種經常被使用到的模式,根據工廠模式實現的類可以根據提供的數據生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類并且實現了相同的方法,但是這些方法針對不同的數據進行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實現了基類中的方法。然后需要定義一個工廠類,工廠類可以根據條件生成不同的子類實例。當得到子類的實例后,開發人員可以調用基類中的方法而不必考慮到底返回的是哪一個子類的實例。
問題八:抽象類能否被實例化 ?抽象類的作用是什么?
抽象類一般不能被實例化;抽象類通常不是由程序員定義的,而是由項目經理或模塊設計人設計抽象類的原因通常是為了規范方法名抽象類必須要繼承,不然沒法用,作為模塊設計者,可以把讓底層程序員直接用得方法直接調用,而一些需要讓程序員覆蓋后自己做得方法則定義稱抽象方法
問題九:newArrayList(10)含義
在內存中連續分配了用來存在Object對象的數組;
問題九:抽象類是否可以沒有抽象方法?為什么?
可以,在java中用abstract關鍵字來修飾一個類時,這個類叫做抽象類。
抽象類中不一定要包含abstract方法,但一個類中包含了abstract方法,則這個類必須聲明為abstract類。
問題十:ajax的工作原理?
Ajax基本上就是把JavaScript技術和XMLHttpRequest對象放在Web表單和服務器之間。當用戶填寫表單時,數據發送給一些JavaScript代碼而不是直接發送給服務器。相反,JavaScript代碼捕獲表單數據并向服務器發送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,JavaScript代碼在幕后發送請求,用戶甚至不知道請求的發出。更好的是,請求是異步發送的,就是說JavaScript代碼(和用戶)不用等待服務器的響應。因此用戶可以繼續輸入數據、滾動屏幕和使用應用程序。
然后,服務器將數據返回JavaScript代碼(仍然在Web表單中),后者決定如何處理這些數據。它可以迅速更新表單數據,讓人感覺應用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數據。JavaScript代碼甚至可以對收到的數據執行某種計算,再發送另一個請求,完全不需要用戶干預!這就是XMLHttpRequest的強大之處。它可以根據需要自行與服務器進行交互,用戶甚至可以完全不知道幕后發生的一切。結果就是類似于桌面應用程序的動態、快速響應、高交互性的體驗,但是背后又擁有互聯網的全部強大力量。
問題十一:Socket如何獲取本地ip地址?
public InetAddress getLocalAddress