最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

10萬字208道Java經(jīng)典面試題總結(附答案)

2023-04-25 20:38 作者:編程小宇e  | 我要投稿

前言?

最近有很多粉絲問我,有什么方法能夠快速提升自己,通過阿里、騰訊、字節(jié)跳動、京東等互聯(lián)網(wǎng)大廠的面試,我覺得短時間提升自己最快的手段就是背面試題,最近總結了Java常用的面試題,分享給大家,希望大家都能圓夢大廠,加油,我命由我不由天。

1、JDK 和 JRE 有什么區(qū)別?

JDK(Java Development Kit),Java開發(fā)工具包


JRE(Java Runtime Environment),Java運行環(huán)境

JDK中包含JRE,JDK中有一個名為jre的目錄,里面包含兩個文件夾bin和lib,bin就是JVM,lib就是JVM工作所需要的類庫。


2、== 和 equals 的區(qū)別是什么?

對于基本類型,==比較的是值;

對于引用類型,==比較的是地址;

equals不能用于基本類型的比較;

如果沒有重寫equals,equals就相當于==;

如果重寫了equals方法,equals比較的是對象的內(nèi)容;

3、final 在 java 中有什么作用?

(1)用來修飾一個引用

?如果引用為基本數(shù)據(jù)類型,則該引用為常量,該值無法修改;

?如果引用為引用數(shù)據(jù)類型,比如對象、數(shù)組,則該對象、數(shù)組本身可以修改,但指向該對象或數(shù)組的地址的引用不能修改。

?如果引用時類的成員變量,則必須當場賦值,否則編譯會報錯。

(2)用來修飾一個方法

當使用final修飾方法時,這個方法將成為最終方法,無法被子類重寫。但是,該方法仍然可以被繼承。

(3)用來修飾類

當用final修改類時,該類成為最終類,無法被繼承。

?比如常用的String類就是最終類。

4、java 中的 Math.round(-1.5) 等于多少?

Math提供了三個與取整有關的方法:ceil、floor、round

(1)ceil:向上取整;

Math.ceil(11.3) = 12;

Math.ceil(-11.3) = 11;

(2)floor:向下取整;

Math.floor(11.3) = 11;

Math.floor(-11.3) = -12;

(3)round:四舍五入;

加0.5然后向下取整。

Math.round(11.3) = 11;

Math.round(11.8) = 12;

Math.round(-11.3) = -11;

Math.round(-11.8) = -12;

5、String 屬于基礎的數(shù)據(jù)類型嗎?

不屬于。


八種基本數(shù)據(jù)類型:byte、short、char、int、long、double、float、boolean。


6、String str="i"與 String str=new String(“i”)一樣嗎?

String str="i"會將起分配到常量池中,常量池中沒有重復的元素,如果常量池中存中i,就將i的地址賦給變量,如果沒有就創(chuàng)建一個再賦給變量。

String str=new String(“i”)會將對象分配到堆中,即使內(nèi)存一樣,還是會重新創(chuàng)建一個新的對象。

7、如何將字符串反轉(zhuǎn)?

將對象封裝到stringBuilder中,調(diào)用reverse方法反轉(zhuǎn)。

8、String 類的常用方法都有那些?

(1)常見String類的獲取功能

length:獲取字符串長度;

charAt(int index):獲取指定索引位置的字符;

indexOf(int ch):返回指定字符在此字符串中第一次出現(xiàn)處的索引;

substring(int start):從指定位置開始截取字符串,默認到末尾;

substring(int start,int end):從指定位置開始到指定位置結束截取字符串;


(2)常見String類的判斷功能

equals(Object obj): 比較字符串的內(nèi)容是否相同,區(qū)分大小寫;

contains(String str): 判斷字符串中是否包含傳遞進來的字符串;

startsWith(String str): 判斷字符串是否以傳遞進來的字符串開頭;

endsWith(String str): 判斷字符串是否以傳遞進來的字符串結尾;

isEmpty(): 判斷字符串的內(nèi)容是否為空串"";


(3)常見String類的轉(zhuǎn)換功能

byte[] getBytes(): 把字符串轉(zhuǎn)換為字節(jié)數(shù)組;

char[] toCharArray(): 把字符串轉(zhuǎn)換為字符數(shù)組;

String valueOf(char[] chs): 把字符數(shù)組轉(zhuǎn)成字符串。valueOf可以將任意類型轉(zhuǎn)為字符串;

toLowerCase(): 把字符串轉(zhuǎn)成小寫;

toUpperCase(): 把字符串轉(zhuǎn)成大寫;

concat(String str): 把字符串拼接;


(4)常見String類的其他常用功能

replace(char old,char new) 將指定字符進行互換

replace(String old,String new) 將指定字符串進行互換

trim() 去除兩端空格

int compareTo(String str) 會對照ASCII 碼表 從第一個字母進行減法運算 返回的就是這個減法的結果,如果前面幾個字母一樣會根據(jù)兩個字符串的長度進行減法運算返回的就是這個減法的結果,如果連個字符串一摸一樣 返回的就是0。


9、new String("a") + new String("b") 會創(chuàng)建幾個對象?

對象1:new StringBuilder()

對象2:new String("a")

對象3:常量池中的"a"

對象4:new String("b")

對象5:常量池中的"b"


深入剖析:StringBuilder中的toString():

對象6:new String("ab")

強調(diào)一下,toString()的調(diào)用,在字符串常量池中,沒有生成"ab"


附加題

String s1 = new String("1") + new String("1");//s1變量記錄的地址為:new String

s1.intern();//在字符串常量池中生成"11"。如何理解:jdk6:創(chuàng)建了一個新的對象"11",也就有新的地址;jdk7:此時常量池中并沒有創(chuàng)建"11",而是創(chuàng)建了一個指向堆空間中new String("11")的地址;

String s2 = "11";

System.out.println(s1 == s2);//jdk6:false;jdk7:true

10、如何將字符串反轉(zhuǎn)?

添加到StringBuilder中,然后調(diào)用reverse()。


11、String 類的常用方法都有那些?

equals、length、contains、replace、split、hashcode、indexof、substring、trim、toUpperCase、toLowerCase、isEmpty等等。


12、普通類和抽象類有哪些區(qū)別?

抽象類不能被實例化;

抽象類可以有抽象方法,只需申明,無須實現(xiàn);

有抽象方法的類一定是抽象類;

抽象類的子類必須實現(xiàn)抽象類中的所有抽象方法,否則子類仍然是抽象類;

抽象方法不能聲明為靜態(tài)、不能被static、final修飾。


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

(1)接口

接口使用interface修飾;

接口不能實例化;

類可以實現(xiàn)多個接口;

①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定義靜態(tài)方法,靜態(tài)方法必須有方法體,普通方法沒有方法體,需要被實現(xiàn);

(2)抽象類

抽象類使用abstract修飾;

抽象類不能被實例化;

抽象類只能單繼承;

抽象類中可以包含抽象方法和非抽象方法,非抽象方法需要有方法體;

如果一個類繼承了抽象類,①如果實現(xiàn)了所有的抽象方法,子類可以不是抽象類;②如果沒有實現(xiàn)所有的抽象方法,子類仍然是抽象類。


14、java 中 IO 流分為幾種?

(1)按流劃分,可以分為輸入流和輸出流;

(2)按單位劃分,可以分為字節(jié)流和字符流;

字節(jié)流:inputStream、outputStream;

字符流:reader、writer;


15、BIO、NIO、AIO 有什么區(qū)別?

(1)同步阻塞BIO

一個連接一個線程。

JDK1.4之前,建立網(wǎng)絡連接的時候采用BIO模式,先在啟動服務端socket,然后啟動客戶端socket,對服務端通信,客戶端發(fā)送請求后,先判斷服務端是否有線程響應,如果沒有則會一直等待或者遭到拒絕請求,如果有的話會等待請求結束后才繼續(xù)執(zhí)行。

(2)同步非阻塞NIO

NIO主要是想解決BIO的大并發(fā)問題,BIO是每一個請求分配一個線程,當請求過多時,每個線程占用一定的內(nèi)存空間,服務器癱瘓了。

JDK1.4開始支持NIO,適用于連接數(shù)目多且連接比較短的架構,比如聊天服務器,并發(fā)局限于應用中。

一個請求一個線程。

(3)異步非阻塞AIO

一個有效請求一個線程。

JDK1.7開始支持AIO,適用于連接數(shù)目多且連接比較長的結構,比如相冊服務器,充分調(diào)用OS參與并發(fā)操作。

由于篇幅過長獲取方式




10萬字208道Java經(jīng)典面試題總結(附答案)的評論 (共 條)

分享到微博請遵守國家法律
西乌| 库伦旗| 广宗县| 托克托县| 赤峰市| 大兴区| 洮南市| 固原市| 于都县| 泗洪县| 彭州市| 磐安县| 多伦县| 专栏| 都安| 西安市| 遂昌县| 达尔| 深州市| 昌黎县| 桑日县| 静海县| 满城县| 望城县| 香河县| 长寿区| 南通市| 库伦旗| 新竹县| 合山市| 观塘区| 三门峡市| 弥渡县| 惠州市| 上虞市| 金乡县| 九寨沟县| 斗六市| 东辽县| 通辽市| 蓬莱市|