更新時間:2019-10-30 10:28:43 來源:動力節(jié)點 瀏覽3637次
面試題
1.面向對象的特點有哪些?
①.封裝:所謂封裝,就是將客觀事物封裝成抽象的類,并且類可以把數據和方法讓可信的類或者對象進行操作,對不可信的類或者對象進行隱藏。類就是封裝數據和操作這些數據代碼的邏輯實體。在一個類的內部,某些屬性和方法是私有的,不能被外界所訪問。通過這種方式,對象對內部數據進行了不同級別的訪問控制,就避免了程序中的無關部分的意外改變或錯誤改變了對象的私有部分。
②.繼承:繼承有這樣一種能力,就是能使用現有的類的所有功能,并無須重新編寫原來的這些類的基礎上對這些功能進行擴展。通過繼承創(chuàng)建的新類稱為子類或派生類,被繼承的稱為基類。繼承有兩種,一種是實現繼承,另外一種是接口繼承。實現繼承可以直接使用基類的屬性和方法而無需額外編碼,接口繼承是指使用屬性和方法的名稱,但是子必須提供實現的能力。
③.多態(tài):所謂多態(tài)就是對一個實例的相同方法在不同的情形下有不同的表現形式。多態(tài)機制使得不同內部結構的對象可以共享相同的外部接口,這就意味著,雖然不同的類的內部操作不同,但可以通過一個公共的類,它們可以通過相同的方式予以調用。
④.抽象:提取現實世界中某事物的關鍵特性,為該事物構建模型的過程。對同一事物在不同的需求下,需要提取的特性可能不一樣。得到的抽象模型中一般包含:屬性(數據)和操作(行為)。這個抽象模型我們稱之為類。對類進行實例化得到對象。
2.列舉幾個java常用的package及其作用
第一個包:java.lang包。該包提供了Java語言進行程序設計的基礎類,它是默認導入的包。該包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable類需要重點掌握,因為它們應用很廣。
第二個包:java.util包。該包提供了包含集合框架、遺留的集合類、事件模型、日期和時間實施、國際化和各種實用工具類(字符串標記生成器、隨機數生成器和位數組)。
第三個包:java.io包。該包通過文件系統、數據流和序列化提供系統的輸入與輸出。
第四個包:java.net包。該包提供實現網絡應用與開發(fā)的類。
第五個包:java.sql包。該包提供了使用Java語言訪問并處理存儲在數據源(通常是一個關系型數據庫)中的數據API。
第六個包:java.awt包
第七個包:javax.swing包。慶慶說:這兩個包提供了GUI設計與開發(fā)的類。java.awt包提供了創(chuàng)建界面和繪制圖形圖像的所有類,而javax.swing包提供了一組“輕量級”的組件,盡量讓這些組件在所有平臺上的工作方式相同。
第八個包:java.text包。提供了與自然語言無關的方式來處理文本、日期、數字和消息的類和接口。
3.接口和抽象類有什么聯系和區(qū)別
相同點:
接口和抽象類都不能被實例化,它們都位于繼承樹的頂端,用于被其他類實現和繼承。
接口和抽象類都可以包含抽象方法,實現接口或繼承抽象類的普通子類都必須實現這些抽象方法。
不同點
接口里只能包含抽象方法,靜態(tài)方法和默認方法,不能為普通方法提供方法實現,抽象類則完全可以包含普通方法。
接口里只能定義靜態(tài)常量,不能定義普通成員變量,抽象類里則既可以定義普通成員變量,也可以定義靜態(tài)常量。
接口不能包含構造器,抽象類可以包含構造器,抽象類里的構造器并不是用于創(chuàng)建對象,而是讓其子類調用這些構造器來完成屬于抽象類的初始化操作。
接口里不能包含初始化塊,但抽象類里完全可以包含初始化塊。
一個類最多只能有一個直接父類,包括抽象類,但一個類可以直接實現多個接口,通過實現多個接口可以彌補Java單繼承不足。
4.重載和重寫有什么區(qū)別
override(重寫)
方法名、參數、返回值相同。
子類方法不能縮小父類方法的訪問權限。
子類方法不能拋出比父類方法更多的異常(但子類方法可以不拋出異常)。
存在于父類和子類之間。
方法被定義為final不能被重寫。
overload(重載)
參數類型、個數、順序至少有一個不相同。
不能重載只有返回值不同的方法名。
存在于父類和子類、同類中。
5.java有哪些基本數據類型?
①.四種整數類型(byte、short、int、long):
byte:8位,用于表示最小數據單位,如文件中數據,-128~127
short:16位,很少用,-32768~32767int:32位、最常用,-231-1~231(21億)
long:64位、次常用
②.兩種浮點數類型(float、double):
float:32位,后綴F或f,1位符號位,8位指數,23位有效尾數。
double:64位,最常用,后綴D或d,1位符號位,11位指數,52位有效尾
③.一種字符類型(char):
char:16位,是整數類型,用單引號括起來的1個字符(可以是一個中文字符),使用Unicode碼代表字符,0~2^16-1(65535)。
④.一種布爾類型(boolean):true真和false假。
⑤.類型轉換:char-->
自動轉換:byte-->short-->int-->long-->float-->double
強制轉換:
①會損失精度,產生誤差,小數點以后的數字全部舍棄。
②容易超過取值范圍。
⑥.記憶:
8位:Byte(字節(jié)型)
16位:short(短整型)、char(字符型)
32位:int(整型)、float(單精度型/浮點型)
64位:long(長整型)、double(雙精度型)
最后一個:boolean(布爾類型)
6.Java支持的數據類型有哪些?什么是自動拆裝箱?
基本數據類型:
整數值型:byte,short,int,long,
字符型:char
浮點類型:float,double
布爾型:boolean
整數默認int型,小數默認是double型。Float和long類型的必須加后綴。
首先知道String是引用類型不是基本類型,引用類型聲明的變量是指該變量在內存中實際存儲的是一個引用地址,實體在堆中。引用類型包括類、接口、數組等。String類還是final修飾的。
而包裝類就屬于引用類型,自動裝箱和拆箱就是基本類型和引用類型之間的轉換,至于為什么要轉換,因為基本類型轉換為引用類型后,就可以new對象,從而調用包裝類中封裝好的方法進行基本類型之間的轉換或者toString(當然用類名直接調用也可以,便于一眼看出該方法是靜態(tài)的),還有就是如果集合中想存放基本類型,泛型的限定類型只能是對應的包裝類型。
7.Java類的實例化順序
父類靜態(tài)成員和靜態(tài)初始化塊,按在代碼中出現的順序依次執(zhí)行
子類靜態(tài)成員和靜態(tài)初始化塊,按在代碼中出現的順序依次執(zhí)行
父類實例成員和實例初始化塊,按在代碼中出現的順序依次執(zhí)行
父類構造方法
子類實例成員和實例初始化塊,按在代碼中出現的順序依次執(zhí)行
子類構造方法
結論:對象初始化的順序,先靜態(tài)方法,再構造方法,每個又是先基類后子類。
8.什么是值傳遞和引用傳遞
值傳遞是對基本型變量而言的,傳遞的是該變量的一個副本,改變副本不影響原變量.
引用傳遞一般是對于對象型變量而言的,傳遞的是該對象地址的一個副本,并不是原對象本身。
一般認為,java內的傳遞都是值傳遞.java中實例對象的傳遞是引用傳遞。
9.Java集合框架的基礎接口有哪些?
Collection:為集合層級的根接口。一個集合代表一組對象,這些對象即為它的元素。Java平臺不提供這個接口任何直接的實現。
Set:是一個不能包含重復元素的集合。這個接口對數學集合抽象進行建模,被用來代表集合,就如一副牌。
List:是一個有序集合,可以包含重復元素。你可以通過它的索引來訪問任何元素。List更像長度動態(tài)變換的數組。
Map:是一個將key映射到value的對象.一個Map不能包含重復的key:每個key最多只能映射一個value。
一些其它的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。
10.Java集合框架是什么?說出一些集合框架的優(yōu)點?
每種編程語言中都有集合,最初的Java版本包含幾種集合類:Vector、Stack、HashTable和Array。隨著集合的廣泛使用,Java1.2提出了囊括所有集合接口、實現和算法的集合框架。在保證線程安全的情況下使用泛型和并發(fā)集合類,Java已經經歷了很久。它還包括在Java并發(fā)包中,阻塞接口以及它們的實現。
集合框架的部分優(yōu)點如下:
使用核心集合類降低開發(fā)成本,而非實現我們自己的集合類。
隨著使用經過嚴格測試的集合框架類,代碼質量會得到提高。
通過使用JDK附帶的集合類,可以降低代碼維護成本。
復用性和可操作性。
以上就是動力節(jié)點java學院小編分享的“ 網易Java面試:容易被問到的這些面試題”的內容,希望能夠幫助到大家,更多java最新面試題請繼續(xù)關注動力節(jié)點java學院官網,每天會有精彩內容分享與你。
相關面試題推薦