java軟件開發(fā)工程師面試題
Java軟件開發(fā)工程師在面試前最好做好個人準備,提前了解面試題很有必要,以下是小編幫你們整理的java軟件開發(fā)工程師面試題,一起來學習啦。
java軟件開發(fā)工程師面試題(一)
1.存儲過程和函數(shù)的區(qū)別
從參數(shù)的返回其情況來看:
如果返回多個參數(shù)值最好使用存儲過程,如果只有一個返回參數(shù)值的話可以使用函數(shù)。 從調用情況來看:
如果在SQL語句(DML或者select)中調用的話一定是存儲函數(shù)或者是存儲的分裝函數(shù)不可以是存儲過程,但是調用存儲函數(shù)的時候還有很多限制以及函數(shù)的純度等級問題,如果實在過程化語句中調用的虎牙,就要看你是實現(xiàn)什么樣的功能。函數(shù)一般情況先是用來計算并返回一個計算結果而存儲過程一般是一用來完成特定的數(shù)據(jù)操作(比如修改、插入數(shù)據(jù)庫表或執(zhí)行某些dml語句),所有雖然他們的語法上很相似但用戶在使用他們的時候所需要完成的功能大部分情況下是不同的。
2.試述數(shù)據(jù)庫完整保護的主要任務和措施
數(shù)據(jù)庫的完整性保護也就是數(shù)據(jù)庫中正確性的維護。數(shù)據(jù)庫的完整性包括三個內容:實體完整性規(guī)則、參照物完整性規(guī)則和用戶定義完整性規(guī)則。前兩個使用DBMS自動處理。
實體完整性規(guī)則:是說針對基表中的關鍵字屬性不能為空值,是數(shù)據(jù)庫完整性的基本要求,主關鍵字和元組的唯一性對應。
參照物完整性規(guī)則:是不允許引用不存在的元組:即基表中的外關鍵字要么為空,要么關聯(lián)基表中必然存在元組。
用戶定義完整性規(guī)則:針對具體的數(shù)據(jù)環(huán)境由用戶具體設置的規(guī)則,它反映了具體應用中的語義要求。一個完整性規(guī)則一般有下面三個部分組成:完整性約束條件設置,完整性約束條件的檢驗以及完整性約束條件的處理。后兩部分在數(shù)據(jù)庫中一般由相應的模塊處理。另外觸發(fā)器也可以做完整性的保護,但觸發(fā)器大量用于主動性領域。
3.請說明SQLServer中的delete from tablea & truncate table tablea的區(qū)別。
兩者都可以用來刪除表中的所有記錄。區(qū)別在于:truncate是DDL操作,它移動HWK,是HWK值為0,不需要rollback segment ,而Delete是DML操作需要rollback segment 且話費較長時間。
4.Oracle安裝完成后,如何使用命令行啟動和關閉數(shù)據(jù)庫?
打開:STARTUP [RESTRICT] [PFILE=filename] [OPEN [RECOVER][database] ]| MOUNT |NOMOUNT
STARTUP OPEN:STARTUP :缺省的參數(shù)是OPEN,打開數(shù)據(jù)庫,允許數(shù)據(jù)庫的訪問。當前實力的控制文件中描述的所有文件都已打開。
STARTUP MOUNT:MOUNT數(shù)據(jù)庫,僅僅給DBA進行管理操作,不允許數(shù)據(jù)庫用戶的訪問。僅僅只是當前實例的控制文件打開,數(shù)據(jù)文件未打開。
STARTU NOMOUNT :僅僅通過初始化文件,分配出SGA區(qū),啟動數(shù)據(jù)庫后臺進程,沒有打開控制文件和數(shù)據(jù)文件。不能訪問任何數(shù)據(jù)庫。
STARTUP PFILE=filename :以filename為初始化文件啟動數(shù)據(jù)庫。不是采用缺省初始化文件。
STARTUP FORCE:中止當前數(shù)據(jù)庫的運行,并開始重新正常的啟動數(shù)據(jù)庫。
STARTUP RESTRICT:只允許具有RESTRICTED SESSION權限的用戶訪問數(shù)據(jù)庫。
STARTUP RECOVER:數(shù)據(jù)庫啟動,并開始介質恢復。
關閉:shutdown有四個參數(shù):NOMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不帶任何參數(shù)時表示NORMAL。
SHUTDOWN NORMA:不允許新的連接、等待會話結束、等待事務結束、做一個檢查點并關閉數(shù)據(jù)文件。啟動時不需要實例恢復。
SHUTDOWN TRANSACTIONAL:不允許新的連接、不等待會話結束、等待事務結束做一個檢查點并關閉數(shù)據(jù)文件。啟動時不需要實例恢復。
SHUTDOWN IMMEDIATE:不允許新的連接,不等待會話結束、不等待事務結束、做一個檢查點并關閉數(shù)據(jù)文件。沒有結束的事務是自動rollback的。啟動時不需要實例恢復。
SHUTDOWN ABORT:不允許新的連接、不等待會話結束、不等待事務結束、不做檢查點并且沒有關閉數(shù)據(jù)文件。啟動時自動進行實例恢復。
另外,對于NORMAL、TRANSACTIONAL、IMMEDIATE,DE Buffer Cache的內容寫入了數(shù)據(jù)文件,沒有提交的事務被回滾,所有的資源被釋放,數(shù)據(jù)庫被干凈的關閉。對于ABORT,DB Buffer Cache的內容沒有被寫入數(shù)據(jù)文件,沒有提交的事務也沒有回滾。數(shù)據(jù)庫沒有dismount和關閉,數(shù)據(jù)文件也沒有關閉。當數(shù)據(jù)庫啟東市,需要通過redo log恢復數(shù)據(jù),通過回滾段對事物回滾,對資源進行釋放。
java軟件開發(fā)工程師面試題(二)
1.類有哪三種基本特性?各特性的優(yōu)點?
類具有封裝性、繼承性、和多態(tài)性。
封裝性:類的封裝性為類的成員提供公有、缺省、保護和私有等多級訪問權限,目的是隱藏類中的私有變量和類中的方法的實現(xiàn)細節(jié)。
繼承性:類的繼承性提供從已存在的類的創(chuàng)建新類的機制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的全部可繼承的成員。
多態(tài)性:類的多態(tài)性提供類中方法執(zhí)行的多樣性,多態(tài)性有兩種表現(xiàn)形式:重載和覆蓋。
2.談談對XML的理解?說明web應用中web.xml文件的作用?
XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language標磚通用標記語言)。XML是Internrt環(huán)境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具。拓展標記語言XML是一種簡單的實際存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。
Web.xml的作用是配置歡迎頁,servlet 、filter、listenter等的。
3.Jsp有哪些內置對象?作用分別是什么?
1).request 表示HttpServlet Request對象。它包含了有關瀏覽器請求的信息,并且提供了幾個獲取cookie,header和session數(shù)據(jù)的有用的方法。
2).response表示HttpServletResponse對象,并且提供了幾個用于設置送回瀏覽器的響應的方法(如cookies,header信息等)
3).out對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法能用于向瀏覽器回送輸出結果
4).pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關的對象API,并且包裝了用用的servlet相關功能的方法。
5).session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態(tài)信息。
6).application表示一個javax.servlet.ServletContext對象,這有助于查找有關servlet引擎和servlet環(huán)境信息。
7).config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)
8).page表示從該頁面產(chǎn)生的一個servlet實例
9).exceptiom針對錯誤頁面,未捕捉的例外
4.事務是什么?有哪些屬性,并且簡要說明這些屬性的含義。
事務(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)。 事務通常是由高級數(shù)據(jù)庫操縱語言(如SQL,C++或java)書寫的用戶程序的執(zhí)行所引起,并用刑辱begin transaction 和end transaction語句(或者函數(shù)調用)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執(zhí)行的全體操作組成。
事務具有4個屬性:原子性、一致性、隔離性、持續(xù)性。這4個屬性通常稱之為ACID特性。
原子性(atomicity):一個事務是一個不可分割的工作單位,事務中包括的著操作要么都做,要么都不做。
一致性(consistency):事務必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致性與原子性是密切相關的。
隔離性(isolation):一個事務的執(zhí)行不能被其他事務干擾。即一個事務內部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。
持久性(durability):持久性也稱之為永久性(permanence),指一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
java軟件開發(fā)工程師面試題(三)
1.Collection和Collections的區(qū)別?
Collection是java.Util下的接口,它是各種集合的父接口,繼承于它的接口主要有Set和List;
Collections是java.util下的類,是針對集合的幫助類,提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。
2.HashMap和TreeMap的區(qū)別?
HashMap通過hashcode對其內容進行快速查找。而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。
3.ArrayList和Vector的區(qū)別?
同步性:Vector是線程安全的,也就是說同步的,而ArrayList是線程不安全的,不是同步的;
數(shù)據(jù)增長:當需要增長時,vector默認增長為原來一倍,而ArrayList卻是原來的一半。
4.HashMap和HashTable的區(qū)別?
HashMap是HashTable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),它們都實現(xiàn)了Map接口
區(qū)別:
1)在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上高于HashTable。HashMap允許將null作為一個entry的key或者value,而HashTable不允許。
2)HashMap把HashTable的contains方法去掉了,改成了containsvalue和containKey。因為contains方法容易讓人引起誤解。
3)HashTable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現(xiàn)。
4)最大的不同之處在于:HashTable的方法是synchronize的,而HashMap不是,在多線程訪問HashTable時,不需要自己為它的方法實現(xiàn)同步,而HashMap就必須為之提供同步。
5.請說說ArrayList、Vector、LinkedList的存儲性能和特性。
ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayLIst差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或者后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可。所以插入速度快。
看了“java軟件開發(fā)工程師面試題”