本套題目共5頁,請在1個小時內選擇做答,正確率優先。mysql
Java基礎redis
一、 實現clone方法和equals方法時須要注意什麼?算法
答:深度clone:實現Serializablesql
淺度clone:實現Cloneable接口數據庫
二、 下面的方法,當輸入爲2的時候返回值是多少?json
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
三、
a.下述代碼在多線程環境中是否存在問題?如有,如何修正?
b.下述代碼中的volatile關鍵字是什麼意思?若是刪除對該段代碼有何影響?
class Counter { private volatile int count = 0;
public int getNext() { return ++count; } } |
答:存在多線程環境問題,++count不是原子操做,方法:1,在 方法添加synchronized 2,用lock鎖機制使++count操做是一個總體 3,count變量用原子類進行操做。
使用volatile關鍵字確保共享變量可以唄準確和一致地更新的關鍵字,保證可見型,只對變量使用。
四、 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 |
碩士畢業 |
2006-10-15 |
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%’
答:第一個不能使用索引, != 會致使索引失效,進行全局查詢
第二個和第三個能夠使用索引
創建索引:索引能夠提升查詢效率,可是也會影響增刪改的效率,MySQL索引自己就是一種數據結構,索引維護這這種查詢樹,頻繁的對數據進行修改,就會影響樹的每一個節點變化,不停的進行IO操做對mysql數據庫也是有影響的,因此通常創建全部都是在數據變化不大,查詢頻率比較高的數據進行創建索引。