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