1. 程式人生 > >18年11月上,面試題積累(深圳安碩資訊面試題包含其中)

18年11月上,面試題積累(深圳安碩資訊面試題包含其中)

平安外包-安碩資訊面試題
1.程式設計:有一個數列,它的第一項為00,第二項為1,以後每一項都是它的前兩項之和,試產生改數列的前20項,並按從小到大排序列顯示,每行顯示5個元素。

2.編寫一個java程式實現多執行緒,線上程中輸出執行緒的名字,每隔300毫秒輸出一次,共輸出10次。

3.SQL題;有四張表,第一張表是使用者資訊customer(customer_name,customer_street,customer_city)

第二張 支行資訊 branch(branch_name,branch_city)

第三張 賬戶資訊 account(account_name,branch_name,balance)

第四張 存款資訊depositor(account_name,customer_name)

A.用SQL查詢在上海所有支行存款最多的支行資訊?

B.用SQL查詢在上海所有支行都開過戶的使用者資訊?(branch_city=“上海”)C.用SQL查詢在楊浦支行開過一個賬戶的使用者資訊?(branch_name=“yangpu”)

技術面 : 陣列建立方式,初始化值能修改?(陣列的增長)
介面和抽象區別?
重寫和過載的區別?

//拋異常都會執行finally
// String 的面試題
public class Test1 {
public static void main(String[] args) {
String a = new String(“ab”); // a 為一個引用
String b = new String(“ab”); // b為另一個引用,物件的內容一樣
String aa = “ab”; // 放在常量池中
String bb = “ab”; // 從常量池中查詢
if (aa == bb) // true
System.out.println(“aa == bb”);
if (a == b) // false
System.out.println(“a==b”);
if (a.equals(b)) // true
System.out.println(“aEQb”);
}
結束-----------------------------------------------------------------

另:

public static void main(String[] args) {
    
    String str = "abcdef";
    
    //function 1將字串的每個字元存入陣列toCharArray()
    StringBuffer sb = new StringBuffer();
    char[] ch = str.toCharArray();
    for(int i = ch.length-1;i>=0;i--){
        sb.append(ch[i]);
    }

    System.out.println(sb.toString());

    //function 2方法返回指定索引處的char值。索引範圍是從0到length() - 1
    StringBuffer sb1 = new StringBuffer();
    for(int i=str.length()-1;i>=0;i--){
        sb1.append(str.charAt(i));
    }
    System.out.println(sb1.toString());

    //function 3StringBuffer物件的值反轉
     System.out.println(new StringBuffer(str).reverse().toString());
}

//18.11.13
forward()轉發與redirect()重定向的區別
//請求次數區別
前者在客戶端瀏覽器位址列中不會顯示出轉向後的地址;後者則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求連結。這樣,從瀏覽器的位址列中可以看到跳轉後的連結地址。所以,前者更加高效,在前者可以滿足需要時,儘量使用forward()方法

ArrayList和Vector的區別,增長長度(10,0.5,1)
Vector由於使用了synchronized方法-執行緒安全
LinkedList使用的是雙向連結串列

HashMap 和 Hashtable 的區別
1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2.hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
3.hashMap允許空鍵值,而hashTable不允許。

HashMap 和 ConcurrentHashMap 的區別
ConcurrentHashMap是執行緒安全的HashMap的實現。

Java中BigDecimal的使用,即數值的精確計算(float和double的非精確計算)
public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value);//減法
public BigDecimal multiply(BigDecimal value);//乘法
public BigDecimal divide(BigDecimal value);//除法

sleep和wait的區別
sleep是Thread類 不會釋放當前鎖
wait是Object類 會釋放當前鎖
Java中notify 和 notifyAll有什麼區別

sleep() 、join()、yield()有什麼區別

getAtrribute和getParamter的區別

Spring Aop、攔截器、過濾器的區別
JDK中的Timer和TimerTask詳解
TheadLocal

其實就Timer來講就是一個排程器,而TimerTask呢只是一個實現了run方法的一個類,而具體的TimerTask需要由你自己來實現,例如這樣:

Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println(“abc”);
}
}, 200000 , 1000);

這裡直接實現一個TimerTask(當然,你可以實現多個TimerTask,多個TimerTask可以被一個Timer會被分配到多個Timer中被排程,後面會說到Timer的實現機制就是說內部的排程機制),然後編寫run方法,20s後開始執行,每秒執行一次,當然你通過一個timer物件來操作多個timerTask,其實timerTask本身沒什麼意義,只是和timer集合操作的一個物件,實現它就必然有對應的run方法,以被呼叫,他甚至於根本不需要實現Runnable,因為這樣往往混淆視聽了,為什麼呢?也是本文要說的重點。

spring事務的隔離性有哪些,他們有哪些區別
事務定義了四種隔離級別:Read uncommitted、Read committed、Repeatable read和Serializable

關於這四種隔離級別,其主要區別在於三個點:髒讀、不可重複讀和幻讀。這三個點的主要含義如下:

髒讀:髒讀表示一個事務能夠讀取另一個事務中還未提交的資料。比如,某個事務嘗試插入記錄A,此時該事務還未提交,然後另一個事務嘗試讀取記錄A,這時其是會成功讀取到記錄A的;

不可重複讀:不可重複讀表示當前事務對同一記錄的兩次重複讀取結果不一致。比如一個事務首先讀取一條記錄A,讀完之後另一個事務將該記錄修改並且成功提交了,然後當前事務再次讀取記錄A,此時該事務會發現兩次讀取的結果不一致;

幻讀:幻讀指的是一個事務在進行一次查詢之後發現某個記錄不存在,然後會根據這個結果進行下一步操作,此時如果另一個事務成功插入了該記錄,那麼對於第一個事務而言,其進行下一步操作(比如插入該記錄)的時候很可能會報錯。從事務使用的角度來看,在檢查一條記錄不存在之後,其進行插入應該完全沒問題的,但是這裡卻丟擲主鍵衝突的異常。

關於事務的四種隔離級別,其主要區別點也就在於是否能夠解決這三個問題。這四種事務的隔離級別主要區別如下:

Read uncommitted:這是隔離性最低的一種隔離級別,在這種隔離級別下,當前事務能夠讀取到其他事務已經更改但還未提交的記錄,也就是髒讀;
Read committed:顧名思義,這種隔離級別只能讀取到其他事務已經提交的資料,也就解決了髒讀的問題,但是其無法解決不可重複讀和幻讀的問題;
Repeatable read:從事務的定義上,這種隔離級別能夠解決髒讀和不可重複讀的問題,但是其無法解決幻讀的問題;
Serializable:也稱為序列化讀,這是隔離性最高的一種隔離級別,所有的事務執行(包括查詢)都會為所處理的資料加鎖,操作同一資料的事務將會序列的等待。