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