Java由基礎(chǔ)到高級面試題經(jīng)典問答
Java由基礎(chǔ)到高級面試題經(jīng)典問答
你所知道的集合類都有哪些?下面就由學(xué)習(xí)啦小編為大家介紹一下Java由基礎(chǔ)到高級面試題經(jīng)典問答的文章,歡迎閱讀。
Java由基礎(chǔ)到高級面試題經(jīng)典問答篇1
1、String 和StringBuffer的區(qū)別
String:
(1)String 類代表字符串。 Java 程序中的所有字符串字面值都作為此類的實(shí)例實(shí)現(xiàn)。
(2)String的長度是不可變的
StringBuffer:
(1)線程安全的可變字符序列。一個類似于 String 的字符串緩沖區(qū),但不能修改。
(2)StringBuffer的長度是可變的。如果你對字符串中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
2、啟動一個線程是用run()還是start()? .
start():
線程已經(jīng)被啟動,正在等待被分配給CPU時間片,也就是說此時線程正在就緒隊(duì)列中排隊(duì)等候得到CPU資源。
run():
線程獲得CPU資源正在執(zhí)行任務(wù),此時除非此線程自動放棄CPU資源或者有優(yōu)先級更高的線程進(jìn)入,線程將一直運(yùn)行到結(jié)束。
3、final, finally的區(qū)別。
final:
(1)final關(guān)鍵字可用于修飾類、變量和方法,用于表示它所修飾的類、變量和方法不可改變。
變量: final修飾變量時,表示該變量一旦獲得了初始值之后就不可被改變,final既可修飾成員變量(包括類變量和實(shí)例變量),也可以修飾局部變量、形參。
方法:final修飾的方法不可被重寫,如果出于某些原因,不希望子類重寫父類的某個方法,則可以使用final修飾該方法。
類:final修飾的類不可有子類。
finally:
(1)finally關(guān)鍵字用于異常處理機(jī)制中往往跟在try-catch語句塊之后,finally語句所包含的代碼在任何情況下都會被執(zhí)行 會被執(zhí)行,且在try-catch語句塊中只能有一個finally語句塊。
Java由基礎(chǔ)到高級面試題經(jīng)典問答篇2
1、List 和 Map 區(qū)別?
列表(List):
(1)List列表區(qū)分元素的順序,即List列表能夠精確的控制每個元素插入的位置,用戶能夠使用索引來訪問List中的元素。
(2)List允許包含重復(fù)元素。
映射(Map):
(1)保存的是“鍵-值”對信息,即Map中存儲的每個元素都包括起標(biāo)識作用的“鍵”和該元素的“值”兩部分,查找數(shù)據(jù)時需要提供相應(yīng)的“鍵”,才能查找到該“鍵”所映射的“值”。
(2)Map集合中不能包含重復(fù)的“鍵”,并且每個“鍵”最多只能映射一個值。
2、JDBC中的PreparedStatement相比Statement的好處
PreperedStatement是Statement的子類,相對于Statement對象而言:
(1) PreperedStatement可以避免SQL注入的問題。
(2)Statement會使數(shù)據(jù)庫頻繁編譯SQL,可能造成數(shù)據(jù)庫緩沖區(qū)溢出。
(3)PreparedStatement 可對SQL進(jìn)行預(yù)編譯,對相同的插入操作可進(jìn)行批量添加從而提高數(shù)據(jù)庫的執(zhí)行效率。并且PreperedStatement對于sql中的參數(shù),允許使用占位符的形式進(jìn)行替換,簡化sql語句的編寫。
3、你所知道的集合類都有哪些?主要方法?
線性表型的集合:List——ArrayList、LinkedList、Vector、Stack
不允許有重復(fù)元素的Set集合:Set——HashSet
“鍵-值”對型的集合: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īng)典問答篇3
1、abstract class和interface有什么區(qū)別?
設(shè)計(jì)目的不同:
接口體現(xiàn)的是一種規(guī)范,類似于整個系統(tǒng)的“總綱”,它制定了系統(tǒng)各模塊應(yīng)該遵循的標(biāo)準(zhǔn) 。
抽象類作為多個子類的共同父類,體現(xiàn)的是模板式設(shè)計(jì)。抽象類可以被當(dāng)成系統(tǒng)實(shí)現(xiàn)過程中的中間產(chǎn)品,這個中間產(chǎn)品已經(jīng)實(shí)現(xiàn)了部分功能,但這個產(chǎn)品還不能當(dāng)成最終產(chǎn)品,必須交由其子類作更進(jìn)一步的完善,這種完善可能有幾種不同方式。
用法不同:
在接口里:
(1)接口里只能包含不帶方法體的非靜態(tài)的抽象方法。
(2)接口里只能定義靜態(tài)常量屬性
(3)接口里不能包含初始化塊和構(gòu)造方法
(4)一個類可以實(shí)現(xiàn)多個接口,并且必須實(shí)現(xiàn)接口中所有的抽象方法。
在抽象類里:
(1)抽象類中既可以包含普通方法也可以定義靜態(tài)方法 。
(2)抽象類既可以包含普通屬性,也可以包含靜態(tài)常量屬性
(3)抽象類中以包含初始化塊并且也可以有構(gòu)造方法,但是不用于創(chuàng)建對象,而是讓子類調(diào)用
(4)一個只能繼承一個父類當(dāng)一個抽象類被子類繼承時子類要么重寫父類的抽象方法要么將子類定義為抽象類。
2、java中有幾種方法可以實(shí)現(xiàn)一個線程?用什么關(guān)鍵字修飾同步方法?
Java中有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口;synchronized
3、面向?qū)ο蟮奶卣饔心男┓矫?/p>
封裝,繼承,多態(tài)三方面。
4、當(dāng)一個線程進(jìn)入一個對象的一個synchronized方法后,其它線程是否可進(jìn)入此對象的其它方法?
可以。
/*不可以,當(dāng)某個對象用synchronized修飾時,表明該對象已啟動“互斥鎖”機(jī)制,在任一時刻只能由一個線程訪問,即使該線程出現(xiàn)堵塞,該對象的被鎖定狀態(tài)也不會解除,其他線程任不能訪問該對象。*/
5、事務(wù)的特性有哪些?
事務(wù)應(yīng)該具有4個屬性:原子性、一致性、隔離性、持續(xù)性。這四個屬性通常稱為ACID特性。
6、得到Class的三個方法是什么?
(1)類對象.getClass()
(2)類名.class
(3)Class.forName(“類名”);
7、數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法
數(shù)組沒有l(wèi)ength()這個方法,只有l(wèi)ength的屬性。String有有l(wèi)ength()這個方法。