欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      java程序員面試題(筆試&面試題)

      時(shí)間:2019-05-14 15:54:49下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《java程序員面試題(筆試&面試題)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《java程序員面試題(筆試&面試題)》。

      第一篇:java程序員面試題(筆試&面試題)

      企業(yè)筆試面試題分析

      本套題目主要出自神州數(shù)碼, 華為, 筆試考試題以及SCJP認(rèn)證考題

      一, 選擇題

      1.下列數(shù)組初始化正確的是:C A int[5] a= {1,2,3,4,5};B int[2][2] a = {{1,2},{3,4}};C int[][] a = {{2,3,4,5},new int[3]};D int[][] a = new int[][5];

      2.下面的程序名為Student.java:B public class Student { private String name;public Student(String s_name)

      //1 { name = s_name;

      }

      public static void main(String args[]){ Student s = new Student();

      //3 } } 使用如下指令編譯:

      javac Student.java 將會(huì)得到什么結(jié)果?

      A.將會(huì)順利通過(guò)編譯,并將產(chǎn)生一個(gè)Student.class的類(lèi)文件。B.編譯時(shí)在//3處出錯(cuò)。(缺少無(wú)參的構(gòu)造方法)C.編譯時(shí)在//2處出錯(cuò)。D.編譯時(shí)在//1處出錯(cuò)。

      3.關(guān)于下述程序:C public class Divide { public static void main(String args[]){ System.out.println(“"17.0/0 = ”“+17.0/0);

      //1 System.out.println(”“17/0 = ”“+17/0);

      //2 } } 描述正確的是? A.編譯出錯(cuò)

      //2 B.編譯通過(guò),運(yùn)行時(shí)//

      1、//2處均出現(xiàn)異常

      C.編譯通過(guò),運(yùn)行時(shí)//1處得到一個(gè)無(wú)窮大值,//2處將出現(xiàn)異常 D.編譯通過(guò),運(yùn)行時(shí)//1處出現(xiàn)異常,//2處將得到一個(gè)無(wú)窮大值

      4.有下面程序:B public class TestString {

      public static void main(String[] args){ String str1 = “abcd”;

      String str2 = “abcd”;字符串連接池 String str3 = new String(“abcd”);String str4 = new String(“abcd”);

      System.out.println(str1==str2);是否指向同一個(gè)對(duì)象 System.out.println(str3==str4);} } 輸出結(jié)果是? A true true

      B true false

      C false true

      D false false

      5.關(guān)于下面的類(lèi)描述中正確的是:C class Test {

      void test(int i){

      System.out.println(”“I am an int.”“);

      }

      void test(String s){

      System.out.println(”“I am a string.”“);

      }

      public static void main(String args[]){

      Test t=new Test();

      char ch='y';

      t.test(ch);

      }

      }

      A.編譯出錯(cuò)

      B.編譯通過(guò),運(yùn)行出錯(cuò)

      C.編譯通過(guò),運(yùn)行時(shí)輸出“I am an int” D.編譯通過(guò),運(yùn)行時(shí)輸出“I am a string”

      6.如希望父類(lèi)中的某成員變量能被任何包中的子類(lèi)直接訪問(wèn),那么定義該變量時(shí)使用限定詞____最適合。C A.public

      B private C protected

      D.default

      7.當(dāng)編譯和運(yùn)行下列程序段時(shí),會(huì)發(fā)生什么? C

      class Base {}

      class Sub extends Base {}

      class Sub2 extends Base {}

      public class CEx{

      public static void main(String argv[]){

      Base b = new Base();

      Sub s =(Sub)b;

      }

      }

      A 通過(guò)編譯和并正常運(yùn)行。

      C 編譯通過(guò),運(yùn)行時(shí)出現(xiàn)異常。

      8.下面正確的是: A A 在Java中類(lèi)只允許單一繼承

      B 在Java中一個(gè)類(lèi)只允許實(shí)現(xiàn)一個(gè)接口

      C 在Java中類(lèi)不能同時(shí)繼承一個(gè)類(lèi)和實(shí)現(xiàn)一個(gè)接口 D 在Java中一個(gè)接口只能繼承一個(gè)接口

      9.下面哪些是java語(yǔ)言中的關(guān)鍵字? B A sizeof

      B abstract

      C NULL

      D Native

      10.下面語(yǔ)句哪個(gè)是正確的? D

      A char c='ab';

      B int l=0xfffL;

      C float f=0.23;float f=0.23f;D double d=0.7E-3;

      11.class ExSuper{

      String name;

      String nick_name;

      public ExSuper(String s,String t){

      name = s;

      nick_name = t;

      }

      public String toString(){

      return name;

      }

      B 編譯時(shí)出現(xiàn)錯(cuò)誤。

      D 以上都錯(cuò)

      }

      public class Example extends ExSuper{

      public Example(String s,String t){

      super(s,t);

      }

      public String toString(){

      return name +”“a.k.a”“+nick_name;

      }

      public static void main(String args[]){

      ExSuper a = new ExSuper(”“First”“,”“1st”“);

      ExSuper b = new Example(”“Second”“,”“2nd”“);

      System.out.println(”“a is”“+a.toString());

      System.out.println(”“b is”“+b.toString());

      }

      } 運(yùn)行結(jié)果是 C A 編譯時(shí)會(huì)出現(xiàn)例外。

      B 運(yùn)行結(jié)果為:

      a is First

      b is second C 運(yùn)行結(jié)果為:

      a is First

      b is Secong a.k.a 2nd D 運(yùn)行結(jié)果為:

      a is First a.k.a 1nd

      b is Second a.k.a 2nd

      12.abstract class MineBase {

      abstract void amethod();

      static int i;

      }

      public class Mine extends MineBase

      {

      public static void main(String argv[]){

      int[] ar = new int[5];

      for(i = 0;i < ar.length;i++)

      System.out.println(ar[i]);

      }

      } 程序編譯運(yùn)行結(jié)果是 C A 打印5個(gè)0。

      B 編譯出錯(cuò),數(shù)組ar[]必須初始化。

      C 編譯出錯(cuò),Mine應(yīng)聲明為abstract。一個(gè)類(lèi)繼承了抽象類(lèi)后而沒(méi)有實(shí)現(xiàn)它的抽象方法,那么這個(gè)類(lèi)也該聲明為抽象類(lèi) D 出現(xiàn)IndexOutOfBoundes的例外。

      13.public class Foo{

      public static void main(String[] args){

      try{

      return;}

      finally{System.out.println(”“Finally”“);

      }

      }

      } 結(jié)果是: B A 程序正常運(yùn)行,但不輸出任何結(jié)果。

      B 程序正常運(yùn)行,并輸出 ”“Finally”“。

      C 編譯能通過(guò),但運(yùn)行時(shí)會(huì)出現(xiàn)一個(gè)例外。

      D 因?yàn)闆](méi)有catch語(yǔ)句塊,所以不能通過(guò)編譯。

      14.哪個(gè)表達(dá)式結(jié)果為true? D Integer i = new Integer(42);Long h = new Long(42);Double d = new Double(42.0);Double dd = new Double(42);

      A

      i == h;B d == dd;C i.equals(h);

      D d.equals(dd);

      15.package語(yǔ)句正確的是 A

      A 必須在程序開(kāi)頭

      B 不一定在程序開(kāi)頭

      C 可以在import之后

      D 包名可以以數(shù)字開(kāi)頭

      16.有關(guān)類(lèi)Demo,哪句描述是正確的? A

      public class Demo extends Base{

      private int count;

      public Demo(){

      System.out.println(”“A Demo object has been created”“);

      }

      protected void addOne(){count++;}

      } A 當(dāng)創(chuàng)建一個(gè)Demo類(lèi)的實(shí)例對(duì)象時(shí),count的值為0。

      B 當(dāng)創(chuàng)建一個(gè)Demo類(lèi)的實(shí)例對(duì)象時(shí),count的值是不確定的。

      C 超類(lèi)對(duì)象中可以包含改變count 值的方法。

      D Demo的子類(lèi)對(duì)象可以訪問(wèn)count。

      17.java中,關(guān)于char類(lèi)型錯(cuò)誤的是C A 占2字節(jié)

      B 可以存儲(chǔ)一個(gè)英文字母 C 不能存儲(chǔ)一個(gè)漢字

      D 其對(duì)應(yīng)的封裝類(lèi)是Character

      18.關(guān)于接口跟抽象類(lèi)正確的是C A 接口能夠創(chuàng)建對(duì)象 B 抽象類(lèi)能夠創(chuàng)建對(duì)象

      C 接口中不能定義變量,都是常量 D 接口中可以有private 方法

      19.關(guān)于內(nèi)部類(lèi)錯(cuò)誤的是:A A 靜態(tài)內(nèi)部類(lèi)可以訪問(wèn)其外部類(lèi)的非靜態(tài)屬性 B 非靜態(tài)內(nèi)部類(lèi)可以訪問(wèn)其外部類(lèi)的靜態(tài)屬性 C 內(nèi)部類(lèi)可以是protected D 內(nèi)部類(lèi)可以是final的

      20.異常處理正確的是: B A 調(diào)用任何可能拋出異常方法,都必須捕捉try catch 或者throws B RuntimeException可以不捕捉或者throws C throw 跟throws 用法是一樣的 D try 必須有catch,可以沒(méi)有finally

      21.Vector 與 ArrayList正確的是: C A

      ArrayList 出現(xiàn)比Vector早

      B ArrayList 速度比Vector慢

      C ArrayList 沒(méi)有同步保護(hù),Vector具有同步保護(hù)

      D ArrayList Vector 兩者都是無(wú)序的集合”

      22.下面在Java線程同步中已經(jīng)不推薦使用,應(yīng)該避免使用的方法是: A join

      B notify

      C wait

      D suspend

      23.Which of the following lines of code will compile without error?

      B A.int i=0;

      if(i){

      System.out.println(“Hi”);

      }

      D B.boolean b=true;

      boolean b2=true;

      if(b=b2){

      System.out.println(“So true”);

      }

      C.int i=1;

      int j=2;

      if(i==1!j==2)

      System.out.println(“OK”);

      D.int i=1;

      int j=2;

      if(i==1 &| j==2)

      System.out.println(“OK”);

      24.下列哪些組件可以為其設(shè)置布局管理器

      A JDialog

      B JFrame

      C JWindow

      D JPanel

      25.下列程序

      C class A

      { public static void main(String[] args)

      {

      B b = new B();

      b.run();

      for(int i=0;i<30;i++)

      {

      System.out.println(”“good”“);

      } } }

      class B extends Thread { public void run(){

      for(int i=0;i<30;i++)

      { System.out.println(”“hello”“);D

      } } };

      A 編譯錯(cuò)誤

      B 編譯正確,執(zhí)行時(shí)good hello交替輸出

      C 編譯正確,執(zhí)行時(shí)先輸出30個(gè)hello再輸出30個(gè)good D 編譯正確,程序運(yùn)行時(shí)出現(xiàn)異常

      26.關(guān)于線程錯(cuò)誤的是 D A 多線程共享同一數(shù)據(jù)可能出現(xiàn)錯(cuò)誤,所以讀寫(xiě)數(shù)據(jù)都需要加同步保護(hù) B 線程在suspend時(shí),不會(huì)釋放同步鎖,因此可能造成死鎖,不推薦使用 C 線程在wait時(shí),可以釋放同步鎖,因此線程通信時(shí)推薦使用。D 線程在sleep時(shí),可以釋放同步鎖。

      27.FileInputStream和FileOutputStream錯(cuò)誤的是C A 是字節(jié)流 B 是節(jié)點(diǎn)流

      C 用其拷貝文件時(shí),不能拷貝中文 D 可以拷貝任何文本文件和2進(jìn)制文件。

      28.下列錯(cuò)誤的是 C A String 類(lèi)對(duì)象具有不可改變的特性,對(duì)象內(nèi)容無(wú)法改變 B StringBuffer 類(lèi)內(nèi)容可以改變

      C 用String類(lèi)比StringBuffer來(lái)做字符串運(yùn)算比較節(jié)約內(nèi)存 D String類(lèi)對(duì)象每次連接都創(chuàng)建一個(gè)新的對(duì)象

      29.一個(gè)類(lèi)中那些內(nèi)容可以在序列化時(shí)寫(xiě)入文件或發(fā)送到網(wǎng)絡(luò)上 D A transient 修飾的屬性 B 靜態(tài)屬性 C 方法 D 類(lèi)名

      30.關(guān)于Collection接口錯(cuò)誤的是: D A Collection下面分為兩個(gè)接口Set跟List接口 B Set接口的實(shí)現(xiàn)類(lèi)是無(wú)序無(wú)重復(fù)集合例如HashSet C List接口的實(shí)現(xiàn)類(lèi)是有序可以重復(fù)集合例如ArrayList與Vector D Map接口也是Collection的子接口,實(shí)現(xiàn)類(lèi)有HashMap和Hashtable

      31.What happens when you try to compile and run the following application? Choose all correct options.A 1.public class Z {

      2.public static void main(String[] args){

      3.new Z();

      4.}

      5.6.Z(){

      7.Z alias1 = this;

      8.Z alias2 = this;

      9.synchronized(alias1){

      10.try {

      11.alias2.wait();

      12.System.out.println(“DONE WAITING”);

      13.}

      14.catch(InterruptedException e){

      15.System.out.println(“INTERRUPTED”);

      16.}

      17.catch(Exception e){

      18.System.out.println(“OTHER EXCEPTION”);

      19.}

      20.finally {

      21.System.out.println

      (“FINALLY”);

      22.}

      23.}

      24.System.out.println(“ALL DONE”);

      25.}

      26.}

      A.The application compiles but doesn?t print anything.B.The application compiles and print “DONE WAITING”

      C.The application compiles and print “FINALLY”

      D.The application compiles and print “ALL DONE”

      E.The application compiles and print “INTERRUPTED”

      32.一個(gè)Java applet 的init()方法如下所示,關(guān)于該applet 運(yùn)行時(shí)顯示的圖形用戶界面下述的論述是正確的 D

      public void init(){

      setLayout(new BorderLayout());

      add(”“East”“, new Button(”“hello”“));}

      選項(xiàng):

      a)在applet中什么也未顯示

      b)在applet窗口正中央顯示一個(gè)按鈕

      c)在applet窗口的左側(cè)顯示一個(gè)按鈕

      d)在applet窗口的右側(cè)顯示一個(gè)按鈕

      e)一個(gè)按鈕填充整個(gè)applet區(qū)域

      33.下列關(guān)于關(guān)系數(shù)據(jù)庫(kù)的說(shuō)法正確的是: A 貯存在列下的數(shù)據(jù)不必具有相同數(shù)據(jù)類(lèi)型。B 行是唯一的(沒(méi)有完全相同的行)。C 列有順序。D 行有順序。

      34.以下不屬于DML數(shù)據(jù)操縱語(yǔ)句的是:D A insert B update C delete D commit

      35.以下sql語(yǔ)句正確的是:D A select studentid,depart,count(*)from student group by depart;B select studentid,count(*)from student;C select depart,max(avg(age))from student group by depart;D select studentid,avg(score),max(score)from score group by studentid

      36.在oracle中提交之前,下面說(shuō)法錯(cuò)誤的是:D A 當(dāng)前的用戶可以看到DML操作的結(jié)果

      B 其他用戶不能看到DML操作的結(jié)果

      C 被操作的數(shù)據(jù)被鎖住,其他用戶不能修改這些數(shù)據(jù) D 所有的 savepoints 被去掉

      37.在JSP中使用標(biāo)記時(shí),不會(huì)出現(xiàn)的屬性是:C A.name

      B.property C.value

      D.以上皆不會(huì)出現(xiàn)

      38.JSP內(nèi)嵌對(duì)象session的類(lèi)型為javax.servlet.http.HttpSession,下述語(yǔ)句會(huì)使該對(duì)象失效的是:C A session.dispose();

      B session.clear();C session.invalidate();

      D session.removeAll();

      39.對(duì)于JavaBean的屬性,下面哪種說(shuō)法是不正確的: D A JavaBean中不一定要有屬性 B JavaBean類(lèi)可以不是public的

      C 要訪問(wèn)和修改JavaBean的屬性,應(yīng)該通過(guò)get/set方法

      D 如果一個(gè)屬性只提供了get方法,那么它是只讀的40.在JSP中調(diào)用JavaBean時(shí)不會(huì)用到的標(biāo)記是:A A

      B

      C D

      41.Page指令用于定義JSP文件中的全局屬性,下列關(guān)于該指令用法的描述不正確的是:D A <%@ page %>作用于整個(gè)JSP頁(yè)面。

      B 可以在一個(gè)頁(yè)面中使用多個(gè)<%@ page %>指令。

      C 為增強(qiáng)程序的可讀性,建議將<%@ page %>指令放在JSP文件的開(kāi)頭,但不是必須的。D <%@ page %>指令中的所有屬性只能出現(xiàn)一次。

      42.標(biāo)簽中scope的范圍由小到大是 D A page session request application B application page request session C application session request page D page request session application

      43.要讓不同用戶共享一個(gè)JavaBean的對(duì)象則該對(duì)象的范圍應(yīng)該設(shè)置為:C A session B page C application D request

      44.關(guān)于 與<%@ include %>的區(qū)別下面錯(cuò)誤的是:B A 用 被包含的頁(yè)面和本頁(yè)面將分別生成兩個(gè)servlet B 用<@ include> 被包含的頁(yè)面和本頁(yè)面將分別生成兩個(gè)servlet C 可以包含jsp和html文件 D <@ include>可以包含jsp和html文件

      45.以下那種請(qǐng)求表明客戶端只想接收到響應(yīng)的頭信息,并決定了接收文擋的大小,修改時(shí)間。D A PUT B GET C TRACE D HEAD

      46.下面為部署文件中的Servlet影射代碼片段,正確的是:C

      A ABC /ABC B ABC /ABC C

      ABC /ABC/* D None of these.47.關(guān)于自定義標(biāo)簽的使用不正確的是:B

      A 必須在JSP頁(yè)面中使用<@taglib> B 必須經(jīng)過(guò)web.xml映射

      C 必須存在tld文件

      D 自定義標(biāo)簽的類(lèi)必須是public的

      48.response.sendRedirect()跳轉(zhuǎn)與跳轉(zhuǎn)錯(cuò)誤的是D A sendRedirect()地址欄中顯示跳轉(zhuǎn)后的地址 B forward跳轉(zhuǎn) 地址欄中顯示跳轉(zhuǎn)前的地址 C forward的時(shí)候可以用傳遞參數(shù) D sendRedirect()不能跳轉(zhuǎn)到servlet E sendRedirect()實(shí)際上是兩次請(qǐng)求

      49.下列,那幾句話會(huì)造成空指針異常(NullPointerException)C

      String s = null;

      1.if((s!=null)&(s.length()>0))

      2.if((s!=null)&&(s.length()>0))

      3.if((s==null)|(s.length()==0))

      4.if((s==null)||(s.length()==0))

      AB 2 C 1 和 3 D 2 和 4

      50.public class Foo {

      public static void main(String [] args){

      StringBuffer a = new StringBuffer(”“A”“);

      StringBuffer b = new StringBuffer(”“B”“);

      operate(a,b);

      System.out.println(a + “,” +b);)

      static void operate(StringBuffer x, StringBuffer y){

      x.append(y);

      y = x;

      }

      }

      編譯運(yùn)行以上程序,結(jié)果是那種?D

      A.The code compiles and prints “A,B”.B.The code compiles and prints “A,A”.C.The code compiles and prints “B,B”.D.The code compiles and prints “AB,B”.E.The code compiles and prints “AB,AB”.F.The code does not compile because “+” cannot be overloaded for StringBuffer.51.struts框架中,關(guān)于FormBean,下列說(shuō)法正確的是:A A FormBean是一種數(shù)據(jù)bean,主要用來(lái)封裝表單提交上來(lái)的數(shù)據(jù),并把這些數(shù)據(jù)傳遞給Action B 在FormBean中可以對(duì)頁(yè)面上傳遞來(lái)的參數(shù)進(jìn)行一下格式上的驗(yàn)證,這種驗(yàn)證是一種客戶端的驗(yàn)證

      C 用戶每次提交表單,都會(huì)產(chǎn)生一個(gè)新的FormBean實(shí)例 D 動(dòng)態(tài)FormBean不能進(jìn)行驗(yàn)證操作

      52.struts框架中,在一個(gè)Action的配置信息中,name屬性指的是:C A 當(dāng)前action實(shí)例的名字

      B 當(dāng)前action所在的類(lèi)的名字

      C 該Action中調(diào)用的FormBean的實(shí)例的名字 D 該Action中調(diào)用的FormBean的類(lèi)的所在包名

      53.struts框架,那些說(shuō)法正確?B A Struts中無(wú)法完成上傳功能 B Struts框架基于MVC模式

      C Struts框架容易引起流程復(fù)雜、結(jié)構(gòu)不清晰等問(wèn)題 D Struts可以有效地降低項(xiàng)目的類(lèi)文件數(shù)目

      54.關(guān)于struts項(xiàng)目中的類(lèi)與MVC模式的對(duì)應(yīng)關(guān)系,說(shuō)法錯(cuò)誤的是?D A Jsp文件實(shí)現(xiàn)視圖View的功能

      B ActionServlet這一個(gè)類(lèi)是整個(gè)struts項(xiàng)目的控制器 C ActionForm、Action都屬于Model部分 D 一個(gè)struts項(xiàng)目只能有一個(gè)Servlet

      55.Linux 系統(tǒng)root密碼忘記,用什么辦法可以最方便的修改密碼?C A 用其他用戶登陸,破解/etc/password文件 B 將硬盤(pán)掛載到其他linux系統(tǒng)上進(jìn)行恢復(fù) C 進(jìn)入單用戶模式進(jìn)行修改 D 清除lilo或者grub

      56.J2ME中關(guān)于Configuration(配置)錯(cuò)誤的是:D A 配置規(guī)范里主要規(guī)定了運(yùn)行J2ME程序的最低要求 B CLDC是連接有限設(shè)備配置 C CDC是連接設(shè)備配置

      D CLDC規(guī)定的類(lèi)庫(kù)與CDC一樣,只是最低要求不同

      57.關(guān)于MIDP正確的是:D

      A 所有的J2ME程序都必定會(huì)使用MIDP B MIDP也是一種Configuration(配置)C MIDP是全稱(chēng)是MIDlet Programming D MIDP是建立在CLDC上的一種Profile

      58.MIDP2.0中不屬于高級(jí)API的類(lèi)是:D A Alert B Gauge C Form D Canvas

      59.關(guān)于XML和HTML語(yǔ)言的錯(cuò)誤的是:B A HTML語(yǔ)言不具有擴(kuò)展性,XML語(yǔ)言具有很好的擴(kuò)展性 B HTML側(cè)重結(jié)構(gòu)話的描述內(nèi)容,XML側(cè)重表現(xiàn)信息的形式 C HTML內(nèi)容與顯示為一體,XML則內(nèi)容與顯示相分離 D HTML語(yǔ)言出現(xiàn)比XML語(yǔ)言早

      60.關(guān)于DTD和Schema錯(cuò)誤的是:C A DTD規(guī)定了XML文件中可以出現(xiàn)的標(biāo)記和標(biāo)記的結(jié)構(gòu)及順序等 B DTD可以在XML文件內(nèi)部或外部

      C 公開(kāi)使用的公用DTD定義時(shí),在DOCTYPE中使用關(guān)鍵字SYSTEM D DTD不符合XML語(yǔ)法,而Schema符合XML的語(yǔ)法

      61.關(guān)于DOM和SAX錯(cuò)誤的是 C A 利用DOM解析xml時(shí),整個(gè)文檔駐留內(nèi)存,文檔很大時(shí)需要大量?jī)?nèi)存 B SAX速度快,但編程比較難,僅能夠串行解析xml C SAX的速度不如DOM快 D SAX分析器缺乏靈活性。

      62.使用EJB的好處錯(cuò)誤的是:D A EJB的結(jié)構(gòu)決定編寫(xiě)分布式程序無(wú)須關(guān)注事務(wù),安全,多線程問(wèn)題,可以提高效率 B EJB開(kāi)發(fā)人員與和底層中間件相隔離,便于開(kāi)發(fā)和分別改進(jìn) C EJB服務(wù)器端僅編寫(xiě)一次,即可隨處運(yùn)行

      D EJB可以從結(jié)構(gòu)上保證了一臺(tái)服務(wù)器崩潰時(shí)其他服務(wù)器可以正常運(yùn)行

      63.關(guān)于RMI錯(cuò)誤的是D A RMI中不能直接對(duì)對(duì)象實(shí)現(xiàn)實(shí)施遠(yuǎn)程調(diào)用,只能對(duì)對(duì)象的接口操作 B RMI底層通過(guò)存根stub和框架skeleton實(shí)現(xiàn)

      C RMI中方法調(diào)用參數(shù)傳遞為值傳遞,傳遞參數(shù)必須可以序列化 D RMI的服務(wù)器與客戶機(jī)中內(nèi)存地址完全互相映射,保證兩邊同步

      64.關(guān)于無(wú)狀態(tài)會(huì)話Bean錯(cuò)誤的是:D A 不保存和客戶的狀態(tài)信息

      B 包括主接口,遠(yuǎn)程接口,Bean類(lèi)和部署描述文件

      C 部署時(shí),EJB容器會(huì)為這個(gè)Bean分配幾個(gè)實(shí)例到組件池中,并由組件池動(dòng)態(tài)管理組件數(shù)量

      D 生命狀態(tài)有四種,存在,不存在,鈍化,激活

      65.關(guān)于有狀態(tài)會(huì)話Bean錯(cuò)誤的是:C A 在客戶端程序引用期間維護(hù)Bean中所有實(shí)例數(shù)據(jù)的狀態(tài)值 B 多個(gè)客戶不會(huì)同時(shí)共享同一個(gè)有狀態(tài)SessionBean實(shí)例 C 鈍化過(guò)程就是容器調(diào)用ejbremove刪除多余EJB實(shí)例的過(guò)程 D 有狀態(tài)會(huì)話Bean的生命狀態(tài)包括不存在,準(zhǔn)備好和鈍化

      66.關(guān)于有狀態(tài)和無(wú)狀態(tài)會(huì)話Bean錯(cuò)誤的是:D A 有狀態(tài)會(huì)話Bean實(shí)例和客戶端是一對(duì)一關(guān)系 B 有狀態(tài)會(huì)話Bean需要的系統(tǒng)資源相對(duì)更多 C 有狀態(tài)會(huì)話Bean執(zhí)行速度相對(duì)更慢 D 無(wú)狀態(tài)會(huì)話Bean生命周期更加復(fù)雜

      67.關(guān)于實(shí)體Bean錯(cuò)誤的是B A 可以分為容器管理持久性(CMP)和Bean管理持久性(BMP)B CMP中變量和數(shù)據(jù)庫(kù)中的字段對(duì)應(yīng)關(guān)系由Bean類(lèi)中的代碼表示 C CMP中可以不用編寫(xiě)對(duì)數(shù)據(jù)庫(kù)操作的代碼,比較簡(jiǎn)單 D BMP中必須有開(kāi)發(fā)者編寫(xiě)數(shù)據(jù)庫(kù)操作代碼

      68.實(shí)體Bean中基本的數(shù)據(jù)庫(kù)操作對(duì)應(yīng)中的方法中錯(cuò)誤的是:C A 插入對(duì)應(yīng)ejbCreate(),ejbPostCreate()B 讀取 ejbLoad()C 修改 ejbUpdate()D 刪除 ejbRemove()

      69.關(guān)于BMP和CMP比較錯(cuò)誤的是:D A BMP和CMP的聲明周期管理機(jī)制是相同的,不同的是BMP的事務(wù)持久性管理機(jī)制交給Bean的開(kāi)發(fā)者

      B CMP編程方便但是降低了Bean的開(kāi)發(fā)能力 C BMP比CMP靈活,常用來(lái)映射復(fù)雜的數(shù)據(jù)視圖或者很難用CMP實(shí)現(xiàn)的復(fù)雜邏輯處理 D 在客戶端的調(diào)用BMP和CMP的方法是不相同的

      70.關(guān)于JMS錯(cuò)誤的是:C A 消息處理機(jī)制提供了異步的非阻塞的消息傳遞機(jī)制,方便實(shí)現(xiàn)松耦合 B 消息傳送分為點(diǎn)對(duì)點(diǎn)和出版訂閱方式

      C 無(wú)論是點(diǎn)對(duì)點(diǎn)還是出版訂閱方式,發(fā)送和接受者運(yùn)行的時(shí)間沒(méi)有關(guān)聯(lián) D 點(diǎn)對(duì)點(diǎn)只有一個(gè)接受者,而出版訂閱方式可以有很多接受者

      71.面向?qū)ο笳Z(yǔ)言的三個(gè)特征 ABD A 封裝 B 繼承 C 抽象 D 多態(tài)

      72.構(gòu)造一個(gè)ArrayList 類(lèi)的實(shí)例,哪個(gè)方法正確:B A

      ArayList List = new Object();B List myList = new ArrayList();C ArrayList myList = new List();D List myList = new List();

      73.指出下列程序的運(yùn)行結(jié)果: B public class Example{ String str = new String(“good”);char[] char = {?a?,?b?,?c?};

      public static void main(String[] args){ Example ex= new Example();ex.change(ex.str,ex.ch);System.out.print(ex.str=” and ”);System.out.print(ex.ch);} public void change(String str,char ch[]){ str = “test ok”;ch[0] = ?g?;} } A good and abc B good and gbc C test ok and abc D test ok and gbc

      74.給定下面代碼片斷

      AD

      public void Test(){ try{ method();System.out.println(“Hello World”);}catch(ArrayIndexOutOfBoundsException e){ System.out.println(“Exception1”);}finally{ System.out.prinlnt(”Thank you!”);} 如果method 正常運(yùn)行返回,會(huì)顯示下面的哪些信息? A Hello World

      B Exception C Exception1 D Thank you!

      75.給出下面代碼段

      CD switch(m){ case 0: System.out.println(“case 0”);case 1:System.out.println(“case 1”);break;case 2:

      default:System.out.println(“default”);} 下面哪些值將引起“default”的輸出 A 0 B 1 C 2 D 3

      76.下列代碼哪一行會(huì)出錯(cuò)?

      C 1)public void modify(){ 2)int i,j,k;3)i=100;4)while(i>0){ 5)j=i*2;6)System.out.println(“Thre value of j is ”+j);7)k = k + 1;8)i--;9)} 10)} A line 4 B line 6 C line 7 D line 8

      77.關(guān)于session論述正確的有:

      BC A 一個(gè)session可以對(duì)應(yīng)數(shù)個(gè)用戶

      B 一個(gè)session只能對(duì)應(yīng)一個(gè)用戶 C 可以手動(dòng)關(guān)閉一個(gè)session D session 如果不手動(dòng)關(guān)閉,會(huì)一直存在Server中

      78.下列哪個(gè)標(biāo)記在html中生成超級(jí)鏈接

      B: A B C D

      79.哪個(gè)關(guān)鍵字可以對(duì)對(duì)象加互斥鎖?

      B A transient B synchronized C serialize D static

      80.下列哪些選項(xiàng)屬于JSP內(nèi)置對(duì)象?

      ABCDE A request B response C session D out E config F context

      81.已知表T1中有2行數(shù)據(jù),T2中有3行數(shù)據(jù),執(zhí)行SQL語(yǔ)句

      D “select a.* from T1 a,T2 b”后,返回的行數(shù)為 A 2 B 3 C 5 D 6

      82.已知表T1和T2的字段定義完全相同,T1,T2中各有5條不同的數(shù)據(jù),其中T1有2條數(shù)據(jù)存在于表T2中,語(yǔ)句”select * from T1 union select * from T2”,返回的行數(shù)為: A A 8 B 10 C 3 D 12

      83.已知表T1含有字段ID,CourseID和Score,且數(shù)據(jù)為

      B ID

      CourseID

      Score 3

      2

      2

      3

      則語(yǔ)句”select id,sum(score)from T1 group by ID”執(zhí)行結(jié)果為 A

      ID

      sum(score)

      170

      175 B

      ID

      sum(score)

      175

      170 C

      ID

      sum(score)

      170

      175 D

      ID

      sum(score)

      175

      170

      84.電話號(hào)碼表t_phonebook中含有100萬(wàn)條數(shù)據(jù),其中號(hào)碼字段phoneno上創(chuàng)建了唯一索引,且電話號(hào)碼全部由數(shù)字組成,要統(tǒng)計(jì)號(hào)碼頭為321的電話號(hào)碼的數(shù)量,下面寫(xiě)法執(zhí)行速度最慢的是

      C A select count(*)from t_phonebook where phoneno>=?321? and phoneno

      85.已知表tbl中字段land_ID建有索引,字段cust_id建有唯一索引,下列語(yǔ)句查詢邏輯相同,其中執(zhí)行效率最優(yōu)的是

      B A select * from tbl where land_id>750 or(cust_id=180 or cust_id=560)B select * from tbl where(cust_id=180 or cust_id=560)or land_id>750

      C select * from tbl where land_id>750 union select * from tbl where cust_id=180 union select * from tbl where cust_id = 560 D select * from tbl where land_id>750 union(select * from tbl where cust_id=180 union all select * from tbl where cust_id=560)

      86.員工表staff表結(jié)構(gòu)如下,staff和skill字段建有唯一約束

      D staff varchar2(10), skill varchar2(10)哪條語(yǔ)句可以查詢同時(shí)擁有技能A和技能B的員工 A select staff from staffskill where skill=?A? or skill=?B? B select staff from staffskill where skill=?A? and skill=?B?

      C select staff from staffskill where skill=?A? or skill=?B? group by staff D select staff from staffskill where skill=?A? or skill=?B? group by staff having count(*)>1

      87.員工表staff結(jié)構(gòu)如下

      C staffno varchar2(10)email varchar2(50)哪一個(gè)SQL語(yǔ)句查詢出沒(méi)有Email地址的員工號(hào) A select staffno from staff where Email = null B select staffno from staff where Email<>null C select staffno from staff where Email is null D select staffno from staff where Email is not null

      88.oracle數(shù)據(jù)庫(kù)啟動(dòng)步驟順序?yàn)?/p>

      A 1 mount 2 open 3 nomount A 3-1-2 B 2-3-1 C 2-1-3 D 3-2-1

      89.存在兩個(gè)結(jié)構(gòu)相同的數(shù)據(jù)庫(kù)表T1(col1,col2,col3)、T2(col1,col2,col3),寫(xiě)出一SQL語(yǔ)句將所有T1數(shù)據(jù)導(dǎo)入到T2表

      D A select col1,col2,col3 from T1 into T2(col1,col2,col3)B insert T1(col1,col,col3)into T2(col1,col2,col3)C insert into T2(col1,col2,col3)as select col1,col2,col3 from T1 D insert into T2(col1,col2,col3)select col1,col2,col3 from T1;

      90.一個(gè)表的字段為varchar2,如果建表時(shí)沒(méi)有指定長(zhǎng)度,則默認(rèn)長(zhǎng)度為

      F A 1 B 25 C 38 D 255 E 4000 F 建表時(shí)varchar2類(lèi)型字段必須指定長(zhǎng)度

      91.用truncate和delete語(yǔ)句刪除表中數(shù)據(jù)的區(qū)別

      A A truncate 命令不記錄日志 B truncate 命令記錄日志 C delete命令不記錄日志

      92.如下查詢語(yǔ)句select id_number ,100/quantity from inventory 如果quantity為空,則查詢語(yǔ)句的第二個(gè)字段將返回

      B A a space B a null value C a value of 0 D a value of 100 E the keywork null

      93.如下語(yǔ)句:select i.id_number, m.id_number from inventory i, manufacturer m where i.manufacturer_id = m.id_number order by inventory.description 執(zhí)行是錯(cuò)誤的,請(qǐng)問(wèn)以下措施哪個(gè)能夠改正這個(gè)錯(cuò)誤?

      A A 在order by字句中使用表的別名 B where 字句中去掉表的別名

      C where字句中用表名代替表的別名

      D order by字句中去掉表名,只要字段名稱(chēng)即可

      94.A 表字段a類(lèi)型int中有100條記錄,值分別為1至100,如下語(yǔ)句select a from A where a between 1 and 50 or(a in(25,70,95)and a between 25 and 75)則如下哪個(gè)值在這個(gè)sql語(yǔ)句返回的結(jié)果集中

      A A 30 B 51 C 75

      D 95

      95.變量v_time=?23-MAY-00?, 如下那條語(yǔ)句返回值為?01-JAN-00??

      B A select round(v_time,?DAY?)from dual B select round(v_time,?YEAR?)from dual C select round(v_time,?MONTH?)from dual D A select round(to_char(v_time,?yyyy?))from dual

      96.關(guān)于索引(index)哪些說(shuō)法是錯(cuò)誤的?

      A A 創(chuàng)建索引能提高數(shù)據(jù)插入的性能

      B 索引應(yīng)該根據(jù)具體檢索需求來(lái)創(chuàng)建,在選擇性好的列上創(chuàng)建索引 C 索引并非越多越好

      97.指出下面sql語(yǔ)句錯(cuò)誤之處

      D select id_number “Part Number”, sum(price)“price” from inventory where price >50 group by “Part Number” order by 2;A order by 2 B from inventory C where price>50 D group by “Part Number”

      98.如下語(yǔ)句

      A if v_num>5 then v_example := 1;elsif v_num>10 then v_example :=2;elsif v_num<20 then v_example :=3;elsif v_num<39 then v_example :=4;else v_example :=5;如果v_num=37,則v_example 的值為 A 1

      B 2

      C 3

      D 4

      E 5

      99.如下語(yǔ)句:

      B begin for i in 1..8 loop if i=2 then null;else if i=5 then rollback;else if i=8 then commit;else insert into texample values(i);end if;end if;end if;end loop;commit;end;執(zhí)行該語(yǔ)句后將有幾條記錄插入到表texample表中

      A 1 B 2

      C 3

      D 4

      100.設(shè)計(jì)一表結(jié)構(gòu),某字段要求存放員工編號(hào),為固定10位長(zhǎng)字符,采用哪種類(lèi)型字段:

      A A char

      B long

      C varchar

      D varray

      二,簡(jiǎn)答題

      1.談?wù)刦inal, finally, finalize的區(qū)別。

      final—修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載

      finally—再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。finalize—方法名。Java 技術(shù)允許使用 finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋 finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。

      2.Anonymous Inner Class(匿名內(nèi)部類(lèi))是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現(xiàn))interface(接口)? 匿名的內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi)。不能extends(繼承)其它類(lèi),但一個(gè)內(nèi)部類(lèi)可以作為一個(gè)接口,由另一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)。

      3.Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好(面試題有的很籠統(tǒng))。

      Nested Class(一般是C++的說(shuō)法),Inner Class(一般是JAVA的說(shuō)法)。Java內(nèi)部類(lèi)與C++嵌套類(lèi)最大的不同就在于是否有指向外部的引用上。

      注: 靜態(tài)內(nèi)部類(lèi)(Inner Class)意味著1創(chuàng)建一個(gè)static內(nèi)部類(lèi)的對(duì)象,不需要一個(gè)外部類(lèi)對(duì)象,2不能從一個(gè)static內(nèi)部類(lèi)的一個(gè)對(duì)象訪問(wèn)一個(gè)外部類(lèi)對(duì)象

      4.&和&&的區(qū)別。

      &是位運(yùn)算符。&&是布爾邏輯運(yùn)算符,&&運(yùn)算速度高(短路與)。

      5.HashMap和Hashtable的區(qū)別。

      都屬于Map接口的類(lèi),實(shí)現(xiàn)了將惟一鍵映射到特定的值上。HashMap 類(lèi)沒(méi)有分類(lèi)或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。

      Hashtable 類(lèi)似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因?yàn)樗峭降摹?/p>

      6.Collection 和 Collections的區(qū)別。

      Collections是個(gè)java.util下的類(lèi),它包含有各種有關(guān)集合操作的靜態(tài)方法。Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。

      7.什么時(shí)候用assert。

      斷言是一個(gè)包含布爾表達(dá)式的語(yǔ)句,在執(zhí)行這個(gè)語(yǔ)句時(shí)假定該表達(dá)式為 true。如果表達(dá)式計(jì)算為 false,那么系統(tǒng)會(huì)報(bào)告一個(gè) AssertionError。它用于調(diào)試目的:

      assert(a > 0);// throws an AssertionError if a <= 0 斷言可以有兩種形式:

      assert Expression1;

      assert Expression1 : Expression2;

      Expression1 應(yīng)該總是產(chǎn)生一個(gè)布爾值。

      Expression2 可以是得出一個(gè)值的任意表達(dá)式。這個(gè)值用于生成顯示更多調(diào)試信息的 String 消息。

      斷言在默認(rèn)情況下是禁用的。要在編譯時(shí)啟用斷言,需要使用 source 1.4 標(biāo)記:

      javac-source 1.4 Test.java 要在運(yùn)行時(shí)啟用斷言,可使用-enableassertions 或者-ea 標(biāo)記。

      要在運(yùn)行時(shí)選擇禁用斷言,可使用-da 或者-disableassertions 標(biāo)記。

      要系統(tǒng)類(lèi)中啟用斷言,可使用-esa 或者-dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。

      可以在預(yù)計(jì)正常情況下不會(huì)到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方法的參數(shù)。不過(guò),斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌?,公有方法都必須檢查其參數(shù)。不過(guò),既可以在公有方法中,也可以在非公有方法中利用斷言測(cè)試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。

      8.GC是什么? 為什么要有GC?(基礎(chǔ))。

      GC是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:

      System.gc()

      Runtime.getRuntime().gc()

      9.String s = new String(”xyz“);創(chuàng)建了幾個(gè)String Object? 兩個(gè)對(duì)象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對(duì)象s。

      10.Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

      11.short s1 = 1;s1 = s1 + 1;有什么錯(cuò)? short s1 = 1;s1 += 1;有什么錯(cuò)? short s1 = 1;s1 = s1 + 1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型。可修改為s1 =(short)(s1 + 1)。short s1 = 1;s1 += 1正確。

      12.sleep()和 wait()有什么區(qū)別? 搞線程的最?lèi)?ài)

      sleep()方法是使線程停止一段時(shí)間的方法。在sleep 時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒(méi)有被調(diào)度為放棄執(zhí)行,除非(a)“醒來(lái)”的線程具有更高的優(yōu)先級(jí)

      (b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?/p>

      wait()是線程交互時(shí),如果線程對(duì)一個(gè)同步對(duì)象x 發(fā)出一個(gè)wait()調(diào)用,該線程會(huì)暫停執(zhí)行,被調(diào)對(duì)象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。

      13.Java有沒(méi)有g(shù)oto? Goto—java中的保留字,現(xiàn)在沒(méi)有在java中使用。

      14.數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法? 數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。String有有l(wèi)ength()這個(gè)方法。

      15.Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型? 方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě)(Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被“屏蔽”了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。

      16.Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別? Set里的元素是不能重復(fù)的,那么用iterator()方法來(lái)區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。

      equals()和==方法決定引用值是否指向同一對(duì)象equals()在類(lèi)中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類(lèi)型相配的話,返回真值。

      17.給我一個(gè)你最常見(jiàn)到的runtime exception。

      ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, NegativeArraySizeException, NoSuchElementException, ProfileDataException, SystemException,ProviderException,UndeclaredThrowableException,IllegalPathStateException, MissingResourceException,NullPointerException,SecurityException,UnmodifiableSetException,RasterFormatException, UnsupportedOperationException

      18.error和exception有什么區(qū)別? error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。

      exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

      19.List, Set, Map是否繼承自Collection接口? List,Set是

      Map不是

      20.abstract class和interface有什么區(qū)別? 聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況。不能創(chuàng)建abstract 類(lèi)的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類(lèi)為。取而代之,在子類(lèi)中實(shí)現(xiàn)該方法。知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法。

      接口(interface)是抽象類(lèi)的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類(lèi)相似,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼承行為。當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。由于有抽象類(lèi),它允許使用接口名作為引用變量的類(lèi)型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口。

      21.abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized? 都不能

      22.接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)? 接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。

      23.啟動(dòng)一個(gè)線程是用run()還是start()? 啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。

      24.構(gòu)造器Constructor是否可被override? 構(gòu)造器Constructor不能被繼承,因此不能重寫(xiě)Overriding,但可以被重載Overloading。

      25.是否可以繼承String類(lèi)? String類(lèi)是final類(lèi)故不可以繼承。

      26.當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法? 不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問(wèn)。

      27.try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后? 會(huì)執(zhí)行,在return前執(zhí)行。

      28.編程題: 用最有效率的方法算出2乘以8等於幾? 有C背景的程序員特別喜歡問(wèn)這種問(wèn)題。2 << 3

      29.兩個(gè)對(duì)象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對(duì)不對(duì)? 不對(duì),有相同的hash code。

      30.當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞? 是值傳遞。Java 編程語(yǔ)言只由值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。

      31.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng)該是 int、short、char 或者 byte。long,string 都不能作用于swtich。

      32.編程題: 寫(xiě)一個(gè)Singleton出來(lái)。

      Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在。一般Singleton模式通常有幾種種形式: 第一種形式: 定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類(lèi)變量,在類(lèi)初始化時(shí)實(shí)例話,通過(guò)一個(gè)public的getInstance方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。

      public class Singleton {

      private Singleton(){}

      //在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?

      //注意這是private 只供內(nèi)部調(diào)用

      private static Singleton instance = new Singleton();

      //這里提供了一個(gè)供外部訪問(wèn)本class的靜態(tài)方法,可以直接訪問(wèn)

      public static Singleton getInstance(){

      return instance;

      }

      }

      第二種形式:

      public class Singleton {

      private static Singleton instance = null;

      public static synchronized Singleton getInstance(){

      //這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次

      //使用時(shí)生成實(shí)例,提高了效率!

      if(instance==null)

      instance=new Singleton();return instance;

      } }

      其他形式: 定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,所有方法為static的。一般認(rèn)為第一種形式要更加安全些

      33.Hashtable和HashMap

      Hashtable繼承自Dictionary類(lèi),而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)

      HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在 多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap

      就必須為之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。

      34.到底 Java 是如何傳遞參數(shù)的?是by value或by reference?

      35.String這個(gè)類(lèi)型的class為何定義成final?

      36.繼承了一個(gè)class叫做 Frotz,編譯器卻給我“No constuctor Frotz()in the class”這樣的錯(cuò)誤提示,為什么呢?

      Super(“aaaa”);

      37.怎樣比較兩個(gè)類(lèi)型為String的字符串?

      equals

      38.float 和 Float有什么區(qū)別? 簡(jiǎn)單類(lèi)型,引用類(lèi)型,封裝類(lèi)

      39.如何將字串String轉(zhuǎn)換成整數(shù)int?

      Integer.parseInt()40.String s = new String(”xyz“);創(chuàng)建了幾個(gè)String Object?

      41.給我一個(gè)你最常見(jiàn)到的runtime exception。

      NullPointerException 42.abstract class和interface有什么區(qū)別?

      43.啟動(dòng)一個(gè)線程是用run()還是start()?

      44.try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

      45.有13個(gè)小球,其中有一個(gè)和其他的重量不一樣,只用天平稱(chēng)量3次,如何找出壞球?

      46.已有學(xué)員信息表{學(xué)號(hào);姓名},表中已有記錄:{1,張一;2,張二;…….100,張一百},現(xiàn)在要把李四放到學(xué)號(hào)54的位置,后面的其他學(xué)員,學(xué)號(hào)依次遞增,請(qǐng)寫(xiě)出sql語(yǔ)句實(shí)現(xiàn)。

      update student1 set id=id+1 where id>=54;insert into student1 values(54,'ab');47.已有學(xué)員信息表{學(xué)號(hào),班級(jí),學(xué)科,姓名,成績(jī)},現(xiàn)要查詢出各班語(yǔ)文成績(jī)前10名,并且數(shù)學(xué)成績(jī)不在倒數(shù)10名范圍內(nèi)的人員信息,請(qǐng)寫(xiě)出sql語(yǔ)句實(shí)現(xiàn)。

      select * from(select * from 信息表 where 學(xué)科=?語(yǔ)文? order by 成績(jī) desc)where rownum<=10 minus select * from(select * from 信息表 where 學(xué)科=?數(shù)學(xué)? order by 成績(jī) asc)where rownum<=10 48.請(qǐng)寫(xiě)出你知道的幾種J2EE的核心技術(shù)的名稱(chēng),并簡(jiǎn)要解釋。

      Servlet JSP JNDI RMI JDBC JavaMail JMS JTA/JTS EJB

      49.斯諾克臺(tái)球共有15*8個(gè)一分球,2,3,4,5,6,7分球各一個(gè),規(guī)則是先打一個(gè)最低分球,然后可以打一個(gè)其他分值的球,如此反復(fù),如果臺(tái)面還有更低分值的球,打入的高分球計(jì)分,同時(shí)拿出來(lái)放回原位置,要求寫(xiě)一段簡(jiǎn)單的java函數(shù),實(shí)現(xiàn)輸入臺(tái)面上剩余球的數(shù)目,計(jì)算出可得的最高分。(不考慮罰分等特殊情況)

      50.比較Java開(kāi)發(fā)中常用的XML解析API,說(shuō)明各自的原理及優(yōu)缺點(diǎn)。

      51.寫(xiě)一個(gè)應(yīng)用程序,接收用戶輸入的日期參數(shù)(格式為字符串:yyyy-mm-dd),在控制臺(tái)輸出該日期前一天的日期(格式與輸入?yún)?shù)相同),要求代碼清晰規(guī)范、具有良好的可讀性和容錯(cuò)能力。

      52.如何在Weblogic8中配置JAVA消息服務(wù)(JMS)?寫(xiě)出需要配置的項(xiàng)目及步驟。

      53.已知weblogic服務(wù)器的的IP地址為192.168.0.1,domain的端口為7001,用戶名密碼均為weblogic,其中部署了一個(gè)會(huì)話Bean,主接口為BookHome,遠(yuǎn)程接口為Book,實(shí)現(xiàn)類(lèi)為BookBean,Jndi名稱(chēng)為Book,寫(xiě)一段程序調(diào)用該會(huì)話Bean的getBooks()方法。

      Hashtable h = new Hashtable();h.Context ctx = new InitialContext(h);BookHome home

      =(BookHome)ProtableRemoteObject.narrow(Ctx.lookup(“Book”),BookHome.class);Book b = home.create();54.JSP中有哪些跳轉(zhuǎn)方式,那種方式效率較高? Response.sendRediret(); Request.getRequstDispacher().forward();55. 與<%@include %>兩種包含方式有什么區(qū)別?

      56.Form表單的提交方式有幾種各有什么不同?

      Post get 57.簡(jiǎn)述Oracle中SGA的組成部分

      58.Oracle的啟動(dòng)和關(guān)閉各有多少步驟

      59.Oracle表空間的分類(lèi)和作用,如排序時(shí)數(shù)據(jù)將放在什么表空間

      永久表空間、臨時(shí)表空間和還原表空間,排序時(shí)數(shù)據(jù)放在臨時(shí)表空間,還原表空間用于記錄重做日志。60.commit時(shí),數(shù)據(jù)庫(kù)將會(huì)發(fā)生什么變化,rollback呢? 61.用命令創(chuàng)建用戶,并為用戶授權(quán)

      62.寫(xiě)一個(gè)存儲(chǔ)過(guò)程,使employee(name,age,emp_no,salary)表中的salary值在0-1000之間的員工的工資上漲20% 要求使用游標(biāo)

      create or replace procedure pro_increatesal is

      cursor emp_cur is select sal from emp for update;begin

      for cur in emp_cur loop

      if(cur.sal between 0 and 1000)then

      update emp set sal=sal*1.2 where current of emp_cur;end if;end loop;commit;end pro_increatesal;

      63.Oracle數(shù)據(jù)庫(kù)中都有哪些類(lèi)型的文件 64.簡(jiǎn)述Servlet生命周期

      65.如何在Oracle中查詢某個(gè)用戶下所有的表

      66.truncate后,存儲(chǔ)空間是否還存在,是否可以被其他的表占用 67.Javascript如何提交表單 Document.formname.submit();68.如何返回前一個(gè)頁(yè)面

      History.back();69.怎樣給一個(gè)form元素動(dòng)態(tài)賦值 Document.form.action=””;Document.form.xxx.value=””;70.Oracle中控制文件什么時(shí)候讀取?

      裝載數(shù)據(jù)庫(kù)的時(shí)候

      71.Oracle中用戶正在執(zhí)行一個(gè)操作過(guò)程,管理員取消了他的權(quán)限,會(huì)發(fā)生什么?

      正執(zhí)行的操作被回滾 72.Oracle索引分幾種?說(shuō)明唯一索引和位圖索引

      普通索引、唯一索引、位圖索引 73.將int轉(zhuǎn)換為String有幾種方法?

      String s1 = I + “”;String s2 = String.valueOf(i);String s3 = Integer.toString(i);74.簡(jiǎn)述什么是事務(wù)

      75.談?wù)刢ookie的作用,session的作用,session與cookie的區(qū)別和聯(lián)系 76.jsp有哪些內(nèi)置對(duì)象?作用分別是什么? 77.Java 的基本數(shù)據(jù)類(lèi)型有哪些?String是不是基本數(shù)據(jù)類(lèi)型? 78.作用域public,private,protected,不寫(xiě)時(shí)的區(qū)別

      79.在控制臺(tái)輸入一個(gè)字符串,然后按照逆序打印出來(lái)

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String str = Br.readLne();StringBuffer sb = new StringBuffer(str);Sb.reverse();System.out.println(sb.toString());This is a test for you;

      StringTokenizer

      split you for test a is This;80.用Java實(shí)現(xiàn)冒泡怕學(xué),數(shù)據(jù)不用輸入,直接定義數(shù)組即可,打印到控制臺(tái)

      81.編寫(xiě)一個(gè)訪問(wèn)oracle數(shù)據(jù)庫(kù)的程序,要求從數(shù)據(jù)庫(kù)中查詢出employees 中三個(gè)列的值(empid,lastname,email)輸出到控制臺(tái) url: jdbc:oracle:thin:@10.70.112.254:1521:oracle 登陸名hr密碼hr 定義encode()和decode()方法,encode方法用來(lái)按一定規(guī)則轉(zhuǎn)換字符串,decode方法把encode方法轉(zhuǎn)換的字符串再轉(zhuǎn)換回來(lái),encode規(guī)則如下: 1,如果當(dāng)前字符是數(shù)字切不大與0,復(fù)制當(dāng)前字符;

      2,如果當(dāng)前字符是數(shù)字且大于0,如果當(dāng)前字符有后繼字符,則設(shè)置整數(shù)N等于當(dāng)前字符數(shù)值,把后繼字符復(fù)制N+1次

      3,如果當(dāng)前字符既不是數(shù)字也不是”_“,則復(fù)制當(dāng)前字符

      4,如果當(dāng)前字符是”_“,則替換為”UL“ 5,上面沒(méi)次操作完畢,再后面追加一個(gè)”_“;

      例:有字符串”23_2b/5“ 則轉(zhuǎn)換完字符串為:”333_____UL_bbb_/_5“ 再寫(xiě)decode方法 把轉(zhuǎn)換后的字符串再轉(zhuǎn)換回去

      驗(yàn)證字符串:

      字符串

      轉(zhuǎn)換后字符串

      _b2_U2ab__

      _UL_b____UL__U_aaa_a_b_UL_UL 3__UL012_3b_ _____UL_UL__U_L_0_22____UL_bbbb_b__UL class Jiami {

      public String encode(String str){

      } char[] cs = str.toCharArray();StringBuffer sb = new StringBuffer();for(int i=0;i

      } return sb.toString();if(cs[i]=='0'){ sb.append(cs[i]);}else if(cs[i]>'0'&&cs[i]<='9'){ int n = cs[i]-'0'+1;

      if(i!=cs.length-1){

      } for(int j=0;j

      StringBuffer sb = new StringBuffer();StringBuffer sb2 = new StringBuffer(str);String[] ss = str.split(”_“);for(int i=0;i

      int j = i;

      if(ss[j].equals(”“)){ int n = 0;while(true){

      ;

      }

      }

      } if(!ss[j].equals(”“)){ break;} j++;i++;n++;if(sb.length()==0)sb.append(n-2);else if(sb.charAt(sb.length()-1)>'9'||sb.charAt(sb.length()-1)<'0')sb.append(n-2);sb.append(”_“);}else if(ss[j].equals(”UL“)){ sb.append(”_“);}else{ int le = ss[j].length();

      } if(le==1){ sb.append(ss[j]);}else{

      } sb.append(le-1);sb.append(ss[j].charAt(0));i++;return sb.toString();public static void main(String[] args){ Jiami j= new Jiami();System.out.println(j.encode(”3__UL012_3b_“));System.out.println(j.decode(”_____UL_UL__U_L_0_22_____UL_bbbb_b__UL_"))} } 82.已知表T1 包含字段ID,對(duì)同一個(gè)ID的取值,可能存在多條數(shù)據(jù),請(qǐng)完成SQL語(yǔ)句,查詢T1中對(duì)應(yīng)大于1條數(shù)據(jù)ID及其對(duì)應(yīng)數(shù)據(jù)的條數(shù) select ID,count(*)from T1 group by ID having count(*)>1 83.已知表T1、T2和T3的結(jié)構(gòu)和數(shù)據(jù)如下 T1

      NameID

      CourseID

      Score 1

      1

      2

      2

      T2 ID

      Course 1 數(shù)學(xué) 2 T3 ID

      Name 1 張三 李四

      請(qǐng)寫(xiě)出查詢的SQL語(yǔ)句使得查詢結(jié)果為: Name

      Course

      Score------------張三

      數(shù)學(xué)

      張三

      語(yǔ)文

      李四

      數(shù)學(xué)

      李四

      語(yǔ)文

      Select t3.name,t2.course,t1.score from t1,t2,t3 where t1.nameid=t3.id and t1.courseid=t2.id;語(yǔ)文

      第二篇:JAVA程序員面試題

      JAVA程序員面試題

      第一,談?wù)刦inal, finally, finalize的區(qū)別。

      final?修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

      finally?再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。

      finalize?方法名。Java 技術(shù)允許使用 finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋 finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。

      第二,Anonymous Inner Class(匿名內(nèi)部類(lèi))是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現(xiàn))interface(接口)?

      匿名的內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi)。不能extends(繼承)其它類(lèi),但一個(gè)內(nèi)部類(lèi)可以作為一個(gè)接口,由另一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)。

      第三,Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好(面試題有的很籠統(tǒng))。

      Nested Class(一般是C++的說(shuō)法),Inner Class(一般是JAVA的說(shuō)法)。Java內(nèi)部類(lèi)與C++嵌套類(lèi)最大的不同就在于是否有指向外部的引用上。注: 靜態(tài)內(nèi)部類(lèi)(Inner Class)意味著1創(chuàng)建一個(gè)static內(nèi)部類(lèi)的對(duì)象,不需要一個(gè)外部類(lèi)對(duì)象,2不能從一個(gè)static內(nèi)部類(lèi)的一個(gè)對(duì)象訪問(wèn)一個(gè)外部類(lèi)對(duì)象

      第四,&和&&的區(qū)別。

      &是位運(yùn)算符。&&是布爾邏輯運(yùn)算符。

      第五,HashMap和Hashtable的區(qū)別。

      都屬于Map接口的類(lèi),實(shí)現(xiàn)了將惟一鍵映射到特定的值上。

      HashMap 類(lèi)沒(méi)有分類(lèi)或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。

      Hashtable 類(lèi)似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因?yàn)樗峭降摹?/p>

      第六,Collection 和 Collections的區(qū)別。

      Collections是個(gè)java.util下的類(lèi),它包含有各種有關(guān)集合操作的靜態(tài)方法。

      Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。

      第七,什么時(shí)候用assert。

      斷言是一個(gè)包含布爾表達(dá)式的語(yǔ)句,在執(zhí)行這個(gè)語(yǔ)句時(shí)假定該表達(dá)式為 true。如果表達(dá)式計(jì)算為 false,那么系統(tǒng)會(huì)報(bào)告一個(gè) AssertionError。它用于調(diào)試目的:

      assert(a > 0);// throws an AssertionError if a <= 0 斷言可以有兩種形式:

      assert Expression1;

      assert Expression1 : Expression2;Expression1 應(yīng)該總是產(chǎn)生一個(gè)布爾值。

      Expression2 可以是得出一個(gè)值的任意表達(dá)式。這個(gè)值用于生成顯示更多調(diào)試信息的 String 消息。

      斷言在默認(rèn)情況下是禁用的。要在編譯時(shí)啟用斷言,需要使用 source 1.4 標(biāo)記:

      javac-source 1.4 Test.java

      要在運(yùn)行時(shí)啟用斷言,可使用-enableassertions 或者-ea 標(biāo)記。

      要在運(yùn)行時(shí)選擇禁用斷言,可使用-da 或者-disableassertions 標(biāo)記。

      要系統(tǒng)類(lèi)中啟用斷言,可使用-esa 或者-dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。可以在預(yù)計(jì)正常情況下不會(huì)到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方法的參數(shù)。不過(guò),斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌?,公有方法都必須檢查其參數(shù)。不過(guò),既可以在公有方法中,也可以在非公有方法中利用斷言測(cè)試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。

      第八,GC是什么? 為什么要有GC?(基礎(chǔ))。

      GC是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:

      System.gc()

      Runtime.getRuntime().gc()

      第九,String s = new String(“xyz”);創(chuàng)建了幾個(gè)String Object?

      兩個(gè)對(duì)象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對(duì)象s。

      第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

      Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

      第十一,short s1 = 1;s1 = s1 + 1;有什么錯(cuò)? short s1 = 1;s1 += 1;有什么錯(cuò)?

      short s1 = 1;s1 = s1 + 1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型??尚薷臑閟1 =(short)(s1 + 1)。short s1 = 1;s1 += 1正確。

      第十二,sleep()和 wait()有什么區(qū)別? 搞線程的最?lèi)?ài)

      sleep()方法是使線程停止一段時(shí)間的方法。在sleep 時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒(méi)有被調(diào)度為放棄執(zhí)行,除非(a)“醒來(lái)”的線程具有更高的優(yōu)先級(jí)(b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?/p>

      wait()是線程交互時(shí),如果線程對(duì)一個(gè)同步對(duì)象x 發(fā)出一個(gè)wait()調(diào)用,該線程會(huì)暫停執(zhí)行,被調(diào)對(duì)象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。

      第十三,Java有沒(méi)有g(shù)oto?

      Goto?java中的保留字,現(xiàn)在沒(méi)有在java中使用。

      第十四,數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法? 數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。String有l(wèi)ength()這個(gè)方法。

      第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型?

      方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě)(Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被“屏蔽”了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。

      第十六,Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?

      Set里的元素是不能重復(fù)的,那么用iterator()方法來(lái)區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。

      equals()和==方法決定引用值是否指向同一對(duì)象equals()在類(lèi)中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類(lèi)型相配的話,返回真值。第十七,給我一個(gè)你最常見(jiàn)到的runtime exception。

      ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

      第十八,error和exception有什么區(qū)別?

      error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

      第十九,List, Set, Map是否繼承自Collection接口? List,Set是

      Map不是

      第二十,abstract class和interface有什么區(qū)別?

      聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況。不能創(chuàng)建abstract 類(lèi)的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類(lèi)為。取而代之,在子類(lèi)中實(shí)現(xiàn)該方法。知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法。

      接口(interface)是抽象類(lèi)的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類(lèi)相似,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼承行為。當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。由于有抽象類(lèi),它允許使用接口名作為引用變量的類(lèi)型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口。

      第二十一,abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized? 都不能

      第二十二,接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)?

      接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。

      第二十三,啟動(dòng)一個(gè)線程是用run()還是start()?

      啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。

      第二十四,構(gòu)造器Constructor是否可被override?

      構(gòu)造器Constructor不能被繼承,因此不能重寫(xiě)Overriding,但可以被重載Overloading。

      第二十五,是否可以繼承String類(lèi)? String類(lèi)是final類(lèi)故不可以繼承。

      第二十六,當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

      不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問(wèn)。

      第二十七,try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后? 會(huì)執(zhí)行,在return前執(zhí)行。

      第二十八,編程題: 用最有效率的方法算出2乘以8等於幾? 有C背景的程序員特別喜歡問(wèn)這種問(wèn)題。<< 3

      第二十九,兩個(gè)對(duì)象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對(duì)不對(duì)? 不對(duì),有相同的hash code。

      第三十,當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

      是值傳遞。Java 編程語(yǔ)言只由值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。

      第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

      switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng)該是 int、short、char 或者 byte。long,string 都不能作用于swtich。

      第三十二,編程題: 寫(xiě)一個(gè)Singleton出來(lái)。

      Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在。

      一般Singleton模式通常有幾種種形式:

      第一種形式: 定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類(lèi)變量,在類(lèi)初始化時(shí)實(shí)例話,通過(guò)一個(gè)public的getInstance方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。public class Singleton {

      private Singleton(){}

      //在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?

      //注意這是private 只供內(nèi)部調(diào)用

      private static Singleton instance = new Singleton();

      //這里提供了一個(gè)供外部訪問(wèn)本class的靜態(tài)方法,可以直接訪問(wèn)

      public static Singleton getInstance(){

      return instance;

      } }

      第二種形式:

      public class Singleton {

      private static Singleton instance = null;

      public static synchronized Singleton getInstance(){

      //這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次

      //使用時(shí)生成實(shí)例,提高了效率!

      if(instance==null)

      instance=new Singleton();return instance;

      } }

      其他形式:

      定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,所有方法為static的。一般認(rèn)為第一種形式要更加安全些 第三十三 Hashtable和HashMap

      Hashtable繼承自Dictionary類(lèi),而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)

      HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許

      還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。

      最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在

      多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap

      就必須為之提供外同步。

      Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。

      1:abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?

      2:當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的

      結(jié)果,那么這里到底是值傳遞還是引用傳遞?

      3:Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們 有何區(qū)別?

      4:構(gòu)造器Constructor是否可被override?

      5:當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

      6:兩個(gè)對(duì)象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對(duì)不對(duì)

      關(guān)于參數(shù)傳遞:

      其實(shí)JAVA里對(duì)參數(shù)的傳遞在國(guó)際上都是一直有爭(zhēng)論的。包括《Think in java》里都提到了,Bruce Eckel 也沒(méi)給出定論。我覺(jué)得這很大程度上是由于規(guī)范不嚴(yán)格造成的。因?yàn)榇蠹叶贾绤?shù)傳遞的本質(zhì)是什么,但描述方式不一樣,以致造成答案不一致。

      現(xiàn)給一些參考:

      第一,JAVA 里的參數(shù)傳遞只有值傳遞,沒(méi)有所謂的引用傳遞。(說(shuō)白了,是因?yàn)榇蠹业恼f(shuō)法 不統(tǒng)一)

      第二,引用一個(gè)強(qiáng)人的觀點(diǎn) jamesfancy()邊城狂人(James Fancy):

      “1.首先明白參數(shù)的傳遞實(shí)質(zhì)是壓棧和出棧的過(guò)程。即在調(diào)用一個(gè)方法(或說(shuō)子程序)之前,先將需要傳入的參數(shù)壓棧,然后執(zhí)行代碼的指針跳轉(zhuǎn)到方法的起始位置,進(jìn)行出棧操作,原來(lái)壓入棧中的參數(shù)取出置入方法中的局部變量(這里即參數(shù)變量)。

      2.對(duì)于基本類(lèi)型,傳遞的參數(shù)都是對(duì)原變量值的拷貝。每一個(gè)基本類(lèi)型的數(shù)據(jù)都是以字節(jié)形式保存在內(nèi)存中的(如整型是4個(gè)字節(jié),長(zhǎng)整型是8個(gè)字節(jié)等),壓棧時(shí)會(huì)將內(nèi)存中的變量值按字節(jié)存入棧中,而原變量的值(即保存在原位置的內(nèi)容)并不改變??內(nèi)存中的數(shù)據(jù)是保存在堆中的,參數(shù)是保存在棧中的,總不可能把內(nèi)存塊搬過(guò)來(lái)是吧......所以一定是拷貝的!

      3.先搞明白引用的實(shí)質(zhì)。當(dāng)一個(gè)對(duì)象創(chuàng)建后,它的內(nèi)容(N個(gè)字節(jié))被保存在內(nèi)存中。它的位置,即一個(gè)地址址,被返回,保存在一個(gè)引用變量中??所以實(shí)際上一個(gè)引用變量保存的只是某個(gè)類(lèi)的地址,而引用的類(lèi)型,并不會(huì)改變引用變量的大小,它只是說(shuō)明一個(gè)對(duì)象的數(shù)據(jù)大小。這樣,就可以從引用變量找到對(duì)象的起始地址,再通過(guò)類(lèi)型,獲取對(duì)象數(shù)據(jù)。而通過(guò)引用調(diào)用的方法,屬性這些東西,就是通過(guò)在這塊內(nèi)存地址中的位置偏移來(lái)尋址的。(當(dāng)然,實(shí)際的操作會(huì)比我說(shuō)的復(fù)雜得多,因?yàn)檫€涉及向上向下傳型等問(wèn)題)

      4.引用參數(shù)的傳遞,實(shí)際上就是傳遞的引用變量的值,這和傳遞基本類(lèi)型的值原理是一樣的。但由于引用變量其值的特殊性(只是一個(gè)地址,這個(gè)地址上保存的才是對(duì)象的實(shí)際數(shù)據(jù)),所以,引用變量的值傳入?yún)?shù)變量后,通過(guò)參數(shù)變量對(duì)對(duì)象的修改(在實(shí)際地址上的操作)自然就會(huì)影響到同一個(gè)對(duì)象。??這里,外面的引用變量和參數(shù)變量,本身是不同的,但是它們的值相同,都是對(duì)象的地址。

      第一,談?wù)刦inal, finally, finalize的區(qū)別。

      final?修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

      finally?再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。

      finalize?方法名。Java 技術(shù)允許使用 finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋 finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。

      第二,Anonymous Inner Class(匿名內(nèi)部類(lèi))是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現(xiàn))interface(接口)?

      匿名的內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi)。不能extends(繼承)其它類(lèi),但一個(gè)內(nèi)部類(lèi)可以作為一個(gè)接口,由另一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)。

      第三,Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好(面試題有的很籠統(tǒng))。

      Nested Class(一般是C++的說(shuō)法),Inner Class(一般是JAVA的說(shuō)法)。Java內(nèi)部類(lèi)與C++嵌套類(lèi)最大的不同就在于是否有指向外部的引用上。注: 靜態(tài)內(nèi)部類(lèi)(Inner Class)意味著1創(chuàng)建一個(gè)static內(nèi)部類(lèi)的對(duì)象,不需要一個(gè)外部類(lèi)對(duì)象,2不能從一個(gè)static內(nèi)部類(lèi)的一個(gè)對(duì)象訪問(wèn)一個(gè)外部類(lèi)對(duì)象

      第四,&和&&的區(qū)別。

      &是位運(yùn)算符。&&是布爾邏輯運(yùn)算符。

      第五,HashMap和Hashtable的區(qū)別。

      都屬于Map接口的類(lèi),實(shí)現(xiàn)了將惟一鍵映射到特定的值上。HashMap 類(lèi)沒(méi)有分類(lèi)或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。

      Hashtable 類(lèi)似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因?yàn)樗峭降摹?/p>

      第六,Collection 和 Collections的區(qū)別。

      Collections是個(gè)java.util下的類(lèi),它包含有各種有關(guān)集合操作的靜態(tài)方法。

      Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。

      第七,什么時(shí)候用assert。

      斷言是一個(gè)包含布爾表達(dá)式的語(yǔ)句,在執(zhí)行這個(gè)語(yǔ)句時(shí)假定該表達(dá)式為 true。如果表達(dá)式計(jì)算為 false,那么系統(tǒng)會(huì)報(bào)告一個(gè) AssertionError。它用于調(diào)試目的:

      assert(a > 0);// throws an AssertionError if a <= 0 斷言可以有兩種形式:

      assert Expression1;

      assert Expression1 : Expression2;Expression1 應(yīng)該總是產(chǎn)生一個(gè)布爾值。

      Expression2 可以是得出一個(gè)值的任意表達(dá)式。這個(gè)值用于生成顯示更多調(diào)試信息的 String 消息。

      斷言在默認(rèn)情況下是禁用的。要在編譯時(shí)啟用斷言,需要使用 source 1.4 標(biāo)記: javac-source 1.4 Test.java

      要在運(yùn)行時(shí)啟用斷言,可使用-enableassertions 或者-ea 標(biāo)記。

      要在運(yùn)行時(shí)選擇禁用斷言,可使用-da 或者-disableassertions 標(biāo)記。

      要系統(tǒng)類(lèi)中啟用斷言,可使用-esa 或者-dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。

      可以在預(yù)計(jì)正常情況下不會(huì)到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方法的參數(shù)。不過(guò),斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌?,公有方法都必須檢查其參數(shù)。不過(guò),既可以在公有方法中,也可以在非公有方法中利用斷言測(cè)試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。

      第八,GC是什么? 為什么要有GC?(基礎(chǔ))。

      GC是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:

      System.gc()

      Runtime.getRuntime().gc()

      第九,String s = new String(”xyz“);創(chuàng)建了幾個(gè)String Object?

      兩個(gè)對(duì)象,一個(gè)是”xyx“,一個(gè)是指向”xyx“的引用對(duì)象s。

      第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

      Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

      第十一,short s1 = 1;s1 = s1 + 1;有什么錯(cuò)? short s1 = 1;s1 += 1;有什么錯(cuò)?

      short s1 = 1;s1 = s1 + 1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型。可修改為s1 =(short)(s1 + 1)。short s1 = 1;s1 += 1正確。

      第十二,sleep()和 wait()有什么區(qū)別? 搞線程的最?lèi)?ài)

      sleep()方法是使線程停止一段時(shí)間的方法。在sleep 時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒(méi)有被調(diào)度為放棄執(zhí)行,除非(a)”醒來(lái)“的線程具有更高的優(yōu)先級(jí)(b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?/p>

      wait()是線程交互時(shí),如果線程對(duì)一個(gè)同步對(duì)象x 發(fā)出一個(gè)wait()調(diào)用,該線程會(huì)暫停執(zhí)行,被調(diào)對(duì)象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。

      第十三,Java有沒(méi)有g(shù)oto?

      Goto?java中的保留字,現(xiàn)在沒(méi)有在java中使用。

      第十四,數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法? 數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。String有l(wèi)ength()這個(gè)方法。

      第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型?

      方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě)(Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被”屏蔽“了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。

      第十六,Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?

      Set里的元素是不能重復(fù)的,那么用iterator()方法來(lái)區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。

      equals()和==方法決定引用值是否指向同一對(duì)象equals()在類(lèi)中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類(lèi)型相配的話,返回真值。第十七,給我一個(gè)你最常見(jiàn)到的runtime exception。

      ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

      第十八,error和exception有什么區(qū)別?

      error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。

      exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

      第十九,List, Set, Map是否繼承自Collection接口? List,Set是

      Map不是

      第二十,abstract class和interface有什么區(qū)別?

      聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況。不能創(chuàng)建abstract 類(lèi)的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類(lèi)為。取而代之,在子類(lèi)中實(shí)現(xiàn)該方法。知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法。

      接口(interface)是抽象類(lèi)的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類(lèi)相似,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼承行為。當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。由于有抽象類(lèi),它允許使用接口名作為引用變量的類(lèi)型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口。

      第二十一,abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized? 都不能

      第二十二,接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)?

      接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。

      第二十三,啟動(dòng)一個(gè)線程是用run()還是start()?

      啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。

      第二十四,構(gòu)造器Constructor是否可被override?

      構(gòu)造器Constructor不能被繼承,因此不能重寫(xiě)Overriding,但可以被重載Overloading。

      第二十五,是否可以繼承String類(lèi)? String類(lèi)是final類(lèi)故不可以繼承。

      第二十六,當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

      不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問(wèn)。

      第二十七,try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后? 會(huì)執(zhí)行,在return前執(zhí)行。

      第二十八,編程題: 用最有效率的方法算出2乘以8等於幾? 有C背景的程序員特別喜歡問(wèn)這種問(wèn)題。<< 3

      第二十九,兩個(gè)對(duì)象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對(duì)不對(duì)? 不對(duì),有相同的hash code。

      第三十,當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

      是值傳遞。Java 編程語(yǔ)言只由值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。

      第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

      switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng)該是 int、short、char 或者 byte。long,string 都不能作用于swtich。

      第三十二,編程題: 寫(xiě)一個(gè)Singleton出來(lái)。

      Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在。

      一般Singleton模式通常有幾種種形式:

      第一種形式: 定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類(lèi)變量,在類(lèi)初始化時(shí)實(shí)例話,通過(guò)一個(gè)public的getInstance方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。public class Singleton {

      private Singleton(){}

      //在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?

      //注意這是private 只供內(nèi)部調(diào)用

      private static Singleton instance = new Singleton();

      //這里提供了一個(gè)供外部訪問(wèn)本class的靜態(tài)方法,可以直接訪問(wèn)

      public static Singleton getInstance(){

      return instance;

      } }

      第二種形式:

      public class Singleton {

      private static Singleton instance = null;

      public static synchronized Singleton getInstance(){

      //這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次

      //使用時(shí)生成實(shí)例,提高了效率!

      if(instance==null)

      instance=new Singleton();return instance;

      } }

      其他形式:

      定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,所有方法為static的。一般認(rèn)為第一種形式要更加安全些

      第三十三 Hashtable和HashMap

      Hashtable繼承自Dictionary類(lèi),而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)

      HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許

      還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。

      最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在

      多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap

      就必須為之提供外同步。

      Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。

      1:abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?

      2:當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的

      結(jié)果,那么這里到底是值傳遞還是引用傳遞?

      3:Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們 有何區(qū)別?

      4:構(gòu)造器Constructor是否可被override?

      5:當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

      6:兩個(gè)對(duì)象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對(duì)不對(duì)

      關(guān)于參數(shù)傳遞:

      其實(shí)JAVA里對(duì)參數(shù)的傳遞在國(guó)際上都是一直有爭(zhēng)論的。包括《Think in java》里都提到了,Bruce Eckel 也沒(méi)給出定論。我覺(jué)得這很大程度上是由于規(guī)范不嚴(yán)格造成的。因?yàn)榇蠹叶贾绤?shù)傳遞的本質(zhì)是什么,但描述方式不一樣,以致造成答案不一致。

      現(xiàn)給一些參考:

      第一,JAVA 里的參數(shù)傳遞只有值傳遞,沒(méi)有所謂的引用傳遞。(說(shuō)白了,是因?yàn)榇蠹业恼f(shuō)法 不統(tǒng)一)

      第二,引用一個(gè)強(qiáng)人的觀點(diǎn) jamesfancy()邊城狂人(James Fancy):

      ”1.首先明白參數(shù)的傳遞實(shí)質(zhì)是壓棧和出棧的過(guò)程。即在調(diào)用一個(gè)方法(或說(shuō)子程序)之前,先將需要傳入的參數(shù)壓棧,然后執(zhí)行代碼的指針跳轉(zhuǎn)到方法的起始位置,進(jìn)行出棧操作,原來(lái)壓入棧中的參數(shù)取出置入方法中的局部變量(這里即參數(shù)變量)。

      2.對(duì)于基本類(lèi)型,傳遞的參數(shù)都是對(duì)原變量值的拷貝。每一個(gè)基本類(lèi)型的數(shù)據(jù)都是以字節(jié)形式保存在內(nèi)存中的(如整型是4個(gè)字節(jié),長(zhǎng)整型是8個(gè)字節(jié)等),壓棧時(shí)會(huì)將內(nèi)存中的變量值按字節(jié)存入棧中,而原變量的值(即保存在原位置的內(nèi)容)并不改變??內(nèi)存中的數(shù)據(jù)是保存在堆中的,參數(shù)是保存在棧中的,總不可能把內(nèi)存塊搬過(guò)來(lái)是吧......所以一定是拷貝的!

      3.先搞明白引用的實(shí)質(zhì)。當(dāng)一個(gè)對(duì)象創(chuàng)建后,它的內(nèi)容(N個(gè)字節(jié))被保存在內(nèi)存中。它的位置,即一個(gè)地址址,被返回,保存在一個(gè)引用變量中??所以實(shí)際上一個(gè)引用變量保存的只是某個(gè)類(lèi)的地址,而引用的類(lèi)型,并不會(huì)改變引用變量的大小,它只是說(shuō)明一個(gè)對(duì)象的數(shù)據(jù)大小。這樣,就可以從引用變量找到對(duì)象的起始地址,再通過(guò)類(lèi)型,獲取對(duì)象數(shù)據(jù)。而通過(guò)引用調(diào)用的方法,屬性這些東西,就是通過(guò)在這塊內(nèi)存地址中的位置偏移來(lái)尋址的。(當(dāng)然,實(shí)際的操作會(huì)比我說(shuō)的復(fù)雜得多,因?yàn)檫€涉及向上向下傳型等問(wèn)題)

      4.引用參數(shù)的傳遞,實(shí)際上就是傳遞的引用變量的值,這和傳遞基本類(lèi)型的值原理是一樣的。但由于引用變量其值的特殊性(只是一個(gè)地址,這個(gè)地址上保存的才是對(duì)象的實(shí)際數(shù)據(jù)),所以,引用變量的值傳入?yún)?shù)變量后,通過(guò)參數(shù)變量對(duì)對(duì)象的修改(在實(shí)際地址上的操作)自然就會(huì)影響到同一個(gè)對(duì)象。??這里,外面的引用變量和參數(shù)變量,本身是不同的,但是它們的值相同,都是對(duì)象的地址。

      第三篇:java程序員面試題

      1、你怎樣理解Struts,又那些配置文件,以及作用? 理解:http://ruixin.iteye.com/blog/899289 配置文件:struts.xml 作用:struts 框架mvc 實(shí)現(xiàn)低耦合,便于程序的維護(hù)~ 配置文件控制流程的轉(zhuǎn)向 很清晰~ 主要負(fù)責(zé)具體業(yè)務(wù)的實(shí)現(xiàn)和頁(yè)面的轉(zhuǎn)向~

      2、怎么樣來(lái)捕獲數(shù)據(jù)庫(kù)中的異常?

      3、如何處理網(wǎng)頁(yè)中的驗(yàn)證信息,如何友好的進(jìn)行處理?

      4、用javaScript實(shí)現(xiàn)java中的監(jiān)聽(tīng)器功能?

      5、你對(duì)對(duì)日外包的看法?

      6、數(shù)據(jù)庫(kù)連接方式由哪幾種?

      Jdbc、連接池、hibernate

      7、你清楚哪幾種設(shè)計(jì)模式,談?wù)劯鞣N設(shè)計(jì)模式的類(lèi)結(jié)構(gòu)。

      8、談?wù)刯sp和sevlet的區(qū)別,以及它們性能上的區(qū)別。

      jsp是servlet的一種簡(jiǎn)化,jsp編譯后是“類(lèi)servlet”。servlet 主要是用來(lái)處理業(yè)務(wù)層;

      jsp 則是主要負(fù)責(zé) 表現(xiàn)層。

      servlet完全是java程序代碼構(gòu)成,擅長(zhǎng)于流程控制和事務(wù)處理,而通過(guò)servlet來(lái)生成動(dòng)態(tài)網(wǎng)頁(yè)很不直觀; 對(duì)于靜態(tài)的html標(biāo)簽,servlet都必須使用頁(yè)面輸出流逐行輸出。Servlet中沒(méi)有內(nèi)置對(duì)象。Jsp由html代碼和jsp標(biāo)簽構(gòu)成可以方便地編寫(xiě)動(dòng)態(tài)網(wǎng)頁(yè),在struts框架中,jsp位于MVC設(shè)計(jì)模式的視圖層,而servlet位于控制層。

      總之,使用jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,至于jsp中的java腳本如果鑲嵌到一個(gè)類(lèi)中,由jsp容器完成,而servlet則是個(gè)完整的java類(lèi),這個(gè)類(lèi)的service方法用于生成對(duì)客戶端的響應(yīng)

      9、如何來(lái)編寫(xiě)存儲(chǔ)過(guò)程,如何優(yōu)化存儲(chǔ)過(guò)程,以及存儲(chǔ)過(guò)程和TSQL的區(qū)別。

      10、提供的培訓(xùn),CMM-5軟件開(kāi)發(fā)流程培訓(xùn)、代碼編寫(xiě)規(guī)范和業(yè)務(wù)流程培訓(xùn)、對(duì)日語(yǔ)的培訓(xùn)。

      1、為什么要選擇這個(gè)行業(yè),和計(jì)算機(jī)專(zhuān)業(yè)的相比有什么優(yōu)勢(shì)?

      2、Servlet是什么,以及生命周期?

      Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷(xiāo)毀的時(shí)候調(diào)用其destroy方法。

      與cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過(guò)多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷(xiāo)毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷(xiāo)毀,所以效率上低于servlet。

      3、怎么理解事務(wù)?

      4、怎么理解MVC?

      自己做自己的事情,主要強(qiáng)調(diào)分層,5、同時(shí)插入大量數(shù)據(jù),使用何種方法優(yōu)化?Batch

      6、多個(gè)有關(guān)系得怎么樣操作?

      7、你認(rèn)為你還有什么優(yōu)點(diǎn)在前面沒(méi)有提到?

      8、對(duì)加班的看法?

      9、與上級(jí)意見(jiàn)不一致時(shí)怎么樣處理?10、11、12、13、14、15、16、17、18、19、20、21、22、23、你如何理解團(tuán)隊(duì)精神?

      你怎樣處理學(xué)習(xí)新技術(shù)和項(xiàng)目開(kāi)發(fā)之間的矛盾? 怎樣去學(xué)習(xí)新技術(shù)?

      作為一個(gè)初級(jí)程序員怎么樣彌補(bǔ)與有經(jīng)驗(yàn)程序員之間的差距? 你對(duì)索引的理解,索引有幾種,什么時(shí)候用索引? 對(duì)Oracle理解?

      怎樣優(yōu)化復(fù)雜的查詢語(yǔ)句? 你對(duì)Jdbc理解?

      對(duì)Finally塊的理解和應(yīng)用? 游標(biāo)的理解? ResultSet 重載,重寫(xiě)? 簽名

      EJB的事務(wù),Hibernate的事務(wù)? Struts的標(biāo)簽? 重定向和跳轉(zhuǎn)? A、:效率高,速度快

      a.地址欄不改變跳轉(zhuǎn)——服務(wù)器端跳轉(zhuǎn),服務(wù)器之間內(nèi)部轉(zhuǎn),相同的request,可傳參;

      b.執(zhí)行到跳轉(zhuǎn)語(yǔ)句后無(wú)條件立刻跳轉(zhuǎn)——之后的代碼不再被執(zhí)行;

      注意:如果使用forward跳轉(zhuǎn),則一定要在跳轉(zhuǎn)之前釋放掉全部的資源;

      c.使用forward時(shí),request設(shè)置的屬性依然能保留在下一個(gè)頁(yè)面(setAttribute);d.通過(guò)傳遞參數(shù)。

      e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢

      a.地址欄改變跳轉(zhuǎn)——客戶端跳轉(zhuǎn)(其中地址可以是任意的)

      b.所有代碼執(zhí)行完畢之后再跳轉(zhuǎn),跳轉(zhuǎn)語(yǔ)句后面的代碼還是會(huì)執(zhí)行,除非在其后面加上return(return)需復(fù)雜一些。

      <% Response.sendRedirect(“aa.jsp”);boolean b = true;

      if(b){ Return;} System.out.println(“aaaaaaaaaa”);%>

      c.不能保存request屬性——地址改變了,客戶端跳轉(zhuǎn),不同的request d.通過(guò)對(duì)URL地址的重寫(xiě)傳遞參數(shù):

      response.sendRedirect(“responseDemo04.jsp?id=mldn”);

      e.地址中的”/”代表是:http://localhost:8080/

      下面是兩種比較重要的跳轉(zhuǎn),我還是與上次的一次,把我做的筆記貼出來(lái):24、25、Hibernate的左聯(lián)結(jié)和右連接,緩存,數(shù)據(jù)加載? 面向?qū)ο笕绾卫斫?

      26、EJB中CMP和BMP,SessionBean的機(jī)制?27、28、29、對(duì)日外包是否有抵觸情緒? 如何減少Servlet的請(qǐng)求? 對(duì)設(shè)計(jì)模式了解多少?作過(guò)的項(xiàng)目中用過(guò)那些設(shè)計(jì)模式? 30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、怎樣看待團(tuán)隊(duì)合作,在團(tuán)隊(duì)合作中你扮演什么樣的角色,遇到技術(shù)難題時(shí)怎么解決? Exception的層次結(jié)構(gòu)? EJB對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)機(jī)制? Struts中是否有事務(wù)處理? Hibernate的其它功能(除了ORM)? 如何提高數(shù)據(jù)庫(kù)中的數(shù)據(jù)查詢效率? 作為項(xiàng)目經(jīng)理如何對(duì)組內(nèi)成員分工? 描述一下你做過(guò)項(xiàng)目的流程。

      加班到12點(diǎn),突然有人來(lái)問(wèn)你技術(shù)上的難題,你會(huì)如何處理? Oracle的冷備份、熱備份 Strurs中怎樣實(shí)現(xiàn) Hibernate怎樣實(shí)現(xiàn)ORM Spring 的事務(wù)處理機(jī)制

      Strurs的驗(yàn)證方式,Javascript的驗(yàn)證的方式

      一個(gè)是服務(wù)器端驗(yàn)證,一個(gè)是客戶端驗(yàn)證

      Struts的工作機(jī)制 Delete/trancate的區(qū)別

      trancate與delete都是刪除數(shù)據(jù),不同的是trancate是將表的所有數(shù)據(jù)都刪除,而delete可以有選擇地刪除數(shù)據(jù); delete刪除數(shù)據(jù)是記錄在日志中的,可以通過(guò)其將數(shù)據(jù)恢復(fù),而trancate則是將整個(gè)表截?cái)?,其操作是不記錄在日志里的?6、47、48、作為項(xiàng)目組長(zhǎng),你遇到的最大問(wèn)題是什么?如何解決?

      Ajax/內(nèi)嵌框架實(shí)現(xiàn)局部刷新,有什么差別?

      Exception/Error的區(qū)別,在什么情況下可以拋出RuntimeException 父類(lèi)不同

      知道異常和錯(cuò)誤最本質(zhì)的區(qū)別就是異常能被開(kāi)發(fā)人員處理而錯(cuò)誤時(shí)系統(tǒng)本來(lái)自帶的,一般無(wú)法處理也不需要我們程序員來(lái)處理。

      在程序運(yùn)行時(shí)候出錯(cuò)而又不是系統(tǒng)原因差生的,一般是由于程序原因產(chǎn)生,比如程序?qū)懙牟粔驀?yán)謹(jǐn)、完善

      典型的RuntimeException

      ArithmeticException、ClassCastException、IndexOutOfBoundsException、NullPointerException、UnsupportedOperationException 等.49、50、51、52、53、54、55、56、57、58、59、Orcale 物化視圖(MV)

      業(yè)務(wù)處理模塊中,是如何處理事務(wù)? Sql語(yǔ)句如何優(yōu)化 數(shù)據(jù)庫(kù)右連接

      JDBC的連接關(guān)閉在哪?

      Finally語(yǔ)句塊內(nèi)

      錯(cuò)誤處理模塊是放在哪個(gè)層的。接口能否繼承接口。

      接口可以繼承接口..但是要使用extends~而不是用implements 抽象類(lèi)能否繼承實(shí)體類(lèi)。

      抽象類(lèi)是可以繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù) 答案很明確,可以繼承。

      項(xiàng)目中查詢時(shí)怎么樣實(shí)現(xiàn)的?

      作為項(xiàng)目負(fù)責(zé)人你是管理這個(gè)團(tuán)隊(duì)的?

      在你做項(xiàng)目過(guò)程中遇到些什么問(wèn)題,是怎么樣解決的?

      Jquery中的幾種選擇器:

      Javascript如何進(jìn)行數(shù)字和字符串之間的轉(zhuǎn)換?

      數(shù)字類(lèi)型轉(zhuǎn)換成String類(lèi)型用 對(duì)象=對(duì)象.toString()方法,字符串轉(zhuǎn)換成數(shù)字類(lèi)型則是對(duì)象=Number(對(duì)象);

      第四篇:java程序員面試題

      姓名:

      年齡:

      工作年限:

      1.int和Integer有什么區(qū)別?

      2.抽象類(lèi)(abstract class)和接口(interface)有什么異同?

      3.List、Set、Map的區(qū)別?

      4.Spring支持的ORM有哪些,哪些是你用過(guò)的?

      5.使用Spring可以通過(guò)什么方式訪問(wèn)Hibernate或你使用過(guò)的任一ORM?

      6.請(qǐng)你說(shuō)明Spring路徑“user/info/1”的含義?

      7.你要求的工資待遇及你對(duì)你自己未來(lái)5年的職業(yè)規(guī)劃?

      第五篇:Java程序員面試題

      Java程序員面試題

      1、面向?qū)ο蟮奶卣饔心男┓矫? 答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€(gè)方面:1)抽象2)繼承3)封裝4)多態(tài)性

      2、作用域public,private,protected,以及不寫(xiě)時(shí)的區(qū)別 答:區(qū)別如下:

      作用域 當(dāng)前類(lèi) 同包 子類(lèi) 其他 public √ √√ √ protected√√√ × default √√× × private √×××

      類(lèi)的成員不寫(xiě)訪問(wèn)修飾時(shí)默認(rèn)為default。默認(rèn)對(duì)于同一個(gè)包中的其他類(lèi)相當(dāng)于公開(kāi)(public),對(duì)于不是同一個(gè)包中的其他類(lèi)相當(dāng)于私有(private)。受保護(hù)(protected)對(duì)子類(lèi)相當(dāng)于公開(kāi),對(duì)不是同一包中的沒(méi)有父子關(guān)系的類(lèi)相當(dāng)于私有。

      3、String 是最基本的數(shù)據(jù)類(lèi)型嗎? 答:不是。Java中的基本數(shù)據(jù)類(lèi)型只有8個(gè):byte、short、int、long、float、double、char、boolean;除了基本類(lèi)型(primitive type)和枚舉類(lèi)型(enumeration type),剩下的都是引用類(lèi)型(reference type)。

      4、float f=3.4;是否正確? 答:不正確。3.4是雙精度數(shù),將雙精度型(double)賦值給浮點(diǎn)型(float)屬于下轉(zhuǎn)型(down-casting,也稱(chēng)為窄化)會(huì)造成精度損失,因此需要強(qiáng)制類(lèi)型轉(zhuǎn)換float f =(float)3.4;或者寫(xiě)成float f =3.4F。

      5、int 和Integer 有什么區(qū)別? 答:Java是一個(gè)近乎純潔的面向?qū)ο缶幊陶Z(yǔ)言,但是為了編程的方便還是引入不是對(duì)象的基本數(shù)據(jù)類(lèi)型,但是為了能夠?qū)⑦@些基本數(shù)據(jù)類(lèi)型當(dāng)成對(duì)象操作,Java為每一個(gè)基本數(shù)據(jù)類(lèi)型都引入了對(duì)應(yīng)的包裝類(lèi)型(wrapper class),int的封裝類(lèi)就是Integer,從JDK 1.5開(kāi)始引入了自動(dòng)封箱/解封箱機(jī)制,使得二者可以相互轉(zhuǎn)換。

      Java 為每個(gè)原始類(lèi)型提供了封裝類(lèi):

      原始類(lèi)型: boolean,char,byte,short,int,long,float,double 封裝類(lèi)型:Boolean,Character,Byte,Short,Integer,Long,F(xiàn)loat,Double

      6、數(shù)組有沒(méi)有l(wèi)ength()方法?String 有沒(méi)有l(wèi)ength()方法?

      答:數(shù)組沒(méi)有l(wèi)ength()方法,有l(wèi)ength 的屬性。String 有l(wèi)ength()方法。

      7、在Java 中,如何跳出當(dāng)前的多重嵌套循環(huán)?

      答:在最外層循環(huán)前加一個(gè)標(biāo)記如A,然后用break A;可以跳出多重循環(huán)。

      8、是否可以繼承String 類(lèi)? 答:String 類(lèi)是final類(lèi),不可以被繼承。

      9、當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞? 答:是值傳遞。Java 編程語(yǔ)言只有值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的屬性可以在被調(diào)用過(guò)程中被改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。C++和C#中可以通過(guò)傳引用或傳輸出參數(shù)來(lái)改變傳入的參數(shù)的值

      10、抽象類(lèi)(abstract class)和接口(interface)有什么異同? 答:

      抽象類(lèi)和接口都不能夠?qū)嵗?,但可以定義抽象類(lèi)和接口類(lèi)型的引用。

      一個(gè)類(lèi)如果繼承了某個(gè)抽象類(lèi)或者實(shí)現(xiàn)了某個(gè)接口都需要對(duì)其中的抽象方法全部進(jìn)行實(shí)現(xiàn),否則該類(lèi)仍然需要被聲明為抽象類(lèi)。接口比抽象類(lèi)更加抽象,因?yàn)槌橄箢?lèi)中可以定義構(gòu)造器,可以有抽象方法和具體方法,而接口中不能定義構(gòu)造器而且其中的方法全部都是抽象方法。

      抽象類(lèi)中的成員可以是private、默認(rèn)、protected、public的,而接口中的成員全都是public的。抽象類(lèi)中可以定義成員變量,而接口中定義的成員變量實(shí)際上都是常量。有抽象方法的類(lèi)必須被聲明為抽象類(lèi),而抽象類(lèi)未必要有抽象方法。

      11、靜態(tài)變量和實(shí)例變量的區(qū)別?

      答:靜態(tài)變量也稱(chēng)為類(lèi)變量,屬于類(lèi),不屬于類(lèi)的任何一個(gè)對(duì)象,一個(gè)類(lèi)不管創(chuàng)建多少個(gè)對(duì)象,靜態(tài)變量在內(nèi)存中有且僅有一個(gè)拷貝;實(shí)例變量必須依存于某一實(shí)例,需要先創(chuàng)建對(duì)象然后通過(guò)對(duì)象才能訪問(wèn)到它。

      12、String s=new String(“xyz”);創(chuàng)建了幾個(gè)字符串對(duì)象?

      答:兩個(gè)對(duì)象,一個(gè)是靜態(tài)存儲(chǔ)區(qū)的“xyx”,一個(gè)是用new創(chuàng)建在堆上的對(duì)象

      13、接口是否可繼承(extends)接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承具體類(lèi)(concrete class)? 答:接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)可繼承具體類(lèi),但前提是具體類(lèi)必須有明確的構(gòu)造函數(shù)

      14、Java 中的final關(guān)鍵字有哪些用法?

      答:(1)修飾類(lèi):表示該類(lèi)不能被繼承;(2)修飾方法:表示方法不能被重寫(xiě);(3)修飾變量:表示變量只能一次賦值以后值不能被修改(常量)

      15、Error 和Exception 有什么區(qū)別? 答:Error 表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,是恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題;比如內(nèi)存溢出,不可能指望程序能處理這樣的情況;Exception 表示需要捕捉或者需要程序進(jìn)行處理的異常,是一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題;也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

      選擇題

      1、在Java

      Applet程序用戶自定義的Applet子類(lèi)中,一般需要重載父類(lèi)的(D)方法來(lái)完成一些畫(huà)圖操作。

      A.start()

      B.stop()

      C.init()D.paint()

      2、Java語(yǔ)言具有許多優(yōu)點(diǎn)和特點(diǎn),下列選項(xiàng)中,哪個(gè)反映了Java程序并行機(jī)制的特點(diǎn)?(B)

      A)安全性

      B)多線程

      C)跨平臺(tái)

      D)可移植

      3、下列哪個(gè)類(lèi)聲明是正確的?(D)

      A)abstract final class HI{···} B)abstract private move(){···}C)protected private number;

      D)public abstract class Car{···

      4、在Java語(yǔ)言中,下列哪些語(yǔ)句關(guān)于內(nèi)存回收的說(shuō)明是正確的?(B)

      A.程序員必須創(chuàng)建一個(gè)線程來(lái)釋放內(nèi)存;

      B.內(nèi)存回收程序負(fù)責(zé)釋放無(wú)用內(nèi)存

      C.內(nèi)存回收程序允許程序員直接釋放內(nèi)存

      D.內(nèi)存回收程序可以在指定的時(shí)間釋放內(nèi)存對(duì)象

      5、字符串是Java已定義的類(lèi)型,關(guān)于它的構(gòu)造函數(shù),下面說(shuō)法不正確的是: B

      A.String(char[] value, int offset, int count)

      B.String(int[] codePoints,int offset,int count)

      C.String(String original)

      D.String(StringBuffer buffer)

      6、下列說(shuō)法中正確的是: C

      A.導(dǎo)入包會(huì)影響程序的性能 B.包存儲(chǔ)在類(lèi)庫(kù)中

      C.包是類(lèi)的容器D.上述說(shuō)法都不對(duì)

      7、哪個(gè)關(guān)鍵字可以對(duì)對(duì)象加互斥鎖? B

      A.transient

      B.synchronized

      C.serialize

      D.static8、下列敘述中,錯(cuò)誤的是: D

      A、父類(lèi)不能替代子類(lèi)

      B、子類(lèi)能夠替代父類(lèi)

      C、子類(lèi)繼承父類(lèi)

      D、父類(lèi)包含子類(lèi)

      9、下列關(guān)于Java多線程并發(fā)控制機(jī)制的敘述中,錯(cuò)誤的是:BC

      A、Java中對(duì)共享數(shù)據(jù)操作的并發(fā)控制是采用加鎖技術(shù)

      B、線程之間的交互,提倡采用suspend()/resume()方法

      C、共享數(shù)據(jù)的訪問(wèn)權(quán)限都必須定義為private

      D、Java中沒(méi)有提供檢測(cè)與避免死鎖的專(zhuān)門(mén)機(jī)制,但應(yīng)用程序員可以采用某些策略防止死鎖的發(fā)生

      10、下列哪一個(gè)方法不是applet程序的組成部分:D

      A、init()

      B、start()

      C、stop()

      D、new()

      11、下列Applet類(lèi)的方法中,在Applet的整個(gè)生命周期里至多只執(zhí)行一次的是:A

      A、init()

      B、start()C、stop()

      D、paint()

      12、啟動(dòng)一個(gè)線程所調(diào)用的方法是:C

      A、run()

      B、init()

      C、start()

      D、new()

      13、編譯Java

      Application 源程序文件將產(chǎn)生相應(yīng)的字節(jié)碼文件,這些字節(jié)碼文件的擴(kuò)展名為(B)。

      A..java

      B..class

      C..html

      D..exe

      二、填空題(每空格1分,共20分)

      1、開(kāi)發(fā)與運(yùn)行Java程序需要經(jīng)過(guò)的三個(gè)主要步驟為編輯源程序、編譯生成字節(jié)碼和解釋運(yùn)行字節(jié)碼。

      2、如果一個(gè)Java

      Applet源程序文件只定義有一個(gè)類(lèi),該類(lèi)的類(lèi)名MyApplet,則類(lèi)MyApplet必須是Applet類(lèi)的子類(lèi)并且存儲(chǔ)該源程序文件的文件名為MyApplet。

      3、若x=5,y=10,則x=y的邏輯值分別為true和false。

      4、抽象(abstract)方法方法是一種僅有方法頭,沒(méi)有具體方法體和操作實(shí)現(xiàn)的方法,該方法必須在抽象類(lèi)之中定義。最終(final)方法方法是不能被當(dāng)前類(lèi)的子類(lèi)重新定義的方法。

      5、在Java程序中,通過(guò)類(lèi)的定義只能實(shí)現(xiàn)單重繼承,但通過(guò)接口的定義可以實(shí)現(xiàn)多重繼承關(guān)系。

      下載java程序員面試題(筆試&面試題)word格式文檔
      下載java程序員面試題(筆試&面試題).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        Java程序員面試題

        北京千渡網(wǎng)訊科技有限公司博寶藝術(shù)網(wǎng)http:// Java程序員面試題 1. 下列程序段執(zhí)行后,t5的結(jié)果是_____. int t1=5,t2=6,t3=7,t4,t5; t4 = t1 6)x = sb.indexOf("b"); sb.delet......

        java程序員面試題(綜合)

        Java人員測(cè)試題(請(qǐng)用答題紙?zhí)顚?xiě)) 第一部分 前臺(tái)編程 JavaScript Ajax等 (15分) 1. 腳本寫(xiě)在和中有什么區(qū)別?(5分) 2.請(qǐng)用html和javascript簡(jiǎn)要實(shí)現(xiàn)以下功能:頁(yè)面中放置一個(gè)“......

        JAVA程序員面試題5

        JAVA程序員面試題 2008-06-12 10:43 1. JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么?JSP是Servlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet的簡(jiǎn)易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)......

        JAVA程序員面試題7

        JAVA程序員面試題(7) 2008-06-12 10:44 1. 排序都有哪幾種方法?請(qǐng)列舉。用JAVA實(shí)現(xiàn)一個(gè)快速排序。排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選......

        JAVA程序員面試題收集

        JAVA程序員面試題收集想必大家都有參加過(guò)面試的或多或少的經(jīng)歷吧,不知道考官都會(huì)問(wèn)啥米刁鉆古怪的問(wèn)題呢?下面的考題是我搜集的一些針對(duì)java的面試題目,還不少,大概分為[基礎(chǔ)類(lèi)]......

        JAVA程序員面試題1

        JAVA程序員面試題 2008-06-12 10:40 1. HashMap和Hashtable的區(qū)別。 HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(nul......

        JAVA程序員面試題6

        JAVA程序員面試題(6) 2008-06-12 10:43 1. 客服端調(diào)用EJB對(duì)象的幾個(gè)基本步驟設(shè)置JNDI服務(wù)工廠以及JNDI服務(wù)地址系統(tǒng)屬性,查找Home接口,從Home接口調(diào)用Create方法創(chuàng)建Remote接......

        java程序員部分面試題答案

        一、你對(duì)MVC的理解,MVC有什么優(yōu)缺點(diǎn)?結(jié)合Struts,說(shuō)明在一個(gè)Web應(yīng)用如何去使用? 答: MVC設(shè)計(jì)模式(應(yīng)用觀察者模式的框架模式) M: Model(Business process layer),模型,操作數(shù)據(jù)的業(yè)務(wù)......