java直接对list使用sql语句_Java和SQL语句阶段考试错题集
一.Java部分
1.選擇題
3.關于 Java 堆,下面說法錯誤的是()。
A.所有類的實例都是在堆上分配內存。
B.對象所占的堆內存是由自動內存管理系統回收。
C.堆內存由存活和死亡的對象,空閑碎片區組成。
D.數組是分配在棧中的
錯選A -->原因:對基本概念不熟悉
正確答案D
堆內存用于存放由new創建的對象和數組。 數組和對象在沒有引用變量指向它的時候,才變成垃圾,不能再被使用,但是仍然占著內存,在隨后的一個不確定的時間被垃圾回收器釋放掉。這個也是java比較占內存的主要原因,實際上,棧中的變量指向堆內存中的變量,這就是 Java 中的指針!
6.觀察如下代碼,正確顯示結果為()。
class A{
void callme(){
System.out.println("InsideA'scallme()method");
}
}
class B extends A{
void callme(){
System.out.println("InsideB'scallme()method");
}
}
class C extends B{
void callme(){
System.out.println("InsideC'scallme()method");
}
}
public class Dispatch{
public static void main(String args[]){
A a=new C();
a.callme();
}
}
A.InsideA’scallme()method
B.InsideB’scallme()method
C.InsideC’scallme()method
D.拋出異常
錯選A-->原因:忽略了方法被重寫,方法重寫子類會覆蓋父類方法
正確答案C
8.觀察如下代碼,正確的顯示結果是()。
class MyException extends Exception{
public MyException(String msg){
super(msg);
}
}
public class MyClass{
public static void main(String[] args){
try{ if(true) throw new MyException("bad");
System.out.println("OK");
}catch(MyExceptione){
System.out.print(e.getMessage());
}
System.out.print("bye");
}
}
A. bad B. badbye C. OKbad D. OKbadbye
錯選C-->原因:對異常處理機制不熟悉
正確答案B
異常處理機制如下:
12.Thread 類用來創建和控制線程,一個線程從下面()方法開始執行。
A.init() B.start() C.run() D.notifyAll()
錯選C-->原因:看題不仔細,題目是要開始執行的方法,想都沒想就選了run執行主體邏輯的方法
正確答案B
15.以下關于 Java 的 List Set 和 Map 集合的描述,錯誤的是()(多選)。
A) List 集合的元素是有序的,元素可以重復
B) HashSet 集合的元素是無序的,可以重復的;TreeSet 是有序的,基于 TreeMap 實現 的
C) HashMap 的 Key 必須唯一,Value 同樣不可以重復
D) LinkedList 線程不安全,它是鏈表結構
E) List 集合具有以下幾種常用的方法:add(E e) clear() hashCode() iterator() toArray()
錯選了BCD-->原因:對集合中線程安全不太了解
正確答案BC
集合中線程安全類:
Vector:就比ArrayList多了個同步化機制(線程安全),因為效率較低,現在已經不太建議使用。
在web應用中,特別是前臺頁面,往往效率(頁面響應速度)是優先考慮的。
Statck:堆棧類,先進后出
HashTable:比HashMap多了個線程安全,其他比較見簡答題2
Enumeration:枚舉,相當于迭代器 除了這些之外,其他的都是非線程安全的類和接口。
2.簡答題
2.HashMap 和 Hashtable 有什么區別?
HashMap平時用得較多,HashTable沒咋關注
答案如下:
(1) HashMap 非線程安全,HashTable 是線程安全的。Java 5 提供了 ConcurrentHashMap, 它是 HashTable 的替代,比 HashTable 的擴展性更好
(2) HashMap 可以接受為 null 的鍵值(key)和值(value),而 Hashtable 則不行。
(3) HashMap 的迭代器(Iterator)是 fail-fast 迭代器,而 Hashtable 的 enumerator 迭代器不是 fail-fast 的。 由于 Hashtable 是線程安全的,也就是 synchronized,所以在單線程環境下它比 HashMap 要 慢。如果不需要同步,只需要單一線程,那么使用 HashMap 性能要好過 Hashtable
4.Java 中創建線程哪幾種方式?需要實現什么方法?優缺點是什么?
答案如下:
(1) 繼承 Thread 類創建線程類,并重寫該類的 run 方法,該 run()方法的方法體就代表了線 程要完成的任務。調用線程對象的 start()方法來啟動該線程
(2) 實現 Runnable 接口,并重寫該接口的 run()方法,該 run()方法的方法體同樣是該線程的 線程執行體。調用線程對象的 start()方法來啟動該線程。
(3) 實現 Callable 接口,并實現 call()方法,該 call()方法將作為線程執行體,并且有返回值。 創建一個 Callable 實現類的實例對象,再使用 FutureTask 類來包裝 Callable 對象,該 FutureTask 對象封裝了該 Callable 對象的 call()方法的返回值
繼承 Thread 類的優缺點 優點: 編寫簡單, 如果需要訪問當前線程, 直接使用 this 即可獲得當前線程, 無需使用 Thread.currentThread()方法 缺點: 線程類已經繼承了 Thread 類, 不能繼承其他類 實現
runnable 或者 Callable 接口的優缺點 優點: 線程類只是實現了接口, 還可以繼承其他的類 缺點: 訪問當前線程時, 需要使用 Thread.currentThread(0)方法
忽略了第三種平時12用得較多,2使用的最多
3.編程題
1.給定一個長字符串 A 和一個短字符串 B,請問如何最快判斷字符串 B 中的所有字符是否 都在字符串 A 中
答案代碼如下:
//判斷每個數組是否存在
public boolean stringContains(String A,String B){
//判斷結果
booleanb=true;
//將帶判斷的小字符串轉成字符數組,以遍歷判斷是否存在于大字符串中
char[]ch=B.toCharArray();
for(charc:ch){
if(A.indexOf(c)<0){
b=false;
break;
}
}
//返回結果
returnb;
}
編程題最后寫的時間不夠
二.SQL部分
1.簡答題
2.union 和 unionall 的區別?(3 分)
Union:對兩個結果集進行并集操作,不包括重復行,同時進行默認規則的排序;
UnionAll:對兩個結果集進行并集操作,包括重復行,不進行排序;
平時用的較少,基本只用了幾次union,而且只知道是連接兩個表內容并集操作
3.in 和 exists 的區別?(3 分, 答對兩條即可)
(1) 運用情況不同 sql 中 in 適用于子查詢得出的結果集記錄較少,主查詢中的表較大且又有索引的表,。 sql 中 exist 適用于外層的主查詢記錄較少,子查詢中的表大,又有索引的時候。
(2) 驅動順序不同 IN 是先查詢子查詢的表,然后將內表和外表做一個笛卡爾積,然后按照條件進行篩選。 exists 是以外層表為驅動表,先被訪問。
(3) 對 NULL 值處理不同 IN 不對 NULL 進行處理,exists 會對 NULL 值進行處理。
(4) 底層原理不同 in 是把外表和內表作 hash 連接,而 exists 是對外表作 loop 循環,每次 loop 循環再對 內表進行查詢。
in平時用得較多,而exists基本沒用過,不太了解
5.char 和 varchar 的區別?(3 分)
CHAR 的長度是固定的,而 VARCHAR 的長度是可以變化的
varchar用的習慣了,都快忘了char這個類型了~
2.編程題
5.怎么樣把下面的表 A 數據查詢成表 B 的數據
分析:行列互轉-->在新字段使用一個子查詢,如下:
數據庫的數據如下:
SELECT DISTINCT b.`year` `year`,
(SELECT amount FROM a a1 WHERE a1.`month`=1 AND b.`year`=a1.year) AS m1,
(SELECT amount FROM a a1 WHERE a1.`month`=2 AND b.`year`=a1.year) AS m2,
(SELECT amount FROM a a1 WHERE a1.`month`=3 AND b.`year`=a1.year) AS m3,
(SELECT amount FROM a a1 WHERE a1.`month`=4 AND b.`year`=a1.year) AS m4
FROM a b;
執行效果如下:
答案代碼如下:
SELECT `year`,SUM(CASE WHEN MONTH='1' THEN amount ELSE 0 END) m1,
SUM(CASE WHEN MONTH='2' THEN amount ELSE 0 END) m2,
SUM(CASE WHEN MONTH='3' THEN amount ELSE 0 END) m3,
SUM(CASE WHEN MONTH='4' THEN amount ELSE 0 END) m4
FROM a
GROUP BY `year`;
原因-->時間不夠2333
本文地址:https://blog.csdn.net/sun_0128/article/details/107071587
希望與廣大網友互動??
點此進行留言吧!
總結
以上是生活随笔為你收集整理的java直接对list使用sql语句_Java和SQL语句阶段考试错题集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: myeclipse hbm2java_m
- 下一篇: 管泽元道歉后骆歆回应:不如不道歉 该说的