亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場(chǎng) > 面試題 > java基礎(chǔ)面試題與答案

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

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

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

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

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

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

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

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

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

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

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

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

        wait()是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(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類型的,因此不可以繼承這個(gè)類、不能修改這個(gè)類。

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

        答:Java平臺(tái)提供了兩個(gè)類:String和StringBuffer,它們可以儲(chǔ)存和操作字符串,即包含多個(gè)字符的字符數(shù)據(jù)。這個(gè)String類提供了數(shù)值不可改變的字符串。而這個(gè)StringBuffer類提供的字符串進(jìn)行修改。當(dāng)知道字符數(shù)據(jù)要改變的時(shí)候就可以使用StringBuffer。典型地,可以使用StringBuffers來(lái)動(dòng)態(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、啟動(dòng)一個(gè)線程是用run()還是start()?

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

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

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

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

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

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

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

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

        2、什么是哈希表?

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

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

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

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

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

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

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

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

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

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

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

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

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

        8、說(shuō)出一些常用的類,包,接口,請(qǐng)各舉5個(gè)。

        答:常用的類: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個(gè)字符后,存儲(chǔ)在緩沖區(qū)buffer中的字節(jié)數(shù)是多少?

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

        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和它的子類來(lái)實(shí)現(xiàn)的,Java ClassLoader 是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類文件的類。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        1

        0、Class MyClass等價(jià)于 Class MyClass extends Object是否正確?

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

      3151186