java面試題-線程-JC-垃圾回收等

java基礎
1、垃圾回收的優點和原理。
      Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃

而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由於有個垃圾回收機制,Java中的對

象不再有“作用域”的概念,只有對象的引用纔有“作用域”。垃圾回收可以有效的防止內存泄露,有效

的使用可以使用的內存。垃圾回收器通常是作爲一個單獨的低級別的線程運行,不可預知的情況下對內存

堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對

象或所有對象進行垃圾回收。


2、請說出你所知道的線程同步的方法。
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
      sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉

InterruptedException異常。
      notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一

個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。
      Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它

們競爭。


3、在java中一個類被聲明爲final類型,表示了什麼意思?
      表示該類不能被繼承,是頂級類。

4、 Error與Exception有什麼區別?
     Error表示系統級的錯誤和程序不必處理的異常,
     Exception表示需要捕捉或者需要程序進行處理的異常。


5、&和&&的區別。
     &是位運算符。&&是布爾邏輯運算符。


6、Collection 和 Collections的區別。
     Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
      Collection是個java.util下的接口,它是各種集合結構的父接口。 

7、 HashMap和Hashtable的區別。
    都屬於Map接口的類,實現了將惟一鍵映射到特定的值上。
     HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
     Hashtable 類似於 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因爲它是同步的。


8、GC是什麼? 爲什麼要有GC? .
     GC是垃圾收集器。Java 程序員不用擔心內存管理,因爲垃圾收集器會自動進行管理。要請求垃圾收

集,可以調用下面的方法之一:System.gc()
      Runtime.getRuntime().gc()

9、談談final, finally, finalize的區別。
       final—修飾符(關鍵字)如果一個類被聲明爲final,意味着它不能再派生出新的子類,不能作

爲父類被繼承。因此一個類不能既被聲明爲 abstract的,又被聲明爲final的。將變量或方法聲明爲

final,可以保證它們在使用中不被改變。被聲明爲final的變量必須在聲明時給定初值,而在以後的引用

中只能讀取,不可修改。被聲明爲final的方法也同樣只能使用,不能重載。
       finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配

的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。
      finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去

之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是

在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行

其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

 

10、String s = new String("xyz");創建了幾個String Object?
     兩個對象,一個是"xyz",一個是指向"xyz"的引用對象s。


11、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
     Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;


12、Java有沒有goto?
     Goto—java中的保留字,現在沒有在java中使用。


13、 sleep() 和 wait() 有什麼區別?
     sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿後,線程不一定立即恢復執行。

這是因爲在那個時刻,其它線程可能正在運行而且沒有被調度爲放棄執行,除非(a)"醒來"的線程具有更

高的優先級 (b)正在運行的線程因爲其它原因而阻塞。
    wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對

象進入等待狀態,直到被喚醒或等待時間到。
數組有沒有length()這個方法? String有沒有length()這個方法?
     在java裏面數組沒有length()這個方法,有length的屬性。String有有length()這個方法。在c#數組和string只有length屬性,沒有方法.


14、 error和exception有什麼區別?

  1   Error表示系統級的錯誤和程序不必處理的異常,
     Exception表示需要捕捉或者需要程序進行處理的異常。

  2   error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。
     exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。


15、List, Set, Map是否繼承自Collection接口?
      List,Set是 ,Map不是


16、是否可以繼承String類?
      String類是final類故不可以繼承。


17、 構造器Constructor是否可被override?
   不能重寫  Overriding,但可以被重載Overloading。


18、 try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被

執行,在return前還是後?
     會執行,在return前執行。


19、用最有效率的方法算出2乘以8等於幾?
    2 << 3


20、作用域public,private,protected,以及不寫時的區別
     區別如下:
    作用域當前類同一package 子孫類 其他package
     public        √             √                √            √
     protected   √            √                √            ×
      friendly     √             √               ×             ×
      private       √            ×              ×              ×
      不寫時默認爲friendly


21、 abstract class和interface有什麼區別?
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行

爲的類,併爲該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以

創建一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態

方法。Abstract 類的子類爲它們父類中的所有抽象方法提供實現,否則它們也是抽象類爲。取而代之,

在子類中實現該方法。知道其行爲的其它類可以在類中實現這些方法。
      接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣

的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變

量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(

即將程序體給予)所有這種接口的方法。然後,它可以在實現了該接口的類的任何對象上調用接口的方法

。由於有抽象類,它允許使用接口名作爲引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口

類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口

 

22、ArrayList和Vector的區別,HashMap和Hashtable的區別
     答:就ArrayList與Vector主要從二方面來說.
     一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
     二.數據增長:當需要增長時,Vector默認增長爲原來一培,而ArrayList卻是原來的一半
     就HashMap與HashTable主要從三方面來說。
     一.歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實


     二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步


     三.值:只有HashMap可以讓你將空值作爲一個表的條目的key或value

23、 char型變量中能不能存貯一箇中文漢字?爲什麼?
    是能夠定義成爲一箇中文的,因爲java中以unicode編碼,一個char佔16個字節,所以放一箇中文是沒問題的


24、 float型float f=3.4是否正確?
   答:不正確。精度不準確,應該用強制類型轉換,如下所示:float f=(float)3.4
STRING與STRINGBUFFER的區別。
    答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內容經常進行操

作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法.


25、 說出ArrayList,Vector, LinkedList的存儲性能和特性
      ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插

入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據

快而插入數據慢, Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而

LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或後向遍歷,但是插入數據時只需要記

錄本項的前後項即可,所以插入速度較快。
繼承時候類的執行順序問題,以下代碼顯示什麼結果。
父類:public class FatherClass {
      public FatherClass() {
      System.out.println("FatherClass Create"); }
       }
子類: import FatherClass;
public class ChildClass extends FatherClass {
      public ChildClass() {
      System.out.println("ChildClass Create"); }
      public static void main(String[] args) {
      FatherClass fc = new FatherClass();
      ChildClass cc = new ChildClass(); }
} //執行java ChildClass

jsp

1、jsp有哪些內置對象?作用分別是什麼?
      JSP共有以下9種基本內置組件(可與ASP的6種內部組件相對應):
      request 用戶端請求,此請求會包含來自GET/POST請求的參數
     response 網頁傳回用戶端的迴應
     pageContext 網頁的屬性是在這裏管理
     session 與請求有關的會話期
     application servlet 正在執行的內容
     out 用來傳送回應的輸出
     config servlet的構架部件
     page JSP網頁本身
      exception 針對錯誤網頁,未捕捉的例外
2.jsp有哪些動作?作用分別是什麼?
答:JSP共有以下6種基本動作
jsp:include:在頁面被請求的時候引入一個文件。
jsp:useBean:尋找或者實例化一個JavaBean。
jsp:setProperty:設置JavaBean的屬性。
jsp:getProperty:輸出某個JavaBean的屬性。
jsp:forward:把請求轉到一個新的頁面。
jsp:plugin:根據瀏覽器類型爲Java插件生成OBJECT或EMBED等標記
3.JSP中動態INCLUDE與靜態INCLUDE的區別?
    答:動態INCLUDE用jsp:include動作實現
     <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用於

包含動態頁面,並且可以帶參數
   靜態INCLUDE用include僞碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面
    <%@ include file="included.htm" %>
4.兩種跳轉方式分別是什麼?有什麼區別?
     有兩種,分別爲:
     <jsp:include page="included.jsp" flush="true">
     <jsp:forward page= "nextpage.jsp"/>
    前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完後還

會回來,相當於函數調用。並且可以帶參數.後者完全轉向新頁面,不會再回來。相當於go to 語句。
5.Class.forName的作用?
調用該訪問返回一個以字符串指定類名的類的對象。
 
6.Servlet
Servlet的生命週期是什麼?
     servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期

由javax.servlet.Servlet接口的init,service和destroy方法表達。
7.servlet會話跟蹤技術
    用戶認證,持久cookies,URL重寫,隱藏表單字段,會話交換和持久

8.XML
xml有哪些解析技術?區別是什麼?
     答:主要有DOM,SAX等
      DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構佔用

的內存較多,而且DOM必須在解析文件之前把整個文檔裝入內存,適合對XML的隨機訪問
      SAX:不同於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個

文件。當遇到像文件開頭,文檔結束,或者標籤開頭與標籤結束時,它會觸發一個事件,用戶通過在其回

調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問
9.項目中主要用到xml技術的哪些方面?如何實現的?
    答:用到了數據存貯,信息配置兩方面。在做數據交換平臺時,將不同數據源的數據組裝成XML文件,

然後將XML文件壓縮打包加密後通過網絡傳送給接收者,接收解密與解壓縮後再同XML文件中還原相關信息

進行處理。
    在做軟件配置時,利用XML可以很方便的進行,軟件的各種配置參數都存貯在XML文件中。
10.EJB

EJB與JAVA BEAN的區別?
    答:Java Bean 是可複用的組件,對Java Bean並沒有嚴格的規範,理論上講,任何一個Java類都可以

是一個Bean。但通常情況下,由於Java Bean是被容器所創建(如Tomcat)的,所以Java Bean應具有一個

無參的構造器,另外,通常Java Bean還要實現Serializable接口用於實現Bean的持久性。Java Bean實際

上相當於微軟COM模型中的本地進程內COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當

於DCOM,即分佈式組件。它是基於Java的遠程方法調用(RMI)技術的,所以EJB可以被遠程訪問(跨進程

、跨計算機)。但EJB必須被佈署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的

EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創建和管理。客戶通過容器

來訪問真正的EJB組件。
EJB容器提供的服務
    主要提供聲明週期管理、代碼產生、持續性管理、安全、事務管理、鎖和併發行管理等服務。
EJB的角色和三個對象
    EJB角色主要包括Bean開發者 應用組裝者 部署者 系統管理員 EJB容器提供者 EJB服務器提供者
    三個對象是Remote(Local)接口、Home(LocalHome)接口,Bean類
EJB 的幾種類型
    會話(Session)Bean ,實體(Entity)Bean 消息驅動的(Message Driven)Bean
     會話Bean又可分爲有狀態(Stateful)和無狀(Stateless)兩種
     實體Bean可分爲Bean管理的持續性(BMP)和容器管理的持續性(CMP)兩種
11.bean 實例的生命週期
    對於Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩衝池管理,而對於

Entity Bean和Statefull Session Bean存在Cache管理,通常包含創建實例,設置上下文、創建EJB

Object(create)、業務方法調用、remove等過程,對於存在緩衝池管理的Bean,在create之後實例並不

從內存清除,而是採用緩衝池調度機制不斷重用實例,而對於存在Cache管理的Bean則通過激活和去激活

機制保持Bean的狀態並限制內存中實例數量。

12.weblogic
如何設定的weblogic的熱啓動模式(開發模式)與產品發佈模式?
    可以在管理控制檯中修改對應服務器的啓動模式爲開發或產品模式之一。或者修改服務的啓動文件或

者commenv文件,增加
      set PRODUCTION_MODE=true
如何啓動服務時不需輸入用戶名與密碼?
     修改服務啓動文件,增加 WLS_USER和WLS_PW項。也可以在boot.properties文件中增加加密過的用

戶名和密碼.

在weblogic管理制臺中對一個應用域(或者說是一個網站,Domain)進行jms及ejb或連接池等相關信息進行

配置後,實際保存在什麼文件中?
     保存在此Domain的config.xml文件中,它是服務器的核心配置文件。
如何查看在weblogic中已經發布的EJB?
     可以使用管理控制檯,在它的Deployment中可以查看所有已發佈的EJB
說說weblogic中一個Domain的缺省目錄結構?比如要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏

覽器上就可打入http://主機:端口號//helloword.jsp就可以看到運行結果了? 又比如這其中用到了一個

13.自己寫的javaBean該如何辦?
     Domain目錄/服務器目錄/applications,將應用目錄放在此目錄下將可以作爲應用訪問,如果是Web

應用,應用目錄需要滿足Web應用目錄要求,jsp文件可以直接放在應用目錄中,Javabean需要放在應用目

錄的WEB-INF目錄的classes目錄中,設置服務器的缺省應用將可以實現在瀏覽器上無需輸入應用名。
在weblogic中發佈ejb需涉及到哪些配置文件
    不同類型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-

jar.xmlCMP實體Bean一般還需要weblogic-cmp-rdbms-jar.xml
EJB需直接實現它的業務接口或Home接口嗎,請簡述理由.
     遠程接口和Home接口不需要直接實現,他們的實現代碼是由服務器產生的,程序運行中對應實現類

會作爲對應接口類型的實例被使用。

JAVA華爲面試題
    JAVA方面:
1 面向對象的特徵有哪些方面  
2 String是最基本的數據類型嗎?
3 int 和 Integer 有什麼區別
4 String 和StringBuffer的區別
5運行時異常與一般異常有何異同?
6 說出一些常用的類,包,接口,請各舉5個
7 說出ArrayList,Vector, LinkedList的存儲性能和特性
8.設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序。
9. JSP的內置對象及方法。
10.用socket通訊寫出客戶端和服務器端的通訊,要求客戶發送數據後能夠回顯相同的數據。
11用socket通訊寫出客戶端和服務器端的通訊,要求客戶發送數據後能夠回顯相同的數據。
12.EJB是基於哪些技術實現的?並說出SessionBean和EntityBean的區別,StatefulBean和StatelessBean

的區別。
13.EJB包括(SessionBean,EntityBean)說出他們的生命週期,及如何管理事務的?
14.說出數據連接池的工作機制是什麼?
15同步和異步有和異同,在什麼情況下分別使用他們?舉例說明。
16應用服務器有那些?
17你所知道的集合類都有哪些?主要方法?
18給你一個:驅動程序A,數據源名稱爲B,用戶名稱爲C,密碼爲D,數據庫表爲T,請用JDBC檢索出表T的所有

數據。
19說出在JSP頁面裏是怎麼分頁的?
數據庫方面:
20.存儲過程和函數的區別
21事務是什麼?
22. 遊標的作用?如何知道遊標已經到了最後?
23.觸發器分爲事前觸發和事後觸發,這兩種觸發有和區別。語句級觸發和行級觸發有何區別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章