某面試題()

第一部分:選擇題

  QUESTION NO: 1
  public class Test {
  public static void changeStr(String str){
  str="welcome";
  }
  public static void main(String[] args) {
  String str="1234";
  changeStr(str);
  System.out.println(str);
  }
  }
  Please write the output result :
 
 
  QUESTION NO:2
  1. public class Test {
  2. static boolean foo(char c) {
  3. System.out.print(c);
  4. return true;
  5. }
  6. public static void main( String[] argv ) {
  7. int i =0;
  8. for ( foo('A'); foo('B')&&(i<2); foo('C')){
  9. i++ ;
  10. foo('D');
  12. }
  13. }
  14. }
 
  What is the result?
  A. ABDCBDCB
  B. ABCDABCD
  C. Compilation fails.
  D. An exception is thrown at runtime.
 
QUESTION NO: 3
 
  1. class A {
  2. protected int method1(int a, int b) { return 0; }
  3. }
  Which two are valid in a class that extends class A? (Choose two)
  A. public int method1(int a, int b) { return 0; }
  B. private int method1(int a, int b) { return 0; }
  C. private int method1(int a, long b) { return 0; }
     D. public short method1(int a, int b) { return 0; }
  E. static protected int method1(int a, int b) { return 0; }
 
  QUESTION NO: 4
  1. public class Outer{
  2. public void someOuterMethod() {
  3. // Line 3
  4. }
  5. public class Inner{}
  6. public static void main( String[]argv ) {
  7. Outer o = new Outer();
  8. // Line 8
  9. }
  10. }
 
  Which instantiates an instance of Inner?
  A. new Inner(); // At line 3
  B. new Inner(); // At line 8
  C. new o.Inner(); // At line 8
  D. new Outer.Inner(); // At line 8//new Outer().new Inner()
 
 
  QUESTION NO: 5
  Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream?
  A. The encodeURL method of the HttpServletRequest interface.
  B. The encodeURL method of the HttpServletResponse interface.
  C. The rewriteURL method of the HttpServletRequest interface.
  D. The rewriteURL method of the HttpServletResponse interface.
 
 
  QUESTION NO: 7
  Which of the following statements regarding the lifecycle of a session bean are correct?
 
  1. java.lang.IllegalStateException is thrown if SessionContext.getEJBObject() is invoked when a stateful session bean instance is passivated.
  2. SessionContext.getRollbackOnly() does not throw an exception when a session bean with bean-managed transaction demarcation is activated.
  3. An exception is not thrown when SessionContext.getUserTransaction() is called in the afterBegin method of a bean with container-managed transactions.
  4. JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.
  5. Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.
 
 
  第二部分:概念題
  1. 描述Struts體系結構?對應各個部分的開發工作主要包括哪些?
  3. JSP有哪些內置對象和動作?它們的作用分別是什麼?
  4、SQL問答題
  SELECT * FROM TABLE
  和
SELECT * FROM TABLE
WHERE NAME LIKE '%%' AND ADDR LIKE '%%'
  AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'
  OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )
  的檢索結果爲何不同?
 
  5、SQL問答題
  表結構:
  1、 表名:g_cardapply
  字段(字段名/類型/長度):
  g_applyno varchar 8;//申請單號(關鍵字)
  g_applydate bigint 8;//申請日期
  g_state varchar 2;//申請狀態
  2、 表名:g_cardapplydetail
  字段(字段名/類型/長度):
  g_applyno varchar 8;//申請單號(關鍵字)
  g_name varchar 30;//申請人姓名
  g_idcard varchar 18;//申請人身份證號
  g_state varchar 2;//申請狀態
 
  其中,兩個表的關聯字段爲申請單號。
  題目:
  1、 查詢身份證號碼爲440401430103082的申請日期
  2、 查詢同一個身份證號碼有兩條以上記錄的身份證號碼及記錄個數
  3、 將身份證號碼爲440401430103082的記錄在兩個表中的申請狀態均改爲07
  4、 刪除g_cardapplydetail表中所有姓李的記錄
 
 用友公司Java面試題
1.Hashtable和HashMap有什麼區別?
 a.Hashtable是繼承自陳舊的Dictionary類的,HashMap繼承自AbstractMap類同時是Java 1.2引進的Map接口的一個實現。
 b.也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味着,
    雖然你可以不用採取任何特殊的行爲就可以在一個  多線程的應用程序中用一個Hashtable,
    但你必須同樣地爲一個HashMap提供外同步。一個方便的方法就是利用Collections類的靜態的synchronizedMap()方法,
    它創建一個線程安全的Map對象,並把它作爲一個封裝的對象來返回。這個對象的方法可以讓你同步訪問潛在的HashMap。
    這麼做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單線程的應用程序中),
    而且同步增加了很多處理費用。
 c.第三點不同是,只有HashMap可以讓你將空值作爲一個表的條目的key或value。
    HashMap中只有一條記錄可以是一個空的key,但任意數量的條目可以是空的value。
    這就是說,如果在表中沒有發現搜索鍵,或者如果發現了搜索鍵,但它是一個空的值,那麼get()將返回null。
    如果有必要,用containKey()方法來區別這兩種情況。
 d.HashMap去掉了Hashtable的contains方法,保留了containsValue和containsKey方法  
 e.Hashtable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數
2.你怎麼理解MVC模式?
 MVC是SUN早期提出的model2開發模式,強制的把視圖控制和模型層分開
 不僅實現了功能模塊和顯示模塊的分離,同時它還提高了應用系統的可維護性、可擴展性、可移植性和組件的可複用性
3.SQLServer中左聯接查詢用left join,Oracle中用什麼?
  左連接:select(nvl(a.c,0)-nvl(b.c,0)) from a,b where a.id(+)=b.id
  右連接:select(nvl(a.c,0)-nvl(b.c,0)) from a,b where a.id=b.id(+)
  自連接:select(nvl(a.c,0)-nvl(b.c,0)) from a,b where a.id(+)=b.id(+)
  說明:加號寫在左就是左連接,寫在右就是右連接,看加號的方法來定
4.SQLServer中的數據庫,在Oracle中對應的是什麼?
  表空間
5.如果SQLServer中有兩個數據庫,那麼讓你把這兩個數據庫對應到Oracle中,你應該怎麼做?
  在Oracle中建一個用戶,對應兩個表空間
6.有兩個頁面a.jsp和b.jsp,要從a.jsp傳值到b.jsp有幾種方法?分別是什麼?
 a:最常用的方法是用form中的text,<input type=text name=username value=admin>,然後在b.jsp頁面中這樣獲取
    String username=request.getParameter("username");
 b:直接在Url地址欄裏面輸入第一個頁面的地址,在後加問號,然後把要傳的參數及值寫在後面,如有多個用&隔開,然後在下一頁面用
    request.getParameter("參數名")來獲取,例如:http://localhost:8080/a.jsp?username=admin&password=111
    在b.jsp中可用這樣獲取:String username=request.getParameter("username");String username=request.getParameter("password");
 c:在form中放hidden,如:<input type=hidden name=username value=admin>,獲取方法同上
  說明:傳值的方法有很多種,以上是最常用最簡單的幾種方式,當然,如果傳的值有中文的話,需另做處理
6.有三個頁面,a.jsp,b.jsp和c.jsp,流程是:a.jsp->b.jsp->c.jsp,其中a.jsp中提交的數據要在c.jsp中訪問,用最簡單的方法  怎麼做?注意不能放在session裏
  用隱藏表單域,即在b.jsp頁面中用N個hidden把上一頁面提交過來的信息保存下來,然後和當前一起提交,再到c.jsp裏面獲取
  說明:儘量不要用session和少用session
7.jsp和servlet有什麼區別?
 a:servlet是在java代碼裏面放html,jsp是在html裏面放java代碼(最後運行的時候服務器會把JSP解析成servlet)  
 b:servlet是一個java類,有自己的映射,而jsp不是
  說明:區別太多,請參考http://00000000.net.cn/200606/200606097/97681.htm
8.映射是什麼?你怎麼理解映射?
  映射即別名,通過別名可以訪問
9.Hibernate中:不看數據庫,不看XML文件,不看查詢語句,怎麼樣能知道表結構?
  看錶結構對應的類文件,比如UserInfo表對應的UserInfo.java文件
10.SQLServer支持集羣嗎?
  支持,但是是屬於熱備份類型,不能做負載平衡。不過符合你的條件。
  首先系統做集羣,數據庫文件放到磁盤陣列裏,雙機或多機共同訪問磁盤陣列,就可以了
 IIS可以做集羣后負載平衡。
11.爲什麼要用MVC?我從JSP頁面直接訪問數據庫不是更簡單嗎,爲什麼非要先提交到控制再做處理?
   MVC各施其職,互不干涉
   在MVC模式中,三個層各施其職,所以如果一旦哪一層的需求發生了變化,
   就只需要更改相應的層中的代碼而不會影響到其它層中的代碼。  有利於開發中的分工
   在MVC模式中,由於按層把系統開,那麼就能更好的實現開發中的分工。網頁設計人員可以進行開發視圖層中的JSP,
   對業務熟悉的開發人員可開發業務層,而其它開發人員可開發控制層。  有利於組件的重用
   分層後更有利於組件的重用。如控制層可獨立成一個能用的組件,視圖層也可做成通用的操作界面
   說明:這個好處就太多了!!!
12.在struts中,假設有一個對數據庫中一張表的增刪改查的操作,你是寫一個action還是寫多個action?爲什麼?
   寫一個action,讓這個action繼承自DispatchAction,然後在struts-config.xml中給這個action映射加一參數,parameter="method"
   這個在提交到這個action中時,會根據傳來的參數中method的值來執行相應的action的方法,比如,http://localhost:8080/login.do?method=doLogin
   這個提交到action的時會自動找方法名叫doLogin的方法,參數返回值原來一樣ActionForward
13.struts中的actionform有什麼好處?
   struts的actionform其實不好,裏面有一堆屬性,雖然可以自動填充,但是你會發現,在很多情況下(比如你用到Hibernate)
   你還要需要自動寫一個數據庫表的映射類,通常是domain.UserInfo.java,這樣就和strutsform中的屬性重複,所以他很多餘,
   struts1.1版本,保留了actionform,struts1.2中已經有了新的LazyValidatorForm,但仍然保留了原有的actionform,
   而在struts 2.0中已經把actionform去掉了
   下面是解決方法
   a: 把actionform換成DynaActionForm ,和原來不同的是在dynaActionForm可以domain.UserInfo.java的一個實例做爲他的一個屬性
       這樣你就不需要在裏面寫一堆的get,set方法,只是在頁面上綁定稍有不同
   b: 把actionform換成org.apache.struts.validator.LazyValidatorForm,這樣你完全不用寫你的actionform這個類,直接在xml裏面做
       相應配置,當然也可以加上驗證框架
   警告:這個問題是陷阱,實際上struts的actionform很不好,非常麻煩,用久了你會發現他其實是多餘的,所以這個問題你應該說他的壞處,
   和怎麼把actonform去掉,請參考http://tqyq.blog.hexun.com/2911285_d.html
14.用過Hibernate嗎,用它有什麼好處?
   Hibernate的最大的好處就是簡化數據庫的操作,允許你的代碼以對象模式來訪問數據庫內容,
   比如通常我們找一個User的資料需要select出所需要的資料,而通過hibnate我們可以把這個User的資料作爲一個對象來看待
   ,通過User.getName()或者User.getId()等操作來獲得,這樣就完全統一了上層JAVA或者C#等OO語言中對於數據庫的非OO操作的不和諧了.
   另外對於複雜的表和表之間的關聯我們也不用去使用複雜的Select等SQL來操作,而使用對象可以方便獲得,
   比如多對多關係某用戶屬於的部門的名稱,雖然底層數據庫使用了3個表的主鍵關聯操作,
   但是我們可以通過User.getDep().getName()來簡單的獲得,這個就是持久化對象的好處了
   說明:好處太多,只能在用的過程中慢慢體會   只能說一個字:爽
15.通常所說的web應用程序分3層,即MVC,如果我想分四層,應該怎麼分?
加一個Hibernate數據持久層
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章