java軟件工程師實用面試題文庫
Java軟件工程師在面試中,想要取得面試官的肯定,那么面試前對面試題了解很有必要,以下是小編幫你們整理的java軟件工程師實用面試題,一起來學習啦。
java軟件工程師實用面試題(一)
1.Tomcat服務(wù)器的默認端口是多少?怎樣修改tomcat的端口?
解答:默認端口為8080,可以通過service.xml的Connector元素的port屬性來修改端口。
2.多線程有幾種實現(xiàn)方法,都是什么?同步的方法有幾種,都是什么?
解答:多線程有兩種實現(xiàn)方法:繼承Thread類或者實現(xiàn)Runnable接口。
實現(xiàn)同步也有兩種方法:一種是同步方法,另一種是同步代碼塊。
同步方法是在方法返回類型前面加上synchronized關(guān)鍵字
同步代碼塊是synchronized (這里寫需要同步的對象){„}
3.談一下聚簇索引和非聚簇索引的區(qū)別以及各自的優(yōu)缺點。
解答:
聚集索引,表中存儲的數(shù)據(jù)按照索引的順序存儲,檢索效率比普通索引高,但對數(shù)據(jù)新增/修改/刪除的影響比較大 非聚集索引,不影響表中的數(shù)據(jù)存儲順序,檢索效率比聚集索引低,對數(shù)據(jù)新增/修改/刪除的影響很小
4. 死鎖的必要條件?怎么克服?
解答:產(chǎn)生死鎖的四個必要條件:
互斥條件:一個資源每次只能被一個進程使用。
請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
循環(huán)等待條件:若干進程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。
這四個條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發(fā)生死鎖。
死鎖的解決方法:
a 撤消陷于死鎖的全部進程; b逐個撤消陷于死鎖的進程,直到死鎖不存在; c從陷于死鎖的進程中逐個強迫放棄所占用的資源,直至死鎖消失。 d從另外一些進程那里強行剝奪足夠數(shù)量的資源分配給死鎖進程,以解除死鎖狀態(tài)
5.描述重做與回滾的認識;
解答:重做日志生成日志文件,是為將來恢復數(shù)據(jù)庫使用的.
回滾段保存未提交數(shù)據(jù),是為支持事務(wù)而起作用的。
java軟件工程師實用面試題(二)
1.索引組織表,聚蔟表的用途;
解答:
索引組織表:數(shù)據(jù)按主碼存儲和排序,同索引結(jié)構(gòu)一樣,不過數(shù)據(jù)直接存儲于主碼后面。適用于信息.檢索、空間和OLAP程序。索引組織表的適用情況:
a.代碼查找表。
b.經(jīng)常通過主碼訪問的表。
c.構(gòu)建自己的索引結(jié)構(gòu)。
d.加強數(shù)據(jù)的共同定位,要數(shù)據(jù)按特定順序物理存儲。
e.經(jīng)常用between„and„對主碼或唯一碼進行查詢。數(shù)據(jù)物理上分類查詢。如一張訂單表,按日期裝載數(shù)據(jù),想查單個客戶不同時期的訂貨和統(tǒng)計情況。
索引聚簇表:索引聚簇表是表相關(guān)的表共享同一數(shù)據(jù)塊中的相同列,并把相關(guān)數(shù)據(jù)存儲中同一個數(shù)據(jù)塊上。創(chuàng)建索引聚簇表中最重要的是對SIZE參數(shù)有很好的估量,否則聚簇將會降低空間利用,降低效率。
使用索引聚簇表的注意點:
a如果表中數(shù)據(jù)有大量DML操作的話,那么聚簇將不適用,因為會消極地影響到DML性能。
b聚簇中,全表掃描將受到影響。這是因為將掃描聚簇中不同表的數(shù)據(jù),額外增加很多無用的數(shù)據(jù)。
c如果經(jīng)常TRUNCATE表和裝載表的話,聚簇將不適用。聚簇中的表無法被TRUNCATE的,這是因為每個塊中不只是存儲一張表的數(shù)據(jù)。
SQL> truncate table emp;
truncate table emp
*
ERROR at line 1:
ORA-03292: Table to be truncated is part of a cluster
d如果大部分是讀取操作,且通過聚簇碼索引或聚簇表中其他索引來讀取的話,聚簇將會比較適用。
2.消耗資源的SQL的定位方法;
解答:select sql_text from v$sql where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000);
SELECT * FROM ( SELECT sql_text,buffer_gets,disk_reads FROM v$sql ORDER BY buffer_gets,disk_reads DESC) WHERE ROWNUM<=10;
3.對觸發(fā)器的認識;
解答:觸發(fā)器是表上的程序,主要提供數(shù)據(jù)添加、修改與刪除后的程序處理方法,可以用來檢查數(shù)據(jù)及進行數(shù)據(jù)更新,也可以分擔一些前端應(yīng)用程序撰寫的邏輯規(guī)則。用場景: 觸發(fā)器可以查詢其他表,而且可以包含復雜的SQL語句。它們主要用于強制復雜的業(yè)務(wù)規(guī)則或要求。
觸發(fā)器的主要應(yīng)用場合概括起來講有以下幾種:
1).當向一張表中添加或刪除記錄時,需要在相關(guān)表中進行同步操作。比如,當為應(yīng)用系統(tǒng)添加一個系統(tǒng)用戶時,需要同時向權(quán)限表中添加該用戶的缺省權(quán)限,此時就編寫系統(tǒng)用戶表的觸發(fā)器在添加記錄動作時觸發(fā)。
2).當表上某列數(shù)據(jù)的值與其他表中的數(shù)據(jù)有聯(lián)系時。比如,當某客戶進行欠款消費,可以在生成訂單時通過設(shè)計觸發(fā)器判斷該客戶的累計欠款是否超出了最大限度。
3).當需要對某張表進行跟蹤時。比如,當人事表中有人離職時,第一時間通知或更改相關(guān)表的值。
java軟件工程師實用面試題(三)
1.對ORA-01555錯誤的認識;
解答:ORA-01555錯誤產(chǎn)生的原因:一致性讀(Consistent Get)和延遲塊清除(Delayed Block Cleanout)。
2.將ORACLE數(shù)據(jù)庫更改為歸檔模式;寫出步驟
解答:具體步驟如下:
1),以exp方式在線備份數(shù)據(jù)庫到指定位置;
2),觀察當前數(shù)據(jù)庫是以服務(wù)器參數(shù)文件(spfile)方式啟動還是以參數(shù)文件(pfile)方式啟動: SQL> show parameter spfile; NAME TYPE VALUE ———————————— ———– —————————— spfile string /home/db/oracle/10g/dbs/spfile XXXX.ora value后有內(nèi)容,說明數(shù)據(jù)庫以服務(wù)器參數(shù)文件方式啟動,這里的spfile文件對應(yīng)的裸設(shè)備為/dev/vgdata/rspfile(通過查看/home/db/oracle/10g/dbs/initSID.ora文件內(nèi)容獲得);
3),關(guān)閉所有實例(shutdown immediate);
4),任意選取一個實例,創(chuàng)建參數(shù)文件到指定路徑: SQL>create pfile=’/home/db/oracle/pfile.ora’ from spfile;
5),修改pfile.ora文件,添加參數(shù)cluster_database=false;
6),以修改之后的參數(shù)文件按nomount方式啟動數(shù)據(jù)庫: SQL>startup nomount pfile=’/home/db/oracle/pfile.ora’;
7),使數(shù)據(jù)庫以exclusive方式啟動: SQL>alter database mount exclusive;
8),改變歸檔模式: SQL>alter database archivelog;
9),將pfile參數(shù)中的cluster_database重新更改為“true”;
10),更新服務(wù)器參數(shù)文件: SQL>create spfile from pfile=’/home/db/oracle/pfile.ora’;
11),關(guān)閉數(shù)據(jù)庫實例; SQL>shutdowm immediate;
12),分別在兩個節(jié)點上啟動數(shù)據(jù)庫: SQL>startup;
13),在兩個節(jié)點上分別檢查歸檔模式是否更改成功: SQL>archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /home/db/oracle/10g/dbs/arch Oldest online log sequence 489 Next log sequence to archive 491 Current log sequence 491 完成。
看了“java軟件工程師實用面試題”