小可愛mmd22
首先都是問工作經(jīng)歷,上一家公司的工作情況(應(yīng)屆生會問些學(xué)校表現(xiàn)、畢業(yè)設(shè)計之類的)。然后問些技術(shù)問題,JAVA基礎(chǔ)的概念,線程、并發(fā)、網(wǎng)絡(luò)、文件操作、數(shù)據(jù)庫操作之類等等?,F(xiàn)在JAVA都是WEB方向,所以還會問些WEB方面的問題,前端、服務(wù)器之類。還會問一些框架方面的問題,spring,springMVC,struts,hibernate,mybatis之類的。
嘉嘉麻麻8866
java軟件工程師面試題集 EJB方面 1、有哪些內(nèi)容?分別用在什么場合? 和的區(qū)別? 答:規(guī)范內(nèi)容包括Bean提供者,應(yīng)用程序裝配者,EJB容器,EJB配置工具,EJB服務(wù)提供者,系統(tǒng)管理員。這里面,EJB容器是EJB之所以能夠運行的核心。EJB容器管理著EJB的創(chuàng)建,撤消,激活,去活,與數(shù)據(jù)庫的連接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 2、EJB與JAVA BEAN的區(qū)別? 答:Java Bean 是可復(fù)用的組件,對Java Bean并沒有嚴(yán)格的規(guī)范,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由于Java Bean是被容器所創(chuàng)建(如Tomcat)的,所以Java Bean應(yīng)具有一個無參的構(gòu)造器,另外,通常Java Bean還要實現(xiàn)Serializable接口用于實現(xiàn)Bean的持久性。Java Bean實際上相當(dāng)于微軟COM模型中的本地進程內(nèi)COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當(dāng)于DCOM,即分布式組件。它是基于Java的遠(yuǎn)程方法調(diào)用(RMI)技術(shù)的,所以EJB可以被遠(yuǎn)程訪問(跨進程、跨計算機)。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創(chuàng)建和管理。客戶通過容器來訪問真正的EJB組件。 3、EJB的基本架構(gòu) 答:一個EJB包括三個部分: Remote Interface 接口的代碼 package Beans; import ; import ; public interface Add extends EJBObject { //some method declare } Home Interface 接口的代碼 package Beans; import ; import ; import ; public interface AddHome extends EJBHome { //some method declare } EJB類的代碼 package Beans; import ; import ; import ; public class AddBean Implements SessionBean { //some method declare } J2EE,MVC方面 1、MVC的各個部分都有那些技術(shù)來實現(xiàn)?如何實現(xiàn)? 答:MVC是Model-View-Controller的簡寫。"Model" 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過JavaBean,EJB組件實現(xiàn)), "View" 是應(yīng)用的表示面(由JSP頁面產(chǎn)生),"Controller" 是提供應(yīng)用的處理過程控制(一般是一個Servlet),通過這種設(shè)計模型把應(yīng)用邏輯,處理過程和顯示邏輯分成不同的組件實現(xiàn)。這些組件可以進行交互和重用。 2、應(yīng)用服務(wù)器與WEB SERVER的區(qū)別? 希望大家補上,謝謝 3、J2EE是什么? 答:Je22是Sun公司提出的多層(multi-diered),分布式(distributed),基于組件(component-base)的企業(yè)級應(yīng)用模型(enterpriese application model).在這樣的一個應(yīng)用系統(tǒng)中,可按照功能劃分為不同的組件,這些組件又可在不同計算機上,并且處于相應(yīng)的層次(tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業(yè)信息系統(tǒng)(EIS)層。 4、WEB SERVICE名詞解釋。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。 答:Web Service描述語言WSDL SOAP即簡單對象訪問協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協(xié)議。 UDDI 的目的是為電子商務(wù)建立標(biāo)準(zhǔn);UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web Service注冊,以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標(biāo)準(zhǔn)。 5、BS與CS的聯(lián)系與區(qū)別。 希望大家補上,謝謝 6、STRUTS的應(yīng)用(如STRUTS架構(gòu)) 答:Struts是采用Java Servlet/JavaServer Pages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。 采用Struts能開發(fā)出基于MVC(Model-View-Controller)設(shè)計模式的應(yīng)用構(gòu)架。 Struts有如下的主要功能: 一.包含一個controller servlet,能將用戶的請求發(fā)送到相應(yīng)的Action對象。 二.JSP自由tag庫,并且在controller servlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。 三.提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。 設(shè)計模式方面 1、開發(fā)中都用到了那些設(shè)計模式?用在什么場合? 答:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復(fù)相同的工作。主要用到了MVC的設(shè)計模式。用來開發(fā)JSP/Servlet或者J2EE的相關(guān)應(yīng)用。簡單工廠模式等。 2、UML方面 答:標(biāo)準(zhǔn)建模語言UML。用例圖,靜態(tài)圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實現(xiàn)圖, JavaScript方面 1、如何校驗數(shù)字型? var re=/^d{1,8}$|.d{1,2}$/; var str=(i).value; var r=(re); if (r==null) { sign=-4; break; } else{ (i).value=parseFloat(str); } CORBA方面 1、CORBA是什么?用途是什么? 答:CORBA 標(biāo)準(zhǔn)是公共對象請求代理結(jié)構(gòu)(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫為 OMG)標(biāo)準(zhǔn)化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯為聯(lián)編)和允許應(yīng)用程序間互操作的協(xié)議。 其目的為: 用不同的程序設(shè)計語言書寫 在不同的進程中運行 為不同的操作系統(tǒng)開發(fā) LINUX方面 1、LINUX下線程,GDI類的解釋。 答:LINUX實現(xiàn)的就是基于核心輕量級進程的"一對一"線程模型,一個線程實體對應(yīng)一個核心輕量級進程,而線程之間的管理在核外函數(shù)庫中實現(xiàn)。 GDI類為圖像設(shè)備編程接口類庫。 1、面向?qū)ο蟮娜齻€基本特征 2、方法重載和方法重寫的概念和區(qū)別 3、接口和內(nèi)部類、抽象類的特性 4、文件讀寫的基本類 **5、串行化的注意事項以及如何實現(xiàn)串行化 6、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系 7、線程的同步、如何實現(xiàn)線程的同步 8、幾種常用的數(shù)據(jù)結(jié)構(gòu)及內(nèi)部實現(xiàn)原理。 9、Socket通信(TCP、UDP區(qū)別及Java實現(xiàn)方式) **10、Java的事件委托機制和垃圾回收機制 11、JDBC調(diào)用數(shù)據(jù)庫的基本步驟 **12、解析XML文件的幾種方式和區(qū)別 13、Java四種基本權(quán)限的定義 14、Java的國際化 二、JSP 1、至少要能說出7個隱含對象以及他們的區(qū)別 ** 2、forward 和redirect的區(qū)別 3、JSP的常用指令 三、servlet 1、什么情況下調(diào)用doGet()和doPost()? 2、servlet的init()方法和service()方法的區(qū)別 3、servlet的生命周期 4、如何現(xiàn)實servlet的單線程模式 5、servlet的配置 6、四種會話跟蹤技術(shù) 四、EJB **1、EJB容器提供的服務(wù) 主要提供聲明周期管理、代碼產(chǎn)生、持續(xù)性管理、安全、事務(wù)管理、鎖和并發(fā)行管理等服務(wù)。 2、EJB的角色和三個對象 EJB角色主要包括Bean開發(fā)者 應(yīng)用組裝者 部署者 系統(tǒng)管理員 EJB容器提供者 EJB服務(wù)器提供者 三個對象是Remote(Local)接口、Home(LocalHome)接口,Bean類 2、EJB的幾種類型 會話(Session)Bean ,實體(Entity)Bean 消息驅(qū)動的(Message Driven)Bean 會話Bean又可分為有狀態(tài)(Stateful)和無狀態(tài)(Stateless)兩種 實體Bean可分為Bean管理的持續(xù)性(BMP)和容器管理的持續(xù)性(CMP)兩種 3、bean 實例的生命周期 對于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩沖池管理,而對于Entity Bean和Statefull Session Bean存在Cache管理,通常包含創(chuàng)建實例,設(shè)置上下文、創(chuàng)建EJB Object(create)、業(yè)務(wù)方法調(diào)用、remove等過程,對于存在緩沖池管理的Bean,在create之后實例并不從內(nèi)存清除,而是采用緩沖池調(diào)度機制不斷重用實例,而對于存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態(tài)并限制內(nèi)存中實例數(shù)量。 4、激活機制 以Statefull Session Bean 為例:其Cache大小決定了內(nèi)存中可以同時存在的Bean實例的數(shù)量,根據(jù)MRU或NRU算法,實例在激活和去激活狀態(tài)之間遷移,激活機制是當(dāng)客戶端調(diào)用某個EJB實例業(yè)務(wù)方法時,如果對應(yīng)EJB Object發(fā)現(xiàn)自己沒有綁定對應(yīng)的Bean實例則從其去激活Bean存儲中(通過序列化機制存儲實例)回復(fù)(激活)此實例。狀態(tài)變遷前會調(diào)用對應(yīng)的ejbActive和ejbPassivate方法。 5、remote接口和home接口主要作用 remote接口定義了業(yè)務(wù)方法,用于EJB客戶端調(diào)用業(yè)務(wù)方法 home接口是EJB工廠用于創(chuàng)建和移除查找EJB實例 6、客服端調(diào)用EJB對象的幾個基本步驟 一、 設(shè)置JNDI服務(wù)工廠以及JNDI服務(wù)地址系統(tǒng)屬性 二、 查找Home接口 三、 從Home接口調(diào)用Create方法創(chuàng)建Remote接口 四、 通過Remote接口調(diào)用其業(yè)務(wù)方法 五、數(shù)據(jù)庫 1、存儲過程的編寫 2、基本的SQL語句 六、weblogic 1、 如何給weblogic指定大小的內(nèi)存? 在啟動Weblogic的腳本中(位于所在Domian對應(yīng)服務(wù)器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調(diào)整最小內(nèi)存為32M,最大200M 2、 如何設(shè)定的weblogic的熱啟動模式(開發(fā)模式)與產(chǎn)品發(fā)布模式? 可以在管理控制臺中修改對應(yīng)服務(wù)器的啟動模式為開發(fā)或產(chǎn)品模式之一?;蛘咝薷姆?wù)的啟動文件或者commenv文件,增加set PRODUCTION_MODE=true。 3、 如何啟動時不需輸入用戶名與密碼? 修改服務(wù)啟動文件,增加 WLS_USER和WLS_PW項。也可以在文件中增加加密過的用戶名和密碼. 4、 在weblogic管理制臺中對一個應(yīng)用域(或者說是一個網(wǎng)站,Domain)進行jms及ejb或連接池等相關(guān)信息進行配置后,實際保存在什么文件中? 保存在此Domain的文件中,它是服務(wù)器的核心配置文件。 5、 說說weblogic中一個Domain的缺省目錄結(jié)構(gòu)?比如要將一個簡單的放入何目錄下,然的在瀏覽器上就可打入http://主機:端口號//就可以看到運行結(jié)果了? 又比如這其中用到了一個自己寫的javaBean該如何辦? Domain目錄\服務(wù)器目錄\applications,將應(yīng)用目錄放在此目錄下將可以作為應(yīng)用訪問,如果是Web應(yīng)用,應(yīng)用目錄需要滿足Web應(yīng)用目錄要求,jsp文件可以直接放在應(yīng)用目錄中,Javabean需要放在應(yīng)用目錄的WEB-INF目錄的classes目錄中,設(shè)置服務(wù)器的缺省應(yīng)用將可以實現(xiàn)在瀏覽器上無需輸入應(yīng)用名。 6、 如何查看在weblogic中已經(jīng)發(fā)布的EJB? 可以使用管理控制臺,在它的Deployment中可以查看所有已發(fā)布的EJB 7、 如何在weblogic中進行ssl配置與客戶端的認(rèn)證配置或說說j2ee(標(biāo)準(zhǔn))進行ssl的配置 缺省安裝中使用和 KeyStore實現(xiàn)SSL,需要配置服務(wù)器使用Enable SSL,配置其端口,在產(chǎn)品模式下需要從CA獲取私有密鑰和數(shù)字證書,創(chuàng)建identity和trust keystore,裝載獲得的密鑰和數(shù)字證書??梢耘渲么薙SL連接是單向還是雙向的。 8、在weblogic中發(fā)布ejb需涉及到哪些配置文件 不同類型的EJB涉及的配置文件不同,都涉及到的配置文件包括實體Bean一般還需要 9、EJB需直接實現(xiàn)它的業(yè)務(wù)接口或Home接口嗎,請簡述理由. 遠(yuǎn)程接口和Home接口不需要直接實現(xiàn),他們的實現(xiàn)代碼是由服務(wù)器產(chǎn)生的,程序運行中對應(yīng)實現(xiàn)類會作為對應(yīng)接口類型的實例被使用。 10、說說在weblogic中開發(fā)消息Bean時的persistent與non-persisten的差別 persistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現(xiàn)問題而JMS服務(wù)器依然會將消息在此MDB可用的時候發(fā)送過來,而non-persistent方式的消息將被丟棄。 11、說說你所熟悉或聽說過的j2ee中的幾種常用模式?及對設(shè)計模式的一些看法 Session Facade Pattern:使用SessionBean訪問EntityBean Message Facade Pattern:實現(xiàn)異步調(diào)用 EJB Command Pattern:使用Command JavaBeans取代SessionBean,實現(xiàn)輕量級訪問 Data Transfer Object Factory:通過DTO Factory簡化EntityBean數(shù)據(jù)提供特性 Generic Attribute Access:通過AttibuteAccess接口簡化EntityBean數(shù)據(jù)提供特性 Business Interface:通過遠(yuǎn)程(本地)接口和Bean類實現(xiàn)相同接口規(guī)范業(yè)務(wù)邏輯一致性 EJB架構(gòu)的設(shè)計好壞將直接影響系統(tǒng)的性能、可擴展性、可維護性、組件可重用性及開發(fā)效率。項目越復(fù)雜,項目隊伍越龐大則越能體現(xiàn)良好設(shè)計的重要性 from java-cn
孤星馬哥
1、說出Servlet 的生命周期,并說出Servlet 和CGI 的區(qū)別?答:Web 容器加載Servlet 并將其實例化后,Servlet 生命周期開始,容器運行其init方法進行Servlet的初始化,請求到達時運行其service 方法,service方法自動派遣運行與請求對應(yīng)的doXXX 方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實例銷毀的時候調(diào)用其destroy方法。與cgi 的區(qū)別在于servlet 處于服務(wù)器進程中,它通過多線程方式運行其service 方法,一個實例可以服務(wù)于多個請求,并且其實例一般不會銷毀,而CGI 對每個請求都產(chǎn)生新的進程,服務(wù)完成后就銷毀,所以效率上低于servlet。2、forward 和redirect 的區(qū)別?答:forward 是容器中控制權(quán)的轉(zhuǎn)向,是服務(wù)器請求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個URL 的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。redirect 就是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數(shù)重新請求,所以session,request 參數(shù)都可以獲取,并且從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣也有助于隱藏實際的鏈接;在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服務(wù)器上的資源,則必須使用sendRedirect()方法。3、JSP 中動態(tài)INCLUDE 與靜態(tài)INCLUDE 的區(qū)別?答:動態(tài)INCLUDE 用jsp:include 動作實現(xiàn)
派大海綿
下面是10道java基礎(chǔ)面試題,后附答案
1.什么是 Java 虛擬機?為什么 Java 被稱作是“平臺無關(guān)的編程語言”?
Java 虛擬機是一個可以執(zhí)行 Java 字節(jié)碼的虛擬機進程。Java 源文件被編譯成能被 Java 虛擬機執(zhí)行的字節(jié)碼文件。
Java 被設(shè)計成允許應(yīng)用程序可以運行在任意的平臺,而不需要程序員為每一個平臺單獨重寫或者是重新編譯。Java 虛擬機讓這個變?yōu)榭赡埽驗樗赖讓佑布脚_的指令長度和其他特性。
2.“static”關(guān)鍵字是什么意思?Java 中是否可以覆蓋(override)一個 private 或者是static 的方法?
“static”關(guān)鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問。
Java 中 static 方法不能被覆蓋,因為方法覆蓋是基于運行時動態(tài)綁定的,而 static 方法是編譯時靜態(tài)綁定的。static 方法跟類的任何實例都不相關(guān),所以概念上不適用。
和 JRE 的區(qū)別是什么?
Java 運行時環(huán)境(JRE)是將要執(zhí)行 Java 程序的 Java 虛擬機。它同時也包含了執(zhí)行 applet 需要的瀏覽器插件。Java 開發(fā)工具包 (JDK)是完整的 Java 軟件開發(fā)包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調(diào)試器),可以讓開發(fā)者開發(fā)、編譯、執(zhí)行 Java 應(yīng)用程序。
4.是否可以在 static 環(huán)境中訪問非 static 變量?
static 變量在 Java 中是屬于類的,它在所有的實例中的值是一樣的。當(dāng)類被 Java 虛擬機載入的時候,會對 static 變量進行初始化。如果你的代碼嘗試不用實例來訪問非 static 的變量,編譯器會報錯,因為這些變量還沒有被創(chuàng)建出來,還沒有跟任何實例關(guān)聯(lián)上。
支持的數(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,等等。反之就是自動拆箱。
支持多繼承么?
不支持,Java 不支持多繼承。每個類都只能繼承一個類,但是可以實現(xiàn)多個接口。
中,什么是構(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ù),這個不同點是因為如果你不自己寫構(gòu)造函數(shù)的情況下,Java 不會創(chuàng)建默認(rèn)的復(fù)制構(gòu)造函數(shù)。
中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?
Java 中的方法重載發(fā)生在同一個類里面兩個或者是多個方法的方法名相同但是參數(shù)不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數(shù)列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。
9.接口和抽象類的區(qū)別是什么?
Java 提供和支持創(chuàng)建抽象類和接口。它們的實現(xiàn)有共同點,不同點在于:
?接口中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
?類可以實現(xiàn)很多個接口,但是只能繼承一個抽象類
?類如果要實現(xiàn)一個接口,它必須要實現(xiàn)接口聲明的所有方法。但是,類可以不實現(xiàn)抽象類聲明的所有方法,當(dāng)然,在這種情況下,類也必須得聲明成是抽象的。
?抽象類可以在不提供接口方法實現(xiàn)的情況下實現(xiàn)接口。
?Java 接口中聲明的變量默認(rèn)都是 final 的。抽象類可以包含非 final 的變量。
?Java 接口中的成員函數(shù)默認(rèn)是 public 的。抽象類的成員函數(shù)可以是 private, protected 或者是 public。
?接口是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含 main 方法的話是可以被調(diào)用的。
10.什么是值傳遞和引用傳遞?
對象被值傳遞,意味著傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。
對象被引用傳遞,意味著傳遞的并不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。
最后祝你面試順利!
jiajia1994
異常機制的原理與應(yīng)用答:每當(dāng)程序出現(xiàn)異常之后,如果程序沒有進行相應(yīng)的處理,則程序會出現(xiàn)中斷現(xiàn)象。實際上,產(chǎn)生了異常之后,JVM會拋出一個異常類的實例化對象,如果此時使用了try語句捕獲的話,則可以進行異常的處理,否則,交給JVM進行處理。當(dāng)try語句捕獲異常之后,將與catch語句的異常類型進行匹配,如果匹配成功則執(zhí)行catch內(nèi)的語句。簡單的應(yīng)用:在所以throws語句的地方加入try-catch。標(biāo)準(zhǔn)應(yīng)用:try-catch-finally-throw-throws一起使用。 2. 垃圾回收機制的優(yōu)點答:釋放無用的對象所占用的空間。方式:自動回收,手動回收。使用(),實際上調(diào)用().gc()3. Error與Exception區(qū)別答:Error是jvm進行處理,是jvm出錯exception是可以由程序處理的,可以用try-catch捕獲的4. final,finally,finallize答:final定義的變量的值不能改變,定義的方法不能被覆蓋,定義的類不能被繼承finally是異常的統(tǒng)一出口,finallize是垃圾回收前的收尾工作,是Object類定義的5. Anonymous Inner Class是否可以extends,是否可以implements Interface答:允許繼承和實現(xiàn),因為匿名內(nèi)部類就是在抽象類和接口的基礎(chǔ)上發(fā)展起來的6. Static Nested Class 與Inner Class的區(qū)別答:使用Static定義的Class就是外部類,可以通過外部類. 內(nèi)部類直接訪問而Inner Class是不能被外部訪問的,只能通過外部類的實例再找到內(nèi)部類實例。7. HashMap and HashTable?答:HashMap:1) released in jdk Class 2)采用異步處理方式,性能較高,是非線程安全的 3)允許nullHashTable:1)released in jdk ,old Class 2)采用同步處理方式,性能低,是線程安全的3)不允許null8. assert代表什么?答:asserts是jdk 之后發(fā)布的新關(guān)鍵字,表示斷言,即程序執(zhí)行到某個地方肯定是預(yù)計的值,一般開發(fā)很少使用。要使用assert,必須加上 -ea參數(shù)9. gc是什么?答:gc是garbage collection,垃圾回收,使用gc可以進行垃圾空間的釋放10. String s = new String("xyz")產(chǎn)生了幾個對象?答:一個匿名對象xyz,在棧空間內(nèi)。一個new實例化的對象,在堆空間內(nèi)。11. sleep() and wait()?答:sleep()是Thread類定義方法,表示線程的休眠,可以自動喚醒wait()方法是Object類定義的方法,需要手動notify()和notifyAll()//sleep()不釋放資源,wait()釋放資源12. Overload與Override的區(qū)別答:Overload:重載 |- 在一個類中定義的若干方法 |- 所有的方法名相同,但參數(shù)類型或個數(shù)不同 |- 只有參數(shù)有關(guān),與返回類型無關(guān)Override:覆寫 |- 在繼承的關(guān)系中 |- 子類定義了父類同名的方法,參數(shù)類型或個數(shù)最好完全一樣。 |- 訪問權(quán)限不能更嚴(yán)格13. abstract class 和 interface有什么區(qū)別?答:抽象類: |-由抽象方法和常量、變量、全局常量、構(gòu)造方法、普通方法組成 |-使用abstract聲明 |-子類要通過extends繼承抽象類,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法 |-存在單繼承的局限 |-抽象類可以實現(xiàn)若干個接口接口: |-由抽象方法和全局常量組成 |-使用interface關(guān)鍵字 |-子類要通過implements實現(xiàn)接口,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法 |-一個子類可以實現(xiàn)多個接口 |-接口不能繼承一個抽象類,但允許繼承多個接口
優(yōu)質(zhì)工程師考試問答知識庫