1.兩個對象值相同(x.equals(y)==true),但卻可有不同的hash code,這句話對不對?為什么?
2.GC是什么?為什么要有GC?
3.請簡要描述一下J2EE應用中的class loader的層次結構?
4.寫一段代碼,實現銀行轉帳功能:
接口定義如下:
public interface ITransfer {
/**
* <pre>
* 銀行內部轉帳,從轉出帳號中扣除轉帳金額,給轉入帳號增加轉帳金額,
* 需要保證以上兩個操作,要么同時成功,要么同時失敗
* </pre>
*
* @param fromAccountId
* 轉出帳號
* @param outAccountId
* 轉入帳號
* @param amount
* 轉帳金額
*/
public void transferInner(String fromAccountId, String outAccountId,
BigDecimal amount);
/**
* <pre>
* 外部轉帳-轉出,從轉出帳號中扣除轉帳金額
* </pre>
*
* @param fromAccountId
* 轉出帳號
* @param amount
* 轉帳金額
*/
public void transferOut(String fromAccountId, BigDecimal amount);
/**
* <pre>
* 外部轉帳-轉入,給轉入帳號增加轉帳金額
* </pre>
*
* @param toAccountId
* 轉入帳號
* @param amount
* 轉帳金額
*/
public void transerIn(String toAccountId, BigDecimal amount);
}
/**
* <pre>
* 銀行內部轉帳,從轉出帳號中扣除轉帳金額,給轉入帳號增加轉帳金額,
* 需要保證以上兩個操作,要么同時成功,要么同時失敗
* </pre>
*
* @param fromAccountId
* 轉出帳號
* @param outAccountId
* 轉入帳號
* @param amount
* 轉帳金額
*/
public void transferInner(String fromAccountId, String outAccountId,
BigDecimal amount);
/**
* <pre>
* 外部轉帳-轉出,從轉出帳號中扣除轉帳金額
* </pre>
*
* @param fromAccountId
* 轉出帳號
* @param amount
* 轉帳金額
*/
public void transferOut(String fromAccountId, BigDecimal amount);
/**
* <pre>
* 外部轉帳-轉入,給轉入帳號增加轉帳金額
* </pre>
*
* @param toAccountId
* 轉入帳號
* @param amount
* 轉帳金額
*/
public void transerIn(String toAccountId, BigDecimal amount);
}
請編寫你的實現類,來實現上述接口
Account表
字段:accountId , 主鍵 varchar2(32), 用戶帳號
字段:amount , 金額 number(18,3)
5."組合優于繼承",是否同意這句話,并闡述你的觀點。
6.請說下Template模式與Strategy模式的異同點。