最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

帶你了解10道java入門面試題

 更新時(shí)間:2021年08月01日 10:22:29   作者:韶光不負(fù)  
面試題相信大家都不陌生,想要一個(gè)好的工作面試題必不可少的,下面和小編一起來學(xué)習(xí)與了解Java當(dāng)中有有些什么面試題吧,希望能給你帶來幫助

1. 談?wù)勀銓γ嫦驅(qū)ο蟮牧私猓?(談?wù)勀銓γ嫦驅(qū)ο蠛兔嫦蜻^程的了解?)

面向?qū)ο笈c面向過程相比較,面向過程注重事件的步驟與順序,比較直接高效,面向?qū)ο笞⒅厥录⑴c的對象與對象各己需要做的事,更易于復(fù)用,維護(hù)與擴(kuò)展。(以舉例來說明更加形象)

(例:拿常見手機(jī)支付來看)

面向過程:1,手機(jī)掃碼——>2,輸入密碼——>3,確認(rèn)是否支付成功——>4,離開

面向?qū)ο?/code>:拆出人與手機(jī)二個(gè)對象,(人:輸入密碼,離開,手機(jī):手機(jī)掃碼,確認(rèn)是否支付成功)

下面就要談?wù)劽嫦驅(qū)ο蟮娜筇卣鳎悍庋b。繼承與多態(tài)

封裝的意義:明確標(biāo)識(shí)出允許外部使用的屬性與方法,內(nèi)部細(xì)節(jié)對外部隱藏,外部調(diào)用無需修改和關(guān)心內(nèi)部如何實(shí)現(xiàn)。

繼承:繼承父類(基類)的方法,不包括私有化的部分,引用父類的方法或者按自己需求進(jìn)行修改與擴(kuò)展。

多態(tài):(條件:1,在繼承的基礎(chǔ)上,2,存在方法重寫,3,父類的引用指向子類的對象),基于對象所屬類的不同,子類對父類同一個(gè)方法的調(diào)用,實(shí)際執(zhí)行的邏輯不同。(無法調(diào)用調(diào)用子類特有的方法)。

2.==與equals的比較(筆試中常見)

==:比較的是棧中的值,基本上就是比較的變量當(dāng)中的值,引用類型是堆中的內(nèi)存對象地址、

equals:Object默認(rèn)采用“==”比較,通常繼承后會(huì)進(jìn)行重寫比較的為對象的內(nèi)容(例如String)。

例題:

public class Taxi {
    public static void main(String[] args) {
        String str1="hello";
        String str2=new String("hello");
        String str3=str2;
        System.out.println(str1==str2);//false
        System.out.println(str1==str3);//false
        System.out.println(str2==str3);//true
        System.out.println(str1.equals(str2));//true
        System.out.println(str1.equals(str3));//true
        System.out.println(str2.equals(str3));//true
    }
}

解析:在Java中字符串是對象,字符串在生成時(shí)其實(shí)是在內(nèi)存常量池當(dāng)中生成。所以str1指向的“hello”的對象內(nèi)存地址,str2因?yàn)閚ew關(guān)鍵字在堆中開辟內(nèi)存,但內(nèi)存指向常量池中的“hello”,str2指向開辟內(nèi)存的對象地址。str3==str2,所以str3指向str2指向開辟內(nèi)存的對象地址。因?yàn)閟tr1與str2和str1與str3“==”比較內(nèi)存地址不同返回flase,str2與str3的內(nèi)存地址相同返回ture,字符串方法中equals重寫過,比較的是內(nèi)容,str1與str2與str3的內(nèi)容相同為“hello”,所以返回的是ture.

3.fianl關(guān)鍵字

final的作用:

該類不能被繼承
方法 該方法不能被重寫,但可以重載
變量 變量一旦被賦值就不能修改
成員變量(普通) 在聲明的時(shí)候就需要賦值,或者靜態(tài)塊中與構(gòu)造函數(shù)中賦值
成員變量(靜態(tài)) 在聲明的時(shí)候就需要賦值,或者靜態(tài)塊中賦值
局部變量 系統(tǒng)不會(huì)給變量初始化,必須程序員寫入,在初始化時(shí)不會(huì)報(bào)錯(cuò),但在使用前一定要初始化,不然報(bào)錯(cuò)
基本數(shù)據(jù)類型 基本數(shù)據(jù)類型的數(shù)值初始化后不能改變
引用數(shù)據(jù)類型 初始化后不能指向另一個(gè)對象,但引用的值是可以改變的

4.為什么局部內(nèi)部類與匿名內(nèi)部類只能訪問局部的final變量?

首先必須知道,內(nèi)部類與外部類,內(nèi)部類不會(huì)因?yàn)槎x在方法中,跟方法執(zhí)行完一起回收,就會(huì)產(chǎn)生一個(gè)問題,外部方法結(jié)束時(shí),就會(huì)回收局部變量,但內(nèi)部類對象(當(dāng)沒有引用時(shí)回收)還存在,就存在了一個(gè)問題,內(nèi)部類訪問了一個(gè)不存在的變量,所以在jdk當(dāng)中為了解決這個(gè)辦法,局部就復(fù)制了一份內(nèi)部類成員變量,當(dāng)局部變量回收后仍可以訪問局部變量,但實(shí)際訪問的是“copy”過的值。(為了復(fù)制的局部變量必須與原局部變量一樣,所以使用final修飾)

public class Management {
    private int id=10;
    //final修飾局部變量
    public void outPrint(final String x){
        class InClass{
            public void Inprint(){
                System.out.println(x);
                System.out.println(id);
            }
        }
        new InClass().Inprint();
    }
    public static void main(String[] args) {
       Management m=new Management();
        m.outPrint("小羅");
    }
}

5.String,StringBuffer,StringBuilder 三者的區(qū)別與使用場景?

String:final修飾的,不可變的,每次操作會(huì)產(chǎn)生新的對象。

StringBuffer,StringBuilder:對原對象進(jìn)行操作,不產(chǎn)生新對象。

性能上:StringBuilder (線程不安全)> StringBuffer(線程安全) > String

使用場景:當(dāng)需要對字符串內(nèi)容進(jìn)行多次改變時(shí),使用StringBuffer,StringBuilder。但因?yàn)樾阅茉騼?yōu)先使用StringBuilder ,需要多線程,共享變量時(shí)使用StringBuffer。

6.重載和重寫(覆蓋)的區(qū)別?

重載:發(fā)生在類當(dāng)中,方法名稱必須相同,參數(shù)的類型,個(gè)數(shù)順序不同。方法返回值與修飾符可以不同。(下圖:不是重載,方法名稱必須相同,參數(shù)的類型,個(gè)數(shù)順序相同,重載與返回值沒有關(guān)系)

 public void outPrint(String x,int i){
       
    }
public int outPrint(String x,int i){
       //這個(gè)不是重載,編譯時(shí)會(huì)報(bào)錯(cuò) 
    }

重寫(覆蓋):發(fā)生在繼承的父類與子類當(dāng)中,方法名與參數(shù)列表必須相同,返回值的范圍小于等于父類,如果存在異常,拋出異常范圍小于等于父類,修飾符的權(quán)限必須大于等于父類。如果父類方法以private修飾則子類不能重寫該方法。

7.接口與抽象類的區(qū)別?

1,抽象類可以存在普通成員函數(shù),而接口只能存在public abstract 方法,

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

3,抽象類中成員變量可以是任何類型,而接口中成員變量只能是public static final 類型的。

(高級(jí):接口設(shè)計(jì)的目的:是對類行為進(jìn)行約束,抽象類的目的:提高代碼的復(fù)用性,抽象類不允許實(shí)例化)

使用場景:當(dāng)你關(guān)注的是事務(wù)本身時(shí),就用抽象類,當(dāng)你關(guān)注操作時(shí)就使用接口。

8.list與set的區(qū)別?

list:有序,可重復(fù)的,按對象進(jìn)入順序進(jìn)行存儲(chǔ),允許多個(gè)null對象,可以使用迭代器取出所以元素,還可以所以get方法獲取指定下標(biāo)的元素。

set:無序,不可重復(fù)。只允許有一個(gè)null對象,只能使用迭代器遍歷元素。

9.hashCode與equals

equals:Object默認(rèn)采用“==”比較,通常繼承后會(huì)進(jìn)行重寫比較的為對象的內(nèi)容(例如String)。

hashCode:定義在Object中hashCode()會(huì)獲取哈希碼(又稱為散列碼),確定哈希表表上的索引,并返回int整數(shù)。特點(diǎn)“根據(jù)鍵快速找到與之對應(yīng)的值”

聯(lián)系與規(guī)則:

1,如果二個(gè)對象相等,hashCode一定也是相等的

2,如果二個(gè)對象相等,二個(gè)對象調(diào)用equals返回ture。

3,二個(gè)對象的hashCode一樣,他們不一定相等。

4,equals方法被覆蓋,hashCode方法也必須覆蓋。

5,hashCode默認(rèn)行為是堆上的對象獨(dú)特值,如果沒有重寫hashCode(),則該類二個(gè)對象無論如何都不會(huì)相等。

10.ArryList與LinkList的區(qū)別?

ArryList:基于動(dòng)態(tài)數(shù)組,連續(xù)存儲(chǔ),適合下標(biāo)訪問,擴(kuò)容機(jī)制:因?yàn)閿?shù)組長度是固定的,超過固定長度會(huì)新建立一個(gè)數(shù)組,長度擴(kuò)大原來1.5倍,回收老數(shù)組。

LinkList:基于列表,可以存儲(chǔ)在分散的內(nèi)存當(dāng)中。適合插入,刪除,不適合查詢。LinkList一般使用迭代器進(jìn)行遍歷。不建議使用for循環(huán)遍歷,因?yàn)槊恳淮伪闅v都會(huì)get方法,消耗性能大,不使用indexOf來返回元素索引,和遍歷元素。用indexOf遍歷list進(jìn)行遍歷時(shí),當(dāng)結(jié)果為空時(shí)還遍歷這個(gè)列表。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java8處理集合的優(yōu)雅姿勢之Stream

    Java8處理集合的優(yōu)雅姿勢之Stream

    這篇文章主要給大家介紹了關(guān)于Java8優(yōu)雅處理集合之Stream的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java mysql特殊形式的查詢語句詳解

    Java mysql特殊形式的查詢語句詳解

    這篇文章主要介紹了Java mysql特殊形式的查詢,包括子查詢和聯(lián)合查詢、自身連接查詢問題,本文通過sql語句給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • springboot對接第三方微信授權(quán)及獲取用戶的頭像和昵稱等等

    springboot對接第三方微信授權(quán)及獲取用戶的頭像和昵稱等等

    這篇文章主要介紹了springboot對接第三方微信授權(quán)及獲取用戶的頭像和昵稱等等,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java正則表達(dá)式的語法及示例解析

    Java正則表達(dá)式的語法及示例解析

    這篇文章主要介紹了Java正則表達(dá)式的語法及示例解析,需要的朋友可以參考下
    2017-07-07
  • Java語言簡介(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java語言簡介(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

    Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個(gè)特征,下面通過本文給大家分享java語言的簡介,感興趣的朋友一起看看吧
    2017-03-03
  • Java架構(gòu)設(shè)計(jì)之六步拆解 DDD

    Java架構(gòu)設(shè)計(jì)之六步拆解 DDD

    DDD(Domain-Driven Design 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))是由Eric Evans最先提出,目的是對軟件所涉及到的領(lǐng)域進(jìn)行建模,以應(yīng)對系統(tǒng)規(guī)模過大時(shí)引起的軟件復(fù)雜性的問題
    2022-02-02
  • java+mysql模擬實(shí)現(xiàn)銀行系統(tǒng)

    java+mysql模擬實(shí)現(xiàn)銀行系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java+mysql模擬實(shí)現(xiàn)銀行系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • java使用hashMap緩存保存數(shù)據(jù)的方法

    java使用hashMap緩存保存數(shù)據(jù)的方法

    這篇文章主要介紹了java使用hashMap緩存保存數(shù)據(jù)的方法,結(jié)合實(shí)例形式簡單分析了java基于hashmap讀寫緩存數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • Java程序進(jìn)程起來了但是不打印日志的原因分析

    Java程序進(jìn)程起來了但是不打印日志的原因分析

    這篇文章主要介紹了Java程序進(jìn)程起來了但是不打印日志的原因分析,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • netty?pipeline中的inbound和outbound事件傳播分析

    netty?pipeline中的inbound和outbound事件傳播分析

    這篇文章主要為大家介紹了netty?pipeline中的inbound和outbound事件傳播分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評(píng)論

城口县| 内江市| 巴彦县| 昌黎县| 德惠市| 盘山县| 留坝县| 林口县| 于都县| 乌兰县| 广灵县| 清流县| 博乐市| 宁陵县| 旬邑县| 芷江| 连城县| 民丰县| 临泽县| 哈巴河县| 长葛市| 许昌市| 延长县| 静安区| 滦南县| 连江县| 鹤岗市| 平顶山市| 星子县| 任丘市| 蒙城县| 陇南市| 安远县| 邛崃市| 哈密市| 栖霞市| 孝昌县| 潢川县| 宣汉县| 安达市| 揭阳市|