期末考試終于結束了﹐記憶中最可怕的一門就是J2EE大考。
這門課的兩位老師都是牛人﹐一個來自BEA﹐系統架構師﹐是Weblogic 8.1b的開發人員﹐平時負責BEA公司在矽谷地區的面試﹔另一個是UC Berkeley的教授﹐華人﹐創業狂﹐在亞洲和美國都有自己的公司。他們兩位負責了我校J2EE大考的出題。題目"指明了公司對個人的J2EE能力的考察方向﹐也代表了業界對J2EE初級程序員的普遍要求"。我估計這些題目有80%的機會會在BEA的面試中出現。
這裡我憑着自己的記憶把這些考題公佈出來和大家共享。一是為了讓大家對自己的能力有個評估﹐二也是幫我一同解答一些難題。
題目:
1. (這道題是我們的一個項目有關﹐我這裡稍做修改。) 請舉出你最認為滿意的J2EE項目一個﹐用Flow Chart表示其開發流程。你在項目開發最初﹐是否有Screen的設計過程? 列舉Screen設計在項目初期能帶來的三條好處。你認為這個項目失敗的地方在哪裡? 如果開發過程重來一遍﹐你認為哪裡可以改進? 如何改進? (光這道題就花了我將近一個小時﹐導致我後面的題目來不及做。考試時間是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, 或让大家看看原文?