1. 程式人生 > >JAVA工作面試記錄

JAVA工作面試記錄

第一部分:JAVA基礎相關

1.陣列有沒有length()這個方法? String有沒有length()這個方法?

陣列沒有length()這個方法,有length的屬性;

String有length()這個方法。

2.談談final, finally, finalize的區別?

final—修飾符(關鍵字)如果一個類被宣告為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被宣告為 abstract的,又被宣告為final的。將變數或方法宣告為final,可以保證它們在使用中不被改變。被宣告為final的變數必須在宣告時給定初值,而在以後的引用中只能讀取,不可修改。被宣告為final的方法也同樣只能使用,不能過載;

finally—再異常處理時提供 finally 塊來執行任何清除操作。如果丟擲一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話);

finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個物件沒有被引用時對這個物件呼叫的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除物件之前對這個物件呼叫的.

3.&和&&的區別?

&是位運算子。&&是布林邏輯運算子。

4.error和exception有什麼區別?

error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說記憶體溢位。不可能指望程式能處理這樣的情況;

exception 表示一種設計或實現問題。也就是說,它表示如果程式執行正常,從不會發生的情況。

5.abstract class和interface有什麼區別?

宣告方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要建立一個體現某些基本行為的類,併為該類宣告方法,但不能在該類中實現該類的情況。不能建立abstract 類的例項。然而可以建立一個變數,其型別是一個抽象類,並讓它指向具體子類的一個例項。不能有抽象建構函式或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法;

介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程式體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程式體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何物件上呼叫介面的方法。由於有抽象類,它允許使用介面名作為引用變數的型別。通常的動態聯編將生效。引用可以轉換到介面型別或從介面型別轉換,instanceof 運算子可以用來決定某物件的類是否實現了介面。

6.啟動一個執行緒是用run()還是start()?

啟動一個執行緒是呼叫start()方法,使執行緒所代表的虛擬處理機處於可執行狀態,這意味著它可以由JVM排程並執行。這並不意味著執行緒就會立即執行。run()方法可以產生必須退出的標誌來停止一個執行緒。

7.是否可以繼承String類?

String類是final類故不可以繼承。

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

會執行,在return前執行。

9.用最有效率的方法算出2乘以8等於幾?

2 << 3

10.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一個整數表示式。因此傳遞給 switch 和 case 語句的引數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。

第二部分:J2EE相關

1、列舉五種J2EE中技術

EJB、JNDI、JMS、JTA、Servlet

2、EJB與Java bean的優缺點對比

EJB是用於開發和部署多層結構的、分散式的、面向物件的Java應用系統的跨平臺的構件體系結構,EJB主要是具有可擴充套件性和互動性以及多使用者安全特性。

JavaBean是元件,是一種可在開發工具中視覺化操作的可複用的‘平臺獨立’的軟體構件

它們的區別在於EJB是跨平臺的構件,而JavaBean是平臺獨立的軟體構件。

3、Oracle的分割槽技術介紹

為了簡化資料庫大表的管理,oracle8推出了分割槽選項.分割槽將表分離在若干不同的表空間上,用分而治之的方法來支撐無限膨脹的大表,給大表在物理一級的可管理性.將大表分割成較小的分割槽可以改善表的維護.備份.恢復.事務及查詢效能.針對當前社保及電信行業的大量日常業務資料,可以推薦使用oracle8的該選項

4、Oracle有哪幾種索引?

邏輯上:
Single column 單行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based函式索引
Domain 域索引


物理上:
Partitioned 分割槽索引
NonPartitioned 非分割槽索引
B-tree:
Normal 正常型B樹
Rever Key 反轉型B樹
Bitmap 點陣圖索引


索引結構:
B-tree:
適合與大量的增、刪、改(OLTP);
不能用包含OR操作符的查詢;
適合高基數的列(唯一值多)
典型的樹狀結構;
每個結點都是資料塊;
大多都是物理上一層、兩層或三層不定,邏輯上三層;
葉子塊資料是排序的,從左向右遞增;
在分支塊和根塊中放的是索引的範圍;
Bitmap:
適合與決策支援系統;
做UPDATE代價非常高;
非常適合OR操作符的查詢;
基數比較少的時候才能建點陣圖索引;
樹型結構:
索引頭
開始ROWID,結束ROWID(先列出索引的最大範圍)
BITMAP
每一個BIT對應著一個ROWID,它的值是1還是0,如果是1,表示著BIT對應的ROWID有值;

B*tree索引的話通常在訪問小資料量的情況下比較適用,比如你訪問不超過表中資料的5%,當然這只是個相對的比率,適用於一般的情況。bitmap的話在資料倉庫中使用較多,用於低基數列,比如性別之類重複值很多的欄位,基數越小越好。