<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java知識片段

    在面試中,經常要評估面試者的java基礎知識和其他知識的掌握情況,包括public/private/protected/默認修飾符、static/final修飾符、集合、字符串操作、對象比較、異常、設計模式和面試者經常使用的框架等,整理一下自己經常使用的評估方法,:),拋磚中,希望能看到一些好的建議,讓大家更好的學習java知識,同時也更好的判斷人才,挖出真正的“金子”。
    在面試中我更喜歡用一些實際的題目來看面試者對于知識的真正掌握情況,而不是直接問理論,理論的話很多時候都是背出來的,只有在真正的實戰中能結合這些理論,那么才是真正的掌握了。
    1、public/private/protected/默認修飾符
       有如下一段程序:
       package a.b.c;
       public class Test{
           String name="BlueDavy";
           protected String desc="blog.bluedavy.cn";
       }
       package a.b.c;
       public class TestA{
           private String name;
           private String desc;
           public TestA(){
               Test test=new Test();
               name=test.name;
               desc=test.desc;
           }
       }
       package a.b.c.d;
       public class TestB{
            private String name;
            private String desc;
            public TestB(){
               Test test=new Test();
               name=test.name;
               desc=test.desc;
            }
       }
       package a.b.c.d;
       import a.b.c.Test;
       public class TestC extends Test{
            private String cname;
            private String cdesc;
            public TestC(){
               cname=name;
               cdesc=desc;
            }
       }
       請問以上TestA、TestB、TestC能編譯過嗎,如編譯不過,原因是什么?
    2、static/final修飾符
       有如下一段程序:
       package a.b.c;
       public class Test{
           private static int i=0;
           public int getNext(){
              return i++;
           }
       }
       package a.b.c;
       public class TestB{
           public static void main(String[] args){
               Test test=new Test();
               System.out.println(test.getNext());
               Test testObject=new Test();
               System.out.println(testObject.getNext());
               System.out.println(test.getNext());
           }
       }
       請問最后打印出來的是什么,為什么?(這里其實還潛在的考察了i++和++i的不同)   
    3、集合
       有這樣一段程序:
       package a.b.c;
       public class Test{
           public static void main(String[] args){
               List list=new ArrayList();
               list.add("a");
               list.add("b");
               list.add("a");
               Set set=new HashSet();
               set.add("a");
               set.add("b");
               set.add("a");
               System.out.println(list.size());
               System.out.println(set.size());
           } 
       }
       請問運行上面的程序后會打印出的是什么,為什么?
    4、字符串操作
       有這么一段程序:
               String a=new String("a");
               String b="b";
               String c=a+b;
               StringBuffer strBuf=new StringBuffer();
               strBuf.append("a");
               strBuf.append("b");
               String d=strBuf.toString();
               StringBuilder strBuilder=new StringBuilder();
               strBuilder.append("a");
               strBuilder.append("b");
               String e=strBuilder.toString();
       請問以上程序片段中c、d、e的字符串的創建各有什么不同?
    5、對象比較
       有這么一段程序:
       package a.b.c;
       public class Test{
           public String name="BlueDavy";
       }
       package a.b.c;
       public class TestA{
           public static void main(String[] args){
               Test test=new Test();
               Test testB=new Test();
               System.out.println(test.equals(testB));
               System.out.println(test.name.equals(testB.name));
           }
       }
       請問以上程序執行的結果是,為什么?
       潛在問題,如要test.equals(testB)為true,需要怎么做?
    6、異常
       有這樣一段程序:
       package a.b.c;
       public class TestException extends Exception{
           public TestException(String message){
               super(message);
           }
       };
       package a.b.c;
       public class Test{
           public void call(int state) throws IllegalStateException{
               if(state==0)
                  throws new IllegalStateException("state is 0");
           }
           public void invoke(int state) throws TestException{
               if(state==0)
                  throws new TestException("state is 0");
           }
       }
       package a.b.c;
       public class TestA{
           public static void main(String[] args){
                Test test=new Test();
                test.call(0);
                test.invoke(0);
           }
       }
       請問以上的TestA有問題嗎,如沒問題執行的結果是?
    以上的這些題目更多的是從基礎層面去考慮,而且也只是考察了相應知識點的片面的部分,當面試者能正確的過掉這個基礎關后,完全可以更加深入的交流這些基礎知識,例如可以拿實際程序的題目來繼續問集合中HashMap和Hashtable的不同(甚至還可以引入并發場景)、JVM是如何存儲HashMap的key和value的、當存儲的內容超過了HashMap的容量時,jvm會怎么做等問題。
    除了這些基礎知識外,還可以進一步評估對于java io、java thread、java concurrent、java net、java NIO等package的掌握程度。
    更進一步,可以繼續評估面試者對于JMX、JNDI、JTA、RMI、Java classloader、反射、動態代理、GC、JVM內存分配等更為深入的領域的掌握程度,當然,問的問題需要根據所需招的崗位的知識體系來定。
    而設計模式也是在面試時經常會考察的一點:
    例如單態模式,可以請面試者直接手寫一段單態模式的代碼,然后針對代碼可以問些不同的問題,例如有用同步方式寫的,可以問如何減少getInstance的鎖競爭等問題。
    進而可以評估面試者對于更復雜的組合模式以及相關實現技術的掌握程度,例如MVC模式,可以請面試者說出假設不用任何開源的MVC框架,而是自己寫,那么這個時候提交的request的整個處理流程是怎么樣的,如果面試者答的不錯的話,可以繼續問這其中涉及的例如配置文件解析、反射等等問題,另外還可以評估下面試者自己的想法,同樣還有像事件機制如何實現、提供出3個spring bean xml,在沒有spring的情況下怎么將xml中定義的bean初始化并且將所有的依賴注入等等問題。
    在和面試者交流了這些后,可以交流下面試者在其熟悉的框架上的掌握程度。
    還有一點最需要評估的是面試者對于技術的興趣程度,在面試過程中要注意察言觀色,再結合一些技術興趣方面的問題,基本就可以判斷出來了,例如對于技術感興趣的很多會研究一些冷門的技術、對于所感興趣的技術會有比較多的了解、或用技術做一些好玩的東西等等。
    以上所有的問題更多的是面試官根據企業的需求來進行主動的提問,在最后應該問問面試者是否有未問到的,但面試者自己認為比較熟悉的領域,如果有的話,也應進行交流,以能夠更加準確的評估面試者,但畢竟面試的時間通常不會太長,問的問題必然會出現片面性,這個時候面試就存在了一定的運氣成分,因此要很準確的評估是很難做到的,多數的面試方法都是通過多輪面試的方法,以盡量更加準確的進行評估,:)。

    posted on 2008-10-16 23:41 BlueDavy 閱讀(6603) 評論(16)  編輯  收藏 所屬分類: Java

    評論

    # re: java知識片段 2008-10-17 00:20 Kane

    總結的很好!  回復  更多評論   

    # re: java知識片段[未登錄] 2008-10-17 01:04 trace

    不錯 都是很基本的東西 ,不過很有用   回復  更多評論   

    # re: java知識片段 2008-10-17 09:07 yeshucheng

    這題目咋看不難,但是很有陷阱。。。哈哈
    確實不錯,四個作用域都考到了。

    其實還可以測試類的調用順序  回復  更多評論   

    # re: java知識片段 2008-10-17 09:17 foy

    可惜沒遇到博主這樣好的面試官啊  回復  更多評論   

    # re: java知識片段 2008-10-17 10:23 YYX

    1.testB不過
    2.0 1 2
    3. 3 2
    4.只不過想比較下stringbuilder和stringbuffer不同吧,那就是線程安全性上區別而已,另外這里c和e創建過程是一樣的.
    5.false,true,如要test.equals(testB)為true就重寫equals方法,讓他對name比較.
    6.call方法和TestA都有問題,call方法聲明了個RuntimeException作為未捕獲異常是編譯不過的,TestA的main方法則沒有捕獲聲明的TestException.

    能過面試不?  回復  更多評論   

    # re: java知識片段 2008-10-17 10:24 YYX

    是自己想出來的面試題吧?其實可以參考scjp的題出。  回復  更多評論   

    # re: java知識片段 2008-10-17 10:42 galaxystar

    @YYX
    接下來幾題, 還考察了 string pool.
      回復  更多評論   

    # re: java知識片段[未登錄] 2008-10-17 11:19 henry1451

    這些題對于有了一,二年開發經驗的人來說,都不在話下,但面試的時候,在說明問題的原因時,有些面試者可能說的不太準確,但不妨礙使用,比如第4題,呵呵.  回復  更多評論   

    # re: java知識片段 2008-10-17 14:38 Kane

    @YYX
    5, 要同時重載hashCode(), equals()  回復  更多評論   

    # re: java知識片段[未登錄] 2008-10-17 18:43 小xiong

    其實都是些基礎的知識,但是又有難度。

    等自己畢業后出去找工作,要好好的多看這一類面試題目。

    同時也要謝謝博主,對于我這樣未畢業的大學生來說,實在好東西。

    謝謝您了!  回復  更多評論   

    # re: java知識片段 2008-10-17 18:53 yeshucheng

    這里第三題個人覺得沒有考出水平,其實可以結合hashCode(),equals()來做把Set提煉出來  回復  更多評論   

    # re: java知識片段 2008-10-18 11:53 fangfeimengxiang

    請問JAVA 學什么啊
    最初學什么知識啊
    我學JAVA的怎么從計算機基礎學啊
    到現在還不知道是JAVA  回復  更多評論   

    # re: java知識片段 2008-10-23 18:07 ic

    @YYX
    1. TestC也過不了的,因為對name的訪問超過了包訪問權限  回復  更多評論   

    # re: java知識片段 2008-10-23 18:12 ic

    @YYX
    5. 重寫equals()方法,才能使之相等,根據Object的equals()的規約
    if a.equals(b) -> a.hashCode()==b.hashCode()
    所以要把兩個方法都重寫了。  回復  更多評論   

    # re: java知識片段 2008-10-23 18:13 ic

    哎,就要找工作了,還有很多知識不曉得啊。。  回復  更多評論   

    # re: java知識片段 2009-01-23 11:45 MyYate

    if(state==0)
    throws new IllegalStateException("state is 0");
    這個肯能是筆誤吧,throws=》throw

    對于這個問題?
    在沒有spring的情況下怎么將xml中定義的bean初始化并且將所有的依賴注入等等問題、
    這個我想肯定也是和spring方式一樣,全部預先讀取,然后初始化,注入(這兩步也是分單例和原型的)、
    我想請問樓主,這個您是想考察面試者哪些方面的知識?  回復  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2008年10月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人影片麻豆国产影片免费观看| 久久久久久精品成人免费图片 | 亚洲日韩区在线电影| 久久亚洲精品AB无码播放| 在线综合亚洲中文精品| 国产亚洲精彩视频| baoyu116.永久免费视频| 十九岁在线观看免费完整版电影| 久草在视频免费福利| 曰韩亚洲av人人夜夜澡人人爽| 亚洲五月激情综合图片区| 精品一区二区三区免费| 男人的好看免费观看在线视频| 亚洲美女中文字幕| 一级特级女人18毛片免费视频| 99视频在线免费| 亚洲国产精品13p| 亚洲区视频在线观看| 精品无码国产污污污免费网站国产| 一区二区无码免费视频网站| 久久91亚洲人成电影网站| 亚洲日韩AV一区二区三区中文| 99热在线日韩精品免费| 亚洲A∨无码一区二区三区| 色影音免费色资源| 久久精品国产亚洲AV电影| sihu国产精品永久免费| 国产成人高清精品免费软件 | 日韩黄色免费观看| 亚洲成人网在线观看| 两个人看的www免费高清| 亚洲国产成人精品91久久久| 中文字幕免费在线观看动作大片| 亚洲AV中文无码乱人伦下载| 久草免费福利在线| 亚洲国产成人久久精品app| 国产又黄又爽又刺激的免费网址 | 亚洲欧洲校园自拍都市| 成人免费在线观看网站| 亚洲色欲www综合网| 国产zzjjzzjj视频全免费|