黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 常見問(wèn)題 2020全新java面試題基礎(chǔ)篇

2020全新java面試題基礎(chǔ)篇

更新時(shí)間:2020-06-03 11:54:58 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3101次

如今學(xué)習(xí)java的小伙伴越來(lái)越多,大家在學(xué)完java技術(shù)后都會(huì)去找工作,當(dāng)然也就會(huì)遇到面試的問(wèn)題。java基礎(chǔ)是面試的重要部分,動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編就為大家整理了一份2020全新java面試題基礎(chǔ)篇,有需要的小伙伴可不要錯(cuò)過(guò)。

2020最新java面試題基礎(chǔ)篇

1. ".java" 源文件中可以包含多少個(gè)類?有什么限制?

可以包含多個(gè)類,但只能包含一個(gè)public類,并且public類名必須與文件名相同。通常一個(gè)文件里只包含一個(gè)類。

2. switch語(yǔ)句能否作用在byte上,能否作用在long類型上,能否作用域String上?

switch(e),其中e必須是int型或 enum型,由于short、char或者byte會(huì)自動(dòng)轉(zhuǎn)為int的,所以,這些類型以及這些類型的包裝類型也是可以的。顯然,long類型是不可以的,String在jdk1.7之前不支持,在此之后是支持的。

3.short s1 = 1; s1 = s1 + 1;有錯(cuò)嗎?short s1 = 1; s1 += 1;有錯(cuò)嗎?

對(duì)于short s1=1;s1=s1+1;由于s1+1運(yùn)算時(shí)會(huì)自動(dòng)提升表達(dá)式的類型,所以結(jié)果是int型,再賦值給short類型s1時(shí)編譯器將報(bào)告類型轉(zhuǎn)換錯(cuò)誤。

對(duì)于short s1=1;s1 += 1;由于+=是java語(yǔ)言規(guī)定的運(yùn)算符,java編譯器會(huì)對(duì)它進(jìn)行特殊處理,因此可以正確編譯。

4.char類型變量占幾個(gè)字節(jié)?

char型變量是用來(lái)存儲(chǔ)Unicode編碼的字符,占用兩個(gè)字節(jié)。

5.使用final關(guān)鍵字修飾一個(gè)變量時(shí),是引用不能變還是引用的對(duì)象不能變?

使用final關(guān)鍵字修飾一個(gè)變量時(shí),是指引用變量不能變,引用變量所指向的對(duì)象中的內(nèi)容還是可以改變的。例如,對(duì)于如下語(yǔ)句:

final StringBuffer sb = new StringBuffer("test");
sb = new StringBuffer(""); // 錯(cuò)誤sb.append("hello "); //正確

6.靜態(tài)變量和實(shí)例變量的區(qū)別?

在語(yǔ)言定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實(shí)例變量前則不加

在程序運(yùn)行時(shí)的區(qū)別:實(shí)例變量屬于某個(gè)對(duì)象的屬性,必須創(chuàng)建了實(shí)例對(duì)象,實(shí)例變量才會(huì)被分配空間,才能使用這個(gè)實(shí)例變量。靜態(tài)變量不屬于某個(gè)實(shí)例對(duì)象,而是屬于類,所以也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)建如何實(shí)例對(duì)象,靜態(tài)變量就會(huì)被分配空間,靜態(tài)變量就可以被使用了。總之,實(shí)例變量必須創(chuàng)建對(duì)象后才可以通過(guò)這個(gè)對(duì)象來(lái)使用,靜態(tài)變量則可以直接使用類名來(lái)引用。

例如,對(duì)于下面的程序,無(wú)論創(chuàng)建多少個(gè)實(shí)例對(duì)象,永遠(yuǎn)都只分配一個(gè)staticVar變量,并且每創(chuàng)建一個(gè)實(shí)例對(duì)象,這個(gè)staticVar就會(huì)加1;但是,每創(chuàng)建一個(gè)實(shí)例對(duì)象,就會(huì)分配一個(gè)instanceVar,即可能分配多個(gè)instanceVar,并且每個(gè)instanceVar的值都只自加了1次。

public class Test{ public static int staticVar = 0; public int instanceVar = 0; public void Add(){
   staticVar++;
   instanceVar++;
   System.out.println("static var=" + staticVar + "instance Var=" + instanceVar);
 }
}

7.是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用?

不可以。因?yàn)榉莝tatic方法是要與對(duì)象關(guān)聯(lián)在一起的,必須創(chuàng)建一個(gè)對(duì)象后,才可以在該對(duì)象上進(jìn)行方法調(diào)用,而static方法調(diào)用時(shí)不需要?jiǎng)?chuàng)建對(duì)象,可以直接調(diào)用。也就是說(shuō),當(dāng)一個(gè)static方法被調(diào)用時(shí),可能還沒(méi)有創(chuàng)建任何實(shí)例對(duì)象,如果從一個(gè)static方法中發(fā)出對(duì)非static方法的調(diào)用,那個(gè)非static方法是關(guān)聯(lián)到哪個(gè)對(duì)象上的呢?這個(gè)邏輯無(wú)法成立,所以,一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用。

8.Integer和int的區(qū)別?

int是java提供的8種原始數(shù)據(jù)類型之一。Java為每個(gè)原始類型提供了封裝類,Integer是java為int提供的封裝類。int的默認(rèn)值為0,而Integer的默認(rèn)值為null,即Integer可以區(qū)分出未賦值和值為0的區(qū)別,int則無(wú)法表達(dá)出未賦值的情況。

9.接口是否可繼承接口?抽象類是否可實(shí)現(xiàn)(implements)接口?抽象類是否可繼承具體類(concreteclass)?抽象類中是否可以有靜態(tài)的main方法?

接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類可以繼承具體類。抽象類中可以有靜態(tài)的main方法。

10.Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?

靠的是父類或接口定義的引用變量可以指向子類或具體實(shí)現(xiàn)類的實(shí)例對(duì)象,而程序調(diào)用的方法在運(yùn)行期才動(dòng)態(tài)綁定,就是引用變量所指向的具體實(shí)例對(duì)象的方法,也就是內(nèi)存里正在運(yùn)行的那個(gè)對(duì)象的方法,而不是引用變量的類型中定義的方法。

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

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

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

抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。

抽象類中的抽象方法的訪問(wèn)類型可以是public,protected和默認(rèn)類型,但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型。

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

抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問(wèn)類型可以任意,但接口中定義的變量只能是publicstatic final類型,并且默認(rèn)即為publicstatic final類型。

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

12.內(nèi)部類可以引用它的包含類的成員嗎?有沒(méi)有什么限制?

完全可以。如果不是靜態(tài)內(nèi)部類,則沒(méi)有什么限制。

如果你把靜態(tài)嵌套類當(dāng)作內(nèi)部類的一種特例,那在這種情況下不可以訪問(wèn)外部類的普通成員變量,而只能訪問(wèn)外部類中的靜態(tài)成員,例如,下面的代碼:

class Outer{ static int x; static class Inner{   void test()
   {
     System.out.println(x);
   }
 }
}

13.String s = new String("xyz");創(chuàng)建了幾個(gè)StringObject?是否可以繼承String類?

兩個(gè)或者一個(gè),”xyz”作為一個(gè)常量對(duì)象,這個(gè)對(duì)象會(huì)放在字符串常量緩沖區(qū),常量”xyz”不管出現(xiàn)多少遍,在常量緩沖區(qū)中的只存在一個(gè)。new String("xyz")時(shí),如果常量緩沖區(qū)不存在該對(duì)象,則需先在常量緩沖區(qū)創(chuàng)建一個(gè)新的對(duì)象,然后在使用該常量緩沖區(qū)對(duì)象內(nèi)容來(lái)創(chuàng)建一個(gè)新String對(duì)象,因此會(huì)創(chuàng)建兩個(gè)對(duì)象,如果常量緩沖區(qū)以存在該對(duì)象("xyz"),則只會(huì)創(chuàng)建一個(gè)對(duì)象。

String類是不能繼承的,因?yàn)镾tring默認(rèn)final修飾,是不可繼承的。

14.下面這條語(yǔ)句一共創(chuàng)建了多少個(gè)對(duì)象:String s="a"+"b"+"c"+"d";

對(duì)于下面代碼:

String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");

對(duì)于第一條打印結(jié)果為false;第二條語(yǔ)句打印結(jié)果為true。這說(shuō)明編譯器可以對(duì)字符串常量直接相加的表達(dá)式進(jìn)行優(yōu)化,不必要等到運(yùn)行期再去進(jìn)行加法運(yùn)算處理,而是在編譯時(shí)去掉其中的加號(hào),直接將其編譯成一個(gè)這些常量相連的結(jié)果。

題目中的第一行代碼被編譯器在編譯時(shí)優(yōu)化后,相當(dāng)于直接定義了一個(gè)"abcd"的字符串,所以,上面的代碼應(yīng)該只創(chuàng)建了一個(gè)String對(duì)象。看如下代碼:

String s = "a" + "b" + "c" + "d"
System.out.println(s == "abcd");  //true

15.try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally{}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

我們知道finally{}里的語(yǔ)句是一定會(huì)執(zhí)行的,那么這個(gè)是return之前還是return之后呢?看下面的代碼:

public class Test{ public static void main(String[] args){
   System.out.println(new Test().test());
 } int test(){   int x = 1;   try{     return x;
   }finally{     ++x;
   }
 }
}

運(yùn)行的結(jié)果是1,說(shuō)明return語(yǔ)句已經(jīng)執(zhí)行了再去執(zhí)行finally語(yǔ)句,不過(guò)并沒(méi)有直接返回,而是將返回結(jié)果保存下來(lái),然后去finally語(yǔ)句里執(zhí)行。

16.final, finally, finalize的區(qū)別?

final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。內(nèi)部類要訪問(wèn)局部變量,局部變量必須定義成final類型。

finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。但是JVM不保證此方法總被調(diào)用。

17.運(yùn)行時(shí)異常與一般異常有何異同?

異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。

18. error和exception有申請(qǐng)區(qū)別?

error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。exception表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

19. Java 中堆和棧有什么區(qū)別?

JVM 中堆和棧屬于不同的內(nèi)存區(qū)域,使用目的也不同。棧常用于保存方法幀和局部變量,而對(duì)象總是在堆上分配。棧通常都比堆小,也不會(huì)在多個(gè)線程之間共享,而堆被整個(gè) JVM 的所有線程共享。

棧:在函數(shù)中定義的一些基本類型的變量和對(duì)象的引用變量都是在函數(shù)的棧內(nèi)存中分配,當(dāng)在一段代碼塊定義一個(gè)變量時(shí),Java 就在棧中為這個(gè)變量分配內(nèi)存空間,當(dāng)超過(guò)變量的作用域后,Java 會(huì)自動(dòng)釋放掉為該變量分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作它用。

堆:堆內(nèi)存用來(lái)存放由 new 創(chuàng)建的對(duì)象和數(shù)組,在堆中分配的內(nèi)存,由 Java 虛擬機(jī)的自動(dòng)垃圾回收器來(lái)管理。在堆中產(chǎn)生了一個(gè)數(shù)組或者對(duì)象之后,還可以在棧中定義一個(gè)特殊的變量,讓棧中的這個(gè)變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個(gè)變量就成了數(shù)組或?qū)ο蟮囊米兞浚院缶涂梢栽诔绦蛑惺褂脳V械囊米兞縼?lái)訪問(wèn)堆中的數(shù)組或者對(duì)象,引用變量就相當(dāng)于是為數(shù)組或者對(duì)象起的一個(gè)名稱。

java面試題基礎(chǔ)

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“2020全新java面試題基礎(chǔ)篇”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 高清国产在线观看 | 精品综合在线 | 色秀视频免费高清网站 | h视频在线网站 | 最近2019中文 | 香蕉视频禁18 | 天天干天天综合 | 国产区在线免费观看 | 最近中文字幕大全免费版在线 | 欧美成人性色生活片免费在线观看 | 国产精品久久二区三区色裕 | 99在线热播精品免费 | 天堂婷婷 | 亚洲伊人久久综合一区二区 | 天天做天天干 | 国产成人高清精品免费软件 | 日韩不卡中文字幕 | 免费看真人a一级毛片 | 国产色视频在线观看免费 | 国产黑丝美女 | 国外成人免费高清激情视频 | 色视频在线观看视频 | 中文字幕在亚洲第一在线 | 精品视频99 | 国产第一福利136视频导航 | 韩国午夜理伦三级在线观看仙踪林 | 日本成本人三级在线观看2018 | 欧美一级黄色带 | 偷偷狠狠的日日高清完整视频 | 免费在线a视频 | 日本一视频一区视频二区 | 午夜私人影院在线观看 视频 | 久草色视频 | 欧美乱妇视频 | 国产激情一区二区三区在线观看 | www.午夜| 欧美羞羞视频 | 色在线影院 | 在线黄网站| 国产综合日韩伦理 | 一个人看的www免费在线视频 |