国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) Java Java面試題 java常見(jiàn)面試題整理

java常見(jiàn)面試題整理

Nov 29, 2019 pm 01:55 PM
java

java常見(jiàn)面試題整理

物件導(dǎo)向的特徵有哪些面向??

所謂封裝,也就是把客觀事物封裝成抽象的類,並且類別可以把自己的資料和方法只讓可信的類別或物件操作,對(duì)不可信的進(jìn)行資訊隱藏。封裝是物件導(dǎo)向的特徵之一,是物件和類別概念的主要特性。? (推薦學(xué)習(xí):java常見(jiàn)面試題

繼承是指子類別獲得父類別的屬性和方法。如狗是動(dòng)物的一種,也可以說(shuō)夠繼承了動(dòng)物的特性,或說(shuō)狗是動(dòng)物的子類。

多態(tài)是指一個(gè)方法只能有一個(gè)名稱,但可以有許多形態(tài),也就是程式中可以定義多個(gè)同名的方法,用"一個(gè)介面,多個(gè)方法"來(lái)描述.可以透過(guò)方法的參數(shù)與型別引用

五大原則:?jiǎn)我宦氊?zé)原則SRP? 開(kāi)放式封閉原則OCP? 取代原則LSP? 依賴原則DIP? 介面分離原則ISP

#成員變數(shù)與局部變數(shù)的差異

* A:在類別中的位置不同

?* 成員變數(shù):在類別中方法外

?* 局部變量:在方法定義中或方法宣告上

* B:在記憶體中的位置不同

?* 成員變數(shù):在堆記憶體(成員變數(shù)屬於物件,對(duì)象進(jìn)堆記憶體)

?* 局部變數(shù):在堆疊記憶體(局部變數(shù)屬於方法,方法進(jìn)端記憶體)

* C:生命週期不同

?* 成員變數(shù):隨著物件的創(chuàng)建而存在,隨著物件的消失而消失

?* 局部變數(shù):隨著方法的呼叫而存在,隨著方法的調(diào)用完而消失

* D:初始化值不同

?* 成員變數(shù):有預(yù)設(shè)初始化值

?* 局部變數(shù):沒(méi)有預(yù)設(shè)初始化值,必須定義,賦值,然後才能使用。

靜態(tài)變數(shù)和成員變數(shù)的差異

* 靜態(tài)變數(shù)也叫類別變數(shù)? 成員變數(shù)也叫物件變數(shù)

* A:所屬不同

?* 靜態(tài)變數(shù)屬於類,所以也稱為為類別變數(shù)

?* 成員變數(shù)屬於對(duì)象,所以也稱為實(shí)例變數(shù)(對(duì)象變數(shù))

* B:記憶體中位置不同

?* 靜態(tài)變數(shù)儲(chǔ)存於方法區(qū)的靜態(tài)區(qū)

?* 成員變數(shù)儲(chǔ)存於堆疊記憶體

#* C:記憶體出現(xiàn)時(shí)間不同

?* 靜態(tài)變數(shù)隨著類別的載入而載入,隨著類別的消失而消失

?* 成員變數(shù)隨著物件的創(chuàng)建而存在,隨著物件的消失而消失

* D:調(diào)用不同

#?* 靜態(tài)變數(shù)可以透過(guò)類別名稱調(diào)用,也可以透過(guò)物件呼叫

?* 成員變數(shù)只能透過(guò)物件名稱呼叫

this和super的差異和應(yīng)用

##* A:this和super都代表什麼

?* this:代表目前物件的引用,誰(shuí)來(lái)呼叫我,我就代表誰(shuí)

?* super:代表目前物件父類別的引用

#* B:this和super的使用差異

?* a:呼叫成員變數(shù)

? * this.成員變數(shù)呼叫本類別的成員變數(shù),也可以呼叫父類別的成員變數(shù)

? * super.成員變數(shù)呼叫父類別的成員變數(shù)

?* b:呼叫建構(gòu)方法

? * this(...) 呼叫本類別的建構(gòu)方法

? * super(...) 呼叫父類別的建構(gòu)方法

?* c:呼叫成員方法

? * this.成員方法呼叫本類別的成員方法,也可以呼叫父類別的方法

? * super.成員方法呼叫父類別的成員方法

排序都有哪幾種方法?請(qǐng)列舉

排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數(shù)排序)

快速排序的偽代碼。

String, StringBuffer StringBuilder的區(qū)別。

String的長(zhǎng)度是不可變的;


StringBuffer的長(zhǎng)度是可變的,如果你對(duì)字串中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時(shí),那麼使用StringBuffer, 如果最後需要String,那麼使用StringBuffer的toString()方法;線程安全;

StringBuilder是從JDK 5 開(kāi)始,為StringBuffer該類別補(bǔ)充了一個(gè)單一執(zhí)行緒使用的等價(jià)類別;通常應(yīng)該優(yōu)先使用StringBuilder 類別,因?yàn)樗г邢嗤牟僮鳎伸端粓?zhí)行同步,所以速度更快。

Overload 和 Override 的差別。 Overloaded 的方法是否可以改變傳回值的型別?

答案:方法的重寫(xiě) Overriding 和重載 Overloading 是 Java 多態(tài)性的不同表現(xiàn)。

重寫(xiě) Overriding 是父類別與子類別之間多態(tài)性的表現(xiàn),而重載 Overloading 是一個(gè)類別中多態(tài)性的一種表現(xiàn)。如果在子類別中定義某方法與其父類別有相同的名稱和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。

子類別的物件使用這個(gè)方法時(shí),將呼叫子類別中的定義,對(duì)它而言,父類別中的定義如同被「屏蔽」了。如果在一個(gè)類別中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。 Overloaded 的方法是可以改變傳回值的型別。

final, finally的差異?

答案:final:修飾符(關(guān)鍵字);如果一個(gè)類別被宣告為final,表示它不能再派生出新的子類,不能作為父類被繼承,因此一個(gè)類別不能既被宣告為abstract的,又被宣告為final 的;將變數(shù)或方法宣告為final,可以保證它們?cè)谑褂弥胁槐桓淖?;被宣告為final 的變數(shù)必須在宣告時(shí)給定初值,而在以後的引用中只能讀取,不可修改;被宣告為final 的方法也同樣只能使用,不能重載。

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

常見(jiàn)的幾個(gè)運(yùn)行異常。

java.lang.nullpointerexception(空指標(biāo)異常)

java.lang.classnotfoundexception(指定的類別不存在)

java.lang.arithmeticexception(數(shù)學(xué)運(yùn)算異常)

java.lang.arrayindexoutofboundsexception(數(shù)組下標(biāo)越界異常)

IOException(輸入輸出異常)

數(shù)組操作的兩個(gè)常見(jiàn)小問(wèn)題越界和空指標(biāo)

* A:案例示範(fàn)

* a:ArrayIndexOutOfBoundsException:陣列索引越界異常

* 原因:你存取了不存在的索引。

* b:NullPointerException:空指標(biāo)例外

* 原因:陣列已經(jīng)不在指向堆記憶體了。而你還用陣列名去存取元素。

  * int[] arr = {1,2,3};
  * arr = null;
  * System.out.println(arr[0]);

JAVA語(yǔ)言如何進(jìn)行例外處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try區(qū)塊中可以拋出異常嗎?

答案:Java透過(guò)物件導(dǎo)向的方法進(jìn)行例外處理,把各種不同的例外分類,並提供了良好的介面。

在Java中,每個(gè)異常都是一個(gè)對(duì)象,它是Throwable類別或其它子類別的實(shí)例。當(dāng)一個(gè)方法出現(xiàn)異常後便拋出一個(gè)異常對(duì)象,該對(duì)像中包含有異常訊息,調(diào)用這個(gè)對(duì)象的方法可以捕獲到這個(gè)異常並進(jìn)行處理。

Java的例外處理是透過(guò)5個(gè)關(guān)鍵字來(lái)實(shí)現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來(lái)執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會(huì)拋出(throws)一個(gè)異常,這時(shí)候你可以通過(guò)它的類型來(lái)捕捉(catch)它,或最後(finally)由缺省處理器來(lái)處理。

用try來(lái)指定一塊預(yù)防所有"異常"的程式。緊跟在try程式後面,應(yīng)包含一個(gè)catch子句來(lái)指定你想要捕捉的"異常"的類型。

throw語(yǔ)句用來(lái)明確地拋出一個(gè)"例外"。

throws用來(lái)標(biāo)示一個(gè)成員函數(shù)可能拋出的各種"例外"。

Finally為確保一段程式碼不管發(fā)生什麼事"異常"都被執(zhí)行一段程式碼。

可以在一個(gè)成員函數(shù)呼叫的外面寫(xiě)一個(gè)try語(yǔ)句,在這個(gè)成員函數(shù)內(nèi)部寫(xiě)另一個(gè)try語(yǔ)句保護(hù)其他程式碼。每當(dāng)遇到一個(gè)try語(yǔ)句,"異常"的框架就會(huì)放到堆疊上面,直到所有的try語(yǔ)句都完成。

如果下一級(jí)的try語(yǔ)句沒(méi)有對(duì)某種"異常"進(jìn)行處理,堆疊就會(huì)展開(kāi),直到遇到有處理這種"異常"的try語(yǔ)句。

伺服器收到用戶提交的表單數(shù)據(jù),到底是呼叫Servlet的doGet()還是doPost()方法?

答案:HTML的

元素有一個(gè)method屬性,用來(lái)指定提交表單的方式,其值可以是get或post。

我們自訂的Servlet一般情況下會(huì)重寫(xiě)doGet()或doPost()兩個(gè)方法之一或全部,如果是GET請(qǐng)求就呼叫doGet()方法,如果是POST請(qǐng)求就呼叫doPost ()方法,那為什麼為什麼會(huì)這樣呢?

我們自訂的Servlet通常繼承自HttpServlet,HttpServlet繼承自GenericServlet並重寫(xiě)了其中的service()方法,這個(gè)方法是Servlet介面中定義的。

HttpServlet重寫(xiě)的service()方法會(huì)先取得使用者請(qǐng)求的方法,然後根據(jù)請(qǐng)求方法呼叫doGet()、doPost()、doPut()、doDelete()等方法,如果在自訂Servlet中重寫(xiě)了這些方法,那麼顯然會(huì)呼叫重寫(xiě)的(自訂的)方法,這顯然是對(duì)模板方法模式的應(yīng)用(如果不理解,請(qǐng)參考《Java與模式》一書(shū)的第37章) 。

當(dāng)然,自訂Servlet中也可以直接重寫(xiě)service()方法,那麼不管是哪一種方式的請(qǐng)求,都可以透過(guò)自己的程式碼進(jìn)行處理,這對(duì)於不區(qū)分請(qǐng)求方法的場(chǎng)景比較合適。

抽象類別和介面的差別?

介面是抽象類別的變體,介面中所有的方法都是抽象的。而抽象類別是聲明方法的存在而不去實(shí)作它的類別。

介面可以多繼承,抽象類別不行

介面定義方法,不能實(shí)現(xiàn),而抽象類別可以實(shí)作部分方法。

介面中基本資料型態(tài)為static 而抽類像不是的。

記憶體洩漏和記憶體溢出?

記憶體外洩:是指應(yīng)用程式在申請(qǐng)記憶體後,無(wú)法釋放已經(jīng)申請(qǐng)的記憶體空間,一次記憶體外洩危害可以忽略,但如果任其發(fā)展會(huì)導(dǎo)致記憶體溢位。

如:讀取檔案後,流要進(jìn)行及時(shí)關(guān)閉以及資料庫(kù)連線的釋放。

記憶體溢出:是指應(yīng)用程式在申請(qǐng)記憶體時(shí),沒(méi)有最後的記憶體空間,供其使用。

如:我們?cè)趯0钢袑?duì)於大批量資料導(dǎo)入,採(cǎi)用分段批次提交的方式。

什麼是執(zhí)行緒同步?

1、執(zhí)行緒同步的目的是為了保護(hù)多個(gè)執(zhí)行緒反問(wèn)一個(gè)資源時(shí)對(duì)資源的破壞。

2、線程同步方法是透過(guò)鎖來(lái)實(shí)現(xiàn),每個(gè)物件都有切僅有一個(gè)鎖,這個(gè)鎖與一個(gè)特定的物件關(guān)聯(lián),線程一旦獲取了物件鎖,其他訪問(wèn)該物件的線程就無(wú)法再存取該物件的其他非同步方法。

3、對(duì)於靜態(tài)同步方法,鎖定是針對(duì)這個(gè)類別的,鎖定物件是該類別的Class物件。靜態(tài)和非靜態(tài)方法的鎖互不干預(yù)。一個(gè)執(zhí)行緒獲得鎖,當(dāng)在一個(gè)同步方法中存取另外物件上的同步方法時(shí),會(huì)取得這兩個(gè)物件鎖。

4、對(duì)於同步,要時(shí)時(shí)清醒在哪個(gè)物件上同步,這是關(guān)鍵。

5、編寫(xiě)線程安全的類,需要時(shí)刻注意對(duì)多個(gè)線程競(jìng)爭(zhēng)訪問(wèn)資源的邏輯和安全做出正確的判斷,對(duì)“原子”操作做出分析,並保證原子操作期間別的執(zhí)行緒無(wú)法存取競(jìng)爭(zhēng)資源。

6、當(dāng)多個(gè)執(zhí)行緒等待一個(gè)物件鎖定時(shí),沒(méi)有取得到鎖的執(zhí)行緒將會(huì)發(fā)生阻塞。

7、死鎖是線程間互相等待鎖鎖造成的,在實(shí)際中發(fā)生的機(jī)率非常的小。真讓你寫(xiě)死鎖程序,不一定好使,呵呵。但是,一旦程式發(fā)生死鎖,程式就會(huì)死掉。

對(duì)多執(zhí)行緒的理解?

同一件事,不同的人在做就是多執(zhí)行緒。

食堂吃飯,一個(gè)人一個(gè)人打就是單線程,開(kāi)N個(gè)窗口N個(gè)人同時(shí)打就是多線程

線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)係:

線程指在程式執(zhí)行過(guò)程中,能夠執(zhí)行程式碼的一個(gè)執(zhí)行單位,每個(gè)程式至少都有一個(gè)線程,也就是程式本身。 Java中的執(zhí)行緒有四種狀態(tài)分別是:運(yùn)行、就緒、掛起、結(jié)束。

有那些集合?

List特點(diǎn):元素有放入順序,元素可重複

Map特點(diǎn):元素按鍵值對(duì)存儲(chǔ),不放入順序

Set特點(diǎn):元素?zé)o放入順序,元素不可重複(注意:元素雖然無(wú)放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實(shí)是固定的)

List接口有三個(gè)實(shí)作類別:LinkedList,ArrayList,Vector

LinkedList:底層基於鍊錶實(shí)現(xiàn),鍊錶記憶體是散亂的,每一個(gè)元素儲(chǔ)存本身記憶體位址的同時(shí)也儲(chǔ)存下一個(gè)元素的位址。鍊錶增刪快,查找慢

ArrayList和Vector的區(qū)別:ArrayList是非線程安全的,效率高;Vector是基於線程安全的,效率低

Set介面有兩個(gè)實(shí)作類別: HashSet(底層由HashMap實(shí)作),LinkedHashSet

SortedSet介面有實(shí)作類別:TreeSet(底層由平衡二元樹(shù)實(shí)作)

Query介面有實(shí)作類別:LinkList

# Map介面有三個(gè)實(shí)作類別:HashMap,HashTable,LinkeHashMap

HashMap非執(zhí)行緒安全,高效,支援null;HashTable執(zhí)行緒安全,低效,不支援null

#SortedMap有實(shí)作類別: TreeMap

其實(shí)最主要的是,list是用來(lái)處理序列的,而set是用來(lái)處理集合的。 Map是儲(chǔ)存的是鍵值對(duì)

檔案讀寫(xiě)的基本類別:

File Reader 類別和FileWriter類別分別繼承自Reader類別和Writer類別。 FileReader類別用於讀取文件,F(xiàn)ile Writer類別用於將資料寫(xiě)入文件,這兩各類別在使用前,都必須呼叫其建構(gòu)方法建立對(duì)應(yīng)的對(duì)象,然後呼叫對(duì)應(yīng)的read()或write()方法。

以上是java常見(jiàn)面試題整理的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動(dòng)提交模式,再執(zhí)行多個(gè)操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開(kāi)始事務(wù);2.執(zhí)行多個(gè)SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時(shí)應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過(guò)LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時(shí)間;3.使用of()方法創(chuàng)建特定日期時(shí)間;4.利用plus/minus方法不可變地增減時(shí)間;5.使用ZonedDateTime和ZoneId處理時(shí)區(qū);6.通過(guò)DateTimeFormatter格式化和解析日期字符串;7.必要時(shí)通過(guò)Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

了解網(wǎng)絡(luò)端口和防火牆 了解網(wǎng)絡(luò)端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動(dòng)管理內(nèi)存的機(jī)制,通過(guò)回收不可達(dá)對(duì)象釋放堆內(nèi)存,減少內(nèi)存洩漏風(fēng)險(xiǎn)。 1.GC從根對(duì)象(如棧變量、活動(dòng)線程、靜態(tài)字段等)出發(fā)判斷對(duì)象可達(dá)性,無(wú)法到達(dá)的對(duì)像被標(biāo)記為垃圾。 2.基於標(biāo)記-清除算法,標(biāo)記所有可達(dá)對(duì)象,清除未標(biāo)記對(duì)象。 3.採(cǎi)用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時(shí)較長(zhǎng)的MajorGC;Metaspace存儲(chǔ)類元數(shù)據(jù)。 4.JVM提供多種GC器:SerialGC適用於小型應(yīng)用;ParallelGC提升吞吐量;CMS降

比較Java構(gòu)建工具:Maven vs. Gradle 比較Java構(gòu)建工具:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

以身作則,解釋說(shuō)明 以身作則,解釋說(shuō)明 Aug 02, 2025 am 06:26 AM

defer用於在函數(shù)返回前執(zhí)行指定操作,如清理資源;參數(shù)在defer時(shí)立即求值,函數(shù)按後進(jìn)先出(LIFO)順序執(zhí)行;1.多個(gè)defer按聲明逆序執(zhí)行;2.常用於文件關(guān)閉等安全清理;3.可修改命名返回值;4.即使發(fā)生panic也會(huì)執(zhí)行,適合用於recover;5.避免在循環(huán)中濫用defer,防止資源洩漏;正確使用可提升代碼安全性和可讀性。

See all articles