- 相關(guān)推薦
java軟件開發(fā)工程師面試題寶典
Java軟件開發(fā)的面試題目你又了解了嗎?對(duì)于Java軟件工程師來說,做好準(zhǔn)備很重要,以下是陽光網(wǎng)小編幫你們整理的java軟件開發(fā)工程師面試題,一起來學(xué)習(xí)啦。
java軟件開發(fā)工程師面試題(一)
1)transient和volatile是java關(guān)鍵字嗎?
如果用transient聲明一個(gè)實(shí)例變量,當(dāng)對(duì)象存儲(chǔ)時(shí),它的值不需要維持。例如: class T
{
transient int a; //不需要維持
int b; //需要維持
}
這里,如果T類的一個(gè)對(duì)象寫入一個(gè)持久的存儲(chǔ)區(qū)域,a的內(nèi)容不被保存,但b的將被保存。
volatile修飾符告訴編譯器被volatile修飾的變量可以被程序的其他部分改變。在多線程程序中,有時(shí)兩個(gè)或更多的線程共享一個(gè)相同的實(shí)例變量?紤]效率問題,每個(gè)線程可以自己保存該共享變量的私有拷貝。實(shí)際的變量副本在不同的時(shí)候更新,如當(dāng)進(jìn)入synchronized方法時(shí)。 用strictfp修飾類或方法,可以確保浮點(diǎn)運(yùn)算(以及所有切斷)正如早期的Java版本那樣準(zhǔn)確。切斷只影響某些操作的指數(shù)。當(dāng)一個(gè)類被strictfp修飾,所有的方法自動(dòng)被strictfp修飾。
strictfp的意思是FP-strict,也就是說精確浮點(diǎn)的`意思。在Java虛擬機(jī)進(jìn)行浮點(diǎn)運(yùn)算時(shí),如果沒有指定strictfp關(guān)鍵字時(shí),Java的編譯器以及運(yùn)行環(huán)境在對(duì)浮點(diǎn)運(yùn)
算的表達(dá)式是采取一種近似于我行我素的行為來完成這些操作,以致于得到的結(jié)果往往無法令你滿意。而一旦使用了strictfp來聲明一個(gè)類、接口或者方法時(shí),那么所聲明的范圍內(nèi)Java的編譯器以及運(yùn)行環(huán)境會(huì)完全依照浮點(diǎn)規(guī)范IEEE-754來執(zhí)行。因此如果你想讓你的浮點(diǎn)運(yùn)算更加精確,而且不會(huì)因?yàn)椴煌挠布脚_(tái)所執(zhí)行的結(jié)果不一致的話,那就請(qǐng)用關(guān)鍵字strictfp。
你可以將一個(gè)類、接口以及方法聲明為strictfp,但是不允許對(duì)接口中的方法以及構(gòu)造函數(shù)聲明strictfp關(guān)鍵字,例如下面的代碼:
strictfp interface A {}
public strictfp class FpDemo1 {
strictfp void f() {}
}
2. 錯(cuò)誤的使用方法
interface A {
strictfp void f();
}
public class FpDemo2 {
strictfp FpDemo2() {}
}
一旦使用了關(guān)鍵字strictfp來聲明某個(gè)類、接口或者方法時(shí),那么在這個(gè)關(guān)鍵字所聲明的范圍內(nèi)所有浮點(diǎn)運(yùn)算都是精確的,符合IEEE-754規(guī)范的。例如一個(gè)類被聲明為strictfp,那么該類中所有的方法都是strictfp的。
2)抽象類和接口有什么區(qū)別?
1.abstract class 在 Java 語言中表示的是一種繼承關(guān)系,一個(gè)類只能使用一次繼承關(guān)系。但是,一個(gè)類卻可以實(shí)現(xiàn)多個(gè)interface。
2.在abstract class 中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是static final的,不過在 interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是abstract的。
3.abstract class和interface所反映出的設(shè)計(jì)理念不同。其實(shí)abstract class表示的是"is-a"關(guān)系,interface表示的是"like-a"關(guān)系。
4.實(shí)現(xiàn)抽象類和接口的類必須實(shí)現(xiàn)其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實(shí)現(xiàn)方法。
5.接口中定義的變量默認(rèn)是public static final 型,且必須給其初值,所以實(shí)現(xiàn)類中不能重新定義,也不能改變其值。
6.抽象類中的變量默認(rèn)是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
7.接口中的方法默認(rèn)都是 public,abstract 類型的。
3)能說一下java的反射(reflection)機(jī)制嗎?
開放性和原因連接(causally-connected)是反射系統(tǒng)的兩大基本要素
java軟件開發(fā)工程師面試題(二)
1.j2ee是什么?它包含哪些技術(shù)?
從整體來講,J2EE是使用java開發(fā)技術(shù)開發(fā)企業(yè)級(jí)應(yīng)用的工業(yè)標(biāo)準(zhǔn),它是java技術(shù)不斷適應(yīng)和醋精企業(yè)級(jí)應(yīng)用過程的產(chǎn)物。適用于企業(yè)級(jí)應(yīng)用的j2ee,提供一個(gè)平臺(tái)獨(dú)立的、可移植的、多用戶的、安全的和基于標(biāo)注呢企業(yè)級(jí)平臺(tái),從而簡化企0業(yè)應(yīng)用的開發(fā)、管理和部署。J2EE是一個(gè)標(biāo)準(zhǔn),而不是一個(gè)現(xiàn)成的產(chǎn)品。
主要包括以下這些技術(shù):
(1)Servlet servlet是java平臺(tái)上的CGI技術(shù)。Servlet在服務(wù)器端運(yùn)行,動(dòng)態(tài)的生成web頁面。與傳統(tǒng)的.CGI和其他類似CGI的技術(shù)相比,Java Servlet具有更高的效率并更容易使用。對(duì)于Servlet,從夫的請(qǐng)求不會(huì)導(dǎo)致同一程序的多次轉(zhuǎn)載,它是依靠線程的方式來支持并訪問的。
(2)JSP Jsp(java server page)是一種是實(shí)現(xiàn)普通靜態(tài)HTML和動(dòng)態(tài)頁面輸出混合編碼的技術(shù)。從這一點(diǎn)看,非常類似Microsoft ASP、PHP等技術(shù)。借助形式上的內(nèi)容和外觀表現(xiàn)的分離,web頁面制作的任務(wù)可以比較方便的話費(fèi)給頁面設(shè)計(jì)人員和程序員,并方便的通過JSP來合成。在運(yùn)行時(shí)態(tài),JSP將會(huì)被首先轉(zhuǎn)換成Servlet,并以Servlet的形態(tài)編譯運(yùn)行,因此它的效率和功能與Servlet相比沒有差別,一樣具有很高的效率。
(3)EJB EJB定義了一組可充用的組件:Enterprise Beans。開發(fā)人員可以利用這些組件,像搭積木一樣建立分布式應(yīng)用。
(4)JDBC JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫連接)API是一個(gè)標(biāo)準(zhǔn)SQL(Structured Query Language,結(jié)構(gòu)化查詢語句)數(shù)據(jù)庫訪問接口,它使數(shù)據(jù)庫開發(fā)人員能夠使用標(biāo)準(zhǔn)Java API編寫數(shù)據(jù)庫應(yīng)用程序。JDBC API主要用來連接數(shù)據(jù)庫和調(diào)用SQL命令執(zhí)行各種SQL語句。利用JDBC API可以執(zhí)行一般的SQL語句、動(dòng)態(tài)SQL語句及帶IN和OUT參數(shù)的存儲(chǔ)過程。JAVA中的JDBC 相當(dāng)于Microsoft平臺(tái)中的ODBC(open Database Connectivity)。
2.測試生命周期、測試過程分為幾個(gè)階段、以及各階段的含義?
軟件測試生命周期一般包括6個(gè)階段:
(1)技術(shù):產(chǎn)品定義階段
(2)分析:外部文檔階段
(3)設(shè)計(jì):文檔架構(gòu)階段
(4)構(gòu)建:單元測試階段
(5)測試周期:錯(cuò)誤修正,重復(fù)系統(tǒng)測試階段
(6)最后測試和實(shí)施:代碼凍結(jié)階段
3.您做系統(tǒng)設(shè)計(jì)用各種工具?
Visio,Rational rose,power designer的
4.什么是web容器?
容器就是一種服務(wù)程序,在服務(wù)器一個(gè)端口就有一個(gè)提供相應(yīng)服務(wù)的程度,而這個(gè)程序就是處理從客戶端發(fā)出的請(qǐng)求,如java中的Tomat容器,ASP的IIS火舌PWS都是這樣的容器。
java軟件開發(fā)工程師面試題(三)
1.運(yùn)行是異常與一般異常有何異同?
異常表示程序運(yùn)行高城中可能會(huì)出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的同城操作中可能遇到的異常,是一種常見運(yùn)行異常。Java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。
2.Hibernate中:不看數(shù)據(jù)庫,不看XML文件,不看查詢語句,怎么能知道表結(jié)構(gòu)?
可以看與xml文件對(duì)應(yīng)的域模型。
3.目前集中主流數(shù)據(jù)庫軟件的應(yīng)用特點(diǎn),使用范圍各是什么?
國際國內(nèi)的主導(dǎo)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)由SQL Server、ORACLE、SYBASE、InFormix和DB2。本問題從性能、可伸縮性和并行性、安全性、操作簡便、使用風(fēng)險(xiǎn)、開放性、易維護(hù)性和價(jià)格、數(shù)據(jù)庫二次開發(fā)方面比較了SQL Server、ORACLE、SYBASE\DB2\INformix數(shù)據(jù)庫。
(1)性能
SQLServer:老版本多用戶時(shí)性能不佳,新版本的性能有了明顯的改善,各項(xiàng)處理能力都有了明顯的提高。保持了多項(xiàng)TPC-C(TPC-C值被廣泛用于衡量C/S環(huán)境下,由服務(wù)器和客戶端構(gòu)筑的整體系統(tǒng)的性能,它由事務(wù)處理性能委員會(huì)(TPC,Transaction Processing Corp)制定,TPC為非盈利性國際組織)記錄。
Oracle:性能最高,保持Windows NT下的TPC-C的世界紀(jì)錄。
SYSBASE:性能較高,支持Sun,IBM,HP,Compaq和veritas的集群設(shè)備特性,實(shí)現(xiàn)高可用性。適應(yīng)與安全性要求極高的系統(tǒng)。
DB2:適用于數(shù)據(jù)倉庫和在線事務(wù)處理,性能較高。客戶端支持及應(yīng)用模式。
Informix:性能較高,支持集群,實(shí)現(xiàn)高可用性。適用于安全性要求極高的系統(tǒng),尤其是銀行,證券系統(tǒng)的應(yīng)用。
(2)可伸縮性,并行性
SQLServer:以前版本SQLServer并行實(shí)施和共存模型并不成熟。很難處理大量的用戶數(shù)和數(shù)據(jù)卷。伸縮性有限。新版本性能有了較大的改善,在Microsoft Advanced Server上由突出表現(xiàn),查過了它的主要競爭對(duì)象。
ORACLE:平行服務(wù)器通過使一組結(jié)點(diǎn)貢獻(xiàn)同一簇中的工作來擴(kuò)展Window nt的能力,提供高可用性和高伸縮性的簇的解決方案。如果Window NT不能滿足需要,用戶可以吧數(shù)據(jù)庫一道linux中,具有很好的伸縮性。
SYBASE:新版本具有較好的并行性,速度快,對(duì)巨量數(shù)據(jù)無明顯影響,但是技術(shù)實(shí)現(xiàn)復(fù)雜,需要程序指導(dǎo),伸縮性有限。
DB2:DB2具有很好的并行性。DB2把數(shù)據(jù)庫管理擴(kuò)充到了并行的、多節(jié)點(diǎn)的環(huán)境。數(shù)據(jù)庫分區(qū)是數(shù)據(jù)庫的一部分,包含自己的數(shù)據(jù)、索引、配置文件和事務(wù)日志。數(shù)據(jù)庫分區(qū)又是被稱之為節(jié)點(diǎn)或是數(shù)據(jù)庫節(jié)點(diǎn),伸縮性有限。
InFormix:采用單進(jìn)程多線程的技術(shù),具有較好的并行性。但是僅運(yùn)行于unix平臺(tái),伸縮性優(yōu)先。
(3)安全性
SQL Server:Microsoft Advanced Server獲得最高安全認(rèn)證,服務(wù)器平臺(tái)的穩(wěn)定性是數(shù)據(jù)庫的穩(wěn)定性的基礎(chǔ),新版本的SQL的安全性有了極大的提高。
ORACLE:獲得最高認(rèn)證級(jí)別的ISO標(biāo)準(zhǔn)認(rèn)證。
SYBASE:通過sun公司J2EE認(rèn)證測試,獲得最高認(rèn)證級(jí)別的ISO的標(biāo)準(zhǔn)認(rèn)證。
DB2:獲得最高認(rèn)證級(jí)別的ISO標(biāo)準(zhǔn)認(rèn)證。
inFormin:獲得最高認(rèn)證級(jí)別的ISO標(biāo)準(zhǔn)認(rèn)證。
(4)操作簡便
SQLServer:操作簡單,采用圖形界面。管理也很方便,而且編程接口特別友好(它的SQL-DMO讓變成變得更方便),從易維護(hù)和價(jià)格上SQL Server明顯占有優(yōu)勢。
Oracle:較復(fù)雜,同時(shí)提供GUI和命令行,在windowNT和Unix,linux下操作仙童。對(duì)數(shù)據(jù)庫管理人員要求較高。
SYBASE:復(fù)雜,使用命令行操作,對(duì)數(shù)據(jù)庫管理人員要求較高。
DB2:操作簡單,同時(shí)提供GUI和命令行,在window NT和unix下操作相同。
Informix:使用和管理復(fù)雜,命令行操作,對(duì)數(shù)據(jù)庫管理人員要求較高,
(5)使用風(fēng)險(xiǎn)
SQLServer:完全重寫的代碼,性能和兼容性有了較大的提高,與Oracle,DB2的性能差距明顯減小。該產(chǎn)品的出臺(tái)經(jīng)歷了長期的測試,為產(chǎn)品的安全和穩(wěn)定進(jìn)行了全面的測試,安全穩(wěn)定性有了明顯的提高。
ORACEL:長時(shí)間的開發(fā)經(jīng)驗(yàn),完全向下兼容,可以安全的進(jìn)行數(shù)據(jù)庫的升級(jí),在企業(yè),政府中的到廣泛的應(yīng)用。并且如果在Window NT上無法媽祖數(shù)據(jù)的妖氣,可以安全的把數(shù)據(jù)轉(zhuǎn)到unix上來。
SYBASE:開發(fā)時(shí)間長,升級(jí)較復(fù)雜,穩(wěn)定性較好,數(shù)據(jù)安全有保障。風(fēng)險(xiǎn)小。在安全要求極高的銀行,證券行業(yè)得到了廣發(fā)的'應(yīng)用。
DB2:在巨型企業(yè)得到廣泛的應(yīng)用,向下兼容性好,風(fēng)險(xiǎn)小。
Informix:開放時(shí)間較長,升級(jí)較復(fù)雜,穩(wěn)定性較好,數(shù)據(jù)安全有保障。風(fēng)險(xiǎn)小,在安全要求極高的銀行,證券行業(yè)得到廣泛應(yīng)用。
(6)開放性
SQL Server:只能在Window上運(yùn)行,C/S結(jié)果,只支持window客戶,可以用
ADO,DAO,OLEDB,ODBC連接。Windows9X系列產(chǎn)品是偏重于桌面應(yīng)用,NTserver使用各種大小大小型企業(yè)。操作系統(tǒng)的穩(wěn)定對(duì)數(shù)據(jù)庫是十分重要的。Window平臺(tái)的可靠性,安全性警告了最高級(jí)別的C2認(rèn)證的。在處理大數(shù)據(jù)量的關(guān)鍵業(yè)務(wù)時(shí)提供了較好的性能。
ORACLE:能在所有主流平臺(tái)上運(yùn)行。完全支持所有的工業(yè)標(biāo)準(zhǔn)。蠶蛹完全開放策略。多層次萬羅計(jì)算,支持多種工業(yè)標(biāo)準(zhǔn),可以用ODBC,JDBC,OCI等網(wǎng)絡(luò)客戶連接。可以使客戶選擇最適合的解決方案。對(duì)開發(fā)商全力支持。
SYBASE:能在所有主流平臺(tái)上運(yùn)行,在銀行中得到廣泛的應(yīng)用。
DB2:有較好的開放性,最適合海量數(shù)據(jù)?缙脚_(tái),多層結(jié)構(gòu),支持ODBC、JDBC等客戶。在大型的國際企業(yè)中得到最為廣泛的應(yīng)用,在全球的500家最大的企業(yè)中,大部分采用DB2數(shù)據(jù)庫服務(wù)器。
Informix:僅運(yùn)行在unix平臺(tái),包括SUBOS、HPUX、ALFAOSF/1。在銀行中得到廣泛應(yīng)用。
(7)易維護(hù)性和價(jià)格
SQL Server:從易維護(hù)性和價(jià)格上SQL Server明顯占優(yōu)勢,基于Microsoft的一貫風(fēng)格,SQL Server的的圖形管理界面帶來了明顯的易用性,微軟的數(shù)據(jù)庫管理員培訓(xùn)進(jìn)行的比較充分,可以輕松的找到很好的數(shù)據(jù)庫管理員,數(shù)據(jù)庫管理價(jià)格也是很低的,SQL Server的價(jià)格也是很低的,但是在license的購買商會(huì)抬高價(jià)格?傮w來說SQL Server的價(jià)格在商用數(shù)據(jù)庫中是最低的。
Oracle:從易維護(hù)性和價(jià)格上來說Oracle的價(jià)格是比較高的,管理比較復(fù)雜,由于Oracle的應(yīng)用廣泛,經(jīng)驗(yàn)豐富得問Oracle數(shù)據(jù)庫管理員可以比較容易的找到,從而實(shí)現(xiàn)Oracle的良好管理。因此oracle的性能價(jià)格比在商用數(shù)據(jù)庫中是最好的。
Sybase:sybase的價(jià)格是比較低,但是sybase在企業(yè)和政府中的應(yīng)用是較少的,很難找到經(jīng)驗(yàn)豐富的管理員,運(yùn)行管理費(fèi)用較高。
DB2:價(jià)格高,管理員少,在中國的應(yīng)用少,運(yùn)行管理費(fèi)用高,適用于大興企業(yè)的數(shù)據(jù)倉庫應(yīng)用。
Informix:價(jià)格在這些系統(tǒng)中居于中間,與sybase一樣,在企業(yè)與政府中應(yīng)用較少,僅在銀行在得到了廣范應(yīng)用。經(jīng)驗(yàn)豐富的管理人員較少,運(yùn)行費(fèi)用高。
(8)數(shù)據(jù)庫的二次開發(fā)
SQLServer:數(shù)據(jù)庫的二次開發(fā)工具很多,包括Visual C++,Visual Basic等開發(fā)工具,可以實(shí)現(xiàn)很好的Windows應(yīng)用,開發(fā)容易。
Oracle:數(shù)據(jù)庫的二次開發(fā)工具很多,涵蓋了數(shù)據(jù)庫開發(fā)的各個(gè)階段,中國的經(jīng)驗(yàn)豐富的人員很少。
Informin:在銀行項(xiàng)目中廣泛的應(yīng)用,但是在中國的經(jīng)驗(yàn)豐富的人很少。
【java軟件開發(fā)工程師面試題寶典】相關(guān)文章:
java軟件開發(fā)工程師面試題04-05
java初級(jí)工程師面試題04-05
高級(jí)java工程師面試題04-06
java高級(jí)工程師面試題及答案04-05
java經(jīng)典面試題目12-09
java測試面試題11-25
java最新面試題04-05
java基礎(chǔ)面試題04-04
java集合面試題04-04