標籤:
為了找到一份好的java工作,網上找來一份java面試題,對自己掌握的知識進行查缺補漏
2015-8-20 begin
1.編寫程式,完成檔案複製功能
public static void copyFile(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("檔案:"+srcFile+"不存在"); } if(!destFile.exists()){ throw new IllegalArgumentException(destFile+"不是檔案"); } FileInputStream in = new FileInputStream(srcFile); FileOutputStream out = new FileOutputStream(destFile); byte[] buf = new byte[8 * 1024]; int bytes = 0; while((bytes = in.read(buf , 0 , buf.length))!= -1){ out.write(buf,0,bytes); out.flush(); } out.close(); in.close(); } /* * 檔案 */ public static void copyFileByBuffer(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("檔案:"+srcFile+"不存在"); } if(!destFile.exists()){ throw new IllegalArgumentException(destFile+"不是檔案"); } BufferedInputStream bis = new BufferedInputStream( new FileInputStream(srcFile)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destFile)); int b; while((b = bis.read())!=-1){ bos.write(b); bos.flush(); } bis.close(); bos.close(); } /* * 單位元組,不帶緩衝進行檔案拷貝 */ public static void copyFileByByte(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("檔案:"+srcFile+"不存在"); } if(!destFile.exists()){ throw new IllegalArgumentException(destFile+"不是檔案"); } FileInputStream in = new FileInputStream(srcFile); FileOutputStream out = new FileOutputStream(destFile); int b; while((b = in.read()) != -1){ out.write(b); out.flush(); } in.close(); out.close(); }
2.Servlet建立過程及生命週期Servlet 在容器中運行時,其執行個體的建立及銷毀等是由容器進行控制。
建立方法有兩種:
1.用戶端請求對應的servlet,建立servlet
2.根據web.xml中設定,建立。
1.建立servlet執行個體。
2.調用init方法對servlet初始化
3.根據用戶端http請求,調用doxxx()方法
4.調用servlet的destory()方法銷毀
3用sql語句分頁:
select Top 頁大小from 表名where id NOT IN ( select Top 頁大小 *(頁數) from 表名 order by id)order by id
hibernate實現分頁更加方便
queryObject.setFirstResult((pageNo - 1) *pageSize);queryObject.setMaxResult(pageSize);
4.list.map.set的儲存特點?
list是有特定順序的排列,可以有重複數值
set是無序的,不可以有重複數值
map儲存方式為key-value方式
網上的答案:
List 以特定次序來持有元素,可有重複元素.
Set 無法擁有重複元素,內部排序.
Map 儲存key-value值,value可多值
有關於儲存結構的另外問題:
1.arraylist和vector的區別?
同步性:arrayList線程是不安全的,不同步的,vector是線程是安全的,但是不同步。
資料增長:當資料增長時,vector按預設增長的一倍,而arrayList是原來的一半。
2.說出ArrayList,Vector, LinkedList的儲存效能和特性?
?? 網上答案[暫未不理解]??
ArrayList 採用的是數組形式來儲存對象的,這種方式將對象放在連續的位置中,所以最大的缺點就是插入刪除時非常麻煩 LinkedList 採用的將對象存放在獨立的空間中,而且在每個空間中還儲存下一個連結的索引 但是缺點就是尋找非常麻煩 要叢第一個索引開始
ArrayList和Vector都是用數組方式儲存資料,此數組元素數要大於實際的儲存空間以便進行元素增加和插入操作,他們都允許直接用序號索引元素,但是插入資料元素涉及到元素移動等記憶體操作,所以索引資料快而插入資料慢.
Vector使用了sychronized方法(安全執行緒),所以在效能上比ArrayList要差些.
LinkedList使用雙向鏈表方式儲存資料,按序號索引資料需要前向或後向遍曆資料,所以索引資料慢,是插入資料時只需要記錄前後項即可,所以插入的速度快.
5.final,finally,finaliz的區別
網上答案:
final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲 明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改 被聲明為final的方法也同樣只能使用,不能重載。
finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常 ,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。
finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 ;finalize() 方法以整理系統資源或者執行其他清理工作 finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
----2015-8-20--end
java面試題筆記