本套題目共5頁,請在1個小時内選擇作答,正确率優先。
Java基礎
1、 實作clone方法和equals方法時需要注意什麼?
答:深度clone:實作Serializable
淺度clone:實作Cloneable接口
2、 下面的方法,當輸入為2的時候傳回值是多少?
public static int getValue(int i) { int result = 0; switch (i) { case 1: result = result + i; case 2: result = result + i * 2; case 3: result = result + i * 3; } return result; } |
答:10
3、
a.下述代碼在多線程環境中是否存在問題?若有,如何修正?
b.下述代碼中的volatile關鍵字是什麼意思?如果删除對該段代碼有何影響?
class Counter { private volatile int count = 0; public int getNext() { return ++count; } |
答:存在多線程環境問題,++count不是原子操作,方法:1,在 方法添加synchronized 2,用lock鎖機制使++count操作是一個整體 3,count變量用原子類進行操作。
使用volatile關鍵字確定共享變量能夠呗準确和一緻地更新的關鍵字,保證可見型,隻對變量使用。
4、 Thread.sleep() 可能抛出的 InterruptedException 代表什麼?如何處理?
答:阻塞方法抛出該異常
1,清除中斷狀态。2,捕獲該異常,保留中斷發生的
Spring
1. @Controller中,跳轉(“redirect: url”)和轉發(“forward: url”)有什麼差別?
答:一個跳轉會改變浏覽器的位址,一般用于通路外界資源
轉發是在本伺服器進行位址的轉換,浏覽器的位址不會發生改變。
2. 下面是HTTP請求封包:
POST /example?param1=value HTTP/1.1 Host: www.nowhere123.com Accept: image/gif, image/jpeg, */* Accept-Language: en-us Accept-Encoding: gzip, deflate Content-Type: application/json; charset=UTF-8 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) X-Auth-Token: token-xxxxx { "param2": "value" |
如何在Controller的方法中擷取框中的數值?
答:通過HttpServletRequest擷取到請求頭的集合,周遊,通過鍵擷取值
從request域中擷取集合體,再通過鍵值對擷取資料。
3. 使用注解(如@Component)聲明Bean,如何指定Bean加載順序?
a) 答:通過優先級設定
b)
4. 多個同類型的Bean,使用注解注入時如何指定?
MyBatis
1. XML映射中,SQL語句的兩種參數注入方法:#和$的差別?
#:使用的是PreparStatement類
$: 使用的是 Statement類(會發升SQL注入問題)
2. XML映射中,如何使用LIKE進行模糊查詢?
答:like “%”#{條件}”%”
3. XML映射中,如何批量插入傳入的集合(Collection<E>)?
即,如何根據集合生成如下SQL?
INSERT INTO TABLE_NAME(a, b, c) VALUES (a1, b1, c1), (a2, b2, c2) … |
4. XML映射中,如何在插入的同時擷取MySQL自增字段(AUTO_INCREMENT)的生成值?
答:插入的時候用selectKey标簽先生成主鍵再進行插入操作
Redis
1. 如何使key對應的值過5秒後失效?
答:expire key 5
設定了失效時間,redis也可能存放在redis 的記憶體中,redis采用的是軟清理的方式,通過以一定的算法進行處理。
2. scan和keys指令的差別?
SCAN:将所有查詢的參數分頁處理,每次處理的條數通過參數傳入
KEYS:将所有查詢的參數進行顯示,資料量大對伺服器性能有影響。
3. 如何開啟和執行事務?
答:通過multi指令開啟事物,
4. 使用管道(Pipeline)有什麼好處?
答:減少伺服器壓力,減少鍊路層中的時間消耗,将大量操作結合成少量的操作。
資料庫
1. 請寫出以下MySQL語句的格式 : 插入 ,更新 ,删除。
表名 | students | ||
username | tel | content | date |
張三 | 13801281191 | 大專畢業 | 2006-10-11 |
李四 | 13612312331 | 大學畢業 | 2006-10-15 |
王五 | 021-55665566 | 碩士畢業 |
a) 有一新記錄(小王 13254748547 高中畢業 2007-05-06)請用SQL語句新增至表中
Insert into students values(‘小王’,‘13254748547’,‘高中畢業’,date(‘2007-05-06’))
b) 請用sql語句把張三的時間更新成為目前系統時間
Update students set date=date(now()) where username=’張三’
c) 請寫出删除名為張四的全部記錄
Delete from student where username in (‘張’,’四’)
d) 請給date 字段列增加一個普通索引
Alter bable ‘student’ add index_name (‘date’)
2. 表連接配接的左關聯和右關聯有什麼差別?
a) 左關聯:查詢以左邊的表條件為主,左邊表的字段全部顯示,右表有就顯示沒有就不顯示。
b) 右關聯:查詢以右邊的表條件為主,右邊表的字段全部顯示,右表有就顯示沒有就不顯示。
3. 下面哪些語句可以使用索引,而哪些不能?為什麼?可以用索引的,怎麼建索引?
a)select account_name from trans where amount!=0
b)select account_name,amount from trans where account_name='amex' and account_type='a'
c)select account_name,amount from trans where account_name like ‘zhang%’
答:第一個不能使用索引, != 會導緻索引失效,進行全局查詢
第二個和第三個可以使用索引