1、表user有字段(ID, 姓名, 部門(mén)編號(hào)),ID是主鍵; 表department有字段(部門(mén)編號(hào), 部門(mén)名稱(chēng)),部門(mén)編號(hào)是主鍵。表user 與表department是N-1的關(guān)系,也就是說(shuō)一個(gè)user一定屬于唯一的一個(gè)部門(mén),一個(gè)部門(mén)可以有多個(gè)人員。
a.請(qǐng)寫(xiě)出一個(gè)SQL語(yǔ)句,查詢(xún)出user表中所有人員的(ID,姓名,部門(mén)名稱(chēng))。
b.如果希望一次性插入一個(gè)user(‘001’, ‘tom’,’101’)記錄,和他所屬的department(‘101’, ‘Develop Dept.’),要么全失敗,要么全成功,應(yīng)該怎么做呢?(只需要寫(xiě)出示意性的語(yǔ)句就可以了)
a:
SELECT u.id , u.name , d.name FROM user AS u , department AS d WHERE u. departmentid = d.id;
b:
SET AUTOCOMMIT = 0;
BEGIN;
INSERT INTO user VALUES(‘001’, ‘tom’, ‘101’);
INSERT INTO department VALUES(‘101’, ‘Develop Dept’);
COMMIT;
失敗的話:
ROLLBACK;
2、請(qǐng)簡(jiǎn)單解釋一下DTD在XML語(yǔ)言中的主要作用,以及SOAP協(xié)議的用途。
DTD是Document type Definition(文檔類(lèi)型定義)的縮寫(xiě),它規(guī)定了XML文檔的構(gòu)建方式。
SOAP的全稱(chēng)是Simple Object Access Protocol,即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議。SOAP是在分散或分布的環(huán)境中交換信息的簡(jiǎn)單協(xié)議,他以XML作為數(shù)據(jù)傳送的方式。SOAP對(duì)于實(shí)現(xiàn)基于Web的無(wú)縫集成系統(tǒng)發(fā)揮著非常重要的作用。SOAP有助于實(shí)現(xiàn)松散耦合的、跨平臺(tái)的、于語(yǔ)言無(wú)關(guān)的、與特定接口無(wú)關(guān)的分布式系統(tǒng)。
3、盡管SQL92標(biāo)準(zhǔn)已經(jīng)被公認(rèn)為標(biāo)準(zhǔn)的SQL語(yǔ)言規(guī)范,但是通常不同數(shù)據(jù)庫(kù)服務(wù)器所能夠接受的SQL語(yǔ)句都會(huì)有一些區(qū)別。假如一套軟件需要支持多種不同的數(shù)據(jù)庫(kù),而源代碼中的SQL語(yǔ)句只希望有一套,從學(xué)過(guò)的課程,你會(huì)聯(lián)想到什么解決方法呢?(簡(jiǎn)單敘述一下思路)
對(duì)于大部分的應(yīng)用系統(tǒng)來(lái)說(shuō),SQL92標(biāo)準(zhǔn)已經(jīng)夠用了,很多時(shí)候我們只是使用這些數(shù)據(jù)庫(kù)之間功能的公共子集。對(duì)于復(fù)雜的應(yīng)用系統(tǒng)可以采用類(lèi)似Hibernate的做法,提供一套自定義的SQL文法,然后將其轉(zhuǎn)換為不同數(shù)據(jù)庫(kù)特定的SQL。這樣在業(yè)務(wù)邏輯層上只有一套多數(shù)據(jù)庫(kù)共用的’SQL’語(yǔ)句;蛘咧苯硬捎肏ibernate,使用其所提供的HQL,這樣多數(shù)據(jù)庫(kù)可以共用一套HQL語(yǔ)句。
4、假如有集合A、B,A與B之間為一一影射關(guān)系,并且這一影射是無(wú)固定規(guī)律的。現(xiàn)在需要在程序中每當(dāng)給定A中的一個(gè)元素時(shí),迅速的找到B中對(duì)應(yīng)的一個(gè)元素。你認(rèn)為選擇什么樣的數(shù)據(jù)結(jié)構(gòu)比較合適呢?(不需要寫(xiě)程序)
Map
5、在一個(gè)汽車(chē)模擬游戲中,各種不同汽車(chē)由于性能參數(shù)不同,在同一個(gè)跑道上奔跑時(shí)姿態(tài)的算法各不相同。當(dāng)你用C++語(yǔ)言設(shè)計(jì)這個(gè)程序時(shí),會(huì)想到利用C++的什么特性呢?
函數(shù)重載。
以下編程題目如無(wú)特殊要求,可以使用JAVA、C、C++、C#、PASCAL語(yǔ)言。
6、寫(xiě)出一個(gè)函數(shù),將人民幣的小寫(xiě)數(shù)字,轉(zhuǎn)換成大寫(xiě)。
如:2084.52 —》貳仟零八十四圓五角貳分
要求考慮全面,算法精練,書(shū)寫(xiě)規(guī)范。
public static String moneyConvert(double input) {
String[] faceVal = new String[] { “零”, “壹”, “貳”, “叁”, “肆”, “伍”, “陸”, “柒”, “捌”, “玖” };
String[] level = new String[] { “圓”, “拾”, “佰”, “仟”, “萬(wàn)”, “億” };
String[] parts = String.valueOf(input).split(“\\.”);
String faceInt = new StringBuffer(parts[0]).reverse().toString();
StringBuffer tempSb = new StringBuffer();
for (int i = 0; i < faceInt.length(); i++) {
tempSb.append(faceVal[Integer.valueOf(faceInt.substring(i, i + 1)).intValue()]);
}
faceInt = tempSb.toString();
String faceDecimal = parts[1];
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < faceInt.length(); i++) {
if (i == 0) {
resultSb.append(level[0]);
} else {
if ((i + 4) % 8 == 0) {
resultSb.append(level[4]);
} else if (i % 8 == 0) {
resultSb.append(level[5]);
} else {
resultSb.append(level[i % 4]);
}
}
String temp = faceInt.substring(i, i + 1);
resultSb.append(temp);
}
String result = resultSb.reverse().toString();
if(faceDecimal.equals("00")){
return result+"整";
}else{
return result+
faceVal[Integer.parseInt(faceDecimal.substring(0,1))]+"角"+
faceVal[Integer.parseInt(faceDecimal.substring(1,2))]+"分";
}
}
7. 寫(xiě)出一個(gè)函數(shù)將給定的一個(gè)數(shù)字串補(bǔ)足成10位長(zhǎng)度,如:
567 —》 0000000567
23456 —》 0000023456
要求寫(xiě)出一個(gè)耗費(fèi)CPU時(shí)間片較少的算法和一個(gè)耗費(fèi)內(nèi)存資源較少的算法。
/**
* 耗費(fèi)時(shí)間片較少
*/
public static String fillString(long input){
String inputStr = String.valueOf(input);
if(inputStr.length() > 10){
return “”;
}
if(inputStr.length() == 10){
return String.valueOf(input);
}
char[] retValue = new char[10];
for(int i = 0; i < 10; i++){
retValue[i] = '0';
}
int temp = inputStr.length() - 1;
for(int i = 9; i >= 10 – inputStr.length(); i– ){
retValue[i] = inputStr.charAt(temp–);
}
return new String(retValue);
}
/**
* 耗費(fèi)內(nèi)存較少
*/
public static String fillString2(long input){
if(input > 9999999999L){
return “”;
}
if(input >= 1000000000L && input <= 9999999999L){
return String.valueOf(input);
}
long tempValue = 1000000000L + input;
StringBuilder retValue = new StringBuilder(String.valueOf(tempValue));
retValue.replace(0,1,"0");
return retValue.toString();
}
|