筆試集(3)
運(yùn)行時(shí)異常與一般異常有何異同?異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見(jiàn)運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。
2)
說(shuō)出ArrayList,Vector, LinkedList的存儲(chǔ)性能和特性
ArrayList和Vector都是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號(hào)索引元素,但是插入元素要涉及數(shù)組元素移動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。
3)
設(shè)計(jì)4個(gè)線程,其中兩個(gè)線程每次對(duì)j增加1,另外兩個(gè)線程對(duì)j每次減少1。寫(xiě)出程序。
以下程序使用內(nèi)部類(lèi)實(shí)現(xiàn)線程,對(duì)j增減的時(shí)候沒(méi)有考慮順序問(wèn)題。
public class ThreadTest1{
???????? private int j;
???????? public static void main(String args[]){
????????????????? ThreadTest1 tt=new ThreadTest1();
?????????????????? Inc inc=tt.new Inc();
?????????????????? Dec dec=tt.new Dec();
?????????????????? for(int i=0;i<2;i++){
??????????????????????????? Thread t=new Thread(inc);
??????????????????????????? t.start();
??????????????????????????? t=new Thread(dec);
??????????????????????????? t.start();
?????????????????? }
???????? }
???????? private synchronized void inc(){
?????????????????? j++;
????????????????? System.out.println(Thread.currentThread().getName()+"-inc:"+j);
???????? }
???????? private synchronized void dec(){
?????????????????? j--;
????????????????? System.out.println(Thread.currentThread().getName()+"-dec:"+j);
???????? }
????????
???????? class Inc implements Runnable{
?????????????????? public void run(){
??????????????????????????? for(int i=0;i<100;i++){
???????????????????????????????????? inc();
??????????????????????????? }
?????????????????? }
???????? }
???????? class Dec implements Runnable{
?????????????????? public void run(){
??????????????????????????? for(int i=0;i<100;i++){
???????????????????????????????????? dec();
??????????????????????????? }
?????????????????? }
???????? }
}
4)
事務(wù)是什么?
事務(wù)是作為一個(gè)邏輯單元執(zhí)行的一系列操作,一個(gè)邏輯工作單元必須有四個(gè)屬性,稱(chēng)為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個(gè)事務(wù):
原子性
事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。
一致性
事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致?tīng)顟B(tài)。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹(shù)索引或雙向鏈表)都必須是正確的。
隔離性
由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。這稱(chēng)為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。
持久性
事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。
5)
游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?
游標(biāo)用于定位結(jié)果集的行,通過(guò)判斷全局變量@@FETCH_STATUS可以判斷是否到了最后,通常此變量不等于0表示出錯(cuò)或到了最后
6)
EJB
?? **1、EJB容器提供的服務(wù)
???????? 主要提供聲明周期管理、代碼產(chǎn)生、持續(xù)性管理、安全、事務(wù)管理、鎖和并發(fā)行管理等服務(wù)。
?? 2、EJB的角色和三個(gè)對(duì)象
???????? EJB角色主要包括Bean開(kāi)發(fā)者 應(yīng)用組裝者 部署者 系統(tǒng)管理員 EJB容器提供者 EJB服務(wù)器提供者
???????? 三個(gè)對(duì)象是Remote(Local)接口、Home(LocalHome)接口,Bean類(lèi)
?? 2、EJB的幾種類(lèi)型
???????? 會(huì)話(Session)Bean ,實(shí)體(Entity)Bean 消息驅(qū)動(dòng)的(Message Driven)Bean
???????? 會(huì)話Bean又可分為有狀態(tài)(Stateful)和無(wú)狀態(tài)(Stateless)兩種
???????? 實(shí)體Bean可分為Bean管理的持續(xù)性(BMP)和容器管理的持續(xù)性(CMP)兩種
?? 3、bean 實(shí)例的生命周期
???????? 對(duì)于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩沖池管理,而對(duì)于Entity Bean和Statefull Session Bean存在Cache管理,通常包含創(chuàng)建實(shí)例,設(shè)置上下文、創(chuàng)建EJB Object(create)、業(yè)務(wù)方法調(diào)用、remove等過(guò)程,對(duì)于存在緩沖池管理的Bean,在create之后實(shí)例并不從內(nèi)存清除,而是采用緩沖池調(diào)度機(jī)制不斷重用實(shí)例,而對(duì)于存在Cache管理的Bean則通過(guò)激活和去激活機(jī)制保持Bean的狀態(tài)并限制內(nèi)存中實(shí)例數(shù)量。
posted on 2006-12-08 14:03 youngturk 閱讀(240) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 筆試題