- 相關(guān)推薦
數據庫oracle筆試
1、 數據庫中使用update修改多個(gè)字段值的問(wèn)題
經(jīng)我在PL/SQL環(huán)境下調試,得出如下結論(scott/tiger 下的dept表):
update dept set dname='yao', loc='shaoyang' where deptno=10; --通過(guò)
update dept set(dname, loc)=('yao','shaoyang') where deptno=10; --錯誤
update dept set(dname, loc)=(select dname,loc from dept where deptno=20) where deptno=10;--通過(guò)
2、程序流程問(wèn)題(題目略去, 如下為我的驗證代碼):
public class TestCircle {
public static void main(String[] args) {
int i=2, j=9;
do{
if(i>j){
break;
}
j--;
}while(++i<5);
System.out.println("i is: "+i+", j is: "+j);
int k = new TestCircle().testCase(1);
System.out.println("k is : "+k);
}
public int testCase(int n){
int j=1;
switch (n) {
case 1: j++;
case 2: j++;
case 3: j++;
case 4: j++;
case 5: j++;
System.out.println("j is : "+j);
default: j++;
}
return n+j;
}
}
testCase這個(gè)問(wèn)題我做錯了, 題目是要求最終打印出的k為8,請你給i與n賦值。
我在考場(chǎng)上寫(xiě)的n=5, i=2; 運行得出結果卻為9. 分析了一下得出原因在于: 如果n<5的話(huà),那么它會(huì )從其自身起一直到5都會(huì )執行j++這條語(yǔ)句, 因為此代碼片段中并沒(méi)有使用 break。
n與i有多種組合值, 如(1,1)、(4,1)和(5,1)等都可以。
3、 復習 JAVA的 “內部類(lèi)”章節。
4、 復習 JAVA的 “反射”章節。
5、 溫習 操作系統 部分的知識。
6、 數組問(wèn)題:
如我聲明 int [] a = new int[1] , 那么a[0]的默認值就為0。 我起初理解錯誤了, 我認為如此聲明只是為數組開(kāi)辟了空間而已, 在其空間上默認值為NULL。
7、 關(guān)于啟動(dòng) gc 的方法:
System.gc() 和 RunTime()類(lèi)的 gc() 方法, 但是即使調用了前面的方法也不保證一定會(huì )進(jìn)行回收。
拓展之:
a. GC并不是定期來(lái)回收你的垃圾內存,即是根據需要來(lái)回收。
b. GC的回收是因為:它認為你的系統已經(jīng)開(kāi)始內存緊張(這個(gè)就是jvm的神奇)
c. 即使GC開(kāi)始準備清理你的垃圾內存,但是如果該內存的引用還存在(不等于null), 這個(gè)時(shí)候GC仍然無(wú)能為力!
d、 RunTime類(lèi)的 public static Runtime getRuntime() 返回: 與當前 Java 應用程序相關(guān)的 Runtime 對象。
8、 int i=10, double e = 10.0; 判斷(i==e)、 (i==10.0)的真假。
我認為一個(gè)是int類(lèi)型,一個(gè)是double類(lèi)型,它們分屬不同的類(lèi)型, 所以我認為其是錯誤的, 然而經(jīng)運行測試發(fā)現是正確的。
9、 public static void main(String[] args){
StringBuffer str1 = new StringBuffer("a");
StringBuffer str2 = new StringBuffer("b");
conver(str1, str2); }
public static void conver(StringBuffer str1, StringBuffer str2){
str1.append(str2);
str2 = str1;
}
測試結果為: str1 : ab str2 : b
10、 唯一索引 與 唯一約束
create unique index index_name on table_name(column)。
建立唯一索引會(huì )自動(dòng)生成一個(gè)唯一索引(唯一性約束是通過(guò)唯一性索引來(lái)實(shí)現的)。
約束是為了保證數據滿(mǎn)足約束條件的數據完整性, 而索引通常是為了提高查詢(xún)的速度。
——————拓展:
唯一索引, 在物理結構上是完全一樣的, 而實(shí)際上, 非唯一索引其實(shí)也是索引的一種, 只是非唯一索引把rowId也編程了鍵值的一部分; 在用途上, 唯一索引與非唯一索引的區別在于優(yōu)化器在優(yōu)化查詢(xún)時(shí)應用索引時(shí)做了取舍。
如果是唯一索引則采取 index unique scan, 如果是非唯一性索引,則采取 index range scan.
——————拓展: 在線(xiàn)創(chuàng )建索引
在線(xiàn)創(chuàng )建索引時(shí)會(huì )阻塞DML操作, 直到創(chuàng )建唯一索引成功, DML才正常操作; 所以為了減少性能,不阻塞DML操作最好在最后加上 online關(guān)鍵字。
11、 在oracle中如何確定重復的記錄?
a、 自關(guān)聯(lián)查詢(xún)方法:
oracle系統中, 對于所有的表都存在一個(gè)唯一的列, 這就是rowid對該列使用max或者min
b、 使用group by/having 子句
c、 exception into 子句。
12、 關(guān)于使用DataSource連接數據庫的方式:
參考API內容如下:
該工廠(chǎng)用于提供到此 DataSource 對象所表示的物理數據源的連接。作為 DriverManager 工具的替代項,DataSource 對象是獲取連接的首選方法。實(shí)現 DataSource 接口的對象通常在基于 JavaTM Naming and Directory Interface (JNDI) API 的命名服務(wù)中注冊。
DataSource 接口由驅動(dòng)程序供應商實(shí)現。共有三種類(lèi)型的實(shí)現:
基本實(shí)現 - 生成標準的 Connection 對象
連接池實(shí)現 - 生成自動(dòng)參與連接池的 Connection 對象。此實(shí)現與中間層連接池管理器一起使用。
分布式事務(wù)實(shí)現 - 生成一個(gè) Connection 對象,該對象可用于分布式事務(wù),大多數情況下總是參與連接池。此實(shí)現與中間層事務(wù)管理器一起使用,大多數情況下總是與連接池管理器一起使用。
DataSource 對象的屬性在必要時(shí)可以修改。例如,如果將數據源移動(dòng)到另一個(gè)服務(wù)器,則可更改與服務(wù)器相關(guān)的屬性。其優(yōu)點(diǎn)在于,由于可以更改數據源的屬性,所以任何訪(fǎng)問(wèn)該數據源的代碼都無(wú)需更改。
通過(guò) DataSource 對象訪(fǎng)問(wèn)的驅動(dòng)程序本身不會(huì )向 DriverManager 注冊。通過(guò)查找操作獲取 DataSource 對象,然后使用該對象創(chuàng )建 Connection 對象。使用基本的實(shí)現,通過(guò) DataSource 對象獲取的連接與通過(guò) DriverManager 設施獲取的連接相同。
【數據庫oracle筆試】相關(guān)文章:
oracle筆試歸來(lái)11-06
Oracle筆試,分享筆試內容11-21
oracle筆試題及答案08-16
oracle 技術(shù)筆試題02-18
Oracle數據庫的優(yōu)化03-18
Oracle數據庫語(yǔ)句大全12-21
oracle數據庫基本語(yǔ)句02-08
筆試大觀(guān)之Oracle Graduate01-14
Oracle筆試,攢RP中……07-16