最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

史上最全Java面試題合集400道(面試30k程序員必備)

2023-06-27 15:54 作者:程序員學(xué)python  | 我要投稿

史上最全Java面試題合集400道(面試30k程序員必備)



1. final關(guān)鍵字的作用?


被final修飾的類不可以被繼承,被final修飾的方法不可以被重寫,被final修飾的變量不可以被改變.如果修飾引用,那么表示引用不可變,引用指向的內(nèi)容可變.被final修飾的方法,JVM會(huì)嘗試將其內(nèi)聯(lián),以提高運(yùn)行效率,被final修飾的常量,在編譯階段會(huì)存入常量池中.


2. 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)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof運(yùn)算符可以用來決定某對象的類是否實(shí)現(xiàn)了接口。


3. Java 集合類: list、 set、queue、 map、stack 的特點(diǎn)與用法?


Map


Map是鍵值對,鍵Key是唯一不能重復(fù)的, -一個(gè)鍵對應(yīng)一一個(gè)值, 值可以重復(fù)。


TreeMap可以保證順序,HashMap不保證順序,即為無序的,Map 中可以將Key和Value單


獨(dú)抽取出來,其中KeySet()方法可以將所有的keys抽取成- -個(gè) Set,而Values() 方法可以


將map中所有的values抽取成一個(gè)集合。


Set


不包含重復(fù)元素的集合,set 中最多包含一個(gè)null元素,只能用Iterator實(shí)現(xiàn)單項(xiàng)遍歷,


Set中沒有同步方法。


List


有序的可重復(fù)集合,可以在任意位置增加刪除元素,用Iterator實(shí)現(xiàn)單向遍歷,也可用


ListIterator實(shí)現(xiàn)雙向遍歷。


Queue


Queue遵從先進(jìn)先出原則,使用時(shí)盡量避免add()和remove()方法,而是使用offer ()來添加


元素,使用poll()來移除元素,它的優(yōu)點(diǎn)是可以通過返回值來判斷是否成功,LinkedList


實(shí)現(xiàn)了Queue接口,Queue 通常不允許插入null元素。


Stack


Stack遵從后進(jìn)先出原則,Stack 繼承自Vector,它通過五個(gè)操作對類Vector進(jìn)行擴(kuò)展,允許將向量視為堆棧,它提供了通常的push和pop操作,以及取堆棧頂點(diǎn)的peek()方法、


測試堆棧是否為空的empty方法等。


用法


如果涉及堆棧,隊(duì)列等操作,建議使用List。


對于快速插入和刪除元素的,建議使用LinkedList.


如果需要快速隨機(jī)訪問元素的,建議使用ArrayList.


4.說出ArrayList, Vector, LinkedList 的存儲(chǔ)性能和特性?


ArrayList和Vector都是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便


增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動(dòng)等內(nèi)


存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized 方法(線程安全), .


通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號索引數(shù)據(jù)需要


進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。.


5.內(nèi)存泄漏和內(nèi)存溢出?


內(nèi)存泄漏(memoryleak),是指應(yīng)用程序在申請內(nèi)存后,無法釋放已經(jīng)申請的內(nèi)存空間,一


次內(nèi)存泄漏危害可以忽略,但如果任其發(fā)展最終會(huì)導(dǎo)致內(nèi)存溢出Coutofmemory) 。如讀取


文件后流要進(jìn)行及時(shí)的關(guān)閉以及對數(shù)據(jù)庫連接的釋放。


內(nèi)存溢出(outofmemory)是指應(yīng)用程序在申請內(nèi)存時(shí),沒有足夠的內(nèi)存空間供其使用。如我


們在項(xiàng)目中對于大批量數(shù)據(jù)的導(dǎo)入,采用分批量提交的方式。


6.反射中,Class. forName ()和ClassLoader. loadClass ()的區(qū)別?


lass.forName(lassName)方法,


內(nèi).部實(shí)際調(diào)用的方法是


Class.forName(className,true,lassloader);


第2個(gè)boolean參數(shù)表示類是否需要初始化,Class.forNamel(lassName)默認(rèn) 是需要初始化,


一旦初始化,就會(huì)觸發(fā)目標(biāo)對象的static 塊代碼執(zhí)行,static 參數(shù)也也會(huì)被再次初始


化,CassaderladlasslassName) 方法,內(nèi)部實(shí)際調(diào)用的方法是


Classloader.loadClass(className,false);第2個(gè)boolean 參數(shù),表示目標(biāo)對象是否進(jìn)行鏈接,


false表示不進(jìn)行鏈接,由上面介紹可以,不進(jìn)行鏈接意味著不進(jìn)行包括初始化等一- 些列步


驟,那么靜態(tài)塊和靜態(tài)對象就不會(huì)得到執(zhí)行


7. Int 和Integer的區(qū)別?


Integer是int的包裝類型,在拆箱和裝箱中,二者自動(dòng)轉(zhuǎn)換. int是基本類型,直接存數(shù)值;


而integer是對象;用一個(gè)引用指向這個(gè)對象.由于Integer 是一一個(gè)對象, 在JVM中對象需要


一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述,相比int而言,其占用的內(nèi)存更大- -些.


8. String、 StringBuilder、 StringBuffer 區(qū)別?


String? ?字符串常量? 不可變? ?使用字符串 拼接時(shí)是不同的2個(gè)空間


StringBuffer 字 符串變量? 可變.? ?線程安全字 符串拼接直接在字符串后追加


StringBuilder 字符串變量? 可變? ?非線程安全字符串拼接直接在字符申后追加


1.StringBuilder執(zhí)行效率高于StringBuffer高于String.


2.String是一個(gè)常量,是不可變的,所以對于每一次+ =賦值都會(huì)創(chuàng)建一個(gè)新的對象,


StringBuffer和StringBuilder都是可變的,當(dāng)進(jìn)行字符串拼接時(shí)采用append方


法,在原來的基礎(chǔ)上進(jìn)行追加,所以性能比String要高,又因?yàn)镾tringBuffer是


線程安全的而StringBuilder是線程非安全的,所以StringBuilder的效率高于


StringBuffer.


3.對于大數(shù)據(jù)量的字符串的拼接,采用StringBuffer ,StringBuilder.


9. Hashtable 和Hashmap的區(qū)別?


1、HashTable 線程安全,HashMap 非線程安全


2、Hashtable 不允許null 值(key 和value 都不可以),HashMap 允許null 值(key和


value都可以)。


3、兩者的遍歷方式大同小異,Hashtable僅僅比HashMap多-一個(gè)elements方法。


10.說幾個(gè)常見的編譯時(shí)異常?


SQLException提供有關(guān)數(shù)據(jù)庫訪問錯(cuò)誤或其他錯(cuò)誤的信息的異常。


I0exception表示發(fā)生了某種I / 0異常的信號。此類是由失敗或中斷的1 / 0操作產(chǎn)生的


一般異常類


FileNotFoundException當(dāng)試圖打開指定路徑名表示的文件失敗時(shí),拋出此異常。


ClassNotFoundException找不到具有指定名稱的類的定義。


EOFException當(dāng)輸入過程中意外到達(dá)文件或流的末尾時(shí),拋出此異常。


想要領(lǐng)取資料的小伙伴們,請關(guān)注下方微信公眾號領(lǐng)取哦~?

然后就等著私信查收吧~


史上最全Java面試題合集400道(面試30k程序員必備)的評論 (共 條)

分享到微博請遵守國家法律
大埔县| 平定县| 时尚| 林周县| 香港 | 历史| 孝义市| 满城县| 分宜县| 盐边县| 金昌市| 邹平县| 黔西县| 石阡县| 宝坻区| 昌都县| 涞源县| 澳门| 剑阁县| 阿拉善左旗| 玉屏| 迁西县| 绥化市| 蒙城县| 进贤县| 金堂县| 闸北区| 体育| 监利县| 平原县| 甘南县| 赣州市| 沛县| 太谷县| 武安市| 延吉市| 阜新市| 雅安市| 克什克腾旗| 长乐市| 阿巴嘎旗|