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