- java面試題目 推薦度:
- 相關(guān)推薦
java面試題目大全
在Java面試中,面試者想要贏得面試官的肯定,那么提前了解面試題目很重要,以下是小編幫你們整理的java面試題目,希望你喜歡。
java面試題目1
1.談?wù)剬ML的理解?說明Web應(yīng)用中Web.xml文件的作用?
解答:XML(Extensible Markup Language)即可擴(kuò)展標(biāo)記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)。Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴(kuò)展標(biāo)記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。
web.xml的作用是配置歡迎頁,servlet,filter,listener等的。
2.jsp有哪些內(nèi)置對象?作用分別是什么?(至少三個)
解答:
1)request表示HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header和session數(shù)據(jù)的有用的方法。
2)response表示HttpServletResponse對象,并提供了幾個用于設(shè)置送回 瀏覽器的響應(yīng)的方法(如cookies,頭信息等)。
3)out對象是javax.jsp.JspWriter的一個實(shí)例,并提供了幾個方法使你能用于向?yàn)g覽器回送輸出結(jié)果。
4)pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對象的API,并且包裝了通用的servlet相關(guān)功能的方法。
5)session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態(tài)信息。
6)application 表示一個javax.servle.ServletContext對象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的'信息。
7)config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實(shí)例的初始化參數(shù)。
8)page表示從該頁面產(chǎn)生的一個servlet實(shí)例。
9)exception 針對錯誤網(wǎng)頁,未捕捉的例外
3.事務(wù)是什么?有哪些屬性,并簡要說明這些屬性的含義。
解答:事務(wù)(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項(xiàng)的一個程序執(zhí)行單元(unit)。
事務(wù)通常由高級數(shù)據(jù)庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執(zhí)行所引起,并用形如begin transaction和end transaction語句(或函數(shù)調(diào)用)來界定。事務(wù)由事務(wù)開始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。
事務(wù)應(yīng)該具有4個屬性:原子性、一致性、隔離性、持續(xù)性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務(wù)是一個不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
隔離性(isolation)。一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。
持久性(durability)。持續(xù)性也稱永久性(permanence),指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其有任何影響。
4、Collection 和 Collections的區(qū)別?
解答:Collection是java.util下的接口,它是各種集合的父接口,繼承于它的接口主要有Set 和List;Collections是個java.util下的類,是針對集合的幫助類,提供一系列靜態(tài)方法實(shí)現(xiàn)對各種集合的搜索、排序、線程安全化等操作。
5、HashMap與TreeMap的區(qū)別?
解答:HashMap通過hashcode對其內(nèi)容進(jìn)行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結(jié)果你就應(yīng)該使用TreeMap(HashMap中元素的排列順序是不固定的)。
6、ArrayList和Vector的區(qū)別?
解答:同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程不安全的,不是同步的;數(shù)據(jù)增長:當(dāng)需要增長時,Vector默認(rèn)增長為原來一培,而ArrayList卻是原來的一半。
java面試題目2
1.試述數(shù)據(jù)庫完整保護(hù)的主要任務(wù)和措施。
解答:數(shù)據(jù)庫的完整性保護(hù)也就是數(shù)據(jù)庫中數(shù)據(jù)正確性的維護(hù)。數(shù)據(jù)庫完整性包括三個內(nèi)容:實(shí)體完整性規(guī)則,參照物完整性規(guī)則以及用戶定義完整性規(guī)則。 前兩個是有DBMS自動處理。
實(shí)體完整性規(guī)則是說針對于基表中的關(guān)鍵字中屬性值不能為空值,是數(shù)據(jù)庫完整性的基本要求,主關(guān)鍵字和元組的唯一性對應(yīng)。
參照物完整性規(guī)則是不允許引用不存在的元組:即基表中的外關(guān)鍵字要么為空,要么關(guān)聯(lián)基表中必存在元組。
用戶定義完整性規(guī)則針對具體的數(shù)據(jù)環(huán)境由用戶具體設(shè)置的規(guī)則,它反應(yīng)了具體應(yīng)用中的語義要求。 一個完整性規(guī)則一般由下面三部分組成:完整性約束條件設(shè)置,完整性約束條件的檢查以及完整性約束條件的處理.后兩部分在數(shù)據(jù)庫中一般有相應(yīng)的模塊處理。另外觸發(fā)器也可以做完整性的保護(hù),但觸發(fā)器大量用于主動性領(lǐng)域。
2.請說明SQLServer中 from tablea & truncate table tablea的區(qū)別
解答:兩者都可以用來刪除表中所有的記錄。區(qū)別在于:truncate是DDL操作,它移動HWK,使HWK值為0,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花費(fèi)較長時間.
3. Oracle安裝完成后,如何用命令行啟動和關(guān)閉數(shù)據(jù)庫?
解答:
打開
STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ database] | MOUNT | NOMOUNT] STARTUP OPEN:STARTUP缺省的參數(shù)就是OPEN,打開數(shù)據(jù)庫,允許數(shù)據(jù)庫的訪問。當(dāng)前實(shí)例的控制文件中所描述的所有文件都已經(jīng)打開。 STARTUP MOUNT:MOUNT數(shù)據(jù)庫,僅僅給DBA進(jìn)行管理操作,不允許數(shù)據(jù)庫的用戶訪問。僅僅只是當(dāng)前實(shí)例的控制文件被打開,數(shù)據(jù)文件未打開。 STARTUP NOMOUNT:僅僅通過初始化文件,分配出SGA區(qū),啟動數(shù)據(jù)庫后臺進(jìn)程,沒有打開控制文件和數(shù)據(jù)文件。不能訪問任何數(shù)據(jù)庫。 STARTUP PFILE= filename:以filename為初始化文件啟動數(shù)據(jù)庫,不是采用缺省初始化文件。 STARTUP FORCE:中止當(dāng)前數(shù)據(jù)庫的運(yùn)行,并開始重新正常的啟動數(shù)據(jù)庫。 STARTUP RESTRICT:只允許具有RESTRICTED SESSION權(quán)限的用戶訪問數(shù)據(jù)庫。 STARTUP RECOVER:數(shù)據(jù)庫啟動,并開始介質(zhì)恢復(fù)
關(guān)閉
SHUTDOWN有四個參數(shù):NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不帶任何參數(shù)時表示是NORMAL。
命令SHUTDOWN NORMAL:不允許新的連接、等待會話結(jié)束、等待事務(wù)結(jié)束、做一個檢查點(diǎn)并關(guān)閉數(shù)據(jù)文件。啟動時不需要實(shí)例恢復(fù)。 SHUTDOWN TRANSACTIONAL:不允許新的連接、不等待會話結(jié)束、等待事務(wù)結(jié)束、做一個檢查點(diǎn)并關(guān)閉數(shù)據(jù)文件。啟動時不需要實(shí)例恢復(fù)。 SHUTDOWN IMMEDIATE:不允許新的連接、不等待會話結(jié)束、不等待事務(wù)結(jié)束、做一個檢查點(diǎn)并關(guān)閉數(shù)據(jù)文件。沒有結(jié)束的事務(wù)是自動rollback的。啟動時不需要實(shí)例恢復(fù)。 SHUTDOWN ABORT:不允許新的'連接、不等待會話結(jié)束、不等待事務(wù)結(jié)束、不做檢查點(diǎn)且沒有關(guān)閉數(shù)據(jù)文件。啟動時自動進(jìn)行實(shí)例恢復(fù)。 另外,對于NORMAL、TRANSACTIONAL、IMMEDIATE,DB Buffer Cache的內(nèi)容寫入了數(shù)據(jù)文件,沒有提交的事務(wù)被回滾,所有的資源被釋放,數(shù)據(jù)庫被“干凈”的關(guān)閉。 對于ABORT,DB Buffer Cache的內(nèi)容沒有寫入數(shù)據(jù)文件,沒有提交的事務(wù)也沒有回滾。數(shù)據(jù)庫沒有dismount和關(guān)閉,數(shù)據(jù)文件也沒有關(guān)閉。當(dāng)數(shù)據(jù)庫啟動時,需要通過redo log恢復(fù)數(shù)據(jù),通過回滾段對事務(wù)回滾,對資源進(jìn)行釋放。
4. 類有哪三個基本特性?各特性的優(yōu)點(diǎn)?
解答:類具有封裝性、繼承性和多態(tài)性。
封裝性:類的封裝性為類的成員提供公有、缺省、保護(hù)和私有等多級訪問權(quán)限,目的是隱藏類中的私有變量和類中方法的實(shí)現(xiàn)細(xì)節(jié)。
繼承性:類的繼承性提供從已存在的類創(chuàng)建新類的機(jī)制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的全部可繼承的成員。
多態(tài)性:類的多態(tài)性提供類中方法執(zhí)行的多樣性,多態(tài)性有兩種表現(xiàn)形式:重載和覆蓋。
java面試題目3
1、HashMap和Hashtable的區(qū)別?
解答:HashMap是Hashtable的輕量級實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都實(shí)現(xiàn)了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上高于Hashtable。HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個實(shí)現(xiàn)。最大的不同是,Hastable的方法是synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須為之提供同步。
2.請說出ArrayList,Vector, LinkedList的存儲性能和特性
解答:ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實(shí)際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲,按序號索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。
3.簡要描述如何結(jié)合struts、hibernate、spring開發(fā)Web應(yīng)用?
解答:Struts可以將jsp頁面的表單關(guān)聯(lián)起來,就是把JSP頁面的表單數(shù)據(jù)封裝成javaBean,這樣的話,在action中你再也不需要使用傳統(tǒng)的request.getParameter(“name”);還有struts有一個控制器,你在struts編程中的控制器(XxxAction)都是繼承總的ActionServlet,它能集中處理請求,然后轉(zhuǎn)到相關(guān)的頁面。還有struts的表單驗(yàn)證組件,不用你寫js驗(yàn)證了,只需要你配置一下文件就可以了。另外struts的令牌機(jī)制可以防表單重復(fù)提交。
Spring 是一個輕量級容器,非侵入性.包含依賴注入,AOP等。它是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的?蚣艿闹饕獌(yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個組件,同時為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。
Hibernate:它可以讓我們以O(shè)O的方式操作數(shù)據(jù)庫,這讓我們看到了hibernate的強(qiáng)大之處,體驗(yàn)到操作數(shù)據(jù)的方便。但hibernate最耀眼之處是hibernate的緩存機(jī)制,而不是以O(shè)O的方式操作數(shù)據(jù)庫。Hibernate的緩存機(jī)制不外乎是一級緩存session,二級緩存sessionFactory,和第三方緩存如ehcache。也就是hibernate的'最強(qiáng)大的地方是它的緩存,理解了這個才能真正的理解hibernate,Hibernate的命名查詢/命名參數(shù)查詢,就是將hql語句放在一個單獨(dú)的xml文件之中,它仍然讓人們以面向?qū)ο蟮姆绞饺ゲ倏v數(shù)據(jù),而不用在以O(shè)O的方式寫著代碼的同時,然后再轉(zhuǎn)變思維,用面向關(guān)系的方式去寫那些sql語句。但hibernate不僅做了這些,它的native sql查詢方式,完全滿足sql語句的偏愛者,它像ibatis一樣,將sql語句放在配置文件之中。
4.說明反轉(zhuǎn)控制(IOC)和面向方向編程(AOP)在spring中的應(yīng)用
解答:Spring 核心容器(Core)提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(Ioc)模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用代碼程序分開。Spring的聲明式事務(wù)基于AOP實(shí)現(xiàn),卻并不需要程序開發(fā)者成為AOP專家,亦可輕易使用Spring的聲明式事務(wù)管理。
java面試題目4
1.Java集合框架是什么?說出一些集合框架的優(yōu)點(diǎn)?
每種編程語言中都有集合,最初的Java版本包含幾種集合類:Vector、Stack、HashTable和Array。
隨著集合的廣泛使用,Java1.2提出了囊括所有集合接口、實(shí)現(xiàn)和算法的集合框架。在保證線程安全的情況下使用泛型和并發(fā)集合類,Java已經(jīng)經(jīng)歷了很久。它還包括在Java并發(fā)包中,阻塞接口以及它們的實(shí)現(xiàn)。
集合框架的部分優(yōu)點(diǎn)如下:
(1)使用核心集合類降低開發(fā)成本,而非實(shí)現(xiàn)我們自己的集合類。
(2)隨著使用經(jīng)過嚴(yán)格測試的集合框架類,代碼質(zhì)量會得到提高。
(3)通過使用JDK附帶的集合類,可以降低代碼維護(hù)成本。
(4)復(fù)用性和可操作性。
2.集合框架中的泛型有什么優(yōu)點(diǎn)?
Java1.5引入了泛型,所有的集合接口和實(shí)現(xiàn)都大量地使用它。泛型允許我們?yōu)榧咸峁┮粋可以容納的對象類型,因此,如果你添加其它類型的任何元素,它會在編譯時報錯。這避免了在運(yùn)行時出現(xiàn)ClassCastException,因?yàn)槟銓诰幾g時得到報錯信息。
泛型也使得代碼整潔,我們不需要使用顯式轉(zhuǎn)換和instanceOf操作符。它也給運(yùn)行時帶來好處,因?yàn)椴粫a(chǎn)生類型檢查的字節(jié)碼指令。
3.Java集合框架的基礎(chǔ)接口有哪些?
Collection為集合層級的根接口。一個集合代表一組對象,這些對象即為它的元素。Java平臺不提供這個接口任何直接的實(shí)現(xiàn)。
Set是一個不能包含重復(fù)元素的集合。這個接口對數(shù)學(xué)集合抽象進(jìn)行建模,被用來代表集合,就如一副牌。
List是一個有序集合,可以包含重復(fù)元素。你可以通過它的索引來訪問任何元素。List更像長度動態(tài)變換的數(shù)組。
Map是一個將key映射到value的對象.一個Map不能包含重復(fù)的key:每個key最多只能映射一個value。
一些其它的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。
4.為何Collection不從Cloneable和Serializable接口繼承?
Collection接口指定一組對象,對象即為它的元素。如何維護(hù)這些元素由Collection的具體實(shí)現(xiàn)決定。
例如,一些如List的Collection實(shí)現(xiàn)允許重復(fù)的元素,而其它的如Set就不允許。很多Collection實(shí)現(xiàn)有一個公有的clone方法。然而,把它放到集合的所有實(shí)現(xiàn)中也是沒有意義的'。這是因?yàn)镃ollection是一個抽象表現(xiàn)。重要的是實(shí)現(xiàn)。
當(dāng)與具體實(shí)現(xiàn)打交道的時候,克隆或序列化的語義和含義才發(fā)揮作用。所以,具體實(shí)現(xiàn)應(yīng)該決定如何對它進(jìn)行克隆或序列化,或它是否可以被克隆或序列化。
在所有的實(shí)現(xiàn)中授權(quán)克隆和序列化,最終導(dǎo)致更少的靈活性和更多的限制。特定的實(shí)現(xiàn)應(yīng)該決定它是否可以被克隆和序列化。
5.為何Map接口不繼承Collection接口?
盡管Map接口和它的實(shí)現(xiàn)也是集合框架的一部分,但Map不是集合,集合也不是Map。因此,Map繼承Collection毫無意義,反之亦然。
如果Map繼承Collection接口,那么元素去哪兒?Map包含key-value對,它提供抽取key或value列表集合的方法,但是它不適合“一組對象”規(guī)范。
6.Iterator是什么?
Iterator接口提供遍歷任何Collection的接口。我們可以從一個Collection中使用迭代器方法來獲取迭代器實(shí)例。迭代器取代了Java集合框架中的Enumeration。迭代器允許調(diào)用者在迭代過程中移除元素。
7.Enumeration和Iterator接口的區(qū)別?
Enumeration的速度是Iterator的兩倍,也使用更少的內(nèi)存。Enumeration是非常基礎(chǔ)的,也滿足了基礎(chǔ)的需要。但是,與Enumeration相比,Iterator更加安全,因?yàn)楫?dāng)一個集合正在被遍歷的時候,它會阻止其它線程去修改集合。
迭代器取代了Java集合框架中的Enumeration。迭代器允許調(diào)用者從集合中移除元素,而Enumeration不能做到。為了使它的功能更加清晰,迭代器方法名已經(jīng)經(jīng)過改善。
8.為何沒有像Iterator.add()這樣的方法,向集合中添加元素?
語義不明,已知的是,Iterator的協(xié)議不能確保迭代的次序。然而要注意,ListIterator沒有提供一個add操作,它要確保迭代的順序。
9.為何迭代器沒有一個方法可以直接獲取下一個元素,而不需要移動游標(biāo)?
它可以在當(dāng)前Iterator的頂層實(shí)現(xiàn),但是它用得很少,如果將它加到接口中,每個繼承都要去實(shí)現(xiàn)它,這沒有意義。
10.Iterater和ListIterator之間有什么區(qū)別?
(1)我們可以使用Iterator來遍歷Set和List集合,而ListIterator只能遍歷List。
(2)Iterator只可以向前遍歷,而LIstIterator可以雙向遍歷。
(3)ListIterator從Iterator接口繼承,然后添加了一些額外的功能,比如添加一個元素、替換一個元素、獲取前面或后面元素的索引位置。
java面試題目5
1、 說說servlet的生命周期。
服務(wù)器啟動接收客戶端請求,第一次請求Servlet時會初始化該Servlet,并調(diào)用init方法,以后的請求直接調(diào)用service方法,服務(wù)器關(guān)閉時調(diào)用destory方法,釋放Servlet資源。
2、 進(jìn)程和線程的區(qū)別是什么?
什么是進(jìn)程(Process):普通的解釋就是,進(jìn)程是程序的一次執(zhí)行,而什么是線程(Thread),線程可以理解為進(jìn)程中的執(zhí)行的一段程序片段。在一個多任務(wù)環(huán)境中下面的概念可以幫助我們理解兩者間的差別:
進(jìn)程間是獨(dú)立的,這表現(xiàn)在內(nèi)存空間,上下文環(huán)境;線程運(yùn)行在進(jìn)程空間內(nèi)。
一般來講(不使用特殊技術(shù))進(jìn)程是無法突破進(jìn)程邊界存取其他進(jìn)程內(nèi)的存儲空間;而線程由于處于進(jìn)程空間內(nèi),所以同一進(jìn)程所產(chǎn)生的線程共享同一內(nèi)存空間。
同一進(jìn)程中的兩段代碼不能夠同時執(zhí)行,除非引入線程。
線程是屬于進(jìn)程的,當(dāng)進(jìn)程退出時該進(jìn)程所產(chǎn)生的線程都會被強(qiáng)制退出并清除。
線程占用的資源要少于進(jìn)程所占用的資源。
進(jìn)程和線程都可以有優(yōu)先級。
在線程系統(tǒng)中進(jìn)程也是一個線程?梢詫⑦M(jìn)程理解為一個程序的第一個線程。
3、 說出J2EE常用的幾種設(shè)計模式。
Java中的23種設(shè)計模式:Factory(工廠模式), Builder(建造模式), Factory Method(工廠方法模式),
Prototype(原始模型模式),Singleton(單例模式), Facade(門面模式),
Adapter(適配器模式), Bridge(橋梁模式), Composite(合成模式),
Decorator(裝飾模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解釋器模式), Visitor(訪問者模式),
Iterator(迭代子模式), Mediator(調(diào)停者模式), Memento(備忘錄模式),
Observer(觀察者模式), State(狀態(tài)模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(責(zé)任鏈模式)
常見的Java面試問題
1.什么是Java虛擬機(jī)?為什么Java被稱作是“平臺無關(guān)的編程語言”?
Java虛擬機(jī)是一個可以執(zhí)行Java字節(jié)碼的虛擬機(jī)進(jìn)程。Java源文件被編譯成能被Java虛擬機(jī)執(zhí)行的字節(jié)碼文件。
Java被設(shè)計成允許應(yīng)用程序可以運(yùn)行在任意的平臺,而不需要程序員為每一個平臺單獨(dú)重寫或者是重新編譯。Java虛擬機(jī)讓這個變?yōu)榭赡埽驗(yàn)樗赖讓佑布脚_的指令長度和其他特性。
2.JDK和JRE的區(qū)別是什么?
Java運(yùn)行時環(huán)境(JRE)是將要執(zhí)行Java程序的Java虛擬機(jī)。它同時也包含了執(zhí)行applet需要的瀏覽器插件。Java開發(fā)工具包(JDK)是完整的Java軟件開發(fā)包,包含了JRE,編譯器和其他的工具(比如:JavaDoc,Java調(diào)試器),可以讓開發(fā)者開發(fā)、編譯、執(zhí)行Java應(yīng)用程序。
3.”static”關(guān)鍵字是什么意思?Java中是否可以覆蓋(override)一個private或者是static的方法?
“static”關(guān)鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實(shí)例變量的情況下被訪問。
Java中static方法不能被覆蓋,因?yàn)榉椒ǜ采w是基于運(yùn)行時動態(tài)綁定的,而static方法是編譯時靜態(tài)綁定的。static方法跟類的任何實(shí)例都不相關(guān),所以概念上不適用。
4.是否可以在static環(huán)境中訪問非static變量?
static變量在Java中是屬于類的,它在所有的實(shí)例中的值是一樣的。當(dāng)類被Java虛擬機(jī)載入的時候,會對static變量進(jìn)行初始化。如果你的代碼嘗試不用實(shí)例來訪問非static的變量,編譯器會報錯,因?yàn)檫@些變量還沒有被創(chuàng)建出來,還沒有跟任何實(shí)例關(guān)聯(lián)上。
5.Java支持的`數(shù)據(jù)類型有哪些?什么是自動拆裝箱?
Java語言支持的8中基本數(shù)據(jù)類型是:
byte
short
int
long
float
double
boolean
char
自動裝箱是Java編譯器在基本數(shù)據(jù)類型和對應(yīng)的對象包裝類型之間做的一個轉(zhuǎn)化。比如:把int轉(zhuǎn)化成Integer,double轉(zhuǎn)化成double,等等。反之就是自動拆箱。
6.Java中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?
Java中的方法重載發(fā)生在同一個類里面兩個或者是多個方法的方法名相同但是參數(shù)不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數(shù)列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。
7.Java中,什么是構(gòu)造函數(shù)?什么是構(gòu)造函數(shù)重載?什么是復(fù)制構(gòu)造函數(shù)?
當(dāng)新對象被創(chuàng)建的時候,構(gòu)造函數(shù)會被調(diào)用。每一個類都有構(gòu)造函數(shù)。在程序員沒有給類提供構(gòu)造函數(shù)的情況下,Java編譯器會為這個類創(chuàng)建一個默認(rèn)的構(gòu)造函數(shù)。
Java中構(gòu)造函數(shù)重載和方法重載很相似?梢詾橐粋類創(chuàng)建多個構(gòu)造函數(shù)。每一個構(gòu)造函數(shù)必須有它自己唯一的參數(shù)列表。
Java不支持像C++中那樣的復(fù)制構(gòu)造函數(shù),這個不同點(diǎn)是因?yàn)槿绻悴蛔约簩憳?gòu)造函數(shù)的情況下,Java不會創(chuàng)建默認(rèn)的復(fù)制構(gòu)造函數(shù)。
java面試題目6
1.IP地址的編碼分為哪倆部分?
IP地址由兩部分組成,網(wǎng)絡(luò)號和主機(jī)號。不過是要和“子網(wǎng)掩碼”按位與上之后才能區(qū)分哪些是網(wǎng)絡(luò)位哪些是主機(jī)位。
2.用戶輸入M,N值,從1至N開始順序循環(huán)數(shù)數(shù),每數(shù)到M輸出該數(shù)值,直至全部輸出。寫出C程序。
循環(huán)鏈表,用取余操作做
3.不能做switch()的參數(shù)類型是:
switch的參數(shù)不能為實(shí)型。
4. static有什么用途?(請至少說明兩種)
a.限制變量的作用域
b.設(shè)置變量的存儲域
7. 引用與指針有什么區(qū)別?
a 引用必須被初始化,指針不必。
b 引用初始化以后不能被改變,指針可以改變所指的對象。
c 不存在指向空值的`引用,但是存在指向空值的指針。
8. 描述實(shí)時系統(tǒng)的基本特性
在特定時間內(nèi)完成特定的任務(wù),實(shí)時性與可靠性
9. 全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?
全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧
10. 什么是平衡二叉樹?
左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大于1
11. 堆棧溢出一般是由什么原因?qū)е碌模?/p>
沒有回收垃圾資源
12. 什么函數(shù)不能聲明為虛函數(shù)?
constructor
13. 冒泡排序算法的時間復(fù)雜度是什么?
O(n^2)
14. 寫出float x 與“零值”比較的if語句。
if(x>0.000001&&x<-0.000001)
16. Internet采用哪種網(wǎng)絡(luò)協(xié)議?該協(xié)議的主要層次結(jié)構(gòu)?
tcp/ip 應(yīng)用層/傳輸層/網(wǎng)絡(luò)層/數(shù)據(jù)鏈路層/物理層
17. Internet物理地址和IP地址轉(zhuǎn)換采用什么協(xié)議?
ARP (Address Resolution Protocol)(地址解析協(xié)議)
java面試題目7
1、面向?qū)ο蠡咎卣鳎?/strong>
繼承,封裝,多態(tài)
2、Java中的異常處理機(jī)制的簡單和應(yīng)用。
當(dāng)Java程序違反了Java的語義規(guī)則時,Java虛擬機(jī)就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是Java類庫內(nèi)置的語義。另一種情況就是Java允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關(guān)鍵字引發(fā)異常。
3、abstractclass和integerface有什么區(qū)別?
前者是抽象類,后者是接口。抽象類和接口都可以被繼承,不同的是,接口內(nèi)的方法不能實(shí)現(xiàn),需要繼承的類來具體實(shí)現(xiàn)其方法,而抽象類中的方法可以被具體實(shí)現(xiàn),并且繼承的類可以重寫其方法。一個類可以繼承一個抽象類,但是可以繼承多個接口。通常,接口被運(yùn)用于實(shí)現(xiàn)比較常用的功能,便于日后維護(hù)或者添加刪除方法,而抽象類更傾向于充當(dāng)公共類的角色。不適于在日后重新對里面的代碼進(jìn)行修改。
4、Overload和Override的區(qū)別?(方法方法重寫和方法重載的區(qū)別)
Overloaded的方法是否可以改變返回值的類型:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫 Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài) 性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對 它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法 ,它們或有不同的.參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading) 。Overloaded的方法是可以改變返回值的類型。
5、struts是什么?
struts1是基于JSP和servlet的一個開源的Web應(yīng)用框架,使用的是MVC的設(shè)計模式struts2是基于webwork技術(shù)的框架,是sun和webwork公司聯(lián)手開發(fā)的一個功能非常齊全的框架,struts2和struts1沒有任何關(guān)系,是一個全新的框架。
java面試題目8
1.數(shù)據(jù)結(jié)構(gòu)。主要涉及java.util包中的一些集合類。
2.按照他的一段描述建模。主要是類的繼承關(guān)系以及接口實(shí)現(xiàn)。還有構(gòu)造函數(shù)和析構(gòu)函數(shù)在繼承體系中的作用等等。
3.Java和C++在內(nèi)存管理的.不同之處。
4.JAVA的多線程機(jī)制。
5.反射機(jī)制的作用,以及在哪些方面使用了反射機(jī)制。
6.網(wǎng)絡(luò):TCP/IP協(xié)議。HTTP訪問機(jī)制。還問到了SSL之類。
7.DesignPatten:用過幾種DesignPattern,J2EE中有哪些Pattern已經(jīng)自動實(shí)現(xiàn)等等
8.數(shù)據(jù)庫:比較EJB中的QL語言和SQL。還寫了一段QL查詢語句。
9.CMP中Home接口,Remote接口是如何實(shí)現(xiàn)的。
10.軟件工程:常見的開發(fā)模型。平常項(xiàng)目管理中軟件工程的運(yùn)用。
技術(shù)面試大概從3:40開始,面完已經(jīng)4:50了。最后面試官說看你的項(xiàng)目經(jīng)歷,再安排一個.Net技術(shù)面試。反正到此地 步,只能隨意。不一會他回來說,有點(diǎn)晚了,Net面試就取消吧,不過還有一個英語面試。小吃了一驚,因?yàn)楦鶕?jù)sirily的 面經(jīng),不應(yīng)該有英語面試的。還好,問了一些很簡單的問題,馬馬虎虎混了過去。
【java面試題目】相關(guān)文章:
java面試常見題目04-03
java經(jīng)典面試題目12-09
java面試題目及答案04-05
java面試題目201704-05
java常見面試題目04-04
java面試基礎(chǔ)題04-03
java面試基礎(chǔ)問題04-03
精選面試題目12-09
社工面試常見題目12-09