真實面試題之一


本套題目共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操做是一個總體 3count變量用原子類進行操做。

使用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. scankeys命令的區別?

 

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數據庫也是有影響的,因此通常創建全部都是在數據變化不大,查詢頻率比較高的數據進行創建索引。

相關文章
相關標籤/搜索