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


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

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


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


列舉JDBC   Reading   Pattern在EJB中的作用。什麼時候用JDBC   Reading?   JDBC   Reading應該放在Stateless   Session   Bean,   Stateful   Session   Bean,   還是Entity   Bean裡?   CMP是如何克服大量數據查詢時Entity   BeanN+1次調用的問題?  
   
  #   "JDBC   Reading   Pattern"   沒有這樣叫過。   不過我想應該是相對于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它的狀態的(圖解表示)?  
   
  #   減小對象因為創建/銷毀的開銷  
   
  #   無狀態/有狀態  
   
  #   new   EJB   request   ->   LRU   arith   ->   ejbPassivate()   ->   serialize   bean   ->   store   bean   state

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

Message   Driven   Bean的好處和壞處。  
   
  優點:異步  
  缺點:無層次性/結構化不好

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