- java基礎面試題 推薦度:
- java基礎面試題 推薦度:
- java 基礎面試題 推薦度:
- 相關(guān)推薦
經(jīng)典Java基礎面試題
在日常學(xué)習和工作生活中,我們需要用到試題的情況非常的多,借助試題可以更好地考查參試者所掌握的知識和技能。什么樣的試題才能有效幫助到我們呢?以下是小編整理的經(jīng)典Java基礎面試題,希望能夠幫助到大家。
經(jīng)典Java基礎面試題1
1、如果main方法被聲明為private會(huì )怎樣?
能正常編譯,但運行的時(shí)候會(huì )提示”main方法不是public的”。
2、Java里的傳引用和傳值的區別是什么?
傳引用是指傳遞的是地址而不是值本身,傳值則是傳遞值的一份拷貝。
3、如果要重寫(xiě)一個(gè)對象的equals方法,還要考慮什么?
hashCode。
4、Java的”一次編寫(xiě),處處運行”是如何實(shí)現的?
Java程序會(huì )被編譯成字節碼組成的class文件,這些字節碼可以運行在任何平臺,因此Java是平立的。
5、說(shuō)明一下public static void main(String args[])這段聲明里每個(gè)關(guān)鍵字的作用。
public: main方法是Java程序運行時(shí)調用的第一個(gè)方法,因此它必須對Java環(huán)境可見(jiàn)。所以可見(jiàn)性設置為pulic.
static: Java平臺調用這個(gè)方法時(shí)不會(huì )創(chuàng )建這個(gè)類(lèi)的一個(gè)實(shí)例,因此這個(gè)方法必須聲明為static。
void: main方法沒(méi)有返回值。
String是命令行傳進(jìn)參數的類(lèi)型,args是指命令行傳進(jìn)的字符串數組。
6、==與equals的區別
==比較兩個(gè)對象在內存里是不是同一個(gè)對象,就是說(shuō)在內存里的存儲位置一致。兩個(gè)String對象存儲的值是一樣的,但有可能在內存里存儲在不同的地方。
==比較的是引用而equals方法比較的是內容。public boolean equals(Object obj) 這個(gè)方法是由Object對象提供的,可以由子類(lèi)進(jìn)行重寫(xiě)。默認的實(shí)現只有當對象和自身進(jìn)行比較時(shí)才會(huì )返回true,這個(gè)時(shí)候和==是等價(jià)的。String, BitSet, Date, 和File都對equals方法進(jìn)行了重寫(xiě),對兩個(gè)String對象 而言,值相等意味著(zhù)它們包含同樣的字符序列。對于基本類(lèi)型的包裝類(lèi)來(lái)說(shuō),值相等意味著(zhù)對應的基本類(lèi)型的值一樣。
7、如果去掉了main方法的static修飾符會(huì )怎樣?
程序能正常編譯。運行時(shí)會(huì )拋NoSuchMethodError異常。
8、為什么oracle type4驅動(dòng)被稱(chēng)作瘦驅動(dòng)?
oracle提供了一個(gè)type 4 JDBC驅動(dòng),被稱(chēng)為瘦驅動(dòng)。這個(gè)驅動(dòng)包含了一個(gè)oracle自己完全用Java實(shí)現的一個(gè)TCP/IP的Net8的實(shí)現,因此它是平立的,可以在運行時(shí)由瀏覽器下載,不依賴(lài)任何客戶(hù)端 的oracle實(shí)現?蛻(hù)端連接字符串用的是TCP/IP的地址端口,而不是數據庫名的tnsname。
9、介紹一下finalize方法
final: 常量聲明。 finally: 處理異常。 finalize: 幫助進(jìn)行垃圾回收。
接口里聲明的變量默認是final的。final類(lèi)無(wú)法繼承,也就是沒(méi)有子類(lèi)。這么做是出于基礎類(lèi)型的安全考慮,比如String和Integer。這樣也使得編譯器進(jìn)行一些優(yōu)化,更容易保證線(xiàn)程的安全性。final方法無(wú)法重寫(xiě)。final變量的值不能改變。finalize方法在一個(gè)對象被銷(xiāo)毀和回收前會(huì )被調用。finally,通常用于異常處理,不管有沒(méi)有異常被拋出都會(huì )執行到。比如,關(guān)閉連接通常放到finally塊中完成。
10、什么是Java API?
Java API是大量軟件組件的集合,它們提供了大量有用的功能,比如GUI組件。
11、GregorianCalendar類(lèi)是什么東西?
GregorianCalendar提供了西方傳統日歷的支持。
12、ResourceBundle類(lèi)是什么?
ResourceBundle用來(lái)存儲指定語(yǔ)言環(huán)境的資源,應用程序可以根據運行時(shí)的語(yǔ)言環(huán)境來(lái)加載這些資源,從而提供不同語(yǔ)言的展示。
13、為什么Java里沒(méi)有全局變量?
全局變量是全局可見(jiàn)的',Java不支持全局可見(jiàn)的變量,因為:全局變量破壞了引用透明性原則。全局變量導致了命名空間的沖突。
14、如何將String類(lèi)型轉化成Number類(lèi)型?
Integer類(lèi)的valueOf方法可以將String轉成Number。
15、SimpleTimeZone類(lèi)是什么?
SimpleTimeZone提供公歷日期支持。
16、while循環(huán)和do循環(huán)有什么不同?
while結構在循環(huán)的開(kāi)始判斷下一個(gè)迭代是否應該繼續。do/while結構在循環(huán)的結尾來(lái)判斷是否將繼續下一輪迭代。do結構至少會(huì )執行一次循環(huán)體。
17、Locale類(lèi)是什么?
Locale類(lèi)用來(lái)根據語(yǔ)言環(huán)境來(lái)動(dòng)態(tài)調整程序的輸出。
18、面向對象編程的原則是什么?
主要有三點(diǎn),多態(tài),繼承和封裝。
19、介紹下繼承的原則
繼承使得一個(gè)對象可以獲取另一個(gè)對象的屬性。使用繼承可以讓已經(jīng)測試完備的功能得以復用,并且可以一次修改,所有繼承的地方都同時(shí)生效。
20、什么是隱式的類(lèi)型轉化?
隱式的類(lèi)型轉化就是簡(jiǎn)單的一個(gè)類(lèi)型賦值給另一個(gè)類(lèi)型,沒(méi)有顯式的告訴編譯器發(fā)生了轉化。并不是所有的類(lèi)型都支持隱式的類(lèi)型轉化。
21、sizeof是Java的關(guān)鍵字嗎?
不是。
22、native方法是什么?
native方法是非Java代碼實(shí)現的方法。
23、在System.out.println里面,System, out, println分別是什么?
System是系統提供的預定義的final類(lèi),out是一個(gè)PrintStream對象,println是out對象里面一個(gè)重載的方法。
24、封裝,繼承和多態(tài)是什么?
簡(jiǎn)單來(lái)說(shuō),多態(tài)是指一個(gè)名字多種實(shí)現。多態(tài)使得一個(gè)實(shí)體通過(guò)一個(gè)通用的方式來(lái)實(shí)現不同的操作。具體的操作是由實(shí)際的實(shí)現來(lái)決定的。
多態(tài)在Java里有三種表現方式:方法重載通過(guò)繼承實(shí)現方法重寫(xiě)通過(guò)Java接口進(jìn)行方法重寫(xiě)。
25、顯式的類(lèi)型轉化是什么?
顯式的類(lèi)型轉化是明確告訴了編譯器來(lái)進(jìn)行對象的轉化。
26、什么是Java虛擬機?
Java虛擬機是能移植到不同硬件平臺上的軟件系統。
27、類(lèi)型向下轉換是什么?
向下轉換是指由一個(gè)通用類(lèi)型轉換成一個(gè)具體的類(lèi)型,在繼承結構上向下進(jìn)行。
28、Java的訪(fǎng)問(wèn)修飾符是什么?
訪(fǎng)問(wèn)權限修飾符是表明類(lèi)成員的訪(fǎng)問(wèn)權限類(lèi)型的關(guān)鍵字。使用這些關(guān)鍵字來(lái)限定程序的方法或者變量的訪(fǎng)問(wèn)權限。它們包含:
public: 所有類(lèi)都可以訪(fǎng)問(wèn) protected: 同一個(gè)包內以及所有子類(lèi)都可以訪(fǎng)問(wèn) private: 只有歸屬的類(lèi)才能訪(fǎng)問(wèn)默認: 歸屬類(lèi)及相同包下的子類(lèi)可以訪(fǎng)問(wèn)。
29、所有類(lèi)的父類(lèi)是什么?
Object.
30、Java的基本類(lèi)型有哪些?
byte,char, short, int, long, float, double, boolean。
經(jīng)典Java基礎面試題2
java面試題目1
1.談?wù)剬ML的理解?說(shuō)明Web應用中Web.xml文件的作用?
解答:XML(Extensible Markup Language)即可擴展標記語(yǔ)言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語(yǔ)言)。Xml是Internet環(huán)境中跨平臺的,依賴(lài)于內容的技術(shù),是當前處理結構化文檔信息的有力工具。擴展標記語(yǔ)言XML是一種簡(jiǎn)單的數據存儲語(yǔ)言,使用一系列簡(jiǎn)單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進(jìn)制數據要占用更多的空間,但XML極其簡(jiǎn)單易于掌握和使用。
web.xml的作用是配置歡迎頁(yè),servlet,filter,listener等的。
2.jsp有哪些內置對象?作用分別是什么?(至少三個(gè))
解答:
1)request表示HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息,并且提供了幾個(gè)用于獲取cookie, header和session數據的有用的方法。
2)response表示HttpServletResponse對象,并提供了幾個(gè)用于設置送回 瀏覽器的響應的方法(如cookies,頭信息等)。
3)out對象是javax.jsp.JspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向瀏覽器回送輸出結果。
4)pageContext表示一個(gè)javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對象的API,并且包裝了通用的servlet相關(guān)功能的方法。
5)session表示一個(gè)請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶(hù)的'狀態(tài)信息。
6)application 表示一個(gè)javax.servle.ServletContext對象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息。
7)config表示一個(gè)javax.servlet.ServletConfig對象。該對象用于存取servlet實(shí)例的初始化參數。
8)page表示從該頁(yè)面產(chǎn)生的一個(gè)servlet實(shí)例。
9)exception 針對錯誤網(wǎng)頁(yè),未捕捉的例外
3.事務(wù)是什么?有哪些屬性,并簡(jiǎn)要說(shuō)明這些屬性的含義。
解答:事務(wù)(Transaction)是訪(fǎng)問(wèn)并可能更新數據庫中各種數據項的一個(gè)程序執行單元(unit)。
事務(wù)通常由高級數據庫操縱語(yǔ)言或編程語(yǔ)言(如SQL,C++或Java)書(shū)寫(xiě)的用戶(hù)程序的執行所引起,并用形如begin transaction和end transaction語(yǔ)句(或函數調用)來(lái)界定。事務(wù)由事務(wù)開(kāi)始(begin transaction)和事務(wù)結束(end transaction)之間執行的全體操作組成。
事務(wù)應該具有4個(gè)屬性:原子性、一致性、隔離性、持續性。這四個(gè)屬性通常稱(chēng)為ACID特性。
原子性(atomicity)。一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務(wù)必須是使數據庫從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
隔離性(isolation)。一個(gè)事務(wù)的執行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內部的操作及使用的數據對并發(fā)的其他事務(wù)是隔離的,并發(fā)執行的各個(gè)事務(wù)之間不能互相干擾。
持久性(durability)。持續性也稱(chēng)永久性(permanence),指一個(gè)事務(wù)一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來(lái)的其他操作或故障不應該對其有任何影響。
4、Collection 和 Collections的區別?
解答:Collection是java.util下的接口,它是各種集合的父接口,繼承于它的接口主要有Set 和List;Collections是個(gè)java.util下的類(lèi),是針對集合的幫助類(lèi),提供一系列靜態(tài)方法實(shí)現對各種集合的搜索、排序、線(xiàn)程安全化等操作。
5、HashMap與TreeMap的區別?
解答:HashMap通過(guò)hashcode對其內容進(jìn)行快速查找,而TreeMap中所有的元素都保持著(zhù)某種固定的順序,如果你需要得到一個(gè)有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。
6、ArrayList和Vector的區別?
解答:同步性:Vector是線(xiàn)程安全的,也就是說(shuō)是同步的,而ArrayList是線(xiàn)程不安全的,不是同步的;數據增長(cháng):當需要增長(cháng)時(shí),Vector默認增長(cháng)為原來(lái)一培,而ArrayList卻是原來(lái)的一半。
經(jīng)典Java基礎面試題3
第一,談?wù)刦inal, finally, finalize的區別。
final?修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著(zhù)它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載
finally?再異常處理時(shí)提供 finally 塊來(lái)執行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì )執行,然后控制就會(huì )進(jìn)入 finally 塊(如果有的話(huà))。
finalize?方法名。Java 技術(shù)允許使用 finalize 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對象沒(méi)有被引用時(shí)對這個(gè)對象調用的。它是在 Object類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋 finalize 方法以整理系統資源或者執行其他清理工作。finalize 方法是在垃圾收集器刪除對象之前對這個(gè)對象調用的。
第二,HashMap和Hashtable的區別。
都屬于Map接口的類(lèi),實(shí)現了將惟一鍵映射到特定的值上。
HashMap 類(lèi)沒(méi)有分類(lèi)或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。
Hashtable 類(lèi)似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。
第三,String s = new String("xyz");創(chuàng )建了幾個(gè)String Object?
兩個(gè)對象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對象s。
第四,sleep 和 wait 有什么區別? 搞線(xiàn)程的最?lèi)?ài)
sleep方法是使線(xiàn)程停止一段時(shí)間的方法。在sleep 時(shí)間間隔期滿(mǎn)后,線(xiàn)程不一定立即恢復執行。這是因為在那個(gè)時(shí)刻,其它線(xiàn)程可能正在運行而且沒(méi)有被調度為放棄執行,除非(a)“醒來(lái)”的線(xiàn)程具有更高的優(yōu)先級
(b)正在運行的線(xiàn)程因為其它原因而阻塞。
wait是線(xiàn)程交互時(shí),如果線(xiàn)程對一個(gè)同步對象x 發(fā)出一個(gè)wait調用,該線(xiàn)程會(huì )暫停執行,被調對象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。
第五,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型?尚薷臑閟1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
第六,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類(lèi)型?
方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現,重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數,我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的'對象使用這個(gè)方法時(shí),將調用子類(lèi)中的定義,對它而言,父類(lèi)中的定義如同被“屏蔽”了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數個(gè)數或有不同的參數類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。
第七,Set里的元素是不能重復的,那么用什么方法來(lái)區分重復與否呢? 是用==還是equals? 它們有何區別?
Set里的元素是不能重復的,那么用iterator方法來(lái)區分重復與否。equals是判讀兩個(gè)Set是否相等。
equals和==方法決定引用值是否指向同一對象equals在類(lèi)中被覆蓋,為的是當兩個(gè)分離的對象的內容和類(lèi)型相配的話(huà),返回真值。
第八,error和exception有什么區別?
error 表示恢復不是不可能但很困難的情況下的一種嚴重問(wèn)題。比如說(shuō)內存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設計或實(shí)現問(wèn)題。也就是說(shuō),它表示如果程序運行正常,從不會(huì )發(fā)生的情況。
第九,給我一個(gè)你最常見(jiàn)到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十,Set里的元素是不能重復的,那么用什么方法來(lái)區分重復與否呢? 是用==還是equals? 它們有何區別?
Set里的元素是不能重復的,那么用iterator方法來(lái)區分重復與否。equals是判讀兩個(gè)Set是否相等。
equals和==方法決定引用值是否指向同一對象equals在類(lèi)中被覆蓋,為的是當兩個(gè)分離的對象的內容和類(lèi)型相配的話(huà),返回真值。
【經(jīng)典Java基礎面試題】相關(guān)文章:
java 基礎面試題07-11
java基礎面試題07-13
java基礎面試題(2012完整版)07-13
Java面試題07-12
JAVA題庫:JAVA面試題目整理07-11
求java面試題07-11
java面試題307-13
JAVA面試題(問(wèn)題)07-13
JAVA面試題求解?07-13
華為的JAVA面試題07-11