期末考試終于結(jié)束了﹐記憶中最可怕的一門就是J2EE大考。  
   
  這門課的兩位老師都是牛人﹐一個來自BEA﹐系統(tǒng)架構(gòu)師﹐是Weblogic   8.1b的開發(fā)人員﹐平時負(fù)責(zé)BEA公司在矽谷地區(qū)的面試﹔另一個是UC   Berkeley的教授﹐華人﹐創(chuàng)業(yè)狂﹐在亞洲和美國都有自己的公司。他們兩位負(fù)責(zé)了我校J2EE大考的出題。題目"指明了公司對個人的J2EE能力的考察方向﹐也代表了業(yè)界對J2EE初級程序員的普遍要求"。我估計這些題目有80%的機(jī)會會在BEA的面試中出現(xiàn)。  
   
  這裡我憑著自己的記憶把這些考題公佈出來和大家共享。一是為了讓大家對自己的能力有個評估﹐二也是幫我一同解答一些難題。  
   
  題目:  
   
  1.   (這道題是我們的一個項目有關(guān)﹐我這裡稍做修改。)   請舉出你最認(rèn)為滿意的J2EE項目一個﹐用Flow   Chart表示其開發(fā)流程。你在項目開發(fā)最初﹐是否有Screen的設(shè)計過程?   列舉Screen設(shè)計在項目初期能帶來的三條好處。你認(rèn)為這個項目失敗的地方在哪裡?   如果開發(fā)過程重來一遍﹐你認(rèn)為哪裡可以改進(jìn)?   如何改進(jìn)?   (光這道題就花了我將近一個小時﹐導(dǎo)致我後面的題目來不及做。考試時間是2個半小時)  
   
  2.   Strus系統(tǒng)中有哪五大組件?   這些組件是通過什麼途經(jīng)來互相作用的?   Struts中xml文件的作用是什麼?   xml文件的存在給Struts系統(tǒng)帶來哪些缺點?   詳述HTML表單在Struts中被提交的過程。Struts中Controller的作用是什麼?   有沒有必要重載Struts的Controller?    
   
  3.   什麼是Pass-by-value﹐什麼是Pass-by-reference?   J2EE裡什麼時候用pass-by-value﹐什麼時候用pass-by-value?   為什麼說程序從Remote   Interface到Local   Interface的遷移是不可能的﹐反過來呢?   什麼時候用Local   Interface﹐什麼時候用Remote   Interface?  
   
  4.   Value   Object   (Data   Transfer   Object)在J2EE系統(tǒng)中的作用是什麼?   為什麼Value   Object要實現(xiàn)Serializable接口?   在你的項目中Value   Object是處于哪些層次之間?   Value   Object給J2EE系統(tǒng)帶來什麼麻煩(給出兩點)?   哪三種情況下Value   Object要用到Collection?  
   
  5.   什麼是Optimistic   Concurrency   Control﹐   什麼是Pessimistic   Concurrency   Control?   Time   Stamp在Value   Object中的作用是什麼?   畫出一流程圖闡述從Client到Server到數(shù)據(jù)庫你是如何實現(xiàn)Optimistic   Concurrency   Control的?    
   
  6.   列舉JDBC   Reading   Pattern在EJB中的作用。什麼時候用JDBC   Reading?   JDBC   Reading應(yīng)該放在Stateless   Session   Bean,   Stateful   Session   Bean,   還是Entity   Bean裡?   CMP是如何克服大量數(shù)據(jù)查詢時Entity   BeanN+1次調(diào)用的問題?  
   
  7.   什麼是Pooling?   Stateless   Session   Bean和Stateful   Session   Bean的Pooling有何不同?   Stateless   Session   Bean和Stateful   Session   Bean有什麼不同?   Stateful   Session   Bean是如何Persistent它的狀態(tài)的(圖解表示)?  
   
  8.   在本學(xué)期的課程中我們學(xué)過如何保存Session   State。如果我把Session   State保存在Http   Session中﹐而且我使用Session   Facade設(shè)計模式﹐那麼你的Session   Facade是用Stateless   Session   Bean做呢﹐還是用Stateful   Sessioin   Bean?   為什麼?   闡述我們在課堂上學(xué)到的另一種保存Session   State的方法。  
   
  9.   Message   Driven   Bean的好處和壞處。(後面還有很多﹐忘記了)  
   
  10.   用戶希望在主頁面看到所有名酒清單﹐用戶可以添加﹐刪除﹐修改這些信息。並且系統(tǒng)有一個Top   10評分頁面﹐用戶可在此瀏覽最受歡迎的十種名酒﹐並可自己投票評選。圖解表示以上系統(tǒng)從瀏覽器到Servlet到EJB到數(shù)據(jù)庫各流程﹐並在關(guān)鍵處附註所使用的Design   Pattern﹐比如Value   Object,   JDBC   Reading,   Session   Facade等。  
   
  後面要有6題﹐但由于時間關(guān)係﹐我連看都來不及看。  


Strus系統(tǒng)中有哪五大組件?   這些組件是通過什麼途經(jīng)來互相作用的?   Struts中xml文件的作用是什麼?   xml文件的存在給Struts系統(tǒng)帶來哪些缺點?   詳述HTML表單在Struts中被提交的過程。Struts中Controller的作用是什麼?   有沒有必要重載Struts的Controller?    
   
  #   Action,ActionForm,ActionError,ActionForward,ActionMapping  
   
  #   Framework/MVC/ActionServlet/struts-config.xml  
   
  #   定義頁面流程  
   
  #   優(yōu)點:在系統(tǒng)運行時可以變更業(yè)務(wù)流程  
      缺點:編寫xml文件(相對于編寫代碼)由于沒有編譯器的檢驗更容易出錯  
   
  #   Request   ->   ActionServlet   ->   Create   ActionForm/Action   ->   Set   value   to   ActionForm   ->   Call   Action   ->   ActionServlet   ->   Response/RrequestDispatcher  
   
  #   FrontController  
   
  #   添加新功能(統(tǒng)一異常處理、添加Filter、修改struts-config的結(jié)構(gòu)……)可以重載ActionServlet

什麼是Pass-by-value﹐什麼是Pass-by-reference?   J2EE裡什麼時候用pass-by-value﹐什麼時候用pass-by-value?   為什麼說程序從Remote   Interface到Local   Interface的遷移是不可能的﹐反過來呢?   什麼時候用Local   Interface﹐什麼時候用Remote   Interface?  
   
  #   RMI中調(diào)用遠(yuǎn)程方法時串行化參數(shù)的方法是pbv;串行化參數(shù)stub的回調(diào)方法是pbr  
   
  #   參數(shù)可以串行化Pass-by-Value;參數(shù)是rmi對象Pass-by-reference  
   
  #   不能  
   
  #   同一臺server上可以Local;不同的Remote  
Value   Object   (Data   Transfer   Object)在J2EE系統(tǒng)中的作用是什麼?   為什麼Value   Object要實現(xiàn)Serializable接口?   在你的項目中Value   Object是處于哪些層次之間?   Value   Object給J2EE系統(tǒng)帶來什麼麻煩(給出兩點)?   哪三種情況下Value   Object要用到Collection?  
   
  #   封裝DB訪問/封裝DB數(shù)據(jù)(輕量級)  
   
  #   因為會被做remote的參數(shù)傳遞  
   
  #   業(yè)務(wù)層與數(shù)據(jù)層  
   
  #   輕量級/無事務(wù)管理  
      無統(tǒng)一控制/調(diào)度(需要VLH等配合)  
      大量數(shù)據(jù)性能低   (需要添加cache機(jī)能)  
   
  #   表關(guān)聯(lián)  
      數(shù)據(jù)嵌套  
      包含數(shù)據(jù)數(shù)目不固定


什麼是Optimistic   Concurrency   Control﹐   什麼是Pessimistic   Concurrency   Control?   Time   Stamp在Value   Object中的作用是什麼?   畫出一流程圖闡述從Client到Server到數(shù)據(jù)庫你是如何實現(xiàn)Optimistic   Concurrency   Control的?  
   
  #   非同期的處理方法。OCC認(rèn)為數(shù)據(jù)是完全同步的;PCC認(rèn)為數(shù)據(jù)是完全不同步的。  
   
  #   解決VO過期的問題  


列舉JDBC   Reading   Pattern在EJB中的作用。什麼時候用JDBC   Reading?   JDBC   Reading應(yīng)該放在Stateless   Session   Bean,   Stateful   Session   Bean,   還是Entity   Bean裡?   CMP是如何克服大量數(shù)據(jù)查詢時Entity   BeanN+1次調(diào)用的問題?  
   
  #   "JDBC   Reading   Pattern"   沒有這樣叫過。   不過我想應(yīng)該是相對于EntityBean而言,從sessionBean中直接訪問DB,返回VO的一種pattern稱呼。  
   
  #   stateless   session   bean  
   
  #   SessionFacade   Pattern


什麼是Pooling?   Stateless   Session   Bean和Stateful   Session   Bean的Pooling有何不同?   Stateless   Session   Bean和Stateful   Session   Bean有什麼不同?   Stateful   Session   Bean是如何Persistent它的狀態(tài)的(圖解表示)?  
   
  #   減小對象因為創(chuàng)建/銷毀的開銷  
   
  #   無狀態(tài)/有狀態(tài)  
   
  #   new   EJB   request   ->   LRU   arith   ->   ejbPassivate()   ->   serialize   bean   ->   store   bean   state

在本學(xué)期的課程中我們學(xué)過如何保存Session   State。如果我把Session   State保存在Http   Session中﹐而且我使用Session   Facade設(shè)計模式﹐那麼你的Session   Facade是用Stateless   Session   Bean做呢﹐還是用Stateful   Sessioin   Bean?   為什麼?   闡述我們在課堂上學(xué)到的另一種保存Session   State的方法。  
   
  #   stateful   session   bean  
   
  #   因為可以保存一個handle在session中

Message   Driven   Bean的好處和壞處。  
   
  優(yōu)點:異步  
  缺點:無層次性/結(jié)構(gòu)化不好

 xml文件,主要指struts-config.xml文件,用來實現(xiàn)動態(tài)配置頁面流程,在更大程度上實現(xiàn)并行開發(fā),降低lever之間的耦合。  
  xml文件的缺點,我認(rèn)為有兩方面。  
  1.降低執(zhí)行效率。  
  2.不易調(diào)試  
  但以微弱的執(zhí)行效率降低來換取開發(fā)效率的大幅增加是值得的。對于第二點,我認(rèn)為項目組應(yīng)設(shè)置專門的配置人員。  
   
  至于五大組件如何作用及Controller的作用及提交過程csdn上也已經(jīng)討論的很多了。  
   
  有沒有必要重載Struts的Controller?這個問題我不太理解,can   you   tell   me   in   more   detail,   或讓大家看看原文?