freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

j2ee高級軟件工程師面試題集(已修改)

2025-06-18 16:54 本頁面
 

【正文】 J2EE高級軟件工程師面試題集編輯:王毅鋒2009年12月20號目 錄第一章:基礎(chǔ)知識部分…………………………………3第二章:高級知識部分…………………………………24第三章:數(shù)據(jù)庫部分……………………………………45第四章:程序設計部分…………………………………77第五章:面試技巧部分…………………………………96132第一章:J2EE高級軟件工程師面試題集JAVA基礎(chǔ)部分 面向?qū)ο蟮奶卣饔心男┓矫婷嫦驅(qū)ο蟮某绦蛟O計很接近于我們?nèi)祟愖匀坏乃季S,相對于面向過程的程序設計,它具有更好的可擴展性和可維護性,使我們編寫的代碼更健壯! 面向?qū)ο笾饕兴拇筇匦裕悍庋b、抽象、繼承和多態(tài)。各自定義: 封 裝:在面向?qū)ο笳Z言中,封裝特性是由類來體現(xiàn)的,我們將現(xiàn)實生活中的一類實體定義成類,其中包括屬性和行為(在Java中就是方法),就好像人類,可以具 有name,sex,age等屬性,同時也具有eat(),sleep()等行為,我們在行為中實現(xiàn)一定的功能,也可操作屬性,這是面向?qū)ο蟮姆庋b特性; 抽象:抽象就是將一類實體的共同特性抽象出來,封裝在一個抽象類中,所以抽象在面向?qū)ο笳Z言是由抽象類來體現(xiàn)的。比如鳥就是一個抽象實體,因為抽象實體并不是一個真正的對象,它的屬性還不能完全描述一個對象,所以在語言中體現(xiàn)為抽象類不能實例化; 繼承:繼承就像是我們現(xiàn)實生活中的父子關(guān)系,兒子可以遺傳父親的一些特性,在面向?qū)ο笳Z言中,就是一個類可以繼承另一個類的一些特性,從而可以代碼重用,其實繼承體現(xiàn)的是isa關(guān)系,父類同子類在本質(zhì)上還是一類實體; 多態(tài):多態(tài)就是通過傳遞給父類對象引用不同的子類對象從而表現(xiàn)出不同的行為,多態(tài)可為程序提供更好的可擴展性,同樣也可以代碼重用。 下面談談它們之間的聯(lián)系: 因為在Java是通過類的模板來定義出對象實例,所以自然而然就將對象封裝了,這在任何面向?qū)ο蟮恼Z言都很容易體現(xiàn)! 我覺得在抽象、繼承和多態(tài)當中,繼承是基礎(chǔ)。因為如果沒有繼承這種機制,就沒有父類和子類的概念,抽象和和多態(tài)根本就無法體現(xiàn)。正是有了繼承這種機制,我 們可以就抽象實體定義成抽象類,從而具體的實體可以繼承抽象類來實現(xiàn),不需要重復寫共同的特性,抽象特性也就體現(xiàn)出來了;也正是因為有了繼承機制,才有了 父類和子類的概念,從而父類對象引用參數(shù)通過傳遞子類對象體現(xiàn)出不同的行為,實現(xiàn)了多態(tài)。繼承和多態(tài)可明顯增加代碼重用,減少代碼量,同時利用多態(tài)可擴展 性也增強。 在Java中,抽象是以兩種方式表現(xiàn):Abstract Class和Interface。Java就是基于接口的編程,在我們編寫代碼時不知道如何選擇應該使用抽象類還是接口,它們雖然看起來沒多大區(qū)別,但在 設計上可以明顯看出它們之間的本質(zhì)區(qū)別,其實我們在選擇抽象類和接口時,要記住這樣的原則,抽象類是定義一類實體的共同特征,其父類和子類在本質(zhì)上還是同 一類實體,是isa關(guān)系,比如鳥和燕子,抽象類不僅意味著定義特定的行為,而且意味著定義實現(xiàn)的模式;而接口只是定義行為的模型,不同的實體可以 implements不同的行為,同時接口要滿足ISP原則,即不同實體的行為不能定義在同一接口中,它其實體現(xiàn)的是likea的關(guān)系。 在我們進行面向?qū)ο蟮某绦蛟O計時,要轉(zhuǎn)變我們的思維,盡量設計得和現(xiàn)實中很接近,對于公共功能盡量定義到抽象類或接口中,方法中的參數(shù)一般使用父類,當然這需要經(jīng)驗的積累,不是一朝一夕的事。String是最基本的數(shù)據(jù)類型嗎?基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。,因此不可以繼承這個類、不能修改這個類。為了提高效率節(jié)省空間,我們應該用StringBuffer類int和Integer有什么區(qū)別Java提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。Int是java的原始數(shù)據(jù)類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。原始類型封裝類boolean BooleancharCharacterbyteByteshortShortintIntegerlong LongfloatFloatdouble Double引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲,當引用類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值。對象引用實例變量的缺省值為null,而原始類型實例變量的缺省值與它們的類型有關(guān)。String和StringBuffer的區(qū)別JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個String類提供了數(shù)值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。String str1 = “java”。 (‘j’,’2’)。//此后str1還是java,只是replace可以重新返回一個2ava!運行時異常與一般異常有何異同?Throwable是所有Java程序中錯誤處理的父類,有兩種資類:Error和Exception。Error:表示由JVM所偵測到的無法預期的錯誤,由于這是屬于JVM層次的嚴重錯誤,導致JVM無法繼續(xù)執(zhí)行,因此,這是不可捕捉到的,無法采取任何恢復的操作,頂多只能顯示錯誤信息。Exception:表示可恢復的例外,這是可捕捉到的。Java 提供了兩類主要的異常:runtime exception和checked exception。checked 異常也就是我們經(jīng)常遇到的IO異常,以及SQL異常都是這種異常。對于這種異常,JAVA編譯器強制要求我們必需對出現(xiàn)的這些異常進行catch。所以, 面對這種異常不管我們是否愿意,只能自己去寫一大堆catch塊去處理可能的異常。但是另外一種異常:runtime exception,也稱運行時異常,我們可以不處理。當出現(xiàn)這樣的異常時,總是由虛擬機接管。比如:我們從來沒有人去處理過NullPointerException異常,它就是運行時異常,并且這種異常還是最常見的異常之一。出 現(xiàn)運行時異常后,系統(tǒng)會把異常一直往上層拋,一直遇到處理代碼。如果沒有處理塊,到最上層,()拋出,如果是單線程 就被main()拋出。拋出之后,如果是線程,這個線程也就退出了。如果是主程序拋出的異常,那么這整個程序也就退出了。運行時異常是Exception 的子類,也有一般異常的特點,是可以被Catch塊處理的。只不過往往我們不對他處理罷了。也就是說,你如果不對運行時異常進行處理,那么出現(xiàn)運行時異常 之后,要么是線程中止,要么是主程序終止。如果不想終止,則必須撲捉所有的運行時異常,決不讓這個處理線程退出。隊列里面出現(xiàn)異常數(shù)據(jù) 了,正常的處理應該是把異常數(shù)據(jù)舍棄,然后記錄日志。不應該由于異常數(shù)據(jù)而影響下面對正常數(shù)據(jù)的處理。在這個場景這樣處理可能是一個比較好的應用,但并不 代表在所有的場景你都應該如此。如果在其它場景,遇到了一些錯誤,如果退出程序比較好,這時你就可以不太理會運行時異常,或者是通過對異常的處理顯式的控 制程序退出。異常處理的目標之一就是為了把程序從異常中恢復出來。說出Servlet的生命周期,并說出Servlet和CGI的區(qū)別。Servlet被服務器實例化后,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當服務器決定將實例銷毀的時候調(diào)用其destroy方法。servlet處于服務器進程中,它通過多線程方式運行其service方法,一個實例可以服務于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進程,服務完成后就銷毀,所以效率上低于servlet。概括來講,Servlet可以完成和CGI相同的功能。 說出ArrayList,Vector,LinkedList的存儲性能和特性ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快。Collection和Collections的區(qū)別。Collection是集合類的上級接口,繼承于他的接口主要有Set和List.Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。amp。和amp。amp。的區(qū)別。amp。是位運算符,表示按位與運算,amp。amp。是邏輯運算符,表示邏輯與(and)。1HashMap和Hashtable的區(qū)別。HashMap是Hashtable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。Hashtable繼承自Dictionary類,interface的一個實現(xiàn)。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現(xiàn)同步,而HashMap就必須為之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。1final,finally,finalize的區(qū)別?! inal用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文件等。1sleep()和wait()有什么區(qū)別?sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,把執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復。調(diào)用sleep不會釋放對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。1Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被屏蔽了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。1error和exception有什么區(qū)別?error表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。exception表示一種設計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。1同步和異步有何異同,在什么情況下分別使用他們?舉例說明。如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進行同步存取。當應用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應該使用異步編程,在很多情況下采用異步途徑往往更有效率。1abstractclass和interface有什么區(qū)別?聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstractclass),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建abstract類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義staticfinal成員變量。接口的實現(xiàn)與子類相似,除了該實現(xiàn)類不能從接口定義中繼承行為。當類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof運算符可以用來決定某對象的類是否實現(xiàn)了接口。1heap和
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1