學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場(chǎng) > 面試題 > Java由基礎(chǔ)到高級(jí)面試題經(jīng)典問(wèn)答

Java由基礎(chǔ)到高級(jí)面試題經(jīng)典問(wèn)答

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

Java由基礎(chǔ)到高級(jí)面試題經(jīng)典問(wèn)答

  你所知道的集合類(lèi)都有哪些?下面就由學(xué)習(xí)啦小編為大家介紹一下Java由基礎(chǔ)到高級(jí)面試題經(jīng)典問(wèn)答的文章,歡迎閱讀。

  Java由基礎(chǔ)到高級(jí)面試題經(jīng)典問(wèn)答篇1

  1、String 和StringBuffer的區(qū)別

  String:

  (1)String 類(lèi)代表字符串。 Java 程序中的所有字符串字面值都作為此類(lèi)的實(shí)例實(shí)現(xiàn)。

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

  StringBuffer:

  (1)線(xiàn)程安全的可變字符序列。一個(gè)類(lèi)似于 String 的字符串緩沖區(qū),但不能修改。

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

  2、啟動(dòng)一個(gè)線(xiàn)程是用run()還是start()? .

  start():

  線(xiàn)程已經(jīng)被啟動(dòng),正在等待被分配給CPU時(shí)間片,也就是說(shuō)此時(shí)線(xiàn)程正在就緒隊(duì)列中排隊(duì)等候得到CPU資源。

  run():

  線(xiàn)程獲得CPU資源正在執(zhí)行任務(wù),此時(shí)除非此線(xiàn)程自動(dòng)放棄CPU資源或者有優(yōu)先級(jí)更高的線(xiàn)程進(jìn)入,線(xiàn)程將一直運(yùn)行到結(jié)束。

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

  final:

  (1)final關(guān)鍵字可用于修飾類(lèi)、變量和方法,用于表示它所修飾的類(lèi)、變量和方法不可改變。

  變量: final修飾變量時(shí),表示該變量一旦獲得了初始值之后就不可被改變,final既可修飾成員變量(包括類(lèi)變量和實(shí)例變量),也可以修飾局部變量、形參。

  方法:final修飾的方法不可被重寫(xiě),如果出于某些原因,不希望子類(lèi)重寫(xiě)父類(lèi)的某個(gè)方法,則可以使用final修飾該方法。

  類(lèi):final修飾的類(lèi)不可有子類(lèi)。

  finally:

  (1)finally關(guān)鍵字用于異常處理機(jī)制中往往跟在try-catch語(yǔ)句塊之后,finally語(yǔ)句所包含的代碼在任何情況下都會(huì)被執(zhí)行 會(huì)被執(zhí)行,且在try-catch語(yǔ)句塊中只能有一個(gè)finally語(yǔ)句塊。

  Java由基礎(chǔ)到高級(jí)面試題經(jīng)典問(wèn)答篇2

  1、List 和 Map 區(qū)別?

  列表(List):

  (1)List列表區(qū)分元素的順序,即List列表能夠精確的控制每個(gè)元素插入的位置,用戶(hù)能夠使用索引來(lái)訪(fǎng)問(wèn)List中的元素。

  (2)List允許包含重復(fù)元素。

  映射(Map):

  (1)保存的是“鍵-值”對(duì)信息,即Map中存儲(chǔ)的每個(gè)元素都包括起標(biāo)識(shí)作用的“鍵”和該元素的“值”兩部分,查找數(shù)據(jù)時(shí)需要提供相應(yīng)的“鍵”,才能查找到該“鍵”所映射的“值”。

  (2)Map集合中不能包含重復(fù)的“鍵”,并且每個(gè)“鍵”最多只能映射一個(gè)值。

  2、JDBC中的PreparedStatement相比Statement的好處

  PreperedStatement是Statement的子類(lèi),相對(duì)于Statement對(duì)象而言:

  (1) PreperedStatement可以避免SQL注入的問(wèn)題。

  (2)Statement會(huì)使數(shù)據(jù)庫(kù)頻繁編譯SQL,可能造成數(shù)據(jù)庫(kù)緩沖區(qū)溢出。

  (3)PreparedStatement 可對(duì)SQL進(jìn)行預(yù)編譯,對(duì)相同的插入操作可進(jìn)行批量添加從而提高數(shù)據(jù)庫(kù)的執(zhí)行效率。并且PreperedStatement對(duì)于sql中的參數(shù),允許使用占位符的形式進(jìn)行替換,簡(jiǎn)化sql語(yǔ)句的編寫(xiě)。

  3、你所知道的集合類(lèi)都有哪些?主要方法?

  線(xiàn)性表型的集合:List——ArrayList、LinkedList、Vector、Stack

  不允許有重復(fù)元素的Set集合:Set——HashSet

  “鍵-值”對(duì)型的集合:Map——HashMap、HashTable

  主要方法:

  ArrayList:

  add(int index, E element)、add(E e)、remove(int index)

  remove(Object o)、get(int index)、size()、indexOf(Object obj)

  subList(int fromIndex, int toIndex)、clear()

  LinkedList:

  push(E e)、pop()、pollLast()、pollFirst()、peek()、

  get(int index)、getFirst()、getLast()、addFirst(E e)

  addLast(E e)、add(E e)、remove()、remove(int index)

  remove(Object o)

  Vector:

  firstElement()、elements()、contains(Object o)、

  add(int index, E element) 、clear()

  Stack:

  構(gòu)造方法:

  Stack st=new Stack(); Stack st = new Stack();

  其他方法:

  peek() 、pop() 、push(E item) 、empty()、search(Object o)

  HashSet:

  構(gòu)造方法

  HashSet()

  HashSet( c)

  其他方法

  contains(Object o) 、isEmpty()、iterator()、remove(Object o)

  size()

  HashMap:

  entrySet() 、get(Object key)、isEmpty()、keySet()、

  put(K key, V value)

  Java由基礎(chǔ)到高級(jí)面試題經(jīng)典問(wèn)答篇3

  1、abstract class和interface有什么區(qū)別?

  設(shè)計(jì)目的不同:

  接口體現(xiàn)的是一種規(guī)范,類(lèi)似于整個(gè)系統(tǒng)的“總綱”,它制定了系統(tǒng)各模塊應(yīng)該遵循的標(biāo)準(zhǔn) 。

  抽象類(lèi)作為多個(gè)子類(lèi)的共同父類(lèi),體現(xiàn)的是模板式設(shè)計(jì)。抽象類(lèi)可以被當(dāng)成系統(tǒng)實(shí)現(xiàn)過(guò)程中的中間產(chǎn)品,這個(gè)中間產(chǎn)品已經(jīng)實(shí)現(xiàn)了部分功能,但這個(gè)產(chǎn)品還不能當(dāng)成最終產(chǎn)品,必須交由其子類(lèi)作更進(jìn)一步的完善,這種完善可能有幾種不同方式。

  用法不同:

  在接口里:

  (1)接口里只能包含不帶方法體的非靜態(tài)的抽象方法。

  (2)接口里只能定義靜態(tài)常量屬性

  (3)接口里不能包含初始化塊和構(gòu)造方法

  (4)一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,并且必須實(shí)現(xiàn)接口中所有的抽象方法。

  在抽象類(lèi)里:

  (1)抽象類(lèi)中既可以包含普通方法也可以定義靜態(tài)方法 。

  (2)抽象類(lèi)既可以包含普通屬性,也可以包含靜態(tài)常量屬性

  (3)抽象類(lèi)中以包含初始化塊并且也可以有構(gòu)造方法,但是不用于創(chuàng)建對(duì)象,而是讓子類(lèi)調(diào)用

  (4)一個(gè)只能繼承一個(gè)父類(lèi)當(dāng)一個(gè)抽象類(lèi)被子類(lèi)繼承時(shí)子類(lèi)要么重寫(xiě)父類(lèi)的抽象方法要么將子類(lèi)定義為抽象類(lèi)。

  2、java中有幾種方法可以實(shí)現(xiàn)一個(gè)線(xiàn)程?用什么關(guān)鍵字修飾同步方法?

  Java中有兩種實(shí)現(xiàn)方法,分別是繼承Thread類(lèi)與實(shí)現(xiàn)Runnable接口;synchronized

  3、面向?qū)ο蟮奶卣饔心男┓矫?/p>

  封裝,繼承,多態(tài)三方面。

  4、當(dāng)一個(gè)線(xiàn)程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線(xiàn)程是否可進(jìn)入此對(duì)象的其它方法?

  可以。

  /*不可以,當(dāng)某個(gè)對(duì)象用synchronized修飾時(shí),表明該對(duì)象已啟動(dòng)“互斥鎖”機(jī)制,在任一時(shí)刻只能由一個(gè)線(xiàn)程訪(fǎng)問(wèn),即使該線(xiàn)程出現(xiàn)堵塞,該對(duì)象的被鎖定狀態(tài)也不會(huì)解除,其他線(xiàn)程任不能訪(fǎng)問(wèn)該對(duì)象。*/

  5、事務(wù)的特性有哪些?

  事務(wù)應(yīng)該具有4個(gè)屬性:原子性、一致性、隔離性、持續(xù)性。這四個(gè)屬性通常稱(chēng)為ACID特性。

  6、得到Class的三個(gè)方法是什么?

  (1)類(lèi)對(duì)象.getClass()

  (2)類(lèi)名.class

  (3)Class.forName(“類(lèi)名”);

  7、數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法

  數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,只有l(wèi)ength的屬性。String有有l(wèi)ength()這個(gè)方法。

3154033