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