用10天時間整理Java基礎面試題哺窄,2021年還怕拿不到offer嗎?

&和&&的區(qū)別账锹?

& 無論左邊表達式執(zhí)行結果如何萌业,都會執(zhí)行右邊

&& 左邊執(zhí)行不符合條件時,右邊不執(zhí)行

public static void main(String[] args) {
        int i = 1;
        int j = 2;
        
        // &
        if(++i==10 & ++j==10) { //false
            System.out.println(i);
            System.out.println(j);
        }
        System.out.println(i); //2
        System.out.println(j); //3
        
        // &
        if(++i==10 && ++j==10) {  //false
            System.out.println(i);
            System.out.println(j);
        }
        System.out.println(i); //3
        System.out.println(j); //3
    }

int和 Integer 有什么區(qū)別奸柬?(基本數(shù)據(jù)類型有哪些生年?)(String不是基本數(shù)據(jù)類型)

Java 為每個基本類型都提供了包裝類,int 的包裝類就是 Integer廓奕,并且從 jdk1.5 引入了自動拆箱抱婉、裝箱機制,使得二者可以相互轉換桌粉。

原始類型:boolean蒸绩,char,byte铃肯,short患亿,int,long押逼,float步藕,double

包裝類型: Boolean惦界,Character,Byte咙冗,Short表锻,Integer,Long乞娄,F(xiàn)loat瞬逊,Double

String、StringBuffer仪或、 StringBuilder 的區(qū)別确镊?

String 用于字符串操作,不可改變類型范删,每次值發(fā)生改變蕾域,都會創(chuàng)建一個新的對象,底層使用 char 數(shù)組實現(xiàn)到旦,因為 使用 final旨巷,所以 String 不可以被繼承

StringBuffer 用于字符串操作,可變類型添忘,對方法增加了同步鎖采呐,線程安全

StringBuilder 和 StringBuffer 類似,都是字符串緩沖區(qū)搁骑,線程不安全

執(zhí)行效率:StringBuilder(線程不安全)>StringBuffer(線程安全)>String

整理了Java架構學習資料斧吐,學習技術內容包含有:Spring,Dubbo仲器,MyBatis, RPC,源碼分析煤率,高并發(fā)、高性能乏冀、分布式,性能優(yōu)化蝶糯,微服務 高級架構開發(fā)等等。

需要的朋友可以點擊:點這個辆沦!點這個昼捍!,暗號: j s

image.png

String 類的常用方法都有那些众辨?

indexOf():返回指定字符得索引

charAt():返回指定索引處得字符

repalce():字符串替換

trim():去除字符串兩端的空白

split():分割字符串 返回分割后的字符串數(shù)組

getBytes():返回字符串的 byte 類型數(shù)組

length():返回字符串的長度

toLowerCase():字符串轉小寫

toUpperCase():字符串轉大寫

substring():截取字符串

equals():字符串比較

final修飾 StringBuffer 后還可以 append 嗎端三?

可以,final 修飾的是一個引用變量鹃彻,那么這個引用始終指向這個對象郊闯,但這個對象內部的屬性是可以改變的。

public static void main(String[] args) {
        final StringBuffer sb = new StringBuffer();
        sb.append("a");
        sb.append("b");
        sb.append("c");
        
        System.out.println(sb); //abc
        
    }

String 字符串修改實現(xiàn)的原理?

當 String 修改字符串的時候會創(chuàng)建一個 StringBuilder 對象团赁,接下來調用 append 方法育拨,最后通過 toString 方法返回。

什么是值傳遞和引用傳遞欢摄?

值傳遞:基本類型的一個概念熬丧,傳遞的是該變量的一個副本,改變副本不影響原變量

引用傳遞:對象型變量而言怀挠,傳遞的是該對象地址的一個副本析蝴,所以對引用對象操作影響原變量

== 比較的是什么?

比較兩個對象基本內存引用绿淋,如果兩個對象的引用完全相同闷畸,返回 true,否則返回 false吞滞,如果兩個對象是基本數(shù)據(jù)類型佑菩,則比較值是否相等。

public static void main(String[] args) {
        int i = 10;
        int j = 10;
        System.out.println(i==j);
        
        String a = new String("hello");
        String b = new String("hello");
        System.out.println(a==b);
    }

兩個對象的 hashCode() 相同裁赠,則 equals() 也一定為 true 嗎殿漠?

如果兩個對象相等,則 hashCode 一定也是相同的佩捞;反之不成立绞幌。

public static void main(String[] args) {
        String str1 = "通話";
        String str2 = "重地";
        System.out.println(str1.hashCode());//1179395
        System.out.println(str2.hashCode());//1179395
        
        System.out.println(str1.equals(str2));//false
    }

Java 里面的 final 關鍵字是怎么用的?

final關鍵字修飾的變量失尖,只能進行一次賦值操作啊奄,并且在生存期內不可以改變它的值。

final關鍵字修飾的參數(shù)掀潮,在此方法中,不可更改該參數(shù)的值琼富。

final關鍵字修飾的方法仪吧,該方法不能被重寫。

final關鍵字修飾的類鞠眉,該類不能被繼承薯鼠。

解釋下什么是面向對象?面向對象和面向過程的區(qū)別械蹋?

面向對象的程序是由對象組成的出皇,每個對象包含用戶公開的特定功能部分和隱藏的實現(xiàn)部分。 結構清晰哗戈,程序便于模塊化郊艘,結構化,抽象化,更加符合人類的思維方式纱注。

面向過程的程序通過設計一系列的過程來解決問題畏浆。 面向過程側重整個問題的解決步驟,著眼局部或者具體狞贱。

面向對象的三大特性刻获?分別解釋下?

封裝:通常認為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法封裝起來瞎嬉,對數(shù)據(jù)的訪問只能通過已定義的接口蝎毡。

繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過程。提供繼承信息的類被稱為父類(超類/基類)氧枣,得到繼承信息的被稱為子類(派生類)沐兵。

多態(tài):分為編譯時多態(tài)(方法重載)和運行時多態(tài)(方法重寫)。

要實現(xiàn)多態(tài)需要做兩件事:一是子類繼承父類并重寫父類中的方法挑胸,二是用父類型引用子類型對象痒筒,這樣同樣的引用調用同樣的方法就會根據(jù)子類對象的不同而表現(xiàn)出不同的行為。主要由以下三種方式實現(xiàn):

通過子類對父類的覆蓋實現(xiàn)

通過在一個類中對方法的重載來實現(xiàn)

通過將子類對象作為父類對象使用來實現(xiàn)

Java 類初始化采用什么順序呢茬贵?

初始化父類中的靜態(tài)成員變量和靜態(tài)代碼塊

初始化子類中的靜態(tài)成員變量和靜態(tài)代碼塊

初始化父類中的普通成員變量和代碼塊簿透,再執(zhí)行父類的構造方法

初始化子類中的普通成員變量和代碼塊,再執(zhí)行父子類的構造方法

Java 是否支持多繼承解藻?

Java不支持多繼承老充,但Java可以實現(xiàn)多個接口,從而達到類似多繼承的目的螟左。

什么是構造函數(shù)啡浊?什么是構造函數(shù)重載?

新對象被創(chuàng)建的時候會調用構造函數(shù)胶背,每個類都有構造函數(shù)巷嚣,如果沒有顯式的創(chuàng)建構造函數(shù),Java 編譯器會自動為該類創(chuàng)建一個默認的構造函數(shù)钳吟。

若該類已經創(chuàng)建非空參構造函數(shù)廷粒,默認的無參構造函數(shù)就會失效。

構造函數(shù)重載和方法重載類似红且,可以為一個類創(chuàng)建多個構造函數(shù)坝茎,但是要保證每個構造函數(shù)都有唯一的參數(shù)列表。

重載和重寫的區(qū)別暇番?

重載嗤放,編譯時多態(tài),在一個類里面壁酬,方法名字相同次酌,而參數(shù)不同恨课。返回類型可以相同也可以不同。

重寫和措,也叫覆蓋庄呈,運行時多態(tài),重寫發(fā)生在子類與父類之間派阱,重寫要求子類與父類具有相同的參數(shù)列表和返回類型诬留。重寫的方法調用時會覆蓋父類的方法。

請說明 Comparable 和 Comparator 接口的作用以及它們的區(qū)別贫母?

Comparable:

它是一個排序接口文兑,只包含一個函數(shù) compareTo()

一個類實現(xiàn)了 Comparable 接口,就意味著該類本身支持排序腺劣,它可以直接通過 Arrays.sort() 或 Collections.sort() 進行排序

public class Human implements Comparable<Human> {
    public Integer id;
    public Integer age;
    
    @Override
    public int compareTo(Human o) {
        if(this.age > o.age) {
            return 1;
        }else if(this.age < o.age) {
            return -1;
        }else{
            return 0;
        }
    }
    
}

Comparator:

它是一個比較器接口绿贞,包括兩個函數(shù):compare() 和 equals()

一個類實現(xiàn)了Comparator接口,那么它就是一個比較器橘原,其它的類籍铁,可以根據(jù)該比較器去排序

綜上所述:Comparable 是內部比較器,而 Comparator 是外部比較器趾断。

public class Man implements Comparator<Man>{
    public Integer id;
    public Integer age;

    @Override
    public int compare(Man o1, Man o2) {
        if(o1.age > o2.age) {
            return 1;
        }else if(o1.age < o2.age) {
            return -1;
        }else{
            return 0;
        }
    }
}

抽象類和接口有什么區(qū)別拒名?

抽象類中可以定義構造函數(shù),接口不能定義構造函數(shù)芋酌;

抽象類中可以有抽象方法和具體方法增显,而接口中只能有抽象方法(public abstract);

抽象類中的成員權限可以是 public脐帝、默認同云、protected(抽象類中抽象方法就是為了重寫,所以不能被 private 修飾)堵腹,而接口中的成員只可以是 public(方法默認:public abstrat炸站、成員變量默認:public static final);

抽象類中可以包含靜態(tài)方法疚顷,而接口中不可以包含靜態(tài)方法武契。

static 關鍵字的作用?Java 中是否可以重寫一個 private 或者是 static 的方法荡含?

static 關鍵字表明一個成員變量或成員方法可以在沒有所屬類的情況下被訪問。

重寫是基于運行時動態(tài)綁定的届垫,而 static 方法是編譯時靜態(tài)綁定的释液,static 方法與任何實例都不相關,所以不能重寫一個 static 方法

成員變量和局部變量的區(qū)別装处?

生命周期不同

成員變量:

類成員變量是從該類的準備階段開始误债,直到系統(tǒng)完全銷毀這個類浸船,類變量的作用域與這個類的生存范圍相同

實例變量是從該類的實例被創(chuàng)建開始存在,直到系統(tǒng)完全銷毀這個實例寝蹈,實例變量的作用域與對應實例的生存范圍相同

局部變量根據(jù)定義形式的不同李命,又可以分為如下三種:

形參,形參的作用域在整個方法中都有效

方法局部變量箫老,作用域從定義這個變量的位置到方法結束時都有效

代碼塊局部變量封字,作用域從定義這個變量的位置到代碼塊結束時都有效

super 關鍵字的作用?

super 關鍵字可以在子類構造方法中顯式調用父類構造耍鬓,但是必要處于第一行阔籽。

super 關鍵字可以在子類中顯式調用父類方法或變量。

有時候可以使用這個關鍵字擴展從父類繼承過來的方法牲蜀。

請說明類和對象的區(qū)別笆制?

類是對某一類事物的描述,是抽象的涣达;而對象是表示的一個具體的個體在辆,是類的一個實例。

對象是函數(shù)度苔、變量的集合體匆篓,而類是一組函數(shù)、變量的集合體林螃, 即類是一組具有相同屬性的對象集合體奕删。

(class修飾的是類,new出來的是對象)

finally 塊中的代碼什么時候被執(zhí)行疗认?

在 Java 語言的異常處理中完残,finally 塊的作用就是為了保證無論出現(xiàn)什么情況,finally 塊里的代碼一定會被執(zhí)行横漏。由于程序執(zhí)行 return 就意味著結束對當前函數(shù)的調用并跳出這個函數(shù)體谨设,因此任何語句要執(zhí)行都只能在 return 前執(zhí)行(除非碰到 exit 函數(shù)),因此 finally 塊里的代碼也是在 return 之前執(zhí)行的缎浇。

此外扎拣,如果 try-finally 或者 catch-finally 中都有 return,那么 finally 塊中的 return 將會覆蓋別處的 return 語句素跺,最終返回到調用者那里的是 finally 中 return 的值二蓝。

finally 是不是一定會被執(zhí)行到?

不一定指厌,下面列舉兩種執(zhí)行不到的情況:

當程序進入 try 塊之前就出現(xiàn)異常時刊愚,會直接結束,不會執(zhí)行 finally 塊中的代碼踩验;

當程序在 try 塊中強制退出時也不會去執(zhí)行 finally 塊中的代碼鸥诽,比如在 try 塊中執(zhí)行 exit 方法商玫。

try-catch-finally 中,如果 catch 中 return 了牡借,finally 還會執(zhí)行嗎拳昌?

會,程序在執(zhí)行到 return 時會首先將返回值存儲在一個指定的位置钠龙,其次去執(zhí)行 finally 塊炬藤,最后再返回。因此俊鱼,對基本數(shù)據(jù)類型刻像,在 finally 塊中改變 return 的值沒有任何影響,直接覆蓋掉并闲;而對引用類型是有影響的细睡,返回的是在 finally 對 前面 return 語句返回對象的修改值。

throw 和 throws 的區(qū)別帝火?

throw:在方法體內部溜徙,表示拋出異常,由方法體內部的語句處理犀填;throw 是具體向外拋出異常的動作蠢壹,所以它拋出的是一個異常實例;

throws:在方法聲明后面九巡,表示如果拋出異常图贸,由該方法的調用者來進行異常的處理;表示出現(xiàn)異常的可能性冕广,并不一定會發(fā)生這種異常疏日。

常見的異常類有哪些?

ArithmeticExecption

NullPointerException

ClassCastException

ArrayIndexOutOfBoundsException

FileNotFoundException

NumberFormatException

SQLException

IOException

NoSuchMethodException

IndexOutOfBoundsExecption

IllegalArgumentException

Java 的泛型是如何工作的 ? 什么是類型擦除 ?

泛型使得數(shù)據(jù)的類型可以通過參數(shù)傳遞過來撒汉,它提供了一種擴展能力沟优,更符合面向對象思想。

當具體的類型確定之后睬辐,泛型還提供了類型檢測機制挠阁,不符合的類型不允許賦值,否則編譯不通過溯饵。

所以類型擦除就是在進入 JVM 之前侵俗,與泛型相關的信息會被擦除掉,這些信息被擦除后丰刊,相應的類型就會被替換成泛型類型參數(shù)的上限竟终,如果沒有指定挪丢,則替換成 Object营勤。

什么是泛型中的限定通配符和非限定通配符 ?

限定通配符包括兩種:

表示類型的上界,格式為:<凫乖? extends T>,即類型必須為 T 類型或者 T 子類

表示類型的下界通铲,格式為:<旺矾? super T>,即類型必須為 T 類型或者 T 的父類

非限定通配符:類型為 逗概,可以用任意類型替代弟晚。

List<? extends T> 和 List <? super T> 之間有什么區(qū)別 ?

List<? extends T>,即類型必須為 T 類型或者 T 子類

List <? super T>逾苫,即類型必須為 T 類型或者 T 的父類

Java 中的 IO 流的分類卿城?

按功能來分:輸入流(input)、輸出流(output)铅搓。

按類型來分:字節(jié)流 和 字符流瑟押。

字節(jié)流和字符流有什么區(qū)別?

字節(jié)流按 8 位傳輸星掰,以字節(jié)為單位輸入輸出數(shù)據(jù)多望,字符流按 16 位傳輸,以字符為單位輸入輸出數(shù)據(jù)氢烘。

但是不管文件讀寫還是網(wǎng)絡發(fā)送接收怀偷,信息的最小存儲單元都是字節(jié)。

總結

到此這篇關于java基礎面試題1的文章就介紹到這了播玖。
下面是我整理的java核心知識點椎工,從java基礎到java高級都很實用的一份文檔!

在這里插入圖片描述

在這里插入圖片描述

還有Java核心知識點+全套架構師學習資料和視頻+一線大廠面試寶典+面試簡歷模板可以領取+阿里美團網(wǎng)易騰訊小米愛奇藝快手嗶哩嗶哩面試題+Spring源碼合集+Java架構實戰(zhàn)電子書蜀踏。
image

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末维蒙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子脓斩,更是在濱河造成了極大的恐慌木西,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件随静,死亡現(xiàn)場離奇詭異八千,居然都是意外死亡,警方通過查閱死者的電腦和手機燎猛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門恋捆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人重绷,你說我怎么就攤上這事沸停。” “怎么了昭卓?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵愤钾,是天一觀的道長瘟滨。 經常有香客問我,道長能颁,這世上最難降的妖魔是什么杂瘸? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮伙菊,結果婚禮上败玉,老公的妹妹穿的比我還像新娘。我一直安慰自己镜硕,他們只是感情好运翼,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兴枯,像睡著了一般血淌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上念恍,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天六剥,我揣著相機與錄音,去河邊找鬼峰伙。 笑死疗疟,一個胖子當著我的面吹牛,可吹牛的內容都是我干的瞳氓。 我是一名探鬼主播策彤,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匣摘!你這毒婦竟也來了店诗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤音榜,失蹤者是張志新(化名)和其女友劉穎庞瘸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赠叼,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡擦囊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘴办。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞬场。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涧郊,靈堂內的尸體忽然破棺而出贯被,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布彤灶,位于F島的核電站看幼,受9級特大地震影響,放射性物質發(fā)生泄漏枢希。R本人自食惡果不足惜桌吃,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苞轿。 院中可真熱鬧,春花似錦逗物、人聲如沸搬卒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽契邀。三九已至,卻和暖如春失暴,著一層夾襖步出監(jiān)牢的瞬間坯门,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工逗扒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留古戴,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓矩肩,卻偏偏與公主長得像现恼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子黍檩,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容