java公司面試題
Java技術員在公司面試時,通常遇到哪些面試題目呢?Java是一種熱門的計算機語言,以下是小編幫你們整理的java公司面試題,一起來學習啦。
java公司面試題(一)
1.存儲過程和函數的區別
解答:
從參數的返回情況來看:
如果返回多個參數值最好使用存儲過程,如果只有一個返回值的話可以使用函數。
從調用情況來看:
如果在SQL語句(DML或SELECT)中調用的話一定是存儲函數或存儲的封裝函數不可以是存儲過程,但調用存儲函數的時候還有好多限制以及函數的純度等級的問題,如果是在過程化語句中調用的話,就要看你要實現什么樣的功能。函數一般情況下是用來計算并返回一個計算結果而存儲過程一般是用來完成特定的數據操作(比如修改、插入數據庫表或執行某些DDL語句等等),所以雖然他們的語法上很相似但用戶在使用他們的時候所需要完成的功能大部分情況下是不同的。
2.試述數據庫完整保護的主要任務和措施。
解答:數據庫的完整性保護也就是數據庫中數據正確性的維護。數據庫完整性包括三個內容:實體完整性規則,參照物完整性規則以及用戶定義完整性規則。 前兩個是有DBMS自動處理。
實體完整性規則是說針對于基表中的關鍵字中屬性值不能為空值,是數據庫完整性的基本要求,主關鍵字和元組的唯一性對應。
參照物完整性規則是不允許引用不存在的元組:即基表中的外關鍵字要么為空,要么關聯基表中必存在元組。
用戶定義完整性規則針對具體的數據環境由用戶具體設置的規則,它反應了具體應用中的語義要求。 一個完整性規則一般由下面三部分組成:完整性約束條件設置,完整性約束條件的檢
查以及完整性約束條件的處理.后兩部分在數據庫中一般有相應的模塊處理。另外觸發器也可以做完整性的保護,但觸發器大量用于主動性領域。
3.請說明SQLServer中delete from tablea & truncate table tablea的區別
解答:兩者都可以用來刪除表中所有的記錄。區別在于:truncate是DDL操作,它移動HWK,使HWK值為0,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花費較長時間.
4. Oracle安裝完成后,如何用命令行啟動和關閉數據庫?
解答:
打開:STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ database] | MOUNT | NOMOUNT] STARTUP OPEN:STARTUP缺省的參數就是OPEN,打開數據庫,允許數據庫的訪問。當前實例的控制文件中所描述的所有文件都已經打開。 STARTUP MOUNT:MOUNT數據庫,僅僅給DBA進行管理操作,不允許數據庫的用戶訪問。僅僅只是當前實例的控制文件被打開,數據文件未打開。 STARTUP NOMOUNT:僅僅通過初始化文件,分配出SGA區,啟動數據庫后臺進程,沒有打開控制文件和數據文件。不能訪問任何數據庫。 STARTUP PFILE= filename:以filename為初始化文件啟動數據庫,不是采用缺省初始化文件。 STARTUP FORCE:中止當前數據庫的運行,并開始重新正常的啟動數據庫。 STARTUP RESTRICT:只允許具有RESTRICTED SESSION權限的用戶訪問數據庫。 STARTUP RECOVER:數據庫啟動,并開始介質恢復
關閉
SHUTDOWN有四個參數:NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不帶任何參數時表示是NORMAL。
命令SHUTDOWN NORMAL:不允許新的連接、等待會話結束、等待事務結束、做一個檢查點并關閉數據文件。啟動時不需要實例恢復。 SHUTDOWN TRANSACTIONAL:不允許新的連接、不等待會話結束、等待事務結束、做一個檢查點并關閉數據文件。啟動時不需要實例恢復。 SHUTDOWN IMMEDIATE:不允許新的連接、不等待會話結束、不等待事務結束、做一個檢查點并關閉數據文件。沒有結束的事務是自動rollback的。啟動時不需要實例恢復。 SHUTDOWN ABORT:不允許新的連接、不等待會話結束、不等待事務結束、不做檢查點且沒有關閉數據文件。啟動時自動進行實例恢復。 另外,對于NORMAL、TRANSACTIONAL、IMMEDIATE,DB Buffer Cache的內容寫入了數據文件,沒有提交的事務被回滾,所有的資源被釋放,數據庫被“干凈”的關閉。 對于ABORT,DB Buffer Cache的內容沒有寫入數據文件,沒有提交的事務也沒有回滾。數據庫沒有dismount和關閉,數據文件也沒有關閉。當數據庫啟動時,需要通過redo log恢復數據,通過回滾段對事務回滾,對資源進行釋放。
java公司面試題(二)
1. 類有哪三個基本特性?各特性的優點?
解答:類具有封裝性、繼承性和多態性。
封裝性:類的封裝性為類的成員提供公有、缺省、保護和私有等多級訪問權限,目的是隱藏類中的私有變量和類中方法的實現細節。
繼承性:類的繼承性提供從已存在的類創建新類的機制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的全部可繼承的成員。
多態性:類的多態性提供類中方法執行的多樣性,多態性有兩種表現形式:重載和覆蓋。
2.談談對XML的理解?說明Web應用中Web.xml文件的作用?
解答:XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。Xml是Internet環境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具。擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數據要占用更多的空間,但XML極其簡單易于掌握和使用。
web.xml的作用是配置歡迎頁,servlet,filter,listener等的。
3.jsp有哪些內置對象?作用分別是什么?(至少三個)
解答:
1)request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header和session數據的有用的方法。
2)response表示HttpServletResponse對象,并提供了幾個用于設置送回 瀏覽器的響應的方法(如cookies,頭信息等)。
3)out對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用于向瀏覽器回送輸出結果。
4)pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關的對象的API,并且包裝了通用的servlet相關功能的方法。
5)session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態信息。
6)application 表示一個javax.servle.ServletContext對象。這有助于查找有關servlet引擎和servlet環境的信息。
7)config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數。
8)page表示從該頁面產生的一個servlet實例。
9)exception 針對錯誤網頁,未捕捉的例外
4.事務是什么?有哪些屬性,并簡要說明這些屬性的含義。
解答:事務(Transaction)是訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。
事務通常由高級數據庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,并用形如begin transaction和end transaction語句(或函數調用)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操作組成。
事務應該具有4個屬性:原子性、一致性、隔離性、持續性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對并發的其他事務是隔離的,并發執行的各個事務之間不能互相干擾。
持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
java公司面試題(三)
1. J2EE是什么?它包括哪些技術?
解答:從整體上講,J2EE是使用Java技術開發企業級應用的工業標準,它是Java技術不斷適應和促進企業級應用過程中的產物。適用于企業級應用的J2EE,提供一個平臺獨立的、可移植的、多用戶的、安全的和基于標準的企業級平臺,從而簡化企業應用的開發、管理和部署。J2EE是一個標準,而不是一個現成的產品。
主要包括以下這些技術:
1) Servlet
Servlet是Java平臺上的CGI技術。Servlet在服務器端運行,動態地生成Web頁面。與傳統的CGI和許多其它類似CGI的技術相比,Java Servlet具有更高的效率并更容易使用。對于Servlet,重復的請求不會導致同一程序的多次轉載,它是依靠線程的方式來支持并發訪問的。
2)JSP
JSP(Java Server Page)是一種實現普通靜態HTML和動態頁面輸出混合編碼的技術。從這一點來看,非常類似Microsoft ASP、PHP等技術。借助形式上的內容和外觀表現的分離,Web頁面制作的任務可以比較方便地劃分給頁面設計人員和程序員,并方便地通過JSP來合成。在運行時態,JSP將會被首先轉換成Servlet,并以Servlet的形態編譯運行,因此它的效率和功能與Servlet相比沒有差別,一樣具有很高的效率。
3) EJB
EJB定義了一組可重用的組件:Enterprise Beans。開發人員可以利用這些組件,像搭積木一樣建立分布式應用。
4)JDBC
JDBC(Java Database Connectivity,Java數據庫連接)API是一個標準SQL(Structured Query Language,結構化查詢語言)數據庫訪問接口,它使數據庫開發人員能夠用標準Java API編寫數據庫應用程序。JDBC API主要用來連接數據庫和直接調用SQL命令執行各種SQL語句。利用JDBC API可以執行一般的SQL語句、動態SQL語句及帶IN和OUT參數的存儲過程。Java中的JDBC相當于Microsoft平臺中的ODBC(Open Database Connectivity)。
2.測試生命周期、測試過程分為幾個階段,以及各階段的含義?
解答:軟件測試生命周期一般包括6個階段:1)計劃 2)分析,3)設計,4)構建,5)測試周期,6)最后測試和實施,
1) 計劃:產品定義階段
2). 分析:外部文檔階段
3). 設計:文檔架構階段
4). 構建:單元測試階段
5). 測試周期:錯誤修正,重復系統測試階段
6). 最后的測試和實施:代碼凍結階段
3.您做系統設計用何種工具?
解答:Visio, rational rose,power designer等
4. 什么是Web容器?
解答:容器就是一種服務程序,在服務器一個端口就有一個提供相應服務的程序,而這個程序就是處理從客戶端發出的請求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是這樣的容器。
5. 運行時異常與一般異常有何異同?
解答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。
6. Hibernate中:不看數據庫,不看XML文件,不看查詢語句,怎么樣能知道表結構?
解答:可以看與XML文件對應的域模型。
7.目前幾種主流數據庫軟件的應用特點、適用范圍各是什么?
解答:國際國內的主導關系型數據庫管理系統有SQL Server、ORACLE、SYBASE、INFORMIX和 DB2。本文從性能,可伸縮性和并行性,安全性,操作簡便,使用風險,開放性,易維護性和價格,數據庫二次開發方面比較了SQL Server,Oracle、SYBASE、DB2、INFORMIX 數據庫:
1)性能
SQL Server:老版本多用戶時性能不佳,新版本的性能有了明顯的改善,各項處理能力都有了明顯的提高。保持了多項TPC-C(TPC-C值被廣泛用于衡量C/S環境下,由服務器和客戶端構筑的整體系統的性能,它由事物處理性能委員會(TPC,Transaction Processing Corp)制定,TPC為非贏利性國際組織。)紀錄。
Oracle :性能最高, 保持Windows NT下的TPC-C的世界記錄。
SYBASE :性能較高,支持Sun、IBM、HP、Compaq和Veritas的集群設備的特性,實現高可用性。適應于安全性要求極高的系統。
DB2 :適用于數據倉庫和在線事物處理,性能較高。 客戶端支持及應用模式。
INFORMIX :性能較高,支持集群,實現高可用性。適應于安全性要求極高的系統,尤其是銀行,證券系統的應用。
2)可伸縮性,并行性
SQL Server :以前版本SQL Server并行實施和共存模型并不成熟。很難處理大量的用戶數和數據卷。伸縮性有限。新版本性能有了較大的改善,在Microsoft Advanced Servers上有突出的表現,超過了他的主要競爭對手。
Oracle :平行服務器通過使一組結點共享同一簇中的工作來擴展Window NT的能力,提供高可用性和高伸縮性的簇的解決方案。如果Windows NT不能滿足需要, 用戶可以把數據庫移到UNIX中,具有很好的伸縮性。
SYBASE :新版本具有較好的并行性,速度快,對巨量數據無明顯影響,但是技術實現復雜,需要程序支持,伸縮性有限。
DB2 :DB2具有很好的并行性。DB2把數據庫管理擴充到了并行的、多節點的環境。數據庫分區是數據庫的一部分,包含自己的數據、索引、配置文件、和事務日志。數據庫分區有時被稱為節點或數據庫節點,伸縮性有限。
INFORMIX :采用單進程多線程的技術,具有較好的并行性。但是僅運行于UNIX平臺,伸縮性有限。
3)安全性
SQL server :Microsoft Advanced Server 獲得最高安全認證,服務器平臺的穩定性是數據庫的穩定性的基礎,新版本的SQL的安全性有了極大的提高。
Oracle:獲得最高認證級別的ISO標準認證。
SYBASE :通過Sun公司J2EE認證測試,獲得最高認證級別的ISO標準認證。
DB2 :獲得最高認證級別的ISO標準認證。
INFORMIX :獲得最高認證級別的ISO標準認證。
4)操作簡便
SQL Server :操作簡單,采用圖形界面。管理也很方便,而且編程接口特別友好(它的SQL-DMO讓編程變得非常方便!) ,從易維護性和價格上SQL Server明顯占有優勢。
Oracle :較復雜, 同時提供GUI和命令行,在Windows NT和Unix, Linux 下操作相同。對數據庫管理人員要求較高。
SYBASE :復雜,使用命令行操作,對數據庫管理人員要求較高。
DB2 :操作簡單,同時提供GUI和命令行,在Windows NT和Unix下操作相同。
INFORMIX :使用和管理復雜,命令行操作。對數據庫管理人員要求較高。
5)使用風險
SQL Server :完全重寫的代碼,性能和兼容性有了較大的提高,與Oracle,DB2的性能差距明顯減小。該產品的出臺經歷了長期的測試,為產品的安全和穩定進行了全面的檢測,安全穩定性有了明顯的提高。
Oracle :長時間的開發經驗,完全向下兼容,可以安全的進行數據庫的升級,在企業,政府中得到廣泛的應用。并且如果在WINNT上無法滿足數據的要求,可以安全的把數據轉移到UNIX上來。
SYBASE :開發時間較長,升級較復雜,穩定性較好,數據安全有保障。風險小。在安全要求極高的銀行,證券行業中得到了廣泛的應用。
DB2 :在巨型企業得到廣泛的應用,向下兼容性好。風險小。
INFORMIX :開發時間較長,升級較復雜,穩定性較好,數據安全有保障。風險小。在安全要求極高的銀行,證券行業中得到了廣泛的應用。
6)開放性
SQL Server:只能在Windows 上運行,C/S結構,只支持Windows客戶,可以用ADO,DAO,OLEDB,ODBC連接。Windows9X系列產品是偏重于桌面應用,NT server適合各種大中小型企業。 操作系統的穩定對數據庫是十分重要的。Windows平臺的可靠性,安全性經過了最高級別的C2認證的。在處理大數據量的關鍵業務時提供了較好的性能。
Oracle :能在所有主流平臺上運行(包括 Windows)。完全支持所有的工業標準。采用完全開放策略。多層次網絡計算,支持多種工業標準,可以用ODBC,JDBC,OCI等網絡客戶連接。可以使客戶選擇最適合的解決方案。對開發商全力支持。
SYBASE :能在所有主流平臺上運行,在銀行業中得到了廣泛的應用。
DB2 :有較好的開放性,最適于海量數據。跨平臺,多層結構,支持ODBC,JDBC等客戶。在大型的國際企業中得到最為廣泛的應用,在全球的500家最大的企業中,大部分采用DB2數據庫服務器。
IINFORMIX :僅運行在UNIX平臺,包括SUNOS、HPUX、 ALFAOSF/1。在銀行中得到廣泛的應用。
7)易維護性和價格
SQL Server :從易維護性和價格上SQL Server明顯占有優勢。基于Microsoft的一貫風格,SQL Server的圖形管理界面帶來了明顯的易用性, 微軟的數據庫管理員培訓進行的比較充分,可以輕松的找到很好的數據庫管理員,數據庫管理費用比較低,SQL Server的價格也是很低的,但是在License的購買上會抬高價格。總體來說SQL Server的價格在商用數據庫中是最低的。
Oracle :從易維護性和價格上來說Oracle的價格是比較高的,管理比較復雜,由于Oracle的應用很廣泛,經驗豐富的Oracle數據庫管理員可以比較容易的找到,從而實現Oracle的良好管理。因此Oracle的性能價格比在商用數據庫中是最好的。
SYBASE :SYBASE的價格是比較低的,但是SYBASE的在企業和政府中的應用較少,很難找到經驗豐富的管理員,運行管理費用較高。
DB2 :價格高, 管理員少,在中國的應用較少,運行管理費用都很高,適用于大型企業的數據倉庫應用。
INFORMIX :價格在這些系統中居于中間,與SYBASE一樣,在企業和政府中應用較少,僅在銀行中得到了廣泛的應用。經驗豐富的管理人員較少,運行管理費用高。
8)數據庫二次開發
SQL Server :數據庫的二次開發工具很多,包括Visual C++, Visual Basic等開發工具,可以實現很好的Windows應用,開發容易。
Oracle :數據庫的二次開發工具很多,涵蓋了數據庫開發的各個階段,開發容易。
SYBASE :開發工具較少,經驗豐富的人員很少。
DB2 :在國外巨型企業得到廣泛的應用,中國的經驗豐富的人員很少。
INFORMIX :在銀行業中得到廣泛的應用,但是在中國的經驗豐富的人員很少。
看了“java公司面試題”