java基礎(chǔ)面試題(未完待續(xù))

1.封裝:隱藏一切可隱藏的東西,只向外界提供最簡單的編程接口

2.多態(tài):編譯時多態(tài):方法重載 運行時多態(tài):1.方法重寫,2父類型引用子類型對象

3.抽象:抽象是將一類對象的共同特征總結(jié)出來構(gòu)造類的過程佣盒,包括數(shù)據(jù)抽象和行為抽象兩方面型檀。抽象只關(guān)注對
象有哪些屬性和行為,并不關(guān)注這些行為的細(xì)節(jié)是什么

4.equsqls和hashcode:hashcode不同,equals一定不同,hashcode相同,equals有可能不同

5.String是final類,不可以被繼承

6.重載發(fā)生在一個類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同晴叨、參數(shù)個數(shù)不同或者二者都不同)則視為
重載闯估;重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回類型少梁,比父類被重寫方
法更大的權(quán)限修飾符等孵,不能比父類被重寫方法聲明更多的異常

7.char 類型可以存儲一個中文漢字稚照,因為 Java 中使用的編碼是 Unicode,一個 char 類型占 2 個字節(jié)(16 比特)俯萌,所以放一個中
文是沒問題的

8.抽象類和接口的區(qū)別
不同:1.構(gòu)造方法 2.抽象方法和具體方法.3.抽象類可以定義成員變量 4.抽象類未必有抽象方法 接口全是抽象方法 5.抽象類可以有靜態(tài)方法
6.一個類可以繼承一個類,但可以實現(xiàn)多個接口
相同:1.都不能被實例化 2.都可以作為對象引用類型 3.都必須實現(xiàn)抽象方法

9.靜態(tài)變量:是被 static 修飾符修飾的變量果录,也稱為類變量,它屬于類咐熙,不屬于類的任何一個對象
實例變量: 必須依存于某一實例弱恒,需要先創(chuàng)建對象然后通過對象才能訪問到它。靜態(tài)變量可以實現(xiàn)讓多個對
象共享內(nèi)存棋恼。

10.==和 equals 的區(qū)別
==:如果比較的對象是基本數(shù)據(jù)類型返弹,則比較的是數(shù)值是否相等;如果比較的是引用數(shù)據(jù)類型爪飘,則比較的是對象
的地址值是否相等

11.equals 方法不能用于基本數(shù)據(jù)類型的變量义起,如果沒有對 equals 方法進(jìn)行重寫,則比較的是引用類型的變
量所指向的對象的地址

12.Java 中異常分為哪些種類:按照異常需要處理的時機分為編譯時異常(也叫強制性異常)也叫 CheckedException 和運行時異常
(也叫非強制性異常)也叫 RuntimeException

13.error 和 exception 的區(qū)別:Error 類和 Exception 類的父類都是 Throwable 類
Error 類一般是指與虛擬機相關(guān)的問題悦施,如系統(tǒng)崩潰,虛擬機錯誤去团,內(nèi)存空間不足抡诞,方法調(diào)用棧溢出等
Exception 類表示程序可以處理的異常,可以捕獲且可能恢復(fù)

14.請寫出你最常見的 5 個 RuntimeException
1)java.lang.NullPointerException 空指針異常
2)java.lang.ClassNotFoundException 指定的類找不到
3)java.lang.NumberFormatException 字符串轉(zhuǎn)換為數(shù)字異常
4)java.lang.IndexOutOfBoundsException 數(shù)組角標(biāo)越界異常土陪,常見于操作數(shù)組對象時發(fā)生昼汗。
5)java.lang.IllegalArgumentException 方法傳遞參數(shù)錯誤。
6)java.lang.ClassCastException 數(shù)據(jù)類型轉(zhuǎn)換異常鬼雀。

15.throw和throws的區(qū)別:
throw:
1)throw 語句用在方法體內(nèi)顷窒,表示拋出異常,由方法體內(nèi)的語句處理源哩。
2)throw 是具體向外拋出異常的動作鞋吉,所以它拋出的是一個異常實例,執(zhí)行 throw 一定是拋出了某種異常励烦。
throws:
1)throws 語句是用在方法聲明后面谓着,表示如果拋出異常,由該方法的調(diào)用者來進(jìn)行異常的處理坛掠。
2)throws 主要是聲明這個方法會拋出某種類型的異常赊锚,讓它的使用者要知道需要捕獲的異常的類型治筒。
3)throws 表示出現(xiàn)異常的一種可能性,并不一定會發(fā)生這種異常舷蒲。

16.final和finally的區(qū)別
1)final:用于聲明屬性耸袜,方法和類,分別表示屬性不可變牲平,方法不可覆蓋堤框,被其修飾的類不可繼承。
2)finally:異常處理語句結(jié)構(gòu)的一部分欠拾,表示總是執(zhí)行胰锌。

  1. switch:從java7開始,可以是字符串,但是long還是不能

18.StringBuilder:StringBuilder 是 Java5 中引入的,它和 StringBuffer 的方法完全相同藐窄,區(qū)別在于它是在單線程環(huán)境下使用的资昧,
因為它的所有方法都沒有被 synchronized 修飾,因此它的效率理論上也比 StringBuffer 要高

19.java日期待更

20.java基本數(shù)據(jù)類型:
整型:byte 1字節(jié) short 2 int 4 long 8
浮點型:float 4字節(jié) double 8
字符型: char 2字節(jié)

21.String荆忍、StringBuffer格带、StringBuilder 的區(qū)別
(1)、可變不可變
String:字符串常量刹枉,在修改時不會改變自身叽唱;若修改,等于重新生成新的字符串對象微宝。
StringBuffer:在修改時會改變對象自身棺亭,每次操作都是對 StringBuffer 對象本身進(jìn)行修改,不是生成新的對
象蟋软;使用場景:對字符串經(jīng)常改變情況下镶摘,主要方法:append(),insert()等岳守。
(2)凄敢、線程是否安全
String:對象定義后不可變,線程安全湿痢。
StringBuffer:是線程安全的(對調(diào)用方法加入同步鎖)涝缝,執(zhí)行效率較慢,適用于多線程下操作字符串緩沖區(qū)
大量數(shù)據(jù)譬重。
StringBuilder:是線程不安全的拒逮,適用于單線程下操作字符串緩沖區(qū)大量數(shù)據(jù)。
(3)臀规、共同點
StringBuilder 與 StringBuffer 有公共父類 AbstractStringBuilder(抽象類)消恍。
StringBuilder、StringBuffer 的方法都會調(diào)用 AbstractStringBuilder 中的公共方法以现,如 super.append(...)狠怨。
只是 StringBuffer 會在方法上加 synchronized 關(guān)鍵字约啊,進(jìn)行同步。最后佣赖,如果程序不是多線程的恰矩,那么使用
StringBuilder 效率高于 StringBuffer。

22.如何將一個 java 對象序列化到文件里
在 java 中能夠被序列化的類必須先實現(xiàn) Serializable 接口憎蛤,該接口沒有任何抽象方法只是起到一個標(biāo)記作用

23.字節(jié)流和字符流的區(qū)別
字節(jié)流讀取的時候外傅,讀到一個字節(jié)就返回一個字節(jié); 字符流使用了字節(jié)流讀到一個或多個字節(jié)(中文對應(yīng)的字節(jié)
數(shù)是兩個俩檬,在 UTF-8 碼表中是 3 個字節(jié))時萎胰。先去查指定的編碼表,將查到的字符返回棚辽。 字節(jié)流可以處理所有類型數(shù)
據(jù)技竟,如:圖片,MP3屈藐,AVI 視頻文件榔组,而字符流只能處理字符數(shù)據(jù)。只要是處理純文本數(shù)據(jù)联逻,就要優(yōu)先考慮使用字符
流搓扯,除此之外都用字節(jié)流。字節(jié)流主要是操作 byte 類型數(shù)據(jù)包归,以 byte 數(shù)組為準(zhǔn)锨推,主要操作類就是 OutputStream、
InputStream
字符流處理的單元為 2 個字節(jié)的 Unicode 字符公壤,分別操作字符换可、字符數(shù)組或字符串,而字節(jié)流處理單元為 1 個字
節(jié)境钟,操作字節(jié)和字節(jié)數(shù)組锦担。所以字符流是由 Java 虛擬機將字節(jié)轉(zhuǎn)化為 2 個字節(jié)的 Unicode 字符為單位的字符而成的俭识,
所以它對多國語言支持性比較好慨削!如果是音頻文件、圖片套媚、歌曲缚态,就用字節(jié)流好點,如果是關(guān)系到中文(文本)的堤瘤,用
字符流好點玫芦。在程序中一個字符等于兩個字節(jié),java 提供了 Reader本辐、Writer 兩個專門操作字符流的類

24.如何實現(xiàn)對象克隆
1). 實現(xiàn) Cloneable 接口并重寫 Object 類中的 clone()方法桥帆;
2). 實現(xiàn) Serializable 接口医增,通過對象的序列化和反序列化實現(xiàn)克隆

25.什么是 java 序列化,如何實現(xiàn) java 序列化:
序列化就是一種用來處理對象流的機制老虫,所謂對象流也就是將對象的內(nèi)容進(jìn)行流化叶骨。可以對流化后的對象進(jìn)行讀
寫操作祈匙,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間忽刽。序列化是為了解決在對對象流進(jìn)行讀寫操作時所引發(fā)的問題。
序 列 化 的 實 現(xiàn) : 將 需 要 被 序 列 化 的 類 實 現(xiàn) Serializable 接 口 夺欲, 該 接 口 沒 有 需 要 實 現(xiàn) 的 方 法 跪帝,
implements Serializable 只是為了標(biāo)注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構(gòu)造
一個 ObjectOutputStream(對象流)對象些阅,接著伞剑,使用 ObjectOutputStream 對象的 writeObject(Object obj)方法就
可以將參數(shù)為 obj 的對象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流扑眉。

26.ConcurrentHashMap待更

27.List的三個子類的特點:
ArrayList 底層結(jié)構(gòu)是數(shù)組,底層查詢快,增刪慢.
LinkedList 底層結(jié)構(gòu)是鏈表型的,增刪快,查詢慢昌跌。
voctor 底層結(jié)構(gòu)是數(shù)組 線程安全的,增刪慢,查詢慢。

28.List 和 Map骗随、Set 的區(qū)別
(1).結(jié)構(gòu)特點:List 和 Set 是存儲單列數(shù)據(jù)的集合轰豆,Map 是存儲鍵和值這樣的雙列數(shù)據(jù)的集合;List 中存儲的數(shù)據(jù)是有順序弓千,并
且允許重復(fù)衡便;Map 中存儲的數(shù)據(jù)是沒有順序的,其鍵是不能重復(fù)的洋访,它的值是可以有重復(fù)的镣陕,Set 中存儲的數(shù)據(jù)是無
序的,且不允許有重復(fù)姻政,但元素在集合中的位置由元素的 hashcode 決定呆抑,位置是固定的(Set 集合根據(jù) hashcode 來進(jìn)行數(shù)
據(jù)的存儲,所以位置是固定的汁展,但是位置不是用戶可以控制的鹊碍,所以對于用戶來說 set 中的元素還是無序的);

(2).實現(xiàn)類:

List 接口有三個實現(xiàn)類(LinkedList:基于鏈表實現(xiàn)食绿,鏈表內(nèi)存是散亂的侈咕,每一個元素存儲本身內(nèi)存地址的同時還
存儲下一個元素的地址。鏈表增刪快器紧,查找慢耀销;ArrayList:基于數(shù)組實現(xiàn),非線程安全的铲汪,效率高熊尉,便于索引罐柳,但不
便于插入刪除;Vector:基于數(shù)組實現(xiàn)狰住,線程安全的硝清,效率低)。
Map 接口有三個實現(xiàn)類(HashMap:基于 hash 表的 Map 接口實現(xiàn)转晰,非線程安全芦拿,高效,支持 null 值和 null
鍵查邢;HashTable:線程安全蔗崎,低效,不支持 null 值和 null 鍵扰藕;LinkedHashMap:是 HashMap 的一個子類缓苛,保存了
記錄的插入順序;SortMap 接口:TreeMap邓深,能夠把它保存的記錄根據(jù)鍵排序未桥,默認(rèn)是鍵值的升序排序)。
Set 接口有兩個實現(xiàn)類(HashSet:底層是由 HashMap 實現(xiàn)芥备,不允許集合中有重復(fù)的值冬耿,使用該方式時需要重
寫 equals()和 hashCode()方法;LinkedHashSet:繼承與 HashSet萌壳,同時又基于 LinkedHashMap 來進(jìn)行實現(xiàn)亦镶,底
層使用的是 LinkedHashMp)

(3).區(qū)別:List 集合中對象按照索引位置排序,可以有重復(fù)對象袱瓮,允許按照對象在集合中的索引位置檢索對象缤骨,例如通過
list.get(i)方法來獲取集合中的元素;Map 中的每一個元素包含一個鍵和一個值尺借,成對出現(xiàn)绊起,鍵對象不可以重復(fù),值對
象可以重復(fù)燎斩;Set 集合中的對象不按照特定的方式排序虱歪,并且沒有重復(fù)對象,但它的實現(xiàn)類能對集合中的對象按照特定
的方式排序瘫里,例如 TreeSet 類实蔽,可以按照默認(rèn)順序荡碾,也可以通過實現(xiàn) Java.util.Comparator<Type>接口來自定義排序
方式谨读。

29.Map 中的 key 和 value 可以為 null 么
HashMap 對象的 key、value 值均可為 null坛吁。
HahTable 對象的 key劳殖、value 值均不可為 null铐尚。
且兩者的的 key 值均不能重復(fù),若添加 key 相同的鍵值對哆姻,后面的 value 會自動覆蓋前面的 value

30.Thread和Runnable多線程

31.線程局部變量 ThreadLocal,注意局部兩個字就和java普通局部變量差不多
用于實現(xiàn)線程內(nèi)的數(shù)據(jù)共享宣增,即對于相同的程序代碼,多個模塊在同一個
線程中運行時要共享一份數(shù)據(jù)矛缨,而在另外線程中運行時又共享另外一份數(shù)據(jù)

32.多線程共享數(shù)據(jù)
在 Java 傳統(tǒng)線程機制中的共享數(shù)據(jù)方式爹脾,大致可以簡單分兩種情況:
多個線程行為一致,共同操作一個數(shù)據(jù)源箕昭。也就是每個線程執(zhí)行的代碼相同灵妨,可以使用同一個 Runnable 對
象,這個 Runnable 對象中有那個共享數(shù)據(jù)落竹,例如泌霍,賣票系統(tǒng)就可以這么做。
多個線程行為不一致述召,共同操作一個數(shù)據(jù)源朱转。也就是每個線程執(zhí)行的代碼不同,這時候需要用不同的
Runnable 對象积暖。例如藤为,銀行存取款。

待續(xù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夺刑,一起剝皮案震驚了整個濱河市凉蜂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌性誉,老刑警劉巖窿吩,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異错览,居然都是意外死亡纫雁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門倾哺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轧邪,“玉大人,你說我怎么就攤上這事羞海〖捎蓿” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵却邓,是天一觀的道長硕糊。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么简十? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任檬某,我火速辦了婚禮,結(jié)果婚禮上螟蝙,老公的妹妹穿的比我還像新娘恢恼。我一直安慰自己,他們只是感情好胰默,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布场斑。 她就那樣靜靜地躺著,像睡著了一般牵署。 火紅的嫁衣襯著肌膚如雪和簸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天碟刺,我揣著相機與錄音锁保,去河邊找鬼。 笑死半沽,一個胖子當(dāng)著我的面吹牛爽柒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播者填,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浩村,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了占哟?” 一聲冷哼從身側(cè)響起心墅,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榨乎,沒想到半個月后怎燥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蜜暑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年铐姚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肛捍。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡隐绵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拙毫,到底是詐尸還是另有隱情依许,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布缀蹄,位于F島的核電站峭跳,受9級特大地震影響膘婶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坦康,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诡延。 院中可真熱鬧滞欠,春花似錦、人聲如沸肆良。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惹恃。三九已至夭谤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巫糙,已是汗流浹背朗儒。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留参淹,地道東北人醉锄。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像浙值,于是被迫代替她去往敵國和親恳不。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容