Java面試問題2017
參加Java面試時(shí),Java程序員要充分展現(xiàn)自己,提前了解2017年的面試問題很有必要,以下是陽光網(wǎng)小編幫你們整理的2017Java面試問題,一起來學(xué)習(xí)啦。
2017Java面試問題(一)
1.Java反射機(jī)制的作用?
解答:Java反射機(jī)制的作用是:
1)在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類。
2)在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象。
3)在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法。
4)在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法
2.你是怎么理解java的泛型的?
解答: 在Java SE 1.5之前,沒有泛型的情況的下,通過對(duì)類型Object的引用來實(shí)現(xiàn)參數(shù)的“任意化”,“任意化”帶來的缺點(diǎn)是要做顯式的強(qiáng)制類型轉(zhuǎn)換,而這種轉(zhuǎn)換是要求開發(fā)者對(duì)實(shí)際參數(shù)類型可以預(yù)知的情況下進(jìn)行的。對(duì)于強(qiáng)制類型轉(zhuǎn)換錯(cuò)誤的情況,編譯器可能不提示錯(cuò)誤,在運(yùn)行的時(shí)候才出現(xiàn)異常,這是一個(gè)安全隱患。
泛型是Java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口、泛型方法。
泛型的好處是在編譯的時(shí)候檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的,提高代碼的重用率。
3.JAVA源文件中是否可以包括多個(gè)類,有什么限制
解答:一個(gè)java源文件中可以包含多個(gè)類,每個(gè)源文件中至多有一個(gè)public類,如果有的話,那么源文件的名字必須與之相同。如果源文件中沒有public類,則源文件用什么名字都可以,但最好還是具有特定的意義,免得自己都不記得里面寫的是什么了。
4.請(qǐng)解釋分布式事務(wù)管理?
解答:分布式事務(wù)是指事務(wù)的參與者、支持事務(wù)的`服務(wù)器、資源服務(wù)器以及事務(wù)管理器分別位于不同的分布式系統(tǒng)的不同節(jié)點(diǎn)之上。為了實(shí)現(xiàn)分布式事務(wù),需要使用下面將介紹的兩階段提交協(xié)議。
階段一:開始向事務(wù)涉及到的全部資源發(fā)送提交前信息。此時(shí),事務(wù)涉及到的資源還有最后一次機(jī)會(huì)來異常結(jié)束事務(wù)。如果任意一個(gè)資源決定異常結(jié)束事務(wù),則整個(gè)事務(wù)取消,不會(huì)進(jìn)行資源的更新。否則,事務(wù)將正常執(zhí)行,除非發(fā)生災(zāi)難性的失敗。為了防止會(huì)發(fā)生災(zāi)難性的失敗,所有資源的更新都會(huì)寫入到日志中。這些日志是永久性的,因此,這些日志會(huì)幸免遇難并且在失敗之后可以重新對(duì)所有資源進(jìn)行更新。
階段二:只在階段一沒有異常結(jié)束的時(shí)候才會(huì)發(fā)生。此時(shí),所有能被定位和單獨(dú)控制的資源管理器都將開始執(zhí)行真正的數(shù)據(jù)更新。 在分布式事務(wù)兩階段提交協(xié)議中,有一個(gè)主事務(wù)管理器負(fù)責(zé)充當(dāng)分布式事務(wù)協(xié)調(diào)器的角色。事務(wù)協(xié)調(diào)器負(fù)責(zé)整個(gè)事務(wù)并使之與網(wǎng)絡(luò)中的其他事務(wù)管理器協(xié)同工作。 為了實(shí)現(xiàn)分布式事務(wù),必須使用一種協(xié)議在分布式事務(wù)的各個(gè)參與者之間傳遞事務(wù)上下文信息,IIOP便是這種協(xié)議。這就要求不同開發(fā)商開發(fā)的事務(wù)參與者必須支持一種標(biāo)準(zhǔn)協(xié)議,才能實(shí)現(xiàn)分布式的事務(wù)。
2017Java面試問題(二)
1.請(qǐng)寫出JavaScript中常用的三種事件。
解答: onclick,onblur,onChange
2.請(qǐng)寫出5種常見到的runtime exception。
解答:
NullPointerException:當(dāng)操作一個(gè)空引用時(shí)會(huì)出現(xiàn)此錯(cuò)誤。
NumberFormatException:數(shù)據(jù)格式轉(zhuǎn)換出現(xiàn)問題時(shí)出現(xiàn)此異常。
ClassCastException:強(qiáng)制類型轉(zhuǎn)換類型不匹配時(shí)出現(xiàn)此異常。
ArrayIndexOutOfBoundsException:數(shù)組下標(biāo)越界,當(dāng)使用一個(gè)不存在的數(shù)組下標(biāo)時(shí)出現(xiàn)此異常。
ArithmeticException:數(shù)學(xué)運(yùn)行錯(cuò)誤時(shí)出現(xiàn)此異常
3.數(shù)組有沒有l(wèi)ength()這個(gè)方法?String有沒有l(wèi)ength()這個(gè)方法?
解答:數(shù)組沒有l(wèi)ength()方法 它有l(wèi)ength屬性
String有l(wèi)ength()方法。
4.請(qǐng)寫出一個(gè)單例模式。
解答:?jiǎn)卫J?Singleton pattern):確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局的.訪問點(diǎn)
public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默認(rèn)構(gòu)造子 */ private EagerSingleton() { } /** * 靜態(tài)工廠方法 */ public static EagerSingleton getInstance() { return m_instance; } }
5.在java中,List是個(gè)接口,那實(shí)現(xiàn)List接口的類有哪些,有什么區(qū)別?
解答: ArrayList是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號(hào)索引元素,但是插入元素要涉及數(shù)組元素移動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。
6.char類型能否存儲(chǔ)一個(gè)中文字符?為什么
解答:可以。一個(gè)char是兩個(gè)字節(jié),而一個(gè)中文也是兩個(gè)字節(jié)。
7.Switch選擇語句能否作用在String【字符串】上,也就是能否這么寫:Switch(一個(gè)字符串變量)?
解答:不可以,只能處理int,byte,short,char,(其實(shí)是只能處理int,其它三種是可以promotion到int型)不能處理Sring 。
2017Java面試問題(三)
1.關(guān)鍵字final 分別修飾一個(gè)類,一個(gè)方法,一個(gè)變量,各起什么作用
解答:final修飾類是不能被繼承
fianl修飾方法不能在子類中被覆蓋
final修飾變量,稱為常量,初始化以后不能改變值。
2.啟動(dòng)一個(gè)線程是用run()還是start()?
解答:start()。
3.是否可以繼承String類
解答:不可以。因?yàn)镾tring類有final修飾。
4.Java異常處理中,try {}里有一個(gè)return語句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?
解答:會(huì)執(zhí)行,在return前執(zhí)行。
5.EJB包含哪3種bean
解答:session bean(會(huì)話bean), entity bean(實(shí)體bean), message bean(消息bean)
6.Class.forName(String className)這個(gè)方法的作用
解答:通過類的全名獲得該類的類對(duì)象
7.你認(rèn)為在表上建立索引可以提高數(shù)據(jù)庫系統(tǒng)的效率嗎,為什么?
解答:不一定
建立太多的索引將會(huì)影響更新和插入的速度,因?yàn)樗枰瑯痈旅總(gè)索引文件。對(duì)于一個(gè)經(jīng)常需要更新和插入的表格,就沒有必要為一個(gè)很少使用的`where子句單獨(dú)建立索引了,對(duì)于比較小的表,排序的開銷不會(huì)很大,也沒有必要建立另外的索引。
【Java面試問題】相關(guān)文章:
java面試基礎(chǔ)問題04-03
java面試基本問題04-05
java面試問題及答案04-05
java面試問題及回答11-26
java面試會(huì)問什么問題04-05
java面試官常問的問題04-03
java面試常見題目04-03
java面試基礎(chǔ)題04-03
java面試自我介紹03-06