成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

2019年Android開(kāi)發(fā)者常見(jiàn)面試題(一)

JiaXinYi / 2351人閱讀

摘要:內(nèi)部類的作用成員內(nèi)部類成員內(nèi)部類可以無(wú)條件訪問(wèn)外部類的所有成員屬性和成員方法包括成員和靜態(tài)成員。匿名內(nèi)部類匿名內(nèi)部類就是沒(méi)有名字的內(nèi)部類靜態(tài)內(nèi)部類指被聲明為的內(nèi)部類,他可以不依賴內(nèi)部類而實(shí)例,而通常的內(nèi)部類需要實(shí)例化外部類,從而實(shí)例化。

大部分開(kāi)發(fā)者進(jìn)入公司,一個(gè)必備的環(huán)節(jié)就是面試,只有通過(guò)面試,才能知道求職者是否符合公司的要求,也只有通過(guò)面試,求職者才能有幸進(jìn)入到企業(yè)里工作,那么怎么才能提高面試的成功率呢?對(duì)于開(kāi)發(fā)者而言,顯然是技術(shù)的掌握水平,由于技術(shù)的面非常廣,我們并不可能全部的都掌握,但是,多多少少我們都有所了解,準(zhǔn)備的越充足,意味著成功率也能大大的提高。

對(duì)于Android的面試,我們可以發(fā)現(xiàn),要求的是越來(lái)越多,越來(lái)越嚴(yán)苛,面試如同造航母,已經(jīng)遠(yuǎn)不如14年15年那么好找了,對(duì)于一些點(diǎn),不僅僅要會(huì)用,一些原理源碼性的東西,也必須得去研究掌握。

接下來(lái)的幾篇文章,主要羅列一下Android面試中常見(jiàn)的點(diǎn),希望可以幫助到大家,這一篇主要針對(duì)java中常見(jiàn)的點(diǎn)。

問(wèn)題 1:java中==和equals和hashCode的區(qū)別 答案【答案不唯一,可自己衡量】: equals

equals的作用是判斷兩個(gè)對(duì)象是否相等。

通過(guò)判斷兩個(gè)對(duì)象的地址是否相同來(lái)判斷。

==

==一般用于基本類型數(shù)據(jù)的比較,判斷兩個(gè)值是否相同

也可以用于類的比較,同樣也是比較兩個(gè)對(duì)象的內(nèi)存地址。(就是兩個(gè)對(duì)象都是同一個(gè)對(duì)象)

所以在equals沒(méi)覆蓋的情況下,==和equals是等價(jià)的。

( 我們可以通過(guò)覆蓋equals來(lái)讓相同內(nèi)容的對(duì)象來(lái)返回true。)

hashcode

能夠高效率的產(chǎn)生一個(gè)離散的int值。

通過(guò)hashCode()來(lái)計(jì)算出兩個(gè)對(duì)象的hash值然后進(jìn)行比較。

但是會(huì)出現(xiàn)不同的類也會(huì)有相同hash值,所以這不是安全、不可靠的。

?####總結(jié)
總的來(lái)說(shuō)就是一般情況equals和==是等價(jià)的。

如果兩個(gè)對(duì)象相等,則他們一定是equals返回true。

如果兩個(gè)對(duì)象的hashCode相同,也不能 100%保證它們是相同的。

?

問(wèn)題 2:int、char、long各占多少字節(jié)數(shù) 答案【答案不唯一,可自己衡量】:

問(wèn)題 3:int與integer的區(qū)別 答案【答案不唯一,可自己衡量】:

1 Integer是int的包裝類,int則是Java的一種基本數(shù)據(jù)類型

2 Integer變量必須實(shí)例化之后才可以使用,而int變量不需要

3 Integer實(shí)際是對(duì)象的引用,當(dāng)new一個(gè)Integer時(shí),實(shí)際上是生成一個(gè)指針指向此對(duì)象;而int則是直接存儲(chǔ)數(shù)據(jù)值

4 Integer的默認(rèn)值是null,int的默認(rèn)值是0

?

問(wèn)題 4:談?wù)剬?duì)java多態(tài)的理解 答案【答案不唯一,可自己衡量】:

打個(gè)比方 父親person有行為這個(gè)方法,里面包括幾個(gè)動(dòng)作:吃飯,睡覺(jué),走路 父親有三個(gè)兒子,三個(gè)兒子都繼承了父親的行為方法,所以三個(gè)兒子都有吃飯,睡覺(jué),走路這些動(dòng)作,但是三個(gè)兒子又分別有自己的動(dòng)作--大兒子A會(huì)彈吉他,二兒子B會(huì)唱歌,三兒子C會(huì)打鼓 ...

1.Person person = new A(); 不是父類對(duì)象指向子類引用而是父類引用指向子類對(duì)象

2.這個(gè)對(duì)象不能調(diào)用子類A特有的彈吉他方法--person.guitar(); X

3.如果僅是這么寫(xiě)程序,還不是多態(tài),記住實(shí)現(xiàn)多態(tài)的三要素:繼承 重寫(xiě) 父類引用指向子類對(duì)象

4.之后,如果你調(diào)用persion.guitar(),此時(shí)在代碼的編譯階段,persion調(diào)用的仍然是自己的guitar(),不是兒子的。而當(dāng)程序運(yùn)行時(shí),就是java XXX, persion調(diào)用的卻是兒子的guitar()。這個(gè)動(dòng)態(tài)的過(guò)程才是多態(tài) 。

Person person;

? ? ? ? ? //父類的引用指向子類的方法;

? ? ? ? ? person = new Student();

? ? ? ? ? //person類型引用做一個(gè)判斷

? ? ? ? ? //(1)if(person.eat().size==2 )

? ? ? ? ? {

? ? ? ? if(person instanceof Person)

? ? ? ? {? ? ?

? person.eat();

? ? ? }else if(person instanceof Student)? ? ? ? {

? ? ? ? Student stu = (Student)person;

? ? ? ? stu.eat();

? ? ? ? }? ? ? ? ?

? ? ? ? ? person.eat();//從代碼角度看,此時(shí)是父類的引用調(diào)用的是父類中的eat方法

? ? ? ? ? //(2)子類若覆蓋了父類的方法,eat動(dòng)態(tài)綁定到父類的引用Person上,換個(gè)名字叫動(dòng)態(tài)綁定

? ? ? ? ? //父類的引用可以調(diào)用子類的方法,我們把這一現(xiàn)象成為多態(tài)

? ? ? ? ? //從字面意思來(lái)理解person這個(gè)父類的引用一會(huì)是person一會(huì)是student

? ? ? ? ? //person有多種狀態(tài);

? ? ? ? ? //也叫方法的動(dòng)態(tài)綁定

? ? ? ? ? //繼承是通向多態(tài)的入口

? ? ? ? ? person.f2();

? ? ? ? ? person.gotobed();

? ? ? ? ? person.eat();

? ? ? ? ? Student stu = new Student();

? ? ? ? ? stu.eat();

? ? ? ? ? stu.gotobed();

? ? ? ? ? //父類的引用能夠調(diào)用子類的方法

? ? ? }??

Java中,父類的引用既可以指向父類的對(duì)象,也可以指向子類的對(duì)象。但子類的引用不能指向父類的對(duì)象。

引用類型也可以進(jìn)行類型轉(zhuǎn)換。

但轉(zhuǎn)換的類型一定具有繼承關(guān)系,即僅允許父子類之間進(jìn)行轉(zhuǎn)換。

如果嘗試將毫無(wú)關(guān)聯(lián)的兩個(gè)類型進(jìn)行轉(zhuǎn)換,將會(huì)引發(fā)編譯錯(cuò)誤??梢允褂胕nstanceof來(lái)判斷引用是否為指定的類型。

?

問(wèn)題 5:String、StringBuffer、StringBuilder區(qū)別 答案【答案不唯一,可自己衡量】:

我們先對(duì)比下String, StringBuffer, StringBuilder這三個(gè)類。他們的主要區(qū)別一般體現(xiàn)在線程安全和執(zhí)行效率上。

1.線程安全

String類是用final修飾符修飾的,它的值是不可修改的,因此是線程安全的。 如果一個(gè)StringBuffer對(duì)象在緩沖區(qū)被多個(gè)線程使用時(shí),因?yàn)镾tringBuffer的方法都是帶有synchronized關(guān)鍵字的,所以可以保證線程安全,而StringBuilder的方法沒(méi)有該關(guān)鍵字,不能保證線程安全,因此可能會(huì)出現(xiàn)一些操作錯(cuò)誤。多線程情況下建議使用StringBuffer,單線程建議使用速度較快的StringBuilder。

2.執(zhí)行效率

先看一段代碼:

?String str = "abcdef";

?str = str + "123456";

?System.out.println(str);

這段代碼輸出的結(jié)果是: “abcdef123456”, 看著好像是str被改變了,但實(shí)際上這是一種假象,JVM對(duì)上述代碼是這樣處理的。 1.執(zhí)行第一行代碼:新建一個(gè)String對(duì)象“abcdef”(該對(duì)象保存在字符串常量池中)將“abcdef”對(duì)象的實(shí)例引用賦值給str(保存在棧中)。 2.執(zhí)行第二行代碼: 再新建一個(gè)String對(duì)象str,用來(lái)執(zhí)行str + "123456"操作,也就是說(shuō),str這個(gè)對(duì)象是沒(méi)有發(fā)生改變的(String不可變)。每當(dāng)用String操作字符串時(shí),實(shí)際上是在不斷的創(chuàng)建新的對(duì)象,而原來(lái)的對(duì)象就會(huì)變?yōu)槔唬牵没厥盏?,可想而知這樣執(zhí)行效率會(huì)有多低。 一個(gè)特殊例子:

String str = "This is a" + "special" + "example";

StringBuilder stringBuilder = new StringBuilder("This is a").append("special").append("example");

你會(huì)發(fā)現(xiàn)生成str對(duì)象的速度簡(jiǎn)直太快了,而這個(gè)時(shí)候StringBuilder速度上根本一點(diǎn)都不占優(yōu)勢(shì)。 其實(shí)這是JVM的一個(gè)把戲,實(shí)際上:String str = "This is a" + "special" + "example";其實(shí)就是:?String str = “This is a special example”;所以不需要太多的時(shí)間了。 要注意的是,如果你的字符串是來(lái)自另外的String對(duì)象的話,速度就沒(méi)那么快了,譬如:

String str2 = "This is a";

String str3 = "special";

String str4 = "test";

String str = str2 +str3 + str4;

這時(shí)候JVM會(huì)規(guī)規(guī)矩矩的按照原來(lái)的方式去做。

總結(jié)

1.如果要操作少量的數(shù)據(jù)用 --> String 2.單線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) --> StringBuilder 3.多線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) --> StringBuffer

?

問(wèn)題 6:什么是內(nèi)部類??jī)?nèi)部類的作用 答案【答案不唯一,可自己衡量】: 什么是內(nèi)部類:

將一個(gè)類定義在另一個(gè)類里面或者一個(gè)方法里面,這樣的類稱為內(nèi)部類。

內(nèi)部類的作用: 1.成員內(nèi)部類

成員內(nèi)部類可以無(wú)條件訪問(wèn)外部類的所有成員屬性和成員方法(包括private成員和靜態(tài)成員)。
當(dāng)成員內(nèi)部類擁有和外部類同名的成員變量或者方法時(shí),會(huì)發(fā)生隱藏現(xiàn)象,即默認(rèn)情況下訪問(wèn)的是成員內(nèi)部類的成員。

2.局部?jī)?nèi)部類

局部?jī)?nèi)部類是定義在一個(gè)方法或者一個(gè)作用域里面的類,它和成員內(nèi)部類的區(qū)別在于局部?jī)?nèi)部類的訪問(wèn)僅限于方法內(nèi)或者該作用域內(nèi)。

3.匿名內(nèi)部類

匿名內(nèi)部類就是沒(méi)有名字的內(nèi)部類

4.靜態(tài)內(nèi)部類

指被聲明為static的內(nèi)部類,他可以不依賴內(nèi)部類而實(shí)例,而通常的內(nèi)部類需要實(shí)例化外部類,從而實(shí)例化。靜態(tài)內(nèi)部類不可以有與外部類有相同的類名。不能訪問(wèn)外部類的普通成員變量,但是可以訪問(wèn)靜態(tài)成員變量和靜態(tài)方法(包括私有類型)
一個(gè) 靜態(tài)內(nèi)部類去掉static 就是成員內(nèi)部類,他可以自由的引用外部類的屬性和方法,無(wú)論是靜態(tài)還是非靜態(tài)。但是不可以有靜態(tài)屬性和方法、

作用

1.每個(gè)內(nèi)部類都能獨(dú)立的繼承一個(gè)接口的實(shí)現(xiàn),所以無(wú)論外部類是否已經(jīng)繼承了某個(gè)(接口的)實(shí)現(xiàn),對(duì)于內(nèi)部類都沒(méi)有影響。內(nèi)部類使得多繼承的解決方案變得完整,   
2.方便將存在一定邏輯關(guān)系的類組織在一起,又可以對(duì)外界隱藏。   
3.方便編寫(xiě)事件驅(qū)動(dòng)程序   
4.方便編寫(xiě)線程代碼

?

問(wèn)題 7:抽象類和接口區(qū)別 答案【答案不唯一,可自己衡量】: 抽象類是什么:

抽象類不能創(chuàng)建實(shí)例,它只能作為父類被繼承。抽象類是從多個(gè)具體類中抽象出來(lái)的父類,它具有更高層次的抽象。從多個(gè)具有相同特征的類中抽象出一個(gè)抽象類,以這個(gè)抽象類作為其子類的模板,從而避免了子類的隨意性。

(1) 抽象方法只作聲明,而不包含實(shí)現(xiàn),可以看成是沒(méi)有實(shí)現(xiàn)體的虛方法

(2) 抽象類不能被實(shí)例化

(3) 抽象類可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個(gè)類聲明為抽象類

(4) 具體派生類必須覆蓋基類的抽象方法

(5) 抽象派生類可以覆蓋基類的抽象方法,也可以不覆蓋。如果不覆蓋,則其具體派生類必須覆蓋它們

接口是什么:

(1) 接口不能被實(shí)例化

(2) 接口只能包含方法聲明

(3) 接口的成員包括方法、屬性、索引器、事件

(4) 接口中不能包含常量、字段(域)、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員

接口和抽象類的區(qū)別:

(1)抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。

(2)抽象類中可以有普通成員變量,接口中沒(méi)有普通成員變量

(3)抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法

(4) 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類。

(5)接口可以被多重實(shí)現(xiàn),抽象類只能被單一繼承

(6)如果抽象類實(shí)現(xiàn)接口,則可以把接口中方法映射到抽象類中作為抽象方法而不必實(shí)現(xiàn),而在抽象類的子類中實(shí)現(xiàn)接口中方法

接口和抽象類的相同點(diǎn):

(1) 都可以被繼承

(2) 都不能被實(shí)例化

(3) 都可以包含方法聲明

(4) 派生類必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75011.html

相關(guān)文章

  • python開(kāi)發(fā)-見(jiàn)面試題

    摘要:今天總結(jié)一下中常見(jiàn)的面試題與的區(qū)別比較變量?jī)?nèi)存地址和值是否相等,僅僅比較變量的值是否相等需要注意當(dāng)變量的值較小時(shí)時(shí),的值是,這是由于定義變量時(shí)底層的實(shí)現(xiàn)決定的,例如小整數(shù)對(duì)象池兩個(gè)變量的值就會(huì)相同,導(dǎo)致的值為。 今天總結(jié)一下python中常見(jiàn)的面試題: 1.is與==的區(qū)別is比較變量?jī)?nèi)存地址和值是否相等,==僅僅比較變量的值是否相等需要注意:當(dāng)變量的值較小時(shí)(a=1, b=1時(shí),a ...

    FingerLiu 評(píng)論0 收藏0
  • 前端見(jiàn)面試題總結(jié)

    摘要:個(gè)人總結(jié)的一些常見(jiàn)面試題歡迎各位同時(shí)非常歡迎貢獻(xiàn)問(wèn)題一起來(lái)完善不定期更新常見(jiàn)前端面試題總結(jié) 個(gè)人總結(jié)的一些常見(jiàn)面試題,歡迎各位star,issues,同時(shí)非常歡迎貢獻(xiàn)問(wèn)題!一起來(lái)完善.不定期更新常見(jiàn)前端面試題總結(jié)

    ingood 評(píng)論0 收藏0
  • 見(jiàn)面試題—css實(shí)現(xiàn)垂直水平居中

    摘要:常見(jiàn)面試題實(shí)現(xiàn)垂直水平居中前言面試中常常被問(wèn)到,如何使用來(lái)實(shí)現(xiàn)一個(gè)元素的垂直水平方向上居中,特別是筆試題的時(shí)候,這道題目的出現(xiàn)頻率還是比較高的,當(dāng)然,在我們的生活中,也常常會(huì)有垂直水平居中的需求。 常見(jiàn)面試題—css實(shí)現(xiàn)垂直水平居中 前言 面試中常常被問(wèn)到,如何使用css來(lái)實(shí)現(xiàn)一個(gè)元素的垂直水平方向上居中,特別是筆試題的時(shí)候,這道題目的出現(xiàn)頻率還是比較高的,當(dāng)然,在我們的生活中,也常常...

    gougoujiang 評(píng)論0 收藏0
  • 70 個(gè) Spring 最見(jiàn)面試題,Java 晉升必會(huì)

    摘要:容器自動(dòng)完成裝載,默認(rèn)的方式是這部分重點(diǎn)在常用模塊的使用以及的底層實(shí)現(xiàn)原理。 對(duì)于那些想面試高級(jí) Java 崗位的同學(xué)來(lái)說(shuō),除了算法屬于比較「天方夜譚」的題目外,剩下針對(duì)實(shí)際工作的題目就屬于真正的本事了,熱門技術(shù)的細(xì)節(jié)和難點(diǎn)成為了主要考察的內(nèi)容。 這里說(shuō)「天方夜譚」并不是說(shuō)算法沒(méi)用,不切實(shí)際,而是想說(shuō)算法平時(shí)其實(shí)很少用到,甚至面試官都對(duì)自己出的算法題一知半解。 這里總結(jié)打磨了 70 道...

    Ashin 評(píng)論0 收藏0
  • 前端見(jiàn)面試題(實(shí)戰(zhàn)遇到)

    摘要:瀏覽器內(nèi)核常用的塊元素和內(nèi)聯(lián)元素?cái)?shù)據(jù)類型語(yǔ)句前端優(yōu)化方法會(huì)話跟蹤方法和區(qū)別循環(huán)輸出網(wǎng)站優(yōu)化清除浮動(dòng)方法,優(yōu)缺點(diǎn)和區(qū)別截取長(zhǎng)文本寫(xiě)方法截取字符串響應(yīng)式布局瀏覽器兼容正則表達(dá)式驗(yàn)證身份證源碼自己如何封裝一個(gè)固定一個(gè)按鈕在右下角畫(huà)一個(gè)三角形同步和 1、瀏覽器內(nèi)核2、常用的塊元素和內(nèi)聯(lián)元素3、數(shù)據(jù)類型 *4、SQL語(yǔ)句5、前端優(yōu)化方法 *6、會(huì)話跟蹤方法 *7、display : none 和...

    時(shí)飛 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<