更新時(shí)間:2020-02-21 11:15:56 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2910次
1.面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別
面向過(guò)程
優(yōu)點(diǎn):性能比面向?qū)ο蟾撸驗(yàn)轭?lèi)調(diào)用時(shí)需要實(shí)例化,開(kāi)銷(xiāo)比較大,比較消耗資源;比如單片機(jī)、嵌入式開(kāi)發(fā)、Linux/Unix等一般采用面向過(guò)程開(kāi)發(fā),性能是最重要的因素。
缺點(diǎn):沒(méi)有面向?qū)ο笠拙S護(hù)、易復(fù)用、易擴(kuò)展
面向?qū)ο?/p>
優(yōu)點(diǎn):易維護(hù)、易復(fù)用、易擴(kuò)展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù)
缺點(diǎn):性能比面向過(guò)程低
2.Java的四個(gè)基本特性(抽象、封裝、繼承,多態(tài))
抽象:就是把現(xiàn)實(shí)生活中的某一類(lèi)東西提取出來(lái),用程序代碼表示,我們通常叫做類(lèi)或者接口。抽象包括兩個(gè)方面:一個(gè)是數(shù)據(jù)抽象,一個(gè)是過(guò)程抽象。數(shù)據(jù)抽象也就是對(duì)象的屬性。過(guò)程抽象是對(duì)象的行為特征。
封裝:把客觀事物封裝成抽象的類(lèi),并且類(lèi)可以把自己的數(shù)據(jù)和方法只讓可信的類(lèi)或者對(duì)象操作,對(duì)不可信的進(jìn)行封裝隱藏。封裝分為屬性的封裝和方法的封裝。
繼承:是對(duì)有著共同特性的多類(lèi)事物,進(jìn)行再抽象成一個(gè)類(lèi)。這個(gè)類(lèi)就是多類(lèi)事物的父類(lèi)。父類(lèi)的意義在于抽取多類(lèi)事物的共性。
多態(tài):允許不同類(lèi)的對(duì)象對(duì)同一消息做出響應(yīng)。方法的重載、類(lèi)的覆蓋正體現(xiàn)了多態(tài)。
3.重載和重寫(xiě)的區(qū)別
重載:發(fā)生在同一個(gè)類(lèi)中,方法名必須相同,參數(shù)類(lèi)型不同、個(gè)數(shù)不同、順序不同,方法返回值和訪問(wèn)修飾符可以不同,發(fā)生在編譯時(shí)。
重寫(xiě):發(fā)生在父子類(lèi)中,方法名、參數(shù)列表必須相同,返回值小于等于父類(lèi),拋出的異常小于等于父類(lèi),訪問(wèn)修飾符大于等于父類(lèi);如果父類(lèi)方法訪問(wèn)修飾符為private則子類(lèi)中就不是重寫(xiě)。
4.構(gòu)造器Constructor是否可被override
構(gòu)造器不能被重寫(xiě),不能用static修飾構(gòu)造器,只能用public
privateprotected這三個(gè)權(quán)限修飾符,且不能有返回語(yǔ)句。
5.訪問(wèn)控制符public,protected,private,以及默認(rèn)的區(qū)別
private只有在本類(lèi)中才能訪問(wèn);
public在任何地方都能訪問(wèn);
protected在同包內(nèi)的類(lèi)及包外的子類(lèi)能訪問(wèn);
默認(rèn)不寫(xiě)在同包內(nèi)能訪問(wèn)。
6.是否可以繼承String類(lèi)
String類(lèi)是final類(lèi)故不可以繼承,一切由final修飾過(guò)的都不能繼承。
7.String和StringBuffer、StringBuilder的區(qū)別
可變性String類(lèi)中使用字符數(shù)組保存字符串,privatefinalcharvalue[],所以string對(duì)象是不可變的。StringBuilder與StringBuffer都繼承自AbstractStringBuilder類(lèi),在AbstractStringBuilder中也是使用字符數(shù)組保存字符串,char[]value,這兩種對(duì)象都是可變的。
線(xiàn)程安全性String中的對(duì)象是不可變的,也就可以理解為常量,線(xiàn)程安全。AbstractStringBuilder是StringBuilder與StringBuffer的公共父類(lèi),定義了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。StringBuffer對(duì)方法加了同步鎖或者對(duì)調(diào)用的方法加了同步鎖,所以是線(xiàn)程安全的。StringBuilder并沒(méi)有對(duì)方法進(jìn)行加同步鎖,所以是非線(xiàn)程安全的。
性能每次對(duì)String類(lèi)型進(jìn)行改變的時(shí)候,都會(huì)生成一個(gè)新的String對(duì)象,然后將指針指向新的String對(duì)象。StringBuffer每次都會(huì)對(duì)StringBuffer對(duì)象本身進(jìn)行操作,而不是生成新的對(duì)象并改變對(duì)象引用。相同情況下使用StirngBuilder相比使用StringBuffer僅能獲得10%~15%左右的性能提升,但卻要冒多線(xiàn)程不安全的風(fēng)險(xiǎn)。
8.hashCode和equals方法的關(guān)系
equals相等,hashcode必相等;hashcode相等,equals可能不相等。
9.抽象類(lèi)和接口的區(qū)別
語(yǔ)法層次抽象類(lèi)和接口分別給出了不同的語(yǔ)法定義。
設(shè)計(jì)層次抽象層次不同,抽象類(lèi)是對(duì)類(lèi)抽象,而接口是對(duì)行為的抽象。抽象類(lèi)是對(duì)整個(gè)類(lèi)整體進(jìn)行抽象,包括屬性、行為,但是接口卻是對(duì)類(lèi)局部(行為)進(jìn)行抽象。抽象類(lèi)是自底向上抽象而來(lái)的,接口是自頂向下設(shè)計(jì)出來(lái)的。
跨域不同抽象類(lèi)所體現(xiàn)的是一種繼承關(guān)系,要想使得繼承關(guān)系合理,父類(lèi)和派生類(lèi)之間必須存在"is-a"關(guān)系,即父類(lèi)和派生類(lèi)在概念本質(zhì)上應(yīng)該是相同的。對(duì)于接口則不然,并不要求接口的實(shí)現(xiàn)者和接口定義在概念本質(zhì)上是一致的,僅僅是實(shí)現(xiàn)了接口定義的契約而已,"like-a"的關(guān)系。
10.自動(dòng)裝箱與拆箱裝箱:將基本類(lèi)型用它們對(duì)應(yīng)的引用類(lèi)型包裝起來(lái);
拆箱:將包裝類(lèi)型轉(zhuǎn)換為基本數(shù)據(jù)類(lèi)型;
Java使用自動(dòng)裝箱和拆箱機(jī)制,節(jié)省了常用數(shù)值的內(nèi)存開(kāi)銷(xiāo)和創(chuàng)建對(duì)象的開(kāi)銷(xiāo),提高了效率,由編譯器來(lái)完成,編譯器會(huì)在編譯器根據(jù)語(yǔ)法決定是否進(jìn)行裝箱和拆箱動(dòng)作。
以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“華為Java筆試題庫(kù),讓大家面試機(jī)會(huì)增大”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)推薦
相關(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ì)電話(huà)與您溝通安排學(xué)習(xí)