无码人妻一区二区三区免费不卡_日韩AV无码综合久久五月_国产成人aⅴ片在线观看_欧美成人片高清在线观看

蜜蜂職場文庫 > 面試技巧 >

java基礎(chǔ)面試題帶答案

時間: 小龍 面試技巧

  Java基礎(chǔ)面試題目對面試者來說很重要,那么你做好準(zhǔn)備了嗎?有提前了解面試題目嗎?以下是小編幫你們整理的java基礎(chǔ)面試題大全帶答案,一起來學(xué)習(xí)啦。

  java基礎(chǔ)面試題大全帶答案(一)

  1. 請解釋Java語言的跨平臺特性。

  解析:雖然不知道什么是跨平臺也可以使用Java語言進(jìn)行編程,但是對于一個Java編程員來說,理解跨平臺特性能夠更深入掌握J(rèn)ava語言,所以企業(yè)中往往要求應(yīng)聘者至少理解這個特性。

  參考答案:Java的跨平臺特性也被稱為可移植性、平臺無關(guān)性,或者一次編寫處處運(yùn)行。他的意思就是如果用Java語言編寫一個應(yīng)用,那么就可以在不同平臺上運(yùn)行,而不需要為不同平臺單獨(dú)運(yùn)行開發(fā)。之所以能實現(xiàn)跨平臺的特性。主要得益于Java虛擬機(jī)(JVM),JVM解釋器在運(yùn)行Java應(yīng)用時根據(jù)當(dāng)前平臺進(jìn)行解釋,解釋成符合當(dāng)前平臺規(guī)范的機(jī)器碼,所以可以實現(xiàn)同樣的應(yīng)用在不同平臺上都能運(yùn)行。

  2.請列舉JAVA語言的主要特點(diǎn)

  解析:了解一門語言,往往從熟悉該語言的主要特點(diǎn)開始入手,所以企業(yè)也常常通過應(yīng)聘者對JAVA語言特點(diǎn)的掌握程度而判斷其語言基礎(chǔ)是否扎實。

  參考答案:JAVA語言有很多特點(diǎn),主要包括①跨平臺性:一個應(yīng)用可以不經(jīng)過修改直接運(yùn)行到不同的平臺上。②面向?qū)ο螅篔AVA語言是一門面向?qū)γ娴恼Z言,可以使用對象的屬性和行為,可以使用面向?qū)ο蟮乃枷脒M(jìn)行分析設(shè)計,并實現(xiàn)整個應(yīng)用。③解釋執(zhí)行JAVA應(yīng)用時,JVM中的解釋器將解釋類文件,生成符合當(dāng)前平臺的字節(jié)碼。④自動回收:JAVA應(yīng)用中的垃圾回收是自動進(jìn)行的,JVM中的后臺線程將監(jiān)視內(nèi)存中數(shù)據(jù)的使用,當(dāng)內(nèi)存中的數(shù)據(jù)不再被引用時,將被作為垃圾回收,而不需要程序員動手回收。

  3.請說明一個JAVA類中主要包含哪幾個元素?并說明每種元素的作用。 解析:無論簡單還是復(fù)雜的JAVA應(yīng)用,都是由若干個類組成,所以類是JAVA應(yīng)用的組成單位。了解一個類中包含的主要元素能夠?qū)︻愑幸粋€清晰的認(rèn)識。一個類中往往會有五種元素,即屬性、方法、構(gòu)造方法、塊以及內(nèi)部類、其實塊和內(nèi)部類比較少見。

  參考答案:JAVA類中主要包含屬性、方法、構(gòu)造方法、塊以及內(nèi)部類。屬性用來定義對象的數(shù)據(jù);方法用來定義對象的行為;構(gòu)造方法可以用來創(chuàng)建對象;塊能夠用來在類加載時執(zhí)行操作或者在每次實例化前執(zhí)行通用操作;內(nèi)部類作為類的一個成員存在,能夠訪問外部類的屬性和方法。

  4、請說明構(gòu)造方法的作用和特征

  解析:類是對象的模板,使用類往往都需要首先對類進(jìn)行實例化,即創(chuàng)建對象。要創(chuàng)建對象必須使用new關(guān)鍵字調(diào)用構(gòu)造方法(constructor)才能完成,構(gòu)造方法中往往對屬性進(jìn)行實例化,也可以實現(xiàn)其他必要的功能,如讀取屬性文件等。構(gòu)造方法有獨(dú)特的特征:名字必須與類名相同且大小寫敏感,而且構(gòu)造方法不能聲明返回值,這兩個特征缺一不可。使用Eclipse工具時,可以使用菜單Generate Constructor自動生成不同的構(gòu)造方法。

  參考答案:構(gòu)造方法的作用是用來創(chuàng)建對象,使用new關(guān)鍵字調(diào)用。構(gòu)造方法的名字必須與類的名字相同,并且大小寫敏感,同時構(gòu)造方法不能聲明返回值類型,可以使用任意一種訪問修飾符,但是不能使用其他修飾符進(jìn)行修飾,如static、final、abstract等修飾符都可以修飾構(gòu)造方法。

  5、什么是方法重載(overload)?

  解析:如果一個類的某個行為,會有不同的算法和邏輯,例如,Math類的計算絕對值的方法,既可以計算int類型數(shù)值的絕對值,也可以計算double類型數(shù)值的絕對值。這種情況下,每種類型都定義一個不同的方法名,如abInt、absDouble,那么類的可讀性就較差,使用時,必須熟悉處理每種類型參數(shù)所對應(yīng)的方法名。然而,如果使用同一個方法名,而使用不同的形式參數(shù)來區(qū)別這些方法,那么就具有很好的可讀性,如abs(int i)、abs(doubled)等??勺x性強(qiáng)的代碼是企業(yè)對開發(fā)人員的基本要求,方法重載能夠使得代碼有很好的可讀性。

  參考答案:方法重載指的是在一個類中可以聲明多個相同名字的方法,而方法的形式參數(shù)有區(qū)別。調(diào)用這些同名的方法時,JVM會根據(jù)實際參數(shù)的不同綁定到不同的方法。

  6、請列舉Java語言中的權(quán)限訪問修飾符,并說明每種權(quán)限的含義。

  解析:正確使用權(quán)限訪問修飾符,能夠有效控制類以及類成員的安全性,Java語言中有四種訪問修飾符,包括public、同包、protected以及private,一般情況下,應(yīng)用中的類多是public權(quán)限,屬性多是private權(quán)限,方法多是public權(quán)限。

  參考答案:Java語言中有四種權(quán)限訪問修飾符,即public、protected、同包以及private,public表示公共權(quán)限,即任何包中都可以訪問:protected表示受保護(hù)權(quán)限,即同包中可以訪問,同包中的子類可以訪問:同包權(quán)限是默認(rèn)權(quán)限,即不顯示指明權(quán)限修飾符的時候就是同包權(quán)限,表示只有同包中可以訪問:private是私有權(quán)限,表示只能在本類中訪問。

  7、請列舉Java語言中的八種基本數(shù)據(jù)類型,并說明每種數(shù)據(jù)類型的含義及長度。

  解析:數(shù)據(jù)類型在任何一門編程語言中都是很重要的知識點(diǎn),屬性、方法參數(shù)、方法返回值要指定各自的數(shù)據(jù)類型。Java語言雖然是一門面向?qū)ο蟮恼Z言。但是也定義了基本數(shù)據(jù)類型,基本數(shù)據(jù)類型可以直接賦值,不需要使用new關(guān)鍵字創(chuàng)建,可以直接使用運(yùn)算符進(jìn)行運(yùn)算,編程中經(jīng)常被使用,而且Java語言中的基本數(shù)據(jù)類型的長度固定,不會隨著平臺的不同而不同。

  參考答案:Java語言的八種基本數(shù)據(jù)類型有:byte字節(jié)型,8位長度:short短整型,16位長度,int整型,32位長度:long長整型,64位長度:float單精度浮點(diǎn)型。32位長度:double雙精度浮點(diǎn)型,64位長度:char字符型,16位長度:boolean型,表示邏輯值,有true和false兩個值,分別表示真和假

  8.什么叫引用類型,引用類型和基本數(shù)據(jù)類型有什么區(qū)別?

  解析:很多初級程序員都能夠理解int i=20;中的int是一種類型,稱為整型。而對于類似Employee e=new Employee();這樣表達(dá)式中的Employee卻感覺無所適從。其實,任何一個類都是一種類型,如Employee就是一種類型,可以說變量e的類型就是Employee。Java語言中將類的類型稱為引用類型,即reference type??梢哉f,除了八種基本數(shù)據(jù)類型之外的類型都是引用類型,包括API中所有的類、自定義的所有類,也包括數(shù)組。引用類型和基本數(shù)據(jù)類型的直觀區(qū)別就是引用類型的變量需要使用new調(diào)用構(gòu)造方法來賦值,而基本數(shù)據(jù)類型可以直接使用“=”號賦值。但是,引用類型中的String比較特殊,既可以使用new關(guān)鍵字賦值,也可以直接使用“=”賦值,一般情況下都使用“=”直接賦值。

  參考答案:Java語言中除了基本數(shù)據(jù)類型之外的類型,都稱為引用類型。引用類型就是類的類型,所有的對象都是引用類型,包括數(shù)組對象。引用類型必須使用new調(diào)用構(gòu)造方法進(jìn)行賦值,引用類型的變量擁有自己的屬性和方法,可以使用圓點(diǎn)調(diào)用自己的屬性和方法?;緮?shù)據(jù)類型直接使用=號進(jìn)行賦值,且沒有自己的屬性和方法,往往都在聲明屬性或方法時使用。

  java基礎(chǔ)面試題大全帶答案(二)

  1.對于String對象,可以使用“=”賦值,也可以使用new關(guān)鍵字賦值,兩種方式有什么區(qū)別?

  解析:String類型是實際工作中經(jīng)常使用到的類型,從數(shù)據(jù)類型上劃分,String是一個引用類型,是API中定義的一個類。所以String類型的對象可以使用new創(chuàng)建,例如String name=new String(“ETC”);為變量name進(jìn)行賦值,值為“ETC”。然而,String類比起其他類 有些特殊,可以使用“=”直接賦值,如String name=“ETC”,也是為變量name進(jìn)行賦值,值為“ETC”。這兩種賦值方式是有差別的,使用new賦值,永遠(yuǎn)都是創(chuàng)建一個新對象,在新的內(nèi)存空間初始化了字符串的值;而使用“=”賦值,不會每次都初始化新的字符串,而是從一個“字符串實例池”中去查找有沒有要賦值的字符串,如有則直接引用;如不存在,則初始化一個字符串,并放入“字符串實例池”。在實際編程中,往往使用“=”好對String類型變量進(jìn)行賦值。

  參考答案:使用“=”賦值不一定每次都創(chuàng)建一個新的字符串,而是從“字符串實例池”中查找字符串。使用new進(jìn)行賦值,則每次都創(chuàng)建一個新的字符串。

  2.String類是一個“不可變類”,請解釋“不可變類”的含義。

  解析:String類是一個不可變類,即immutable類。所謂不可變,意思是當(dāng)一個字符串被初始化后,它的值就不會被改變。例如,String s=new String(“hello”)為將初始化一個值為hello的字符串,如果調(diào)用 s.toUpperCase()看起來是把hello變?yōu)榇髮懙腍ELLO,然而事實上并不會把已有的hello變?yōu)镠ELLO,而是在新的空間初始化一個HELLO字符串。也正因為有這種不可變性,所以才能支持“字符串實例池”的使用。

  參考答案:所謂的不可變類,就是當(dāng)字符串初始化后,就不能夠被改變。

  3.String類和StringBuffer類有什么區(qū)別?

  解析:String類是不可變類,字符串一旦初始化后,就不能被改變。而StringBuffer類是可變類,字符串值可以唄改變。常常在實際應(yīng)用中看到累死這樣的代碼:String s=new(“hello”);s+=”world”,這兩句代碼首先創(chuàng)建一個字符hello,然后將world追加到hello結(jié)尾并重新賦值給變量s。然后,這個過程實際上是這樣的:首先創(chuàng)建一個StringBuffer對象,然后用StringBuffer類的append方法追加字符串,最后對StringBuffer對象調(diào)用toString方法合成字符串返回??梢?,使用+號連接字符串時,本質(zhì)上是使用了可變的StringBuffer類,經(jīng)變動肯定性能效率受到影響,所以建議需要追加字符串時,可以考慮直接使用StringBuffer類。

  參考答案:String類是不可變類,即字符串值一旦初始化后就不可能改變。StringBuffer是可變字符串類,類似String的緩沖區(qū),可以修改字符串的值。

  4.StringBuffer和StringBuilder類有什么區(qū)別?

  解析: StringBuffer是JDK5中增加的一個新類,在以前版本中不存在這個類。StringBuilder中的方法和StringBuffer中的方法基本相同,但是StringBuffer是線程安全的,而StringBuilder不是線程安全的,因此在不考慮同步的情況下,StringBuilder有更好的性能。

  參考答案:StringBuffer是線程安全的字符串緩沖,而StringBuilder不是線程安全的。

  5.包裝器類型包括哪些類,有什么作用?

  解析:初級程序員常常對float和Float或者double和Double感到混淆。在Java語言中,有八中基本數(shù)據(jù)類型,即byte、int、long、float、double、char、boolean。對應(yīng)這八種基本數(shù)據(jù)類型,API中定義了八個類,能把這些基本類型轉(zhuǎn)換成引用類型,分別是Byte、Short、Int、Long、Double、Character、Boolean。這八個類被統(tǒng)稱為包裝器類。JDK5之后,包裝器類和基本數(shù)據(jù)類型之間可以直接轉(zhuǎn)換,稱為自動的裝箱拆箱(boxing/unboxing)。例如integer it=3;it++;雖然寫法上可以像使用基本數(shù)據(jù)類型一樣使用包裝器類型,但是本質(zhì)上依**行了類似 it= new Integer(3)的轉(zhuǎn)換,因此,不要輕易使用包裝器類的自動裝箱拆箱,以優(yōu)化的性能。能夠使用基本類型就使用基本類型。

  參考答案:包裝類器包括Byte、Short、Integer、Long、Float、Double、Character、Boolean等類,主要用來對byte、short、integer、long、float、double、character、boolean這八種基本數(shù)據(jù)類型進(jìn)行包裝,使其稱為引用類型。

  java基礎(chǔ)面試題大全帶答案(三)

  1. 請說明Java語言中的值傳遞規(guī)則。

  解析:值傳遞時編寫應(yīng)用時不可避免的操作。例如某方法聲明形式是public void f(int x){},寫方法是,必須為其傳遞一個int類型的實際參數(shù),如f(10)。又如public void g(Employee)。那么使用該方法時,必須為其傳遞一個Employee類型的實際參數(shù),例如g(new Employee())。所以,對于初級程序員來說,了解Java語言的值傳遞規(guī)則非常重要。Java語言是本類型傳遞的值,例如f(10),僅僅把10復(fù)制給形式參數(shù)x,是值的拷貝。而引用類的傳遞時引用,即虛地址,例如g(new Employee())是把實際參數(shù)的虛地址傳遞給形式參數(shù)e,也就是說實際參數(shù)和形式參數(shù)的虛地址相同,物理上是同一個對象。

  參考答案:基本數(shù)據(jù)類型傳遞的是值,引用類型傳遞的是引用,即虛地址。

  2.使用static修飾屬性或方法后,屬性和方法有什么特征?

  解析:static修飾符是一個非常常見并重要的修飾符,稱為靜態(tài)。靜態(tài)不是指值不能改變,很多初級程序員容易容易望文生義的地方。Static常常用來修飾類的屬性或者方法。當(dāng)一個屬性或者方法和對象沒有關(guān)系,或者說是任何對象共享的時候,那么就應(yīng)該用static進(jìn)行修飾。列如某類中的計數(shù)器,用來計算實例的個數(shù)。那么這個計數(shù)器屬性就是所有對象共享的屬性,就應(yīng)該用static修飾。又例如Math類中的abs(int)方法,用來返回參數(shù)的絕對值,這個方法和Math類的對象沒有關(guān)系,Math類對象可以共享這個方法,那么這個方法就可以用static修飾。程序員必須深入理解static修飾符的使用。

  參考答案:static修飾屬性或方法后,屬性和方法不在屬于某個特定的對象,而是所有共享,也可以說是static成員不依賴某個對象,在類加載時就被初始化。Static修飾的屬性或方法,可以直接使用類名調(diào)用,而不用先實例化對象再調(diào)用。

  3.使用final修飾屬性后,屬性有什么特征?

  解析:屬性可以是變量也可以是常量,如果是常量,就需要使用final修飾。如果使用final修飾了某個屬性,那么該屬性值一旦被賦值,就不能被修改,實際中常常有這個樣的碼:private static final int ERROR=0;也就是說,常常會生命靜態(tài)的常量。靜態(tài)常量的命名規(guī)范非常特殊,往往都是用大寫字母,如果包含多個單詞,每個單詞之間使用下劃線連接。靜態(tài)常量的意思是,該類所有的對象都擁有一個不變的常量ERROR,作為0.API中很多類都定義了很多的靜態(tài)常量,使用時直接使用類名調(diào)用即可。

  參考答案:fianl修飾屬性后,屬性就成為一個常量。常量只要被賦值,就不能被改變。

  4.請說明操作符==的作用。

  解析:實際編程中,==是非常常用的操作符。很多初級程序員會使用這樣的代碼if(s==”save”0{},結(jié)果會發(fā)現(xiàn),即使當(dāng)字符串s的值為save時,if條件依然不能被執(zhí)行。是==在比較引用類型時,比較的是兩個對象的虛地址,而不是內(nèi)容。要比較兩個對象的內(nèi)容是否相同,往往需要使用equal方法,例如if(s.equals(“save”)){}。==比較基本類型時,將比值的二進(jìn)制是否相等,例如(x==0.5){}。值得注意的是,與空指針null值進(jìn)行比較,往往用==進(jìn)行,例如if(s==null||s.equals(“”)),表示如果字符串是空指針或者空串。

  參考答案:==可以用來比較基本類型或者引用類型。比較基本類型時,==用來比較二進(jìn)制的值,比較引用類型時,用來比較對象的虛地址。

  5請說明&&與&的區(qū)別和聯(lián)系

  解析:實際編程中,常常需要使用“與”或者“或”的邏輯。其中&&和&存在一定區(qū)別&&可能發(fā)生各路問題,例如if(s!=null&&s.length()==6)中,如果要的值為null,那么第一表達(dá)式的值為false,返回值肯定是false,不會計算第二個表達(dá)式的值,這就是短路。然而使用&,例如if(s!=null&s.length()==6),假設(shè)s的值為,null,返回值肯定是false,但是會判斷第二個表達(dá)式的值,將發(fā)生空指針異常。實際工作中,經(jīng)常使用&&操作符。

  參考答案:&&會發(fā)生短路問題,當(dāng)?shù)谝粋€表達(dá)式的值為false時,將直接返回結(jié)果為false而不會判斷第二個表達(dá)式的值。而&不會發(fā)生短路問題,即使第一個表達(dá)式的值是false,會判斷第二個表達(dá)式的值。

  6.請列舉Java語言中的幾種位運(yùn)算符,并說明位運(yùn)算符的作用。

  解析:位運(yùn)算符是對二進(jìn)制數(shù)值進(jìn)行運(yùn)算,左移一位相當(dāng)于乘2運(yùn)算,右移一位相當(dāng)運(yùn)算。位移運(yùn)算符效率較高,往往在游戲開發(fā)中經(jīng)常使用。

  參考答案:java語言中有三種位移運(yùn)算符,分別是<<;左移運(yùn)算符,左移1位相當(dāng)于乘2.>>;有符號右移,右移一位相當(dāng)于除2;>>>;無符號右移,忽略符號位,空位都以0補(bǔ)齊。

  
看了“java基礎(chǔ)面試題大全帶答案”

50205