JAVA 基礎(面試必用)

來源:互聯網
上載者:User

標籤:配置資訊   war   響應   緩衝   main   find   產生   同名   允許   

1、物件導向編程的三大特性是什麼?

(1).繼承:

繼承是一種連接類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼 承了原始類的特性,新類稱為原始類的衍生類別(子類),而原始類稱為新類的基類(父類)。衍生類別可以從它的基類那裡繼承方法和執行個體變數,並且類可以修改或增 加新的方法使之更適合特殊的需要。

(2).封裝:

封裝是把過程和資料包圍起來,對資料的訪問只能通過已定義的介面。物件導向計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。

(3).多態:

多態性是指允許不同類的對象對同一訊息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共用、代碼共用的優勢,很好的解決了應用程式函數同名問題。

2、String 和StringBuffer的區別

JAVA平台提供了兩個類:String和StringBuffer,它們可以儲存和操作字串,即包含多個字元的字元資料這個String類提供了數值不可改變字串而這個StringBuffer類提供的字串進行修改當你知道字元資料要改變的時候你就可以使用StringBuffer典型地,你可以使用StringBuffers來動態構造字元資料

3、說出ArrayList,Vector, LinkedList的儲存效能和特性

ArrayList和Vector都是使用數組方式儲存資料,此數組元素數大於實際儲存資料以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等記憶體操作,所以索引資料快而插入資料慢,Vector由於使用了synchronized思路方法(安全執行緒) ,通常效能上較ArrayList差,而LinkedList使用雙向鏈表實現儲存,按序號索引資料需要進行前向或後向遍曆,但是插入資料時只需要記錄本項前後項即可,所以插入速度較快

4、Collection 和 Collections的區別

Collection是集合類的上級介面,繼承與他的介面主要有Set 和List. Collections是針對集合類的一個協助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、安全執行緒化等操作。

5、HashMap和Hashtable的區別

HashMap是Hashtable的輕量級實現(非安全執行緒的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)索引值(key),由於非安全執行緒,效率上可能高於HashtableJAVA中文站社區門戶oC)| g| ax ,HashMap允許將Null作為一個entryde key 或者value,而Hashtable不允許 HashMap把Hashtable的contains思路方法去掉了,改成containsvalue和containsKey因為contains思路方法容易讓人引起誤解Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。

最大的區別是,Hashtable的思路方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的思路方法實現同步,而HashMap 就必須為的提供外同步。

Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以效能不會有很大的差異。

6、final, finally, finalize的區別

final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

finally是異常處理語句結構的一部分,表示總是執行。

finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。

7、Overload和Override的區別。Overloaded的方法是否可以改變傳回值的類型?

重載(Overload):

(1)方法重載是讓類以統一的方式處理不同類型資料的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載Overloading是一個類中多態性的一種表現。 
(2)Java的方法重載,就是在類中可以建立多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態性。 
(3)重載的時候,方法名要一樣,但是參數類型和個數不一樣,傳回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區分標準。

重寫(Override):

(1) 父類與子類之間的多態性,對父類的函數進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
(2) 若子類中的方法與父類中的某一方法具有相同的方法名、傳回型別和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。 
(3)子類函數的訪問修飾許可權不能少於父類的

重寫方法的規則: 
1.參數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是重載. 
2.返回的類型必須一直與被重寫的方法的傳回型別相同,否則不能稱其為重寫而是重載. 
3.存取修飾詞的限制一定要大於被重寫方法的存取修飾詞(public>protected>default>private) 
4.重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常.例如, 
父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常.


而重載的規則: 
1.必須具有不同的參數列表; 
2.可以有不同的傳回型別,只要參數列表不同就可以了; 
3.可以有不同的存取修飾詞; 
4.可以拋出不同的異常;


重寫和重載的區別在於:

重寫多態性起作用,對調用被重載過的方法可以大大減少代碼的輸入量,同一個方法名只要往裡面傳遞不同的參數就可以擁有不同的功能或傳回值.

用好重寫和重載可以設計一個結構清晰而簡潔的類,可以說重寫和重載在編寫代碼過程中的作用非同一般.

Overloaded的方法是可以改變傳回值的類型。

8、error和exception有什麼區別?

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

9、abstract class和interface有什麼區別?

1.abstract class 在 Java 語言中表示的是一種繼承關係,一個類只能使用一次繼承關係。但是,一個類卻可以實現多個interface。

2.在abstract class 中可以有自己的資料成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態不能被修改的資料成員(也就是必須是static final的,不過在 interface中一般不定義資料成員),所有的成員方法都是abstract的。

  3.abstract class和interface所反映出的設計理念不同。其實abstract class表示的是"is-a"關係,interface表示的是"like-a"關係。

  4.實現抽象類別和介面的類必須實現其中的所有方法。抽象類別中可以有非抽象方法。介面中則不能有實現方法。

  5.介面中定義的變數預設是public static final 型,且必須給其初值,所以實作類別中不能重新定義,也不能改變其值。

  6.抽象類別中的變數預設是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。

  7.介面中的方法預設都是 public,abstract 類型的。

10、List, Set, Map是否繼承自Collection介面

List,Set是繼承自Collection,Map不是。

11、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

swtich中只能用byte short int char

12、char型變數中能不能存貯一個中文漢字?為什麼?

能夠定義成為一個中文的,因為java中以unicode編碼,一個char佔16個bit,所以放一個中文是沒問題的。

13、多線程有幾種實現方法,都是什麼?哪一種方式比較優秀?同步有幾種實現方法,都是什麼?

多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面

實現Runnable介面比較好,因為實作類別可以實現多個介面,而只能繼承一個類。

同步的實現方面有兩種,分別是synchronized,wait與notify

14、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類別以供繼承,請說出他們分別是哪些類

位元組流,字元流。位元組流繼承與inputStream/outputStream,字元流繼承於inputStreamReader/outputSteamWriter。

15、Java I/O中字元流和位元組流的區別?

位元組流在操作的時候本身是不會用到緩衝區(記憶體)的,是與檔案本身直接操作的,而字元流在操作的時候是使用到緩衝區的
位元組流在操作檔案時,即使不關閉資源(close方法),檔案也能輸出,但是如果字元流不使用close方法的話,則不會輸出任何內容,說明字元流用的是緩衝區,並且可以使用flush方法強制進行重新整理緩衝區,這時才能在不close的情況下輸出內容
在所有的硬碟上儲存檔案或進行傳輸的時候都是以位元組的方法進行的,包括圖片也是按位元組完成,而字元是只有在記憶體中才會形成的,所以使用位元組的操作是最多的。

16、Servlet的生命週期

1,初始化階段
調用init()方法
2,響應客戶要求階段
調用service()方法
3,終止階段
調用destroy()方法

17、Http協議是長串連,還是短串連?

Http協議是無狀態串連,所以是短串連.

18、Java的基礎資料型別 (Elementary Data Type)有哪些?String是不是基本類型?

boolean,int,byte,char,short,long,float,double,void,String 不是基本類型.

19、JSP中有哪些重新導向方法,它們的區別?

<jsp:forward page=”url”/>

<jsp:include file=”url”/>

前者將當前頁面重新導向到指定的URL的頁面,而後者是在當前頁面中包含指定的URL的頁面.

20、Jsp有哪些內建對象?作用分別是什嗎?

request            請求對象                 類型 javax.servlet.ServletRequest        範圍 Request
response          響應對象                   類型 javax.servlet.SrvletResponse       範圍  Page
pageContext    頁面內容物件       類型 javax.servlet.jsp.PageContext      範圍    Page
session            會話對象                   類型 javax.servlet.http.HttpSession       範圍    Session
application       應用程式物件          類型 javax.servlet.ServletContext          範圍    Application
out                   輸出對象                   類型 javax.servlet.jsp.JspWriter             範圍    Page
config              設定物件                  類型 javax.servlet.ServletConfig            範圍    Page
page               頁面對象                  類型 javax.lang.Object                            範圍    Page
exception        例外對象                 類型 javax.lang.Throwable                     範圍    page

1、request 對象代表的是來自用戶端的請求,例如我們在FORM表單中填寫的資訊等,是最常用的對象
常用的方法有:getParameter、getParameterNames 和getParameterValues 通過調用這幾個方法來擷取請求對象中所包含的參數的值。

2、response 對象代表的是對用戶端的響應,也就是說可以通過response 對象來組織發送到用戶端的資料。但是由於組織方式比較底層,所以不建議普通讀者使用,需要向用戶端發送文字時直接使用

3、pageContext 對象直譯時可以稱作“頁面上下文”對象,代表的是當前頁面啟動並執行一些屬性
常用的方法有 :findAttribute、getAttribute、getAttributesScope 和getAttributeNamesInScope
一般情況下pageContext對象用到得也不是很多,只有在項目所面臨的情況比較複雜的情況下,才會利用到頁面屬性來輔助處理。

4、session 對象代表格服務器與用戶端所建立的會話,當需要在不同的JSP頁面中保留客戶資訊的情況下使用,比如線上購物、客戶軌跡跟蹤等。“session” 對象建立在cookie的基礎上,所以使用時應注意判斷一下用戶端是否開啟了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。

概要
HTTP是無狀態(stateless)協議;
Web伺服器對每一個用戶端請求都沒有曆史記憶;
Session用來儲存用戶端狀態資訊;
由Web伺服器寫入;
存於用戶端;
用戶端的每次訪問都把上次的session記錄傳遞給Web Server;
Web伺服器讀取用戶端提交的session來擷取用戶端的狀態資訊

5、application 對象負責提供應用程式在伺服器中運行時的一些全域資訊,常用的方法有getMimeType和getRealPath等。

6、out 對象代表了向用戶端發送資料的對象,與“response” 對象不同,通過“out” 對象發送的內容將是瀏覽器需要顯示的內容,是文本一級的,可以通過“out” 對象直接向用戶端寫一個由程式動態產生HTML檔案。常用的方法除了pirnt和println之外,還包括clear、clearBuffer、flush、getBufferSize和getRemaining,這是因為“out” 對象內部包含了一個緩衝區,所以需要一些對緩衝區進行操作的方法

7、config 對象提供一些配置資訊,常用的方法有getInitParameter和getInitParameterNames,以獲得Servlet初始化時的參數。

8、page 對象代表了正在啟動並執行由JSP檔案產生的類對象,不建議一般讀者使用。

9、exception 對象則代表了JSP檔案運行時所產生的例外對象,此對象不能在一般JSP檔案中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP檔案中使用

JAVA 基礎(面試必用)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.