自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

J2EE筆試題目節(jié)選 Java基礎(chǔ)系列

開發(fā) 后端
本文收集了一些J2ee筆試部分題目,其中大部分為Java基礎(chǔ)類習(xí)題,包括了一些常見概念如匿名類,Overload和Override的區(qū)別等等。

1.MVC的各個部分都有那些技術(shù)來實現(xiàn)?如何實現(xiàn)?
答:MVC是Model-View-Controller的簡寫。"Model" 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過JavaBean,EJB組件實現(xiàn)), "View" 是應(yīng)用的表示面(由JSP頁面產(chǎn)生),"Controller" 是提供應(yīng)用的處理過程控制(一般是一個Servlet),通過這種設(shè)計模型把應(yīng)用邏輯,處理過程和顯示邏輯分成不同的組件實現(xiàn)。這些組件可以進(jìn)行交互和重用。

2.J2EE是什么?
答:Je22是Sun公司提出的多層(multi-diered),分布式(distributed),基于組件(component-base)的企業(yè)級應(yīng)用模型(enterpriese application model).在這樣的一個應(yīng)用系統(tǒng)中,可按照功能劃分為不同的組件,這些組件又可在不同計算機上,并且處于相應(yīng)的層次(tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業(yè)信息系統(tǒng)(EIS)層。

3.J2EE是技術(shù)還是平臺還是框架?
答:J2EE本身是一個標(biāo)準(zhǔn),一個為企業(yè)分布式應(yīng)用的開發(fā)提供的標(biāo)準(zhǔn)平臺。
J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術(shù)。

4.STRUTS的應(yīng)用(如STRUTS架構(gòu))
答:Struts是采用Java Servlet/JavaServer Pages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。 采用Struts能開發(fā)出基于MVC(Model-View-Controller)設(shè)計模式的應(yīng)用構(gòu)架。 Struts有如下的主要功能:
一.包含一個controller servlet,能將用戶的請求發(fā)送到相應(yīng)的Action對象。
二.JSP自由tag庫,并且在controller servlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。
三.提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。

5.WEB SERVICE名詞解釋。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。
答:Web ServiceWeb Service是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進(jìn)行互操作。
JAXP(Java API for XML Parsing) 定義了在Java中使用DOM, SAX, XSLT的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當(dāng)你需要改變具體的實現(xiàn)時候也不需要修改代碼。
JAXM(Java API for XML Messaging) 是為SOAP通信提供訪問方法和傳輸機制的API。
WSDL是一種 XML 格式,用于將網(wǎng)絡(luò)服務(wù)描述為一組端點,這些端點對包含面向文檔信息或面向過程信息的消息進(jìn)行操作。這種格式首先對操作和消息進(jìn)行抽象描述,然后將其綁定到具體的網(wǎng)絡(luò)協(xié)議和消息格式上以定義端點。相關(guān)的具體端點即組合成為抽象端點(服務(wù))。
SOAP即簡單對象訪問協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協(xié)議。
UDDI 的目的是為電子商務(wù)建立標(biāo)準(zhǔn);UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web Service注冊,以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標(biāo)準(zhǔn)。

6.C/S 與 B/S 區(qū)別:
答:有如下八個方面的不同:
(1)硬件環(huán)境不同:
C/S 一般建立在專用的網(wǎng)絡(luò)上, 小范圍里的網(wǎng)絡(luò)環(huán)境, 局域網(wǎng)之間再通過專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù).
B/S 建立在廣域網(wǎng)之上的, 不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例與電話上網(wǎng), 租用設(shè)備. 信息自己管理. 有比C/S更強的適應(yīng)范圍, 一般只要有操作系統(tǒng)和瀏覽器就行
(2)對安全要求不同
C/S 一般面向相對固定的用戶群, 對信息安全的控制能力很強. 一般高度機密的信息系統(tǒng)采用C/S 結(jié)構(gòu)適宜. 可以通過B/S發(fā)布部分可公開信息.
B/S 建立在廣域網(wǎng)之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。
(3)對程序架構(gòu)不同
C/S 程序可以更加注重流程, 可以對權(quán)限多層次校驗, 對系統(tǒng)運行速度可以較少考慮.
B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加優(yōu)化的基礎(chǔ)之上. 比C/S有更高的要求 B/S結(jié)構(gòu)的程序架構(gòu)是發(fā)展的趨勢, 從MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持網(wǎng)絡(luò)的構(gòu)件搭建的系統(tǒng). SUN 和IBM推的JavaBean 構(gòu)件技術(shù)等,使 B/S更加成熟.
(4)軟件重用不同
C/S 程序可以不可避免的整體性考慮, 構(gòu)件的重用性不如在B/S要求下的構(gòu)件的重用性好.
B/S 對的多重結(jié)構(gòu),要求構(gòu)件相對獨立的功能. 能夠相對較好的重用.就入買來的餐桌可以再利用,而不是做在墻上的石頭桌子
(5)系統(tǒng)維護(hù)不同
C/S 程序由于整體性, 必須整體考察, 處理出現(xiàn)的問題以及系統(tǒng)升級. 升級難. 可能是再做一個全新的系統(tǒng)
B/S 構(gòu)件組成,方面構(gòu)件個別的更換,實現(xiàn)系統(tǒng)的無縫升級. 系統(tǒng)維護(hù)開銷減到最小.用戶從網(wǎng)上自己下載安裝就可以實現(xiàn)升級.
(6)處理問題不同
C/S 程序可以處理用戶面固定, 并且在相同區(qū)域, 安全要求高需求, 與操作系統(tǒng)相關(guān). 應(yīng)該都是相同的系統(tǒng)
B/S 建立在廣域網(wǎng)上, 面向不同的用戶群, 分散地域, 這是C/S無法作到的. 與操作系統(tǒng)平臺關(guān)系最小.
(7)用戶接口不同
C/S 多是建立的Window平臺上,表現(xiàn)方法有限,對程序員普遍要求較高
B/S 建立在瀏覽器上, 有更加豐富和生動的表現(xiàn)方式與用戶交流. 并且大部分難度減低,減低開發(fā)成本.
(8)信息流不同
C/S 程序一般是典型的中央集權(quán)的機械式處理, 交互性相對低
B/S 信息流向可變化, B-B B-C B-G等信息、流向的變化, 更像交易中心。
7.什么是JNDI
答:(Java Naming & Directory Interface)JAVA命名目錄服務(wù)。主要提供的功能是:提供一個目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。

8.什么是JMS
答:(Java Message Service)JAVA消息服務(wù)。主要實現(xiàn)各個應(yīng)用程序之間的通訊。包括點對點和廣播

9.什么是JTA
答:(Java Transaction API)JAVA事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。

10.開發(fā)中都用到了那些設(shè)計模式?用在什么場合?
答:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復(fù)相同的工作。主要用到了MVC的設(shè)計模式。用來開發(fā)JSP/Servlet或者J2EE的相關(guān)應(yīng)用。簡單工廠模式等。

11.、j2ee常用的設(shè)計模式?說明工廠模式。
答:Java中的23種設(shè)計模式:
Factory(工廠模式),      Builder(建造模式),       Factory Method(工廠方法模式),
Prototype(原始模型模式),Singleton(單例模式),    Facade(門面模式),
Adapter(適配器模式),    Bridge(橋梁模式),        Composite(合成模式),
Decorator(裝飾模式),    Flyweight(享元模式),     Proxy(代理模式),
Command(命令模式),      Interpreter(解釋器模式), Visitor(訪問者模式),
Iterator(迭代子模式),   Mediator(調(diào)停者模式),    Memento(備忘錄模式),
Observer(觀察者模式),   State(狀態(tài)模式),         Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(責(zé)任鏈模式)
工廠模式:工廠模式是一種經(jīng)常被使用到的模式,根據(jù)工廠模式實現(xiàn)的類可以根據(jù)提供的數(shù)據(jù)生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類并且實現(xiàn)了相同的方法,但是這些方法針對不同的數(shù)據(jù)進(jìn)行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實現(xiàn)了基類中的方法。然后需要定義一個工廠類,工廠類可以根據(jù)條件生成不同的子類實例。當(dāng)?shù)玫阶宇惖膶嵗?,開發(fā)人員可以調(diào)用基類中的方法而不必考慮到底返回的是哪一個子類的實例。

12.UML方面
答:標(biāo)準(zhǔn)建模語言UML。用例圖,靜態(tài)圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實現(xiàn)圖

13.RMI
RMI 指的是遠(yuǎn)程方法調(diào)用 (Remote Method Invocation)。它是一種機制,能夠讓在某個 Java 虛擬機上的對象調(diào)用另一個 Java 虛擬機中的對象上的方法??梢杂么朔椒ㄕ{(diào)用的任何對象必須實現(xiàn)該遠(yuǎn)程接口。調(diào)用這樣一個對象時,其參數(shù)為 "marshalled" 并將其從本地虛擬機發(fā)送到遠(yuǎn)程虛擬機(該遠(yuǎn)程虛擬機的參數(shù)為 "unmarshalled")上。該方法終止時,將編組來自遠(yuǎn)程機的結(jié)果并將結(jié)果發(fā)送到調(diào)用方的虛擬機。如果方法調(diào)用導(dǎo)致拋出異常,則該異常將指示給調(diào)用方。

#p#

JAVA 基礎(chǔ)

1.如何獲得數(shù)組的長度?
數(shù)組名.length

2.訪問修飾符“public/private/protected/缺省的修飾符”的使用類?
public : 公共,均可訪問
private: 私有的,同一個java類中可以訪問.子類不能訪問.
protected: 同一個包中的類都可訪問.子類可以訪問.
缺省,friendly :當(dāng)前類,同一個包,都可以訪問.
作用域           當(dāng)前類       同一package 子孫類       其他package
public            √              √                  √             √
protected        √              √                  √             ×
friendly          √              √                   ×            ×
private           √              ×                   ×            ×

3.Anonymous Inner Class (匿名內(nèi)部類) 是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)?
匿名內(nèi)部類是沒有名字的內(nèi)部類,不能繼承其它類,但一個內(nèi)部類可以作為一個接口,由另一個內(nèi)部類實現(xiàn).

一、由于匿名內(nèi)部類沒有名字,所以它沒有構(gòu)造函數(shù)。因為沒有構(gòu)造函數(shù),所以它必須完全借用父類的構(gòu)造函數(shù)來實例化,換言之:匿名內(nèi)部類完全把創(chuàng)建對象的任務(wù)交給了父類去完成。

二、在匿名內(nèi)部類里創(chuàng)建新的方法沒有太大意義,但它可以通過覆蓋父類的方法達(dá)到神奇效果,如上例所示。這是多態(tài)性的體現(xiàn)。

三、因為匿名內(nèi)部類沒有名字,所以無法進(jìn)行向下的強制類型轉(zhuǎn)換,持有對一個匿名內(nèi)部類對象引用的變量類型一定是它的直接或間接父類類型。

new <類或接口> <類的主體>

匿名類

匿名類是不能有名稱的類,所以沒辦法引用它們。必須在創(chuàng)建時,作為new語句的一部分來聲明它們。

這就要采用另一種形式的new語句,如下所示:


new <類或接口> <類的主體>

這種形式的new語句聲明一個新的匿名類,它對一個給定的類進(jìn)行擴展,或者實現(xiàn)一個給定的接口。它還創(chuàng)建那個類的一個新實例,并把它作為語句的結(jié)果而返回。要擴展的類和要實現(xiàn)的接口是new語句的操作數(shù),后跟匿名類的主體。

如果匿名類對另一個類進(jìn)行擴展,它的主體可以訪問類的成員、覆蓋它的方法等等,這和其他任何標(biāo)準(zhǔn)的類都是一樣的。如果匿名類實現(xiàn)了一個接口,它的主體必須實現(xiàn)接口的方法。

注意匿名類的聲明是在編譯時進(jìn)行的,實例化在運行時進(jìn)行。這意味著for循環(huán)中的一個new語句會創(chuàng)建相同匿名類的幾個實例,而不是創(chuàng)建幾個不同匿名類的一個實例。

從技術(shù)上說,匿名類可被視為非靜態(tài)的內(nèi)部類,所以它們具有和方法內(nèi)部聲明的非靜態(tài)內(nèi)部類一樣的權(quán)限和限制。

如果要執(zhí)行的任務(wù)需要一個對象,但卻不值得創(chuàng)建全新的對象(原因可能是所需的類過于簡單,或者是由于它只在一個方法內(nèi)部使用),匿名類就顯得非常有用。匿名類尤其適合在Swing應(yīng)用程序中快速創(chuàng)建事件處理程序。

  1. exp:   
  2. return new Contents() {   
  3. private int i = 11;   
  4. public int value() { return i; }   
  5. };  

這種奇怪的語法要表達(dá)的意思是:“創(chuàng)建從Contents衍生出來的匿名類的一個對象”。由new表達(dá)式返回的句柄會自動上溯造型成一個Contents句柄。匿名內(nèi)部類的語法其實要表達(dá)的是:

  1. class MyContents extends Contents {   
  2. private int i = 11;   
  3. public int value() { return i; }   
  4. }   
  5. return new MyContents();  

若試圖定義內(nèi)部類,并想使用在匿名內(nèi)部類外部定義的一個對象,則編譯器要求外部對象必須是final屬性.

  1. public class Parcel9 {   
  2. public Destination   
  3. dest(final String dest, final float price) {   
  4.     return new Destination() {   
  5.       private int cost;   
  6.       // Instance initialization for each object:   
  7.       {   
  8.         cost = Math.round(price);   
  9.         if(cost > 100)   
  10.           System.out.println("Over budget!");   
  11.       }   
  12.       private String label = dest;   
  13.       public String readLabel() { return label; }   
  14.     };   
  15. }   
  16. public static void main(String[] args) {   
  17.     Parcel9 p = new Parcel9();   
  18.     Destination d = p.dest("Tanzania"101.395F);   
  19. }   
  20. }  

4.static nested class 和 inner class的不同?
nested class在c++中是嵌套類,inner class在java中是內(nèi)部類.不同就是在于是否有指向外部的引用上.靜態(tài)內(nèi)部類意味著創(chuàng)建一個static內(nèi)部類的對象,不需要一個外部類對象;不能從一個static內(nèi)部類的一個對象訪問到一個外部類的對象.

5.&和&&的區(qū)別
&是位運算符,表示按位與運算;&&是邏輯運算符,表示邏輯與(and)

6.Collection和Collections的區(qū)別
collection是集合類的上級接口,繼承與它的接口主要是set和list
其中l(wèi)ist必須以特定的順序容納元素;而一個set不能包含重復(fù)的元素.
映射(Map)一系列"鍵-值"對.可以返回自己鍵的一個set,一個包含自己值的list,或者包含自己(鍵-值)對的一個list.
均可構(gòu)建自己的反復(fù)器.
collections類是針對集合類的一個幫助類.它提供一系列的靜態(tài)方法對各種集合的搜索,排序,線程安全化等操作.

  1. public class SimpleCollection {   
  2. public static void main(String[] args) {   
  3.     Collection c = new ArrayList();   
  4.     for(int i = 0; i < 10; i++)   
  5.       c.add(Integer.toString(i));   
  6.     Iterator it = c.iterator();   
  7.     while(it.hasNext())   
  8.       System.out.println(it.next());   
  9. }   
  10. }  

7.什么時候用assert
assertion(斷言)在軟件開發(fā)中是一種常用的調(diào)試方式,很多開發(fā)語言中都支持這種機制。在實現(xiàn)中,assertion就是在程序中的一條語句,它對一個boolean表達(dá)式進(jìn)行檢查,一個正確程序必須保證這個boolean表達(dá)式的值為true;如果該值為false,說明程序已經(jīng)處于不正確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來說,assertion用于保證程序最基本、關(guān)鍵的正確性。assertion檢查通常在開發(fā)和測試時開啟。為了提高性能,在軟件發(fā)布后,assertion檢查通常是關(guān)閉的.

8.String s = new String("xyz");創(chuàng)建了幾個String Object***
兩個,一個字符對象,一個字符對象引用對象

9.math.round(11.5)和math.round(-11.5)
前者等于12,后者等于-11.round方法返回與參數(shù)最接近的長整數(shù).參數(shù)加0.5,求其floor

10. short s1 = 1;s1 = s1+1;是否有錯誤? short s1 = 1;s1 += 1;是否有錯誤?
前者s1+1返回一個int型,需要強制類型轉(zhuǎn)換.
后者正確.

11.java種有沒有g(shù)oto?
有,為保留字.但是尚未使用.

12.Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型

13.Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別
答:Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)與否。equals()是判讀兩個Set是否相等
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當(dāng)兩個分離的對象的內(nèi)容和類型相配的話,返回真值

14.給我一個你最常見到的runtime exception?
答:常見的運行時異常有如下這些
ArithmeticException(異常的運算條件),
ArrayStoreException(向一個對象數(shù)組存放一錯誤類型的對象時)BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException..

15.error和exception有什么區(qū)別?
答:error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況
    exception 表示一種設(shè)計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況

#p#

16.List, Set, Map是否繼承自Collection接口
答: List,Set是,Map不是

17.abstract class和interface的區(qū)別
答:聲明方法的存在而不去實現(xiàn)它的類叫虛擬類(abstract class).它用于創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況.不能創(chuàng)建abstract class的實例.但是可以聲明一個abstract class變量,將其指向其具體子類的一個實例.不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法.Abstract 類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法.
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現(xiàn)與子類相似,除了該實現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運算符可以用來決定某對象的類是否實現(xiàn)了接口.
接口是一個更純的抽象類.
18.接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)
答:接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類可繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)

19.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized
答:都不能.其中synchronized:(同步.避免在你和別人同時訪問一個屬性的時候,屬性的值發(fā)生不同步的問題.)
    native:(聲明本地方法的關(guān)鍵字,可以通過聲明的方法調(diào)用本地的動態(tài)鏈接庫或者有C、C++等開發(fā)的函數(shù)。)

20.構(gòu)造器Constructor是否可被override(構(gòu)造函數(shù))
答:構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading
1). 構(gòu)造器不能是native,final,static,synchronized 的,可以是public,private,或什么都沒有。
2). 構(gòu)造器函數(shù)里可以寫return呢,但后面什么都不許有(包括null)
3). 構(gòu)造器不能返回值.
     但如果有個"構(gòu)造器"返值了,它就不是構(gòu)造器嘍,只是個普通方法
4). super();this();這兩個方法只能在構(gòu)造方法里調(diào)用.
5). 成員變量聲明時候賦值,比構(gòu)造函數(shù)還早.

21.是否可以繼承String類
答:String類是final類故不可以繼承

22.try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后
答:會執(zhí)行,在return前執(zhí)行

23.用最有效率的方法算出2乘以8等於幾
答:2 << 3

24.兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對
答:不對,有相同的hash code
在C++中,每個類多有地址。
java也一樣,不過hash code不是地址,而是一個標(biāo)識對象用的。(個人認(rèn)為)
每個對象的hash code是不一樣的,Object的默認(rèn)hash code記得是按引用地址的。
對于String例外,是按String內(nèi)容輸出hash code的,這樣可以用equals()來比較String的
內(nèi)容是否相等了,而不是地址
在 Java 應(yīng)用程序執(zhí)行期間,在同一對象上多次調(diào)用 hashCode 方法時,必須一致地返回相同的整數(shù),前提是對象上 equals 比較中所用的信息沒有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無需保持一致。
如果根據(jù) equals(Object) 方法,兩個對象是相等的,那么在兩個對象中的每個對象上調(diào)用 hashCode 方法都必須生成相同的整數(shù)結(jié)果。
以下情況不 是必需的:如果根據(jù) equals(java.lang.Object) 方法,兩個對象不相等,那么在兩個對象中的任一對象上調(diào)用 hashCode 方法必定會生成不同的整數(shù)結(jié)果。但是,程序員應(yīng)該知道,為不相等的對象生成不同整數(shù)結(jié)果可以提高哈希表的性能。
實際上,由 Object 類定義的 hashCode 方法確實會針對不同的對象返回不同的整數(shù)。(這一般是通過將該對象的內(nèi)部地址轉(zhuǎn)換成一個整數(shù)來實現(xiàn)的,但是 JavaTM 編程語言不需要這種實現(xiàn)技巧。)

25.當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞
答:是值傳遞。Java 編程語言只有值傳遞參數(shù)。當(dāng)一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會改變的.

26.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:witch(expr1)中,expr1是一個整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich

27.ArrayList和Vector的區(qū)別,HashMap和Hashtable的區(qū)別
答:就ArrayList與Vector主要從二方面來說.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
二.數(shù)據(jù)增長:當(dāng)需要增長時,Vector默認(rèn)增長為原來一培,而ArrayList卻是原來的一半
就HashMap與HashTable主要從三方面來說。
一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一個實現(xiàn)
二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

28.GC是什么? 為什么要有GC
答:GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達(dá)到自動回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。

29.float型float f=3.4是否正確?
答:不正確。精度不準(zhǔn)確,應(yīng)該用強制類型轉(zhuǎn)換,如下所示:float f=(float)3.4

30.介紹JAVA中的Collection FrameWork(包括如何寫自己的數(shù)據(jù)結(jié)構(gòu))?
答:Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)
Map提供key到value的映射.

31.抽象類與接口?
答:抽象類與接口都用于抽象,但是抽象類(JAVA中)可以有自己的部分實現(xiàn),而接口則完全是一個標(biāo)識(同時有多重繼承的功能)
JAVA類實現(xiàn)序例化的方法是實現(xiàn)java.io.Serializable接口
Collection框架中實現(xiàn)比較要實現(xiàn)Comparable 接口和 Comparator 接口

32.STRING與STRINGBUFFER的區(qū)別。
答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

33.談?wù)刦inal, finally, finalize的區(qū)別
答:final—修飾符(關(guān)鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載
finally—再異常處理時提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)行,然后控制就會進(jìn)入 finally 塊(如果有的話)
finalize—方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的

34.面向?qū)ο蟮奶卣饔心男┓矫?
答:主要有以下四方面:
1.抽象:
抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細(xì)節(jié)。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。
2.繼承:
繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護(hù)的接口訪問其他對象。
4. 多態(tài)性:
多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應(yīng)用程序函數(shù)同名問題。

35.String是最基本的數(shù)據(jù)類型嗎
答:基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。
java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節(jié)省空間,我們應(yīng)該用StringBuffer類

36.int 和 Integer 有什么區(qū)別
答:Java 提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。Int是java的原始數(shù)據(jù)類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。原始類型封裝類,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲,當(dāng)引用類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值與它們的類型有關(guān).

37.運行時異常與一般異常有何異同
答:異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。

38.說出ArrayList,Vector, LinkedList的存儲性能和特性
答:ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快

39.HashMap和Hashtable的區(qū)別
答:HashMap是Hashtable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個實現(xiàn)。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現(xiàn)同步,而HashMap 就必須為之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。

【編輯推薦】

  1. Jboss環(huán)境搭建指南
  2. Red Hat開放JBoss ON代理軟件的源代碼
  3. GWT和JBoss聯(lián)手促進(jìn)網(wǎng)絡(luò)發(fā)展
  4. 倡議JBoss門戶與Enterprise門戶合并
  5. 集成的JBoss中間件的管理平臺

 

責(zé)任編輯:book05 來源: 百度博客
相關(guān)推薦

2009-06-18 15:48:08

J2EE筆試

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2009-06-22 17:05:41

Java EEJava企業(yè)應(yīng)用

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計模式

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護(hù)

2009-06-23 16:48:26

J2EE常見問題J2EE平臺

2019-01-08 16:26:43

Java EEJ2EEJakarta EE

2011-06-30 09:49:40

JSPJ2EE

2009-06-22 16:21:02

J2EE線程

2009-06-18 16:13:14

J2EE開發(fā)

2009-06-18 15:54:57

J2EE下使用JNDI

2009-06-23 08:12:48

J2EE調(diào)用存儲過程

2009-06-22 17:34:40

J2EE架構(gòu)

2009-06-22 17:20:33

J2EE框架

2015-04-28 13:41:12

JavaJ2EE中文問題

2009-06-23 16:50:24

2009-06-23 16:52:55

J2EE縮寫名詞

2009-06-25 13:22:00

J2EE常用Jar包

2009-06-10 13:30:32

J2EE四層模型客戶層Web層
點贊
收藏

51CTO技術(shù)棧公眾號