六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場 > 面試題 > java基礎(chǔ)面試題與答案

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

時間: 護(hù)托1061 分享

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

  當(dāng)Java程序違反了Java的語義規(guī)則時,Java虛擬機(jī)就會將發(fā)生的錯誤表示為一個異常。下面就由學(xué)習(xí)啦小編為大家介紹一下java基礎(chǔ)面試題與答案的文章,歡迎閱讀。

  java基礎(chǔ)面試題與答案篇1

  1、抽象類(abstract class)和接口(interface)有什么區(qū)別?

  答:聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。

  接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時,它定義所有這種接口的方法。然后可以在實(shí)現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來決定某對象的類是否實(shí)現(xiàn)了接口。

  2、Java中的異常處理機(jī)制的簡單原理和應(yīng)用。

  答:當(dāng)Java程序違反了Java的語義規(guī)則時,Java虛擬機(jī)就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況:一種是Java類庫內(nèi)置的語義檢查。例如數(shù)組下標(biāo)越界時會引發(fā)IndexOutOfBoundsException,訪問null的對象時會引發(fā)NullPointerException。另一種情況是Java允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關(guān)鍵字引發(fā)異常。所有的異常都是Java.lang.Thowable的子類。

  3、sleep()和wait()有什么區(qū)別?

  答:sleep()是線程類Thread的方法,導(dǎo)致此線程暫停執(zhí)行指定時間,給執(zhí)行機(jī)會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復(fù),調(diào)用sleep不會釋放對象鎖。

  wait()是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對象鎖定池準(zhǔn)備獲得對象鎖進(jìn)入運(yùn)行狀態(tài)。

  4、String是最基本的數(shù)據(jù)類型嗎?

  答:String不是基本數(shù)據(jù)類型,基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。 Java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。

  5、String和StringBuffer的區(qū)別。

  答:Java平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個String類提供了數(shù)值不可改變的字符串。而這個StringBuffer類提供的字符串進(jìn)行修改。當(dāng)知道字符數(shù)據(jù)要改變的時候就可以使用StringBuffer。典型地,可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。

  6、接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)接口? 抽象類是否可繼承實(shí)體類?

  答:接口可以繼承接口。抽象類可以實(shí)現(xiàn)接口。抽象類是否可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。

  7、Java有沒有g(shù)oto?

  答:goto是Java中的保留關(guān)鍵字,但是現(xiàn)在沒有在Java中使用。

  8、啟動一個線程是用run()還是start()?

  答:啟動一個線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個線程。

  9、說明一下類變量和實(shí)例變量的區(qū)別。

  答:類變量是所有對象共有的,所有的實(shí)例對象都共用一個類變量,內(nèi)存中只有一處空間存放類變量的值。如果其中一個對象改變了類變量的值,其他對象得到的就是改變后的結(jié)果。當(dāng)類被加載到內(nèi)存時,類變量就會分配相應(yīng)的內(nèi)存空間。

  10、運(yùn)行時異常與一般異常有何異同?

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

  java基礎(chǔ)面試題與答案篇2

  1、說明實(shí)例方法和類方法的區(qū)別?

  答:方法前面有static關(guān)鍵字修飾的為類方法,否則為實(shí)例方法。 實(shí)例方法可以調(diào)用該類中的其他方法;類方法只能調(diào)用其他類方法,不能調(diào)用實(shí)例方法;當(dāng)類文件加載到內(nèi)存時,實(shí)例方法不會被分配內(nèi)存空間,只有在對象創(chuàng)建之后才會分配。而類方法在該類被加載到內(nèi)存時就分配了相應(yīng)的內(nèi)存空間。

  2、什么是哈希表?

  答:哈希表又稱散列表,是一種能將關(guān)鍵字映射成存儲地址的記錄存儲技術(shù)。要存儲數(shù)據(jù),先設(shè)計(jì)一種算法(哈希函數(shù)),然后根據(jù)數(shù)據(jù)記錄的關(guān)鍵字計(jì)算出各記錄的哈希碼,這個哈希碼作為與關(guān)鍵字相關(guān)的記錄數(shù)據(jù)的索引。要取出記錄,只需要根據(jù)哈希函數(shù)重新計(jì)算,得到哈希碼后,便可直接到相應(yīng)位置去存取。

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

  答:不可以。如果其中包含對象的method(),不能保證對象初始化。

  4、在Java轉(zhuǎn)義字符中,“\uxxxx”代表什么?

  答:\uxxxx是Java中的字符編碼方式,其中前綴 \u就表示該字符是unicode字符,xxxx表示1到4位16進(jìn)制數(shù),用這種轉(zhuǎn)義字符形式可以表示unicode字符集中的任意字符。

  5、switch語句中的表達(dá)式可以是什么類型數(shù)據(jù)?

  答:表達(dá)式的值可以是byte、short、int和char類型的數(shù)據(jù),但不能是float和double類型的數(shù)據(jù)。

  6、插入數(shù)據(jù)時,ArrayList、LinkedList、Vector誰速度較快?

  答:ArrayList、Vector以數(shù)組方式存儲數(shù)據(jù),插入數(shù)據(jù)時要進(jìn)行元素移動操作,因而插入數(shù)據(jù)慢。LinkedList是一種鏈表結(jié)構(gòu),在插入數(shù)據(jù)時只需要修改鏈表的前后項(xiàng)指向即可,因此插入速度較快。

  7、final, finally, finalize的區(qū)別。

  答:final—修飾符(關(guān)鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

  finally是異常處理時提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)行,然后控制就會進(jìn)入 finally 塊(如果有的話)。

  finalize是方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的。

  8、說出一些常用的類,包,接口,請各舉5個。

  答:常用的類:BufferedReader,BufferedWriter,F(xiàn)ileReader,F(xiàn)ileWirter和String等。

  常用的包:Java.lang ,Java.awt,Java.io,Java.util和Java.sql等。

  常用的接口:Remote,List,Map,Document和NodeList等。

  9、多線程的實(shí)現(xiàn)方法分別是什么?同步的實(shí)現(xiàn)方法分別是什么?

  答:多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable。

  接口同步的實(shí)現(xiàn)方面有兩種,分別是synchronized、wait與notify。

  10、當(dāng)用System.in.read(buffer)從鍵盤輸入一行n個字符后,存儲在緩沖區(qū)buffer中的字節(jié)數(shù)是多少?

  答:當(dāng)用System.in.read(buffer)從鍵盤輸入一行n個字符后,存儲在緩沖區(qū)buffer中的字節(jié)數(shù)有n+2個,即除輸入的n個字符后,還存儲了回車和換行字符。

  java基礎(chǔ)面試題與答案篇3

  1、如何實(shí)現(xiàn)字符串的分割?

  答:第一種方法是采用split()方法,將分割后的內(nèi)容保存在指定的字符串?dāng)?shù)組中;第二種方法是采用StringTokenizer,利用StringTokenizer的nextToken()、hasMoreTokens()等方法進(jìn)行分割。

  2、描述一下JVM加載class文件的原理機(jī)制?

  答:JVM中類的裝載是由ClassLoader和它的子類來實(shí)現(xiàn)的,Java ClassLoader 是一個重要的Java運(yùn)行時系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時查找和裝入類文件的類。

  3、在什么情況下,finally語句不會執(zhí)行?

  答:如果在try內(nèi)部執(zhí)行一條System.exit(0)語句終止應(yīng)用程序的執(zhí)行,則finally中的語句不會被執(zhí)行。

  4、作用域public,private,protected,以及不寫時的區(qū)別。

  答:具體區(qū)別如下:

作用域
同一類
同一包
子孫類
所有類
public
  √  
protected
×
private
×
×
×
默認(rèn)
×
×

  5、說出重寫和重載的區(qū)別,重寫方法是否可以改變返回值的類型?

  答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫是父類與子類之間多態(tài)性的一種表現(xiàn),重載是一個類中多態(tài)性的一種表現(xiàn)。

  如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫。子類的對象使用 這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載。

  重載的方法是可以改變返回值的類型。

  6、throw和throws有什么區(qū)別?

  答:throw關(guān)鍵字一般用于方法內(nèi)部,用于拋出一個異常類對象,一旦異常被拋出后,throw語句后的程序代碼將不會被執(zhí)行。

  throws關(guān)鍵字通常出現(xiàn)在方法聲明中,用來指定該方法可能拋出的異常。如果可能有多個異常拋出,可以使用逗號將它們分隔開。

  7、字符串的compareTo方法結(jié)果是什么?

  答:使用compareTo()方法可以比較字符串與字符串之間的大小關(guān)系。如果當(dāng)前字符串小于指定字符串,則返回一個小于0的數(shù)值;否則返回一個大于0的數(shù)值;如果兩個字符串相等,則返回0。

  8、字符串的連接操作有幾種實(shí)現(xiàn)方法?

  答:字符串與字符串的連接操作可以通過“+”運(yùn)算符和concat()方法來實(shí)現(xiàn)。另外“+”運(yùn)算符還可以實(shí)現(xiàn)字符串與其他類型數(shù)據(jù)之間的連接操作,可以與字符串連接的數(shù)據(jù)類型有:int、long、float、double、boolean、char等。

  9、當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

  答:是值傳遞,因?yàn)樵贘ava編程語言中只有值傳遞參數(shù)。當(dāng)一個對象實(shí)例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會改變的。

  1

  0、Class MyClass等價于 Class MyClass extends Object是否正確?

  答:正確。因?yàn)镺bject類是Java中最高層次的類,是所有類的超類。所有的類,都可以說是由Object繼承而來,只是我們不需要顯式地指明extends Object。

3151186