色www,五月婷婷深爱五月,午夜国产一级片,色噜噜综合,国产大胸无码视频,清纯美女被操黄网站在线观看,波多野结衣av高清一区二区三区

《JAVA程序設(shè)計(jì)》期末考試試題

時(shí)間:2025-01-14 15:14:52 晶敏 JAVA認(rèn)證 我要投稿

《JAVA程序設(shè)計(jì)》期末考試試題(通用9套)

  我們?cè)趯W(xué)習(xí)、工作生活中,我們都要用到考試題,考試題有助于被考核者了解自己的真實(shí)水平。你知道什么樣的考試題才能切實(shí)地幫助到我們嗎?以下是小編為大家整理的《JAVA程序設(shè)計(jì)》期末考試試題(通用9套),僅供參考,歡迎大家閱讀。

《JAVA程序設(shè)計(jì)》期末考試試題(通用9套)

  《JAVA程序設(shè)計(jì)》期末考試試題 1

  一、 單選題

  1、下列程序段執(zhí)行后的結(jié)果是( )。

  String s = new String("abcdefg");

  for (int i=0; i

  System.out.print(s.charAt(i));

  }

  A) aceg B) ACEG C) abcdefg D) abcd

  2、有整型數(shù)組:int[] x={12,35,8,7,2};,則調(diào)用方法Arrays.sort(x)后,數(shù)組x中的元素值依次是( ).

  A) 2 7 8 12 35 B) 12 35 8 7 2

  C) 35 12 8 7 2 D) 8 7 12 35 2

  3、下面的程序段創(chuàng)建了BufferedReader類的對(duì)象in,以便讀取本機(jī)c盤my文件夾下的文件1.txt。File構(gòu)造函數(shù)中正確的路徑和文件名的表示是( )。

  File f = new File(填代碼處);

  file =new FileReader(f);

  in=new BufferedReader(file);

  A) "./1.txt" B) "../my/1.txt" C) "c:\\my\\1.txt" D) "c:\ my\1.txt"

  4、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。

  String s1=new String("abc");

  String s2=new String("abc");

  boolean b1=s1.equals(s2);

  boolean b2=(s1==s2);

  System.out.print(b1+" "+b2);

  A)true false B) false true C) true true D)false false

  5、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。

  Hashtable hashtable=new Hashtable();

  hashtable.put("x","12345");

  hashtable.put("y","67890");

  hashtable.put("a","abcde");

  System.out.println(hashtable.get("a"));

  A) a B) abcde C) 12345 D) 67890

  6、下面語句的功能是( )。

  RandomAccessFile raf2 = newRandomAccessFile("1.txt","rw" );

  A)打開當(dāng)前目錄下的文件1.txt,既可以向文件寫數(shù)據(jù),也可以從文件讀數(shù)據(jù)。

  B)打開當(dāng)前目錄下的文件1.txt,但只能向文件寫入數(shù)據(jù),不能從文件讀取數(shù)據(jù)。

  C)打開當(dāng)前目錄下的文件1.txt,但不能向文件寫入數(shù)據(jù),只能從文件讀取數(shù)據(jù)。

  D) 以上說法都不對(duì)。

  7、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。

  String s="12345#aaa#bbb#67890";

  int n=s.indexOf("#");

  int k=s.indexOf("#",n+1);

  int m=s.indexOf("#",k+1);

  String s2=s.substring(m+1);

  System.out.println(s2);

  A) 123456 B) 67890 C) aaa D) bbb

  8、下面程序段執(zhí)行后b的值是( )。

  Integerinteg =new Integer(9);

  boolean b = integ instanceof Object;

  A) 9 B) true C) 1 D) false

  9、應(yīng)用程序Test.java的源程序如下,在命令行鍵入:

  java Test aaa bb c

  回車后輸出的.結(jié)果是 ( )。

  public class Test {

  publicstatic void main(String args[]) {

  int k1=args.length;

  int k2=args[1].length();

  System.out.print(k1+" "+k2);

  }

  }

  A) 3 2 B)1 2 C) 1 3 D)3 3

  10、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。

  int b[][]={{1}, {2,2}, {2,2,2}};

  int sum=0;

  for(int i=0;i

  for(int j=0;j

  sum*=b[i][j];

  }

  }

  System.out.println("sum="+sum);

  A) 32 B)11 C) 2 D) 3

  11、應(yīng)用程序的main方法中有以下語句,則執(zhí)行后輸出的結(jié)果是 ( )。

  int[] x={125,21,5,168,98};

  int max=x[0];

  for(int i=1;i

  if(x[i]>max)

  max=x[i];

  }

  System.out.println(max);

  A) 125 B) 5 C) 98 D) 168

  12、程序Test.java編譯運(yùn)行后輸出的結(jié)果是( )。

  public class Test {

  Strings1="java";

  publicstatic void main(String args[]) {

  intz=2;

  Testt=new Test();

  System.out.println(t.s1+z);

  }

  }

  A) java2 B)2 C)沒有輸出結(jié)果 D)java

  13、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。

  Strings1="0.5", s2="12";

  double x=Double.parseDouble(s1);

  int y=Integer.parseInt(s2);

  System.out.println(x+y);

  A) 12.5 B) 120.5 C)12 D) “12.5”

  14、下面的程序創(chuàng)建了一個(gè)文件輸出流對(duì)象,用來向文件test.txt中輸出數(shù)據(jù),假設(shè)程序當(dāng)前目錄下不存在文件test.txt,編譯下面的程序Test.java后,將該程序運(yùn)行3次,則文件test.txt 的內(nèi)容是( )。

  import java.io.*;

  public class Test {

  publicstatic void main(String args[]) {

  try{

  Strings="ABCDE";

  byteb[]=s.getBytes();

  FileOutputStreamfile=new FileOutputStream("test.txt",true);

  file.write(b);

  file.close();

  }

  catch(IOExceptione) {

  System.out.println(e.toString());

  }

  }

  }

  A) ABCABC B) ABCDE C) Test D) ABCDE ABCDE ABCDE

  15、下面那些方法不是接口Collection中已聲明的方法( )?

  A)添加元素的add(Object obj) 方法

  B)刪除元素的remove(Objectobj)方法

  C)得到元素個(gè)數(shù)的length()方法

  D)返回迭代器的iterator()方法,迭代器用于元素遍歷

  二、多選題

  1、下面main()方法的定義哪些是正確的( )?

  A) publicstatic void main(String args[]) {} B) publicstatic void main(String[]) {}

  C) publicstatic void main(String[] args) {} D)publicstatic void main(String [] x) {}

  2、線程對(duì)象的生命周期中,通常經(jīng)歷下面哪些狀態(tài)( )。

  A)新建 B)運(yùn)行 C)就緒 D)死亡

  3、下面說法正確的是( )。

  A) final 可修飾類、屬性(變量)、方法。

  B) abstract可修飾類、方法。

  C) 抽象方法只有方法頭,沒有方法體。

  D) 關(guān)鍵字final和abstract不能同時(shí)使用。

  4、下面關(guān)于java中輸入/輸出流的說法正確的是( )。

  A) FileInputStream與FileOutputStream類用讀、寫字節(jié)流。

  B) Reader與Writer類用來讀、寫字符流。

  C) RandomAccessFile既可以用來讀文件,也可以用來寫文件。

  D) File類用來處理與文件相關(guān)的操作。

  5、下面說法正確的是( )。

  A)如果某公共接口被聲明在一個(gè)源文件中,則接口必須與源文件具有相同名字。

  B)如果源文件包含import語句,則該語句必須是除空行和注釋行外的第一個(gè)語句行。

  C)如果某源文件包含package語句,則該語句必須是第一個(gè)非空、非注釋行。

  D)接口中的方法必定是抽象方法,但可以不用關(guān)鍵字abstract修飾。

  6、下面關(guān)于Java中異常處理try塊的說法正確的是( )?

  A) try塊后通常應(yīng)有一個(gè)catch 塊,用來處理try塊中拋出的異常。

  B) catch 塊后必須有finally塊。

  C)可能拋出異常的方法調(diào)用應(yīng)放在try塊中。

  D)對(duì)拋出的異常的處理必須放在try塊中

  7、下面關(guān)于進(jìn)程、線程的說法正確的是( )。

  A)進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行過程。一個(gè)進(jìn)程在其執(zhí)行過程中,可以產(chǎn)生多個(gè)線程——多線程,形成多條執(zhí)行線索。

  B)線程是比進(jìn)程更小的執(zhí)行單位,是在一個(gè)進(jìn)程中獨(dú)立的控制流,即程序內(nèi)部的控制流。線程本身不能自動(dòng)運(yùn)行,棲身于某個(gè)進(jìn)程之中,由進(jìn)程啟動(dòng)執(zhí)行。

  C)Java多線程的運(yùn)行與平臺(tái)相關(guān)。

  D)對(duì)于單處理器系統(tǒng),多個(gè)線程分時(shí)間片獲取CPU或其他系統(tǒng)資源來運(yùn)行。對(duì)于多處理器系統(tǒng),線程可以分配到多個(gè)處理器中,從而真正的并發(fā)執(zhí)行多任務(wù)。

  8、關(guān)于BufferedReader類的readLine()方法,以下說法正確的是()。

  A)方法readLine()每次讀取一行數(shù)據(jù)。

  B)方法readLine()每次讀取一個(gè)字節(jié)。

  C)該方法可能拋出IOException異常,調(diào)用該方法時(shí)通常應(yīng)將它放到try塊中,并通過catch塊處理異常。

  D)如果讀到流的末尾,該方法返回的結(jié)果為null。

  三、程序閱讀題

  1、閱讀下面的程序,回答問題(u問3分,v問3分,共6分)。

  import java.awt.*;

  import javax.swing.*;

  public class T extends JFrame {

  public T ( ) {

  super("GridLayout");

  Container con=this.getContentPane();

  con.setLayout(new GridLayout(2,3));

  con.add(new JButton("a"));

  con.add(new JButton("b"));

  con.add(new JButton("c"));

  con.add(new JButton("d"));

  con.add(new JButton("e"));

  con.add(new JButton("f"));

  setSize(200, 80);

  setVisible(true);

  }

  public static void main(String args[]) {

  new T();

  }

  }

  u畫圖表示程序運(yùn)行后的圖形界面。

  v如果程序通過實(shí)現(xiàn)某個(gè)接口處理按鈕的動(dòng)作事件,則該接口名為何?接口中的方法頭聲明如何?

  答案:

  u

  v接口名:ActionListener

  接口中的方法:publicvoid actionPerformed(ActionEvent e)

  2、閱讀下面的程序,回答問題(u問3分,v問3分,共6分)。

  import java.util.*;

  publicclass T {

  public static void main(Stringargs[]) {

  Set set = new TreeSet();

  set.add(new Integer(10));

  set.add(new Integer(5));

  set.add(new Integer(15));

  set.add(new Integer(5));

  set.add(new Integer(10));

  System.out.println("size =" + set.size());

  Iterator it=set.iterator();

  while(it.hasNext()){

  System.out.print(it.next()+" ");

  }

  }

  }

  u程序運(yùn)行后輸出的結(jié)果如何?

  v說明java中的集合(Set接口)和映射(Map接口)的主要區(qū)別。

  答案:

  u

  size = 3

  5 10 15

  vSet接口是不包含重復(fù)元素的集合;Map接口將鍵映射到值,鍵可以重復(fù),但每個(gè)鍵最多只能映射一個(gè)值。

  3、閱讀下面的程序,并回答問題(u問3分,v問3分,共6分)。

  import java.io.*;

  public class Test {

  public static void main(String args[]) throws IOException {

  BufferedReader buf=new BufferedReader(

  newInputStreamReader(System.in));

  while(true) {

  String str=buf.readLine();

  if(str.equals("quit"))

  break;

  int x=Integer.parseInt(str);

  System.out.println(x*x);

  }

  }

  }

  編譯運(yùn)行上面的程序:

  u從鍵盤輸入5,回車后輸出的結(jié)果如何?

  v從鍵盤輸入quit,回車后程序執(zhí)行情況如何?

  答案:

  u25

  v終止應(yīng)用程序的運(yùn)行。

  《JAVA程序設(shè)計(jì)》期末考試試題 2

  1. 下面哪些是Thread類的方法()

  A start() B run() C exit() D getPriority()

  答案:ABD

  解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System類的方法,如System.exit(0)。

  2. 下面關(guān)于java.lang.Exception類的說法正確的是()

  A 繼承自Throwable B Serialable CD 不記得,反正不正確

  答案:A

  解析:Java異常的基類為java.lang.Throwable,java.lang.Error和java.lang.Exception繼承 Throwable,RuntimeException和其它的Exception等繼承Exception,具體的RuntimeException繼承RuntimeException。

  擴(kuò)展:錯(cuò)誤和異常的區(qū)別(Error vs Exception)

  1) java.lang.Error: Throwable的子類,用于標(biāo)記嚴(yán)重錯(cuò)誤。合理的應(yīng)用程序不應(yīng)該去try/catch這種錯(cuò)誤。絕大多數(shù)的錯(cuò)誤都是非正常的,就根本不該出現(xiàn)的。

  java.lang.Exception: Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運(yùn)行條件,而非嚴(yán)重錯(cuò)誤,并且鼓勵(lì)用戶程序去catch它。

  2) Error和RuntimeException 及其子類都是未檢查的異常(unchecked exceptions),而所有其他的Exception類都是檢查了的異常(checked exceptions).

  checked exceptions: 通常是從一個(gè)可以恢復(fù)的程序中拋出來的,并且最好能夠從這種異常中使用程序恢復(fù)。比如FileNotFoundException, ParseException等。檢查了的異常發(fā)生在編譯階段,必須要使用try…catch(或者throws)否則編譯不通過。

  unchecked exceptions: 通常是如果一切正常的話本不該發(fā)生的異常,但是的確發(fā)生了。發(fā)生在運(yùn)行期,具有不確定性,主要是由于程序的邏輯問題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復(fù),但是并不鼓勵(lì)終端程序員這么做,因?yàn)橥耆珱]要必要。因?yàn)檫@類錯(cuò)誤本身就是bug,應(yīng)該被修復(fù),出現(xiàn)此類錯(cuò)誤時(shí)程序就應(yīng)該立即停止執(zhí)行。 因此,面對(duì)Errors和unchecked exceptions應(yīng)該讓程序自動(dòng)終止執(zhí)行,程序員不該做諸如try/catch這樣的事情,而是應(yīng)該查明原因,修改代碼邏輯。

  RuntimeException:RuntimeException體系包括錯(cuò)誤的類型轉(zhuǎn)換、數(shù)組越界訪問和試圖訪問空指針等等。

  處理RuntimeException的原則是:如果出現(xiàn) RuntimeException,那么一定是程序員的錯(cuò)誤。例如,可以通過檢查數(shù)組下標(biāo)和數(shù)組邊界來避免數(shù)組越界訪問異常。其他(IOException等等)checked異常一般是外部錯(cuò)誤,例如試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯(cuò)誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯(cuò)誤。

  3. 下面程序的運(yùn)行結(jié)果是()

  String str1 = "hello";

  String str2 = "he" + new String("llo");

  System.err.println(str1 == str2);

  答案:false

  解析:因?yàn)閟tr2中的llo是新申請(qǐng)的內(nèi)存塊,而==判斷的是對(duì)象的地址而非值,所以不一樣。如果是String str2 = str1,那么就是true了。

  4. 下列說法正確的有()

  A. class中的constructor不可省略

  B. constructor必須與class同名,但方法不能與class同名

  C. constructor在一個(gè)對(duì)象被new時(shí)執(zhí)行。

  D.一個(gè)class只能定義一個(gè)constructor

  答案:C

  解析:這里可能會(huì)有誤區(qū),其實(shí)普通的類方法是可以和類名同名的,和構(gòu)造方法唯一的區(qū)分就是,構(gòu)造方法沒有返回值。

  5. 具體選項(xiàng)不記得,但用到的知識(shí)如下:

  String []a = new String[10];

  則:a[0]~a[9] = null

  a.length = 10

  如果是int []a = new int[10];

  則:a[0]~a[9] = 0

  a.length = 10

  6. 下面程序的運(yùn)行結(jié)果:()

  public static void main(String args[]) {

  Thread t = new Thread() {

  public void run() {

  pong();

  }

  };

  t.run();

  System.out.print("ping");

  }

  static void pong() {

  System.out.print("pong");

  }

  #FormatImgID_0#

  A pingpong B pongping C pingpong和pongping都有可能 D 都不輸出

  答案:B

  解析:這里考的是Thread類中start()和run()方法的區(qū)別了。start()用來啟動(dòng)一個(gè)線程,當(dāng)調(diào)用start方法后,系統(tǒng)才會(huì)開啟一個(gè)新的線程,進(jìn)而調(diào)用run()方法來執(zhí)行任務(wù),而單獨(dú)的調(diào)用run()就跟調(diào)用普通方法是一樣的,已經(jīng)失去線程的特性了。因此在啟動(dòng)一個(gè)線程的時(shí)候一定要使用start()而不是run()。

  7. 下列屬于關(guān)系型數(shù)據(jù)庫的是()

  A. Oracle B MySql C IMS D MongoDB

  答案:AB

  解答:IMS(Information Management System )數(shù)據(jù)庫是IBM公司開發(fā)的兩種數(shù)據(jù)庫類型之一;

  一種是關(guān)系數(shù)據(jù)庫,典型代表產(chǎn)品:DB2;

  另一種則是層次數(shù)據(jù)庫,代表產(chǎn)品:IMS層次數(shù)據(jù)庫。

  非關(guān)系型數(shù)據(jù)庫有MongoDB、memcachedb、Redis等。

  8. GC線程是否為守護(hù)線程?()

  答案:是

  解析:線程分為守護(hù)線程和非守護(hù)線程(即用戶線程)。

  只要當(dāng)前JVM實(shí)例中尚存在任何一個(gè)非守護(hù)線程沒有結(jié)束,守護(hù)線程就全部工作;只有當(dāng)最后一個(gè)非守護(hù)線程結(jié)束時(shí),守護(hù)線程隨著JVM一同結(jié)束工作。

  守護(hù)線程最典型的應(yīng)用就是 GC (垃圾回收器)

  9. volatile關(guān)鍵字是否能保證線程安全?()

  答案:不能

  解析:volatile關(guān)鍵字用在多線程同步中,可保證讀取的可見性,JVM只是保證從主內(nèi)存加載到線程工作內(nèi)存的值是最新的讀取值,而非cache中。但多個(gè)線程對(duì)

  volatile的寫操作,無法保證線程安全。例如假如線程1,線程2 在進(jìn)行read,load 操作中,發(fā)現(xiàn)主內(nèi)存中count的值都是5,那么都會(huì)加載這個(gè)最新的值,在線程1堆count進(jìn)行修改之后,會(huì)write到主內(nèi)存中,主內(nèi)存中的count變量就會(huì)變?yōu)?;線程2由于已經(jīng)進(jìn)行read,load操作,在進(jìn)行運(yùn)算之后,也會(huì)更新主內(nèi)存count的變量值為6;導(dǎo)致兩個(gè)線程及時(shí)用volatile關(guān)鍵字修改之后,還是會(huì)存在并發(fā)的情況。

  10. 下列說法正確的是()

  A LinkedList繼承自List

  B AbstractSet繼承自Set

  C HashSet繼承自AbstractSet

  D WeakMap繼承自HashMap

  答案:AC

  解析:下面是一張下載的Java中的集合類型的繼承關(guān)系圖,一目了然。

  #FormatImgID_1#

  11. 存在使i + 1 < i的數(shù)嗎()

  答案:存在

  解析:如果i為int型,那么當(dāng)i為int能表示的最大整數(shù)時(shí),i+1就溢出變成負(fù)數(shù)了,此時(shí)不就

  擴(kuò)展:存在使i > j || i <= j不成立的數(shù)嗎()

  答案:存在

  解析:比如Double.NaN或Float.NaN,感謝@BuilderQiu網(wǎng)友指出。

  12. 0.6332的數(shù)據(jù)類型是()

  A float B double C Float D Double

  答案:B

  解析:默認(rèn)為double型,如果為float型需要加上f顯示說明,即0.6332f

  13. 下面哪個(gè)流類屬于面向字符的輸入流( )

  A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader

  答案:D

  解析:Java的IO操作中有面向字節(jié)(Byte)和面向字符(Character)兩種方式。

  面向字節(jié)的操作為以8位為單位對(duì)二進(jìn)制的數(shù)據(jù)進(jìn)行操作,對(duì)數(shù)據(jù)不進(jìn)行轉(zhuǎn)換,這些類都是InputStream和OutputStream的子類。

  面向字符的操作為以字符為單位對(duì)數(shù)據(jù)進(jìn)行操作,在讀的時(shí)候?qū)⒍M(jìn)制數(shù)據(jù)轉(zhuǎn)為字符,在寫的時(shí)候?qū)⒆址D(zhuǎn)為二進(jìn)制數(shù)據(jù),這些類都是Reader和Writer的子類。

  總結(jié):以InputStream(輸入)/OutputStream(輸出)為后綴的是字節(jié)流;

  以Reader(輸入)/Writer(輸出)為后綴的是字符流。

  14. Java接口的修飾符可以為()

  A private B protected C final D abstract

  答案:CD

  解析:接口很重要,為了說明情況,這里稍微啰嗦點(diǎn):

  (1)接口用于描述系統(tǒng)對(duì)外提供的所有服務(wù),因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們;

  (2)接口僅僅描述系統(tǒng)能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

  (3)接口不涉及和任何具體實(shí)例相關(guān)的細(xì)節(jié),因此接口沒有構(gòu)造方法,不能被實(shí)例化,沒有實(shí)例變量,只有靜態(tài)(static)變量;

  (4)接口的中的變量是所有實(shí)現(xiàn)類共有的,既然共有,肯定是不變的東西,因?yàn)樽兓臇|西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了。

  (5) 接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會(huì)說了,沒有關(guān)系,可以通過 實(shí)現(xiàn)接口的'對(duì)象的行為來修改接口中的屬性。這當(dāng)然沒有問題,但是考慮這樣的情況。如果接口 A 中有一個(gè)public 訪問權(quán)限的靜態(tài)變量 a。按照 Java 的語義,我們可以不通過實(shí)現(xiàn)接口的對(duì)象來訪問變量 a,通過 A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類中是可以這樣做的,那么實(shí)現(xiàn)接口 A 的所有對(duì)象也都會(huì)自動(dòng)擁有這一改變后的 a 的值了,也就是說一個(gè)地方改變了 a,所有這些對(duì)象中 a 的值也都跟著變了。這和抽象類有什么區(qū)別呢,怎么體現(xiàn)接口更高的抽象級(jí)別呢,怎么體現(xiàn)接口提供的統(tǒng)一的協(xié)議呢,那還要接口這種抽象來做什么呢?所以接口中 不能出現(xiàn)變量,如果有變量,就和接口提供的統(tǒng)一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實(shí)現(xiàn)接口的對(duì)象提供一個(gè)統(tǒng) 一的屬性。

  通俗的講,你認(rèn)為是要變化的東西,就放在你自己的實(shí)現(xiàn)中,不能放在接口中去,接口只是對(duì)一類事物的屬性和行為更高層次的抽象。對(duì)修改關(guān)閉,對(duì)擴(kuò)展(不同的實(shí)現(xiàn) implements)開放,接口是對(duì)開閉原則的一種體現(xiàn)。

  所以:

  接口的方法默認(rèn)是public abstract;

  接口中不可以定義變量即只能定義常量(加上final修飾就會(huì)變成常量)。所以接口的屬性默認(rèn)是public static final 常量,且必須賦初值。

  注意:final和abstract不能同時(shí)出現(xiàn)。

  15. 不通過構(gòu)造函數(shù)也能創(chuàng)建對(duì)象嗎()

  A 是 B 否

  答案:A

  解析:Java創(chuàng)建對(duì)象的幾種方式(重要):

  (1) 用new語句創(chuàng)建對(duì)象,這是最常見的創(chuàng)建對(duì)象的方法。

  (2) 運(yùn)用反射手段,調(diào)用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實(shí)例方法。

  (3) 調(diào)用對(duì)象的clone()方法。

  (4) 運(yùn)用反序列化手段,調(diào)用java.io.ObjectInputStream對(duì)象的 readObject()方法。

  (1)和(2)都會(huì)明確的顯式的調(diào)用構(gòu)造函數(shù) ;(3)是在內(nèi)存上對(duì)已有對(duì)象的影印,所以不會(huì)調(diào)用構(gòu)造函數(shù) ;(4)是從文件中還原類的對(duì)象,也不會(huì)調(diào)用構(gòu)造函數(shù)。

  坐完筆試后,很多人都希望能提前預(yù)知面試題目,最好的方法就是整理一些經(jīng)典的面試題,java面試的專業(yè)性比較強(qiáng),如果你的基礎(chǔ)不夠扎實(shí),那么最好找些經(jīng)典的java面試題及答案分析,提前參透一下吧!

  java面試題1、說說HashMap和Hashtable的差別

  答案分析:

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

  HashMap類沒有分類或排序。他允許一個(gè)null鍵和多個(gè)null值。

  Hashtable類似于HashMap,不過不允許null鍵和null值。他也比HashMap慢,因?yàn)樗峭降摹?/p>

  java面試題2、Anonymous Inner Class (匿名內(nèi)部類)是否能extends(繼承)其他類,是否implements(實(shí)現(xiàn))interface(接口)?

  答案分析:

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

  java面試題3、STRING與STRINGBUFFER的區(qū)別是什么?

  答案分析:

  STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對(duì)字符串中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時(shí),那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

  java面試題4、什么時(shí)候用assert

  答案分析:

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

  java面試題5、Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)和否呢?是用==還是equals()?他們有何差別?

  答案分析:

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

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

  java面試題6、List, Set, Map是否繼承自Collection接口?

  答案分析:

  List,Set是

  Map不是

  《JAVA程序設(shè)計(jì)》期末考試試題 3

  JAVA筆試基礎(chǔ)題目

  1、string 是最基本的數(shù)據(jù)類型嗎?

  2、int 和 integer 有什么區(qū)別

  3、string 和 stringbuffer 的區(qū)別

  4、運(yùn)行時(shí)異常與一般異常有何異同?

  5、說出 servlet 的生命周期,并說出 servlet 和 cgi 的區(qū)別。

  6、說出 arraylist,vector, linkedlist 的存儲(chǔ)性能和特性

  7、ejb 是基于哪些技術(shù)實(shí)現(xiàn)的?并說出 sessionbean 和 entitybean 的區(qū)別,statefulbean 和statelessbean 的區(qū)別。

  8、collection 和 collections 的區(qū)別。

  9、&和&&的區(qū)別。

  江蘇電信縣級(jí)筆試題目

  江蘇電信縣級(jí)筆試考的內(nèi)容為:經(jīng)濟(jì)學(xué),財(cái)務(wù),會(huì)計(jì),營銷,管理30道單選,20道多選,10道判斷(每題1分)

  大題(每題10分):

  1授權(quán)的益處和流程

  2客戶購買的動(dòng)機(jī),聯(lián)系3g具體說說

  3一位客戶出差,孩子沒人接送,你怎么辦?如果同意,是否值得推廣?

  4根據(jù)材料談?wù)劷K電信如何實(shí)施聯(lián)合戰(zhàn)略

  2015年建行筆試行測(cè)題

  請(qǐng)參加過建行筆試的各位朋友們提供下行測(cè)題型,謝謝

  行測(cè)題型:

  第一部分:常識(shí)判斷

  第二部分:言語理解與表達(dá)(給一段話概括意思、選詞填空)

  第三部分:判斷推理(圖形推理、定義判斷、類比推理、邏輯判斷)

  第四部分:數(shù)量關(guān)系(數(shù)字推理、數(shù)學(xué)運(yùn)算)

  第五部分:資料分析

  盡管知道建行筆試都有行測(cè)題,但希望各位朋友們能提供下具體的題型,不勝感激!

  波士頓咨詢類筆試題目

  (一)專業(yè)與作文

  戰(zhàn)略、人力、財(cái)務(wù)、營銷模型名稱各五個(gè),并深度描述其中兩個(gè)的運(yùn)用

  (二)、作文(500~800 字)

  1、我看管理咨詢業(yè)

  2、四大商業(yè)銀行改革之我見

  3、中國民企成長之煩惱

  4、我看商業(yè)新業(yè)態(tài)

  5、我看中國房地產(chǎn)

  6、我看中國旅游業(yè)

  7、農(nóng)業(yè)改革之我見

  (三)問答題

  1、公司人力資源管理很亂,應(yīng)采用什么方法?

  2、上海一年消費(fèi)多少啤酒?

  3、如果原油開采成本降為0,世界會(huì)產(chǎn)生什么影響?

  2015年拜耳校招筆試真題

  1.1和0之間加上什么符號(hào)才可以使得到的數(shù)比0大又比1小呢?你知道嗎?

  2.戴維手里拿著火柴走到廚房,這有一個(gè)煤氣灶和一個(gè)酒精燈,他如果想燒開水,請(qǐng)他應(yīng)該先點(diǎn)燃什么?

  3.有三個(gè)不同的信箱,今有4封不同的信欲投其中,共有多少種不同的投法?

  4.連續(xù)4次拋擲一枚硬幣,恰出現(xiàn)兩次是正面的概率和最后兩次出現(xiàn)是正面的概率。

  5.一個(gè)口袋內(nèi)裝有除顏色外其他都相同的6個(gè)白球和4個(gè)紅球,從中任意摸出2個(gè),a、2個(gè)都是白球的概率;b、2個(gè)都是紅球的概率;c、一個(gè)白球,一個(gè)紅球的概率。

  6.你有兩個(gè)罐子,50個(gè)紅色彈球,50個(gè)藍(lán)色彈球,隨機(jī)選出一個(gè)罐子,隨機(jī)選取出一個(gè)彈球放入罐子,怎么給紅色彈球最大的選中機(jī)會(huì)?在你的計(jì)劃中,得到紅球的準(zhǔn)確幾率是多少?

  7.在中國文化中中庸思想一直占據(jù)著很重要的地位與作用,談?wù)勀愕睦斫?

  8.你知道“世紀(jì)之藥”嗎?

  9.談?wù)勱P(guān)于公司的幾件事?

  推理題

  1、在房里有三盞燈,房外有三個(gè)開關(guān),在房外看不見房?jī)?nèi)的.情況,你只能進(jìn)門一次,你用什么方法來區(qū)分那個(gè)開關(guān)控制那一盞燈?

  2、有兩根不均勻分布的香,每根香燒完的時(shí)間是一個(gè)小時(shí),你能用什么方法來確定一段45分鐘的時(shí)間?

  3、一個(gè)經(jīng)理有三個(gè)女兒,三個(gè)女兒的年齡加起來等于13,三個(gè)女兒的年齡乘起來等于經(jīng)理自己的年齡,有一個(gè)下屬已知道經(jīng)理的年齡,但仍不能確定經(jīng)理三個(gè)女兒的年齡,這時(shí)經(jīng)理說只有一個(gè)女兒的頭發(fā)是黑的,然后這個(gè)下屬就知道了經(jīng)理三個(gè)女兒的年齡。請(qǐng)問三個(gè)女兒的年齡分別是多少?為什么?

  4、在一張長方形的桌面上放了n個(gè)一樣大小的圓形硬幣。這些硬幣中可能有一些不完全在桌面內(nèi),也可能有一些彼此重疊;當(dāng)再多放一個(gè)硬幣而它的圓心在桌面內(nèi)時(shí),新放的硬幣便必定與原先某些硬幣重疊。證明整個(gè)桌面可以用4n個(gè)硬幣完全覆蓋?

  5、一個(gè)球、一把長度大約是球的直徑2/3長度的直尺.你怎樣測(cè)出球的半徑?方法很多,看看誰的比較巧妙?

  6、五個(gè)大小相同的一元人民幣硬幣。要求兩兩相接觸,應(yīng)該怎么擺?

  數(shù)字推理筆試題如何解答

  1.熟記各種數(shù)字的運(yùn)算關(guān)系。

  如各種數(shù)字的平方、立方以及它們的鄰居,做到看到某個(gè)數(shù)字就有感覺。這是迅速準(zhǔn)確解好數(shù)字推理題材的前提。常見的需記住的數(shù)字關(guān)系如下:

  (1)平方關(guān)系:2-4,3-9,4-16,5-25,6-36,7-49,8-64,9-81,10-100,11-121,12-144

  13-169,14-196,15-225,16-256,17-289,18-324,19-361,20-400

  (2)立方關(guān)系:2-8,3-27,4-64,5-125,6-216,7-343,8-512,9-729,10-1000

  (3)質(zhì)數(shù)關(guān)系:2,3,5,7,11,13,17,19,23,29......

  (4)開方關(guān)系:4-2,9-3,16-4......

  以上四種,特別是前兩種關(guān)系,每次考試必有。所以,對(duì)這些平方立方后的數(shù)字,及這些數(shù)字的鄰居(如,64,63,65等)要有足夠的敏感。當(dāng)看到這些數(shù)字時(shí),立刻就能想到平方立方的可能性。熟悉這些數(shù)字,對(duì)解題有很大的幫助,有時(shí)候,一個(gè)數(shù)字就能提供你一個(gè)正確的解題思路。如 216 ,125,64()如果上述關(guān)系爛熟于胸,一眼就可看出答案但一般考試題不會(huì)如此弱智,實(shí)際可能會(huì)這樣 215,124,63,() 或是217,124,65,()即是以它們的鄰居(加減1),這也不難,一般這種題5秒內(nèi)搞定。

  2.熟練掌握各種簡(jiǎn)單運(yùn)算,一般加減乘除大家都會(huì),值得注意的是帶根號(hào)的運(yùn)算。根號(hào)運(yùn)算掌握簡(jiǎn)單規(guī)律則可,也不難。

  3.對(duì)中等難度以下的題,建議大家練習(xí)使用心算,可以節(jié)省不少時(shí)間,在考試時(shí)有很大效果。

  注冊(cè)電氣工程師筆試試題

  1、TN-C系統(tǒng),設(shè)備對(duì)外殼短路,重復(fù)接地,求外殼電壓 (我的答案是110V)

  A

  B 98V

  C 110V

  D 66V

  2、1題改成設(shè)備不接地等電位聯(lián)結(jié),(我的答案是66V)

  A 110V

  B 99V

  C 66V

  D 44V

  3 外接設(shè)備B問當(dāng)設(shè)備A發(fā)生接地故障,設(shè)備B外殼的接觸電壓是多少?我的答案是110V

  4 采用以下那種措施不能防止設(shè)備A故障設(shè)備B外殼帶電 我選A

  A 設(shè)備B線路接RCD

  B 設(shè)備B采用局部TT

  C (設(shè)備B與A沒有PE線連接)

  D 設(shè)備B采用隔離變壓器供電。

  5 從變壓器開始,TN-C-S系統(tǒng)改為TN-S,設(shè)備A和B處接觸電壓有何變化? 我選c

  A 降低20%

  B 降低

  C 降低40%

  D 沒變化

  下列負(fù)荷中為二級(jí)負(fù)荷的是( )

  A. 中斷供電將造成公共場(chǎng)所秩序混亂者

  B. 二類高層建筑的消防控制室、消防水泵、消防電梯和防煙排煙設(shè)施等

  C. 室外消防用水量為20L/s的公共建筑的消防用電設(shè)備

  《JAVA程序設(shè)計(jì)》期末考試試題 4

  1、Collection 和 Collections的區(qū)別?

  Collection是集合的根接口,其下有set及l(fā)ist

  Collections是集合的算法。

  2、Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?用contains來區(qū)分是否有重復(fù)的對(duì)象。還是都不用?

  在比較時(shí)先調(diào)用hashCode方法,如果不相同,證明不相等。

  如果相同,再調(diào)用equals方法,如果equals方法相同,證明相等,不相同,證明不相等。

  ==:主要用在基本數(shù)據(jù)類型及引用

  equals:主要是對(duì)象或?qū)ο笠玫谋容^。

  集合中是否包含某一個(gè)元素用contains來判斷。

  3、List,Set,Map是否繼承自Collection接口?

  List,set繼承于Collection

  Map沒有繼承于Collection,其相對(duì)是獨(dú)立的。

  屬于Collection類型的對(duì)象,可以通過構(gòu)造函數(shù)將一個(gè)集合構(gòu)造成另外一個(gè)集合。

  4、面向?qū)ο蟮奶卣饔心男┓矫妫?/strong>

  1.抽象:

  找共性,將共有的屬性、方法放到父類中

  2.繼承:

  子類繼承于父類,具有父類的所有屬性與方法,可以重用,也可以覆蓋。

  3.封裝:

  一個(gè)類包括多個(gè)屬性及方法。

  4. 多態(tài)性:

  5、String是最基本的數(shù)據(jù)類型嗎?

  基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。

  java.lang.String類是final類型的,因此不可以繼承這個(gè)類、不能修改這個(gè)類。為了提高效率節(jié)省空間,我們應(yīng)該用StringBuffer類

  6、int 和 Integer 有什么區(qū)別?

  int 是基本數(shù)據(jù)類型,不是對(duì)象,占一個(gè)內(nèi)存空間,沒有方法。與其同類的有l(wèi)ong,char,doble

  Integer是封裝類,具有方法及屬性。與其同類的有Long,Double.Float

  7、運(yùn)行時(shí)異常與一般異常有何異同?

  運(yùn)行時(shí)異常:JVM拋出的異常,代碼中不用處理。

  一般異常:用戶拋出的異常,如果用throws 聲明了,調(diào)用這個(gè)方法的代碼必須對(duì)其處理。

  8、&和&&的區(qū)別?

  &:與: 左邊若為false右邊還執(zhí)行。

  :短路與,左邊若為false右邊不執(zhí)行。

  9、final,finally,finalize的區(qū)別?

  final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

  finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

  finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。

  10、heap和stack有什么區(qū)別?

  棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進(jìn)先出的方式進(jìn)行處理。堆是棧的一個(gè)組成元素

  11、Static Nested Class 和 Inner Class的不同?

  Static Nested Class是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實(shí)例被實(shí)例化。而通常的內(nèi)部類需要在外部類實(shí)例化后才能實(shí)例化。

  12、GC是什么? 為什么要有GC?

  GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動(dòng)監(jiān)測(cè)對(duì)象是否超過作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。

  13、short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?

  short s1 = 1; s1 = s1 + 1; (s1+1運(yùn)算結(jié)果是int型,需要強(qiáng)制轉(zhuǎn)換類型)

  short s1 = 1; s1 += 1;(可以正確編譯)

  14、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

  Math.round(11.5)==12

  Math.round(-11.5)==-11

  round方法返回與參數(shù)最接近的長整數(shù),參數(shù)加1/2后求其floor.

  15、Java有沒有g(shù)oto?

  java中的保留字,現(xiàn)在沒有在java中使用。

  16、給出一個(gè)你最常見到的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

  一般異常:

  IOException

  FileNotFoundException

  SqlException

  17、數(shù)組有沒有l(wèi)ength()這個(gè)方法? String有沒有l(wèi)ength()這個(gè)方法?

  數(shù)組沒有l(wèi)ength()這個(gè)方法,有l(wèi)ength這個(gè)屬性

  String有l(wèi)ength()這個(gè)方法.

  18、構(gòu)造器Constructor是否可被override?

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

  19、是否可以繼承String類?

  String類是final類故不可以繼承。

  20、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

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

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

  會(huì)執(zhí)行,在return前執(zhí)行。

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

  不對(duì),有相同的 hash code

  這是java語言的定義:

  1) 對(duì)象相等則hashCode一定相等;

  2) hashCode相等對(duì)象未必相等

  23、四種會(huì)話跟蹤技術(shù)?

  Cookie

  Session

  Hidden

  url 重寫

  24、寫一個(gè)Singleton出來。

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

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

  第一種形式: 定義一個(gè)類,它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類變量,在類初始化時(shí)實(shí)例話,通過一個(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è)供外部訪問本class的靜態(tài)方法,可以直接訪問

  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è)類,它的構(gòu)造函數(shù)為private的,所有方法為static的。

  一般認(rèn)為第一種形式要更加安全些

  25、Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。

  原理: 有錯(cuò)直接轉(zhuǎn)到異常處理部分或向上拋出。

  應(yīng)用:JAVA的異常就是錯(cuò)誤,有兩種,一種是運(yùn)行時(shí),編碼可以不用捕捉。一種是一般異常,如果throws聲明了,必須進(jìn)行處理。

  26、描述一下JVM加載class文件的原理機(jī)制?

  JVM中類的裝載是由ClassLoader和它的子類來實(shí)現(xiàn)的,Java ClassLoader 是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類文件的類。

  《JAVA程序設(shè)計(jì)》期末考試試題 5

  1). applet的運(yùn)行過程要經(jīng)歷4個(gè)步驟,其中哪個(gè)不是運(yùn)行步驟?

  A.瀏覽器加載指定URL中的HTML文件

  B.瀏覽器顯示HTML文件

  C.瀏覽器加載HTML文件中指定的applet類

  D.瀏覽器中的Java運(yùn)行環(huán)境運(yùn)行該applet

  正確答案:B

  2). 二維數(shù)組A[O,…,8][0,…,9],其每個(gè)元素占2字節(jié)。從首地址400開始,按行優(yōu)先順序存儲(chǔ),則元素A[8][5]的存儲(chǔ)地址為( )。

  A.570

  B.506

  C.410

  D.482

  正確答案:A

  答案解析:A[8][5]元素存儲(chǔ)的位置在第9行第6列,所以A[8][5]之前存儲(chǔ)的個(gè)數(shù)應(yīng)為8×10+5 = 85,這些元素占用的空間為85×2字節(jié)=170字節(jié),所以A[8][5]的存儲(chǔ)位置為400+170= 570。

  3). 用于生產(chǎn)過程控制的系統(tǒng),一般都是( ),它要求有對(duì)輸入數(shù)據(jù)及時(shí)做出響應(yīng)的能力。

  A.批處理系統(tǒng)

  B.分時(shí)系統(tǒng)

  C.實(shí)時(shí)系統(tǒng)

  D.及時(shí)系統(tǒng)

  正確答案:C

  答案解析:用于生產(chǎn)過程控制的系統(tǒng),一般都是實(shí)時(shí)系統(tǒng),它要求有對(duì)輸入數(shù)據(jù)及時(shí)做出反應(yīng)(響應(yīng))的能力。由于環(huán)境和控制對(duì)象以及工作任務(wù)的不同,控制系統(tǒng)對(duì)計(jì)算機(jī)系統(tǒng)的要求也會(huì)不同,一般會(huì)對(duì)計(jì)算機(jī)系統(tǒng)的'可靠性、封閉性、抗干擾性等指標(biāo)提出要求。

  4). Java語言的許多特點(diǎn)中,下列哪個(gè)特點(diǎn)是C++語言所不具備的?

  A.高性能

  B.跨平臺(tái)

  C.面向?qū)ο?/p>

  D.有類庫

  正確答案:B

  5). 在匹配器(Matcher)類中,用于尋找下一個(gè)模式匹配串的方法是( )。

  A.static boolean matches()

  B.boolean matcher .fi nd()

  C.i nt matcher .start()

  D.i nt matcher .end()

  正確答案:A

  答案解析:本題考查考生對(duì)Java 中的匹配器(Matcher)類的理解。Matcher 類用于將一個(gè)輸入字符串i nput 和模式串pattern 相比較。Boolean matcher .fi nd()方法用于尋找下一個(gè)模式匹配串;i nt matcher .start()方法用于返回匹配串的一個(gè)起始索引整數(shù)值;i nt matcher .end()方法用于返回匹配串的一個(gè)終止索引整數(shù)值。而用于輸入字符串與模式串比較的方法是static boolean matches(),選項(xiàng)A 正確。

  6). J2EE和( )語言綁定。

  A.C

  B.C++

  C.Java

  D.匯編語言

  正確答案:C

  答案解析:J2EE的基礎(chǔ)是J2SE,以Java為平臺(tái);而C語言用于ODBCAPI。由于兩者不兼容,SUN公司才提出了JDBC作為Java幾個(gè)平臺(tái)與麴據(jù)庫的標(biāo)準(zhǔn)連接。

  7). 下列關(guān)于結(jié)構(gòu)化設(shè)計(jì)原則的描述,錯(cuò)誤的是

  A.在塊和進(jìn)程的非正常出口處往往需要調(diào)用GOTO語句,使用GOTO語句使程序執(zhí)行效率提高,但是濫用GOTO語句確實(shí)有害,應(yīng)該避免使用GOTO語句。

  B.程序設(shè)計(jì)時(shí)應(yīng)該自頂向下,逐步求精。

  C.程序設(shè)計(jì)時(shí),應(yīng)該將復(fù)雜問題進(jìn)行模塊化,就是將程序設(shè)計(jì)的總目標(biāo)分解為若干個(gè)分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo)。

  D.在進(jìn)行程序設(shè)計(jì)時(shí),應(yīng)該盡量在一行書寫一條語句,盡量做到效率第一,清晰第二。

  正確答案:D

  8). 如果線程調(diào)用下列方法,不能保證使該線程停止運(yùn)行的是( )。

  A.sleep()

  B.stop()

  C.yield()

  D.wait()

  正確答案:C

  答案解析:線程的方法中sleep()方法的作用是使比當(dāng)前線程優(yōu)先級(jí)低的線程運(yùn)行。該方法使一個(gè)線程暫停運(yùn)行一段固定時(shí)間。在休眠時(shí)間內(nèi),線程將不運(yùn)行,低優(yōu)先級(jí)的線程將有機(jī)會(huì)運(yùn)行。yield()方法為只讓給同等優(yōu)先級(jí)的線程運(yùn)行。如果沒有同等優(yōu)先級(jí)的線程是可運(yùn)行狀態(tài),yield()方法將什么也不做,即線程將繼續(xù)運(yùn)行。stop()方法是強(qiáng)行終止線程。wait()方法是線程間交互的方法,是使一個(gè)線程停止運(yùn)行,進(jìn)入等待狀態(tài)。

  9). 開發(fā)軟件時(shí)對(duì)提高開發(fā)人員工作效率至關(guān)重要的是( )。

  A.操作系統(tǒng)的資源管理功能

  B.先進(jìn)的軟件開發(fā)工具和環(huán)境

  C.程序員的數(shù)量

  D.計(jì)算機(jī)的并行處理能力

  正確答案:B

  答案解析:先進(jìn)的軟件開發(fā)工具和環(huán)境對(duì)提高開發(fā)人員工作效率是至關(guān)重要的。

  10). 信息隱蔽的概念與下述哪一種概念直接相關(guān)( )。

  A.軟件結(jié)構(gòu)定義

  B.模塊獨(dú)立性

  C.模塊類型劃分

  D.模擬耦合度

  正確答案:B

  答案解析:信息隱蔽的概念與模塊獨(dú)立性這一概念直接相關(guān)。

  《JAVA程序設(shè)計(jì)》期末考試試題 6

  一.選擇題(30分)

  1.下列哪些情況可以終止當(dāng)前線程的運(yùn)行?

  a. 拋出一個(gè)異常時(shí)。

  b. 當(dāng)該線程調(diào)用sleep()方法時(shí)。

  c. 當(dāng)創(chuàng)建一個(gè)新線程時(shí)。(與當(dāng)前進(jìn)程無關(guān))

  d. 當(dāng)一個(gè)優(yōu)先級(jí)高的線程進(jìn)入就緒狀態(tài)時(shí)。

  2. 下面哪些為構(gòu)造函數(shù)的特性定義

  a. 在類中聲明構(gòu)造函數(shù)時(shí),名稱應(yīng)該與類名相同

  b. 具有重載特性,可以建立多個(gè)相同的名稱

  c. 使用類建立新對(duì)象時(shí),會(huì)自動(dòng)執(zhí)行構(gòu)造函數(shù),因此在構(gòu)造函

  數(shù)內(nèi)設(shè)定變量的初值或進(jìn)行內(nèi)存分配

  d. 以上都是

  3. 關(guān)于異常處理機(jī)制的敘述哪些正確

  a. catch部分捕捉到異常情況時(shí),才會(huì)執(zhí)行finally部分(無論是否有毛病,都執(zhí)行)

  b. 當(dāng)try區(qū)段的程序發(fā)生異常時(shí),才會(huì)執(zhí)行catch區(qū)段的程序

  c. 不論程序是否發(fā)生錯(cuò)誤及捕捉到異常情況,都會(huì)執(zhí)行finally部分

  d. 以上都是

  4. 下列關(guān)于接口的敘述中哪些是正確的

  a. 接口中的數(shù)據(jù)必須設(shè)定初值(就是接口中的常量)

  b. 接口中的方法都是抽象方法

  c. 接口可以聲明引用

  d. 以上都正確

  5.Java語言中,方法的重寫(Overriding)和重載(Overloading)是多態(tài)性的不同表現(xiàn)。下邊哪些說法是對(duì)的?

  A. 重寫是父類與子類之間多態(tài)性的一種表現(xiàn)。

  B. 重寫是一個(gè)類中多態(tài)性的一種表現(xiàn)。

  C. 重載是一個(gè)類中多態(tài)性的一種表現(xiàn)。

  D. 重載是父類與子類之間多態(tài)性的一種表現(xiàn)。

  6.在Struts應(yīng)用的視圖中包含哪些組件?

  A. JSP

  B. Servlet

  C. ActionServlet

  D. Action

  E. 代表業(yè)務(wù)邏輯或業(yè)務(wù)數(shù)據(jù)的JavaBean

  F. EJB

  G. 客戶化標(biāo)簽

  7. struts框架中,關(guān)于FormBean,下列哪些說法是正確的:

  A FormBean是一種數(shù)據(jù)bean,主要用來封裝表單提交上來的數(shù)據(jù),并把這些數(shù)據(jù)傳遞給Action

  B 在FormBean中可以對(duì)頁面上傳遞來的參數(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)證操作

  8哪些方法可以進(jìn)行servlet的調(diào)試?()

  A、使用打印語句; 在桌面計(jì)算機(jī)上運(yùn)行服務(wù)器

  B、使用Apache Log4J

  C、使用IDE集成的調(diào)試器

  D、直接查看HTML源碼 ????

  E、返回錯(cuò)誤頁面給客戶

  9、下面關(guān)于servlet的功用說法正確的有哪些?()

  A、讀取客戶程序發(fā)送來的顯式數(shù)據(jù)

  B、讀取客戶程序發(fā)送來的隱式數(shù)據(jù)

  C、生成相應(yīng)的結(jié)果

  D、發(fā)送顯式的數(shù)據(jù)給客戶程序

  E、發(fā)送隱式的數(shù)據(jù)給客戶程序

  10、下面關(guān)于session的用法哪些是錯(cuò)誤的?(

  A、HttpSession session = new HttpSession();

  request.getSession();

  B、String haha =(String) session.getParameter(Attribute)(“haha”);

  C、session.removeAttribute(“haha”);

  D、session. setAttribute(“haha”,值);

  11、關(guān)于說法正確的有哪些?()

  A、URL的輸出在請(qǐng)求時(shí)入到JSP頁面中

  B、不能含有影響整個(gè)頁面的JSP內(nèi)容

  C、被包含文件改變后不需更改使用它的頁面

  D、被包含文件更改后,需要手動(dòng)地更新使用它的頁面(不需要手動(dòng)更新)

  12、關(guān)于bean的說法正確的有哪些?()

  A、具備一個(gè)零參數(shù)(空)的構(gòu)造函數(shù)(不是必須的)

  B、不應(yīng)該有公開的實(shí)例變量(字段)

  C、所有的屬性都必須通過getXxx和setXxx方法來訪問

  D、布爾型的屬性使用isXxx,而非getXxx

  13、下面關(guān)于MVC說法錯(cuò)誤的有哪些?()

  A、必須使用復(fù)雜的框架

  B、使用內(nèi)建的RequestDispatcher能夠很好地實(shí)現(xiàn)MVC

  C、當(dāng)其中一個(gè)組件發(fā)生變化的時(shí)候,MVC影響整個(gè)系統(tǒng)的設(shè)計(jì)

  D、我們可以用MVC來處理單個(gè)請(qǐng)求

  14、下面的標(biāo)簽中哪些是JSTL標(biāo)簽?()

  15、struts框架,錯(cuò)誤的是,下面那些說法正確?

  A Struts中無法完成上傳功能

  B Struts框架基于MVC模式

  C Struts框架容易引起流程復(fù)雜、結(jié)構(gòu)不清晰等問題(清晰)

  D Struts可以有效地降低項(xiàng)目的類文件數(shù)目

  二、填空題( 5分)

  1、調(diào)用函數(shù)MOD(123,10)返回值為___。

  2、select round (123.67,1) from dual;這語句輸出值為______。

  3、創(chuàng)建一個(gè)臨時(shí)替代變量使用的字符是_____。

  4、若v_comm = 2800, X := NVL (V_comm,0) ,則X的值為____。

  5、調(diào)用函數(shù)INSTR(‘Here you are’,’er’)返回值為___。

  三、判斷題(10分)

  1、WHERE子句限制行記錄,也可以指定限制分組結(jié)果的條件。 ()

  2、具有UNIQUE約束的列不能包含多個(gè)空值。 ()

  3、DATE型數(shù)據(jù)中包含著時(shí)間值。 ()

  4、具有外鍵約束的列可以包含空值。 ()

  5、如果在類型為4)的列中輸入“hello”,則只能存儲(chǔ)hell。 ()

  6、含有Group by子句的`查詢,其結(jié)果是排好序的。 ()

  7、定義游標(biāo)時(shí),其中的select語句不能使用order by子句。(子查詢

  不能用) ()

  9、觸發(fā)器一定會(huì)被激發(fā)。 、過程可以有返回值。 ()

  10、instead

  of觸發(fā)器只是基于視圖的。

  四、寫出相應(yīng)的SQL語句(括號(hào)內(nèi)為列名)(10分)

  1、查詢從事各工作(JOB)的員工人數(shù)。

  2、查詢與員工SMITH在同一部門(DEPTNO)的員工的姓名(ENAME),工資(SAL)和部門。

  3、查詢所有員工的姓名(ENAME),工資(SAL)和工資等級(jí)(GRADE)。

  4、查詢獲得工資(SAL)最高的3個(gè)員工信息。

  5、查詢所有員工的姓名(ENAME)及其主管姓名(ENAME)。

  五、簡(jiǎn)答題(15分)

  1. 在PL/SQL程序中,進(jìn)行用戶自定義異常處理的3個(gè)步驟是

  什么?

  2. 面向?qū)ο蟮奶卣饔心男┓矫?并簡(jiǎn)要介紹

  3. List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?

  List 以特定次序來持有元素,可有重復(fù)元素。Set 無法擁有重復(fù)元素,內(nèi)部排序。Map 保存key-value值,value可多值。

  4 .struts1.0和struts2.0的區(qū)別?如何控制兩種框架中的單例模式?

  5. 描述一下如何在struts1.0實(shí)現(xiàn)國際化,以兩國語言(中文,英文)為例:

  6.struts中怎么配置form-bean、action

  7. Hibernate自帶的分頁機(jī)制是什么?如果不使用Hibernate自帶的分頁,則采用什么方式分頁?

  8. hibernate中一對(duì)多配置文件返回的是什么?

  9.什么樣的數(shù)據(jù)適合存放到第二級(jí)緩存中?

  10你一般用spring做什么?

  11項(xiàng)目中如何體現(xiàn)Spring中的切面編程,具體說明。

  12 觸發(fā)觸發(fā)器的數(shù)據(jù)操作有哪些?

  13 解釋視圖的含義以及使用視圖的好處。

  14 簡(jiǎn)述ORACLE中5種約束及其作用。

  15 ORACLE中過程和函數(shù)的異同點(diǎn)。

  六、編程題(30分)

  1、創(chuàng)建一個(gè)PL/SQL塊,根據(jù)用戶輸入的編號(hào),在emp表中查詢出該編號(hào)的員工姓名、部門號(hào)及其主管編號(hào),要有異常處理。

  2、創(chuàng)建一個(gè)PL/SQL塊,根據(jù)用戶輸入的工作,從emp表中逐條輸出從事這一工作的每位員工的編號(hào)、姓名和受雇如期,每條信息格式如下:(用游標(biāo)實(shí)現(xiàn))

  編號(hào) 姓名 受雇日期

  7751 JOHN 95-12-31

  3、編寫一個(gè)函數(shù),用于判斷EMP表中某一工作(JOB)是否存在,若EMP表存在此工作名稱,則返回TRUE,否則返回FALSE。

  4、編寫一觸發(fā)器,在EMP表執(zhí)行插入或修改前被激發(fā),此觸發(fā)器將對(duì)員工的工資(SAL)超過5000進(jìn)行報(bào)錯(cuò),不能插入或修改,不超

  過5000的才將員工編號(hào)、工作及當(dāng)時(shí)的日期(SYSDATE)插入U(xiǎn)P_EMP表

  (注:此表已建好,表結(jié)構(gòu)為UP_EMP(EMPNO NUMBER(4),SAL NUMBER(7,2),UDETE DATE))

  5下面程序的輸出結(jié)果是多少?

  importjava.util.Date;

  public class Test extends Date{

  public static void main(String[] args) {

  new Test().test();}

  public void test(){

  System.out.println(super.getClass().getName());}}

  6下面的程序代碼輸出的結(jié)果是多少? public class smallT

  {}

  public static void main(String args[]) { } public int get() { } try { } finally { } return 2 ; return 1 ; smallT t = new smallT(); int b = t.get(); System.out.println(b);

  7子線程循環(huán)10次,接著主線程循環(huán)100,接著又回到子線程循環(huán)10次,接著再回到主線程又循環(huán)100,如此循環(huán)50次,請(qǐng)寫出程序。

  8去掉一個(gè)Vector集合中重復(fù)的元素

  9有一個(gè)字符串,其中包含中文字符、英文字符和數(shù)字字符,請(qǐng)統(tǒng)計(jì)和打印出各個(gè)字符的個(gè)數(shù)

  10. xxx公司的sql面試

  Table EMPLOYEES Structure:

  EMPLOYEE_ID NUMBER Primary Key,

  FIRST_NAME VARCHAR2(25),

  LAST_NAME VARCHAR2(25),

  Salary number(8,2),

  HiredDate DATE,

  Departmentid number(2)

  Table Departments Structure:

  Departmentid number(2) Primary Key,

  DepartmentName VARCHAR2(25).

  (1)基于上述EMPLOYEES表寫出查詢:寫出雇用日期在今年的,或者工資在[1000,2000]之間的,或者員工姓名(last_name)以’Obama’打頭的所有員工,列出這些員工的全部個(gè)人信息。

  (2) 基于上述EMPLOYEES表寫出查詢:查出部門平均工資大于1800

  元的部門的所有員工,列出這些員工的全部個(gè)人信息。()

  (3) 基于上述EMPLOYEES表寫出查詢:查出個(gè)人工資高于其所在部門平均工資的員工,列出這些員工的全部個(gè)人信息及該員工工資高出部門平均工資百分比。

  參考答案

  1答案:ABD

  2答案: D

  3答案:BC

  4答案:AB

  5答案AC

  6答案:A,G

  7答案:A

  8A B C D E

  9A B C D E

  10A B D

  11A B C

  12B D

  13A C

  14A B C

  15A B C

  16答案:C

  二 填空

  3 123.7 & 2800 2

  三判斷

  × ×√√√√×√×√

  四寫出相應(yīng)的SQL語句

  1Select job,count(*) from emp group by job;

  2Select ename,sal,deptno from emp where deptno=(select deptno from emp where ename=’SMITH’);

  3Select ename,sal,grade from emp,salgrade where sal between losal and hisal;

  4Select * from (select * from emp order by sal desc) where rownum<=3;

  5Select e1.ename empname,e2.ename mgrname from emp e1,emp e2 where e1.mgr=e2.empno;

  五簡(jiǎn)答

  可以通過聲明和發(fā)布來截獲自定義異常。

  一、在聲明部分為聲明自定義異常名。

  二、在執(zhí)行部分使用 RAISE 語句顯式地發(fā)布異常。

  三、在相應(yīng)的異常處理例程中引用已聲明的異常。

  2(1).抽象:

  抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。抽象包括兩個(gè)方面,一是過程抽象,二是數(shù)據(jù)抽象。

  (2).繼承:

  繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過程稱為類繼承。新類繼承了原始類的特性, 新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。

  (3).封裝:

  封裝是把過程和數(shù)據(jù)包圍起來,對(duì)數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過一個(gè)受保護(hù)的接口訪問其他對(duì)象。

  (4). 多態(tài)性:

  多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問題。

  List 以特定次序來持有元素,可有重復(fù)元素。Set 無法擁有重復(fù)元素,內(nèi)部排序。Map 保存key-value值,value可多值。

  3List 以特定次序來持有元素,可有重復(fù)元素。Set 無法擁有重復(fù)元素,內(nèi)部排序。Map 保存key-value值,value可多值

  4a、Action類:

  struts1.2要求Action類繼承一個(gè)基類。struts2.0 Action要求繼承ActionSupport基類 b、線程模式

  struts1.2 Action是單例模式的并且必須是線程安全的,因?yàn)閮H有一個(gè)Action的實(shí)例來處理所有的請(qǐng)求。

  單例策略限制了Struts1.2 Action能做的事情,并且開發(fā)時(shí)特別小心。Action資源必須是線程安全的或同步的。

  struts2.0 Action為每一個(gè)請(qǐng)求產(chǎn)生一個(gè)實(shí)例,因此沒有線程安全問題。

  c、Servlet依賴

  struts1.2 Action依賴于Servlet API,因?yàn)楫?dāng)一個(gè)Action被調(diào)用時(shí)HttpServletRequest和HttpServletResponse被傳遞給execut方法。

  struts2.0 Action不依賴于容器,允許Action脫離容器單獨(dú)測(cè)試。如果需要,Struts2 Action仍

  然可以訪問初始的Request和Response。

  但是,其他的元素減少或者消除了直接訪問HttpServletRequest和HttpServletResponse的必要性。

  d、可測(cè)性

  測(cè)試struts1.2 Action的一個(gè)主要問題是execute方法暴露了Servlet API(這使得測(cè)試要依賴于容器)。一個(gè)第三方擴(kuò)展:struts TestCase

  提供了一套struts1.2的模擬對(duì)象來進(jìn)行測(cè)試。

  Struts2.0 Action可以通過初始化、設(shè)置屬性、調(diào)用方法來測(cè)試,“依賴注入”也使得測(cè)試更容易。

  《JAVA程序設(shè)計(jì)》期末考試試題 7

  第一階段題庫

  基礎(chǔ)知識(shí)部分:

  1. JDK是什么?JRE是什么?

  a) 答:JDK:java開發(fā)工具包。JRE:java運(yùn)行時(shí)環(huán)境。

  2. 什么是java的平臺(tái)無關(guān)性?

  a) 答:Java源文件被編譯成字節(jié)碼的形式,無論在什么系統(tǒng)環(huán)境下,只要有java虛擬機(jī)就能運(yùn)行這個(gè)字節(jié)碼文件。也就是一處編寫,處處運(yùn)行。這就是java的跨平臺(tái)性。

  3. 在一臺(tái)電腦上配置java環(huán)境,path起什么作用?如何配置?

  a) 答:path的作用是在DOS環(huán)境下,能在任意位置使用JDK目錄中bin文件夾中的可執(zhí)行程序,來編譯執(zhí)行java程序。

  b) 在環(huán)境變量中找到path變量,把bin文件夾的絕對(duì)路徑加上即可。

  4. 什么樣的標(biāo)識(shí)符是合法的?

  a) 由字母、數(shù)字、_和$組成,長度不限。其中字母可以是大寫或小寫的英文字母,數(shù)字為0到9。

  b) 標(biāo)識(shí)符的第一個(gè)字符不能是數(shù)字。

  c) 標(biāo)識(shí)符區(qū)分大小寫。

  d) 標(biāo)識(shí)符不能包含空格。

  5. Java有幾種基本數(shù)據(jù)類型?

  a) byte,short,int,long,char,boolean,float,double

  6. 什么是隱式類型轉(zhuǎn)換?什么是顯示類型轉(zhuǎn)換?

  a) 當(dāng)將占位數(shù)少的類型賦值給占位數(shù)多的類型時(shí),Java自動(dòng)使用隱式類型轉(zhuǎn)換。 b) 當(dāng)把在級(jí)別高的變量的值賦給級(jí)別底變量時(shí),必須使用顯示類型轉(zhuǎn)換運(yùn)算。

  7. &&和&區(qū)別||和|區(qū)別?

  a) &&和||是短路與,短路或,當(dāng)左邊的表達(dá)式能判斷當(dāng)前結(jié)果,則不判斷右邊的表達(dá)式。

  b) 而& 和|則將兩邊的表達(dá)式都運(yùn)算完畢后,再算結(jié)果。

  8. break,continue區(qū)別?

  a) break結(jié)束最近的一個(gè)循環(huán),continue結(jié)束當(dāng)次循環(huán),進(jìn)入下次循環(huán)。

  9. 類的命名規(guī)則是什么?

  a) 如果類名使用拉丁字母,那么名字的首寫字母使用大寫字母。

  b) 類名最好見名得意,當(dāng)類名由幾個(gè)單詞復(fù)合而成時(shí),每個(gè)單詞的首寫字母使用大寫。

  10. 類體的內(nèi)容由兩部分構(gòu)成,哪兩部分?

  a) 一部分是變量的定義,用來刻畫屬性。

  b) 另一部分是方法的定義,用來刻畫功能。

  11. 解釋什么是類的成員變量,局部變量,實(shí)例成員變量,類成員變量?

  a) 變量定義部分所定義的變量被稱為類的成員變量。

  b) 在方法體中定義的變量和方法的參數(shù)被稱為局部變量。

  c) 成員變量又分為實(shí)例成員變量和類成員變量(static修飾)。

  12. 簡(jiǎn)述this關(guān)鍵字用法。

  a) this關(guān)鍵字使用在實(shí)例方法中,代表調(diào)用該方法的當(dāng)前對(duì)象。

  13. 如何確定方法的返回類型?

  _____________________________________________________________________

  a) 方法返回的值的類型就是方法的返回類型,如果無返回值,則返回類型為void。

  14. 返回值為void的方法,可否有return?

  a) 可以。但return后沒有任何值。

  15. 解釋什么是類方法,什么是實(shí)例方法?

  a) static修飾的方法是類方法,無static修飾的方法是實(shí)例方法。

  16. 簡(jiǎn)述方法和變量的命名規(guī)則?

  a) 首寫字母使用小寫,如果由多個(gè)單詞組成,從第2個(gè)單詞開始首字母使用大寫。

  17. 什么是方法重載?

  a) 方法重載是指一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同。

  18. 什么是構(gòu)造方法?

  a) 構(gòu)造方法是一種特殊方法,它的名字必須與它所在的類的名字完全相同,并且不返回任何數(shù)據(jù)類型。

  19. 如何創(chuàng)建一個(gè)對(duì)象?

  a) 使用new 運(yùn)算符和類的構(gòu)造方法為對(duì)象分配內(nèi)存,如果類中沒有構(gòu)造方法,系統(tǒng)會(huì)調(diào)用默認(rèn)的構(gòu)造方法。

  20. 系統(tǒng)什么情況下會(huì)為類提供構(gòu)造方法,提供什么樣的構(gòu)造方法?

  a) 如果類中沒有構(gòu)造方法,系統(tǒng)會(huì)提供一個(gè)默認(rèn)的構(gòu)造方法,默認(rèn)的構(gòu)造方法是無參的。

  21. 對(duì)象如何調(diào)用自己的成員變量和方法?

  a) 使用運(yùn)算符” . ”來調(diào)用自己的成員變量和方法。

  22. 為什么可以直接用類名來訪問類成員變量和類方法?

  a) 因?yàn)楫?dāng)類被加載到虛擬機(jī)的時(shí)候,類成員變量就被分配內(nèi)存,類方法被分配入口地

  址,所以不用創(chuàng)建對(duì)象,可以直接通過類名調(diào)用。

  23. 類變量有什么特點(diǎn)?

  a) 一個(gè)類的所有對(duì)象共享同一個(gè)類變量。

  24. 類方法有什么特點(diǎn)?

  a) 類方法只能調(diào)用類變量和類方法。(同一類中)

  25. package關(guān)鍵字有什么作用,使用中注意什么問題?

  a) package指定一個(gè)類所在的包,該語句為源代碼第一行。

  26. import關(guān)鍵字有什么作用?

  a) 引入程序中所用到的類。

  27. 類有幾種訪問權(quán)限?變量和方法有幾種訪問權(quán)限?分別是什么?

  a) 類有兩種訪問權(quán)限:public,友好的。

  b) 方法和變量的訪問權(quán)限:public,protected,友好的,private。

  28. 簡(jiǎn)述java的訪問權(quán)限。

  a) public:公有的,任何類都可以訪問。

  b) protected:受保護(hù)的,同一個(gè)包的類可以訪問。不同包的子類可以訪問。 c) 友好的:同一個(gè)包的類可以訪問。

  d) private:私有的,在同一個(gè)類中才能訪問。

  29. 子類能繼承父類的哪些變量和方法?

  a) 如果子類和父類在同一個(gè)包中,那么,子類自然地繼承了其父類中不是private 的成員變量作為自己的成員變量,并且也自然地繼承了父類中不是private 的方法作為自己的方法。

  _____________________________________________________________________

  b) 如果子類和父類不在同一個(gè)包中,那么,子類繼承了父類的protected,public 成員變量做為子類的成員變量,并且繼承了父類的protected,public 方法為子類的方法。

  30. 子類重寫父類的方法,可否降低訪問權(quán)限?

  a) 不可以降低。

  31. final關(guān)鍵字可以用來修飾什么?分別起什么作用?

  a) final可以修飾類,這樣的類不能被繼承。

  b) final可以修飾方法,這樣的方法不能被重寫。

  c) final可以修飾變量,這樣的變量的值不能被修改,是常量。

  32. 簡(jiǎn)述super關(guān)鍵字作用?

  a) 使用super調(diào)用父類的構(gòu)造方法。

  b) 使用super操作被隱藏的成員變量和方法。

  33. 簡(jiǎn)述什么是對(duì)象上轉(zhuǎn)型?

  a) 假設(shè),A 類是B 類的父類,當(dāng)我們用子類創(chuàng)建一個(gè)對(duì)象,并把這個(gè)對(duì)象的引用放到父類的對(duì)象中時(shí),我們稱這個(gè)父類對(duì)象是子類對(duì)象的上轉(zhuǎn)型對(duì)象。

  34. 上轉(zhuǎn)型對(duì)象可以操作什么?不可以操作什么?

  a) 上轉(zhuǎn)對(duì)象不能操作子類新增的成員變量,失掉了這部分屬性,不能使用子類新增的方法,失掉了一些功能 。

  b) 上轉(zhuǎn)型對(duì)象可以操作子類繼承或重寫的成員變量,也可以使用子類繼承的或重寫的方法。

  35. 什么是抽象類?什么是抽象方法?有什么特點(diǎn)?

  a) 用關(guān)鍵字abstract修飾類稱為抽象類,abstract類不能用new運(yùn)算創(chuàng)建對(duì)象,必須產(chǎn)生其子類,由子類創(chuàng)建對(duì)象。

  b) 用關(guān)鍵字abstract修飾方法稱為抽象方法,abstract方法,只允許聲明,而不允許實(shí)現(xiàn)。

  36. 一個(gè)類聲明實(shí)現(xiàn)一個(gè)接口,那么這個(gè)類需要做什么工作?

  a) 實(shí)現(xiàn)接口里所有的方法,并且這些方法的訪問權(quán)限必須是public。

  37. 簡(jiǎn)述什么是數(shù)組?

  a) 數(shù)組是相同類型的數(shù)據(jù)按順序組成的一種復(fù)合數(shù)據(jù)類型。通過數(shù)組名加數(shù)組下標(biāo),來使用數(shù)組中的數(shù)據(jù)。下標(biāo)從 0 開始排序。

  38. 創(chuàng)建數(shù)組是否需要指定數(shù)組長度,如何求數(shù)組長度?

  a) 必須指定數(shù)組長度,數(shù)組調(diào)用 .length來獲取數(shù)組長度。

  39. char數(shù)組和byte數(shù)組如何轉(zhuǎn)化成字符串?如何求字符串長度?

  a) 利用String類本身的構(gòu)造方法,String (char a[]),String (byte a[]),””.length()。

  以下方法均為字符串中方法

  40. equals equalsIgnoreCase startsWith endsWith

  a) 字符串比較 。

  b) 忽略大小寫比較。

  c) 判斷是否以指定字符串開頭、結(jié)尾。

  41. regionMatches

  a) 判斷一個(gè)字符串的`子串是否和另一個(gè)字符串的子串匹配。

  42. compareTo compareToIgnoreCase indexOf

  a) 按字典順序比較字符串。

  b) 忽略大小寫的按字典順序比較字符串。

  c) 字符串檢索。

  43. substring replace trim()

  a) 字符串截取

  b) 字符串替換

  c) 去掉字符串前后空格。

  44. 字符串如何轉(zhuǎn)化為int型,double型?

  a) Integer.parseInt(“1”);

  b) Double.parseDouble(“25.45”);

  45. 簡(jiǎn)述StringTokenizer作用?

  a) 按照指定的分隔符,將字符串解析成若干語言符號(hào)。

  46. 如何判斷一個(gè)字符是不是數(shù)字,是不是大寫?

  a) Character.isDigit(‘a(chǎn)’)

  b) Character.isUpperCase(‘U’)

  47. 已知一個(gè)java.util.Date對(duì)象,如何格式化成如下格式 YYYY-MM-dd hh:mm:ss

  a) SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  formate.format(new Date()));

  48. 如何生成一個(gè)0-100的隨即整數(shù)?

  a) (int)(Math.random()*100)

  49. 簡(jiǎn)述java異常處理的機(jī)制?

  a) 當(dāng)所調(diào)用的方法出現(xiàn)異常時(shí),調(diào)用者可以捕獲異常使之得到處理;也可以回避異常。

  50. 簡(jiǎn)述如下關(guān)鍵字用途try、catch、throw、throws、finally

  a) try:保護(hù)代碼,如果try中某行代碼出現(xiàn)異常,則try中代碼不再繼續(xù)執(zhí)行。 b) catch:捕獲異常,當(dāng)try中出現(xiàn)異常,則catch負(fù)責(zé)捕獲異常,并處理。

  c) throw:拋出異常。

  d) throws:聲明異常。

  e) finally:無論try中是否出現(xiàn)異常,finally一定執(zhí)行。

  51. LinkedList和ArrayList區(qū)別?

  a) LinkedList底層通過鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)實(shí)現(xiàn)。

  b) ArrayList底層通過數(shù)組實(shí)現(xiàn)。

  52. 什么是I/O流,有什么作用?

  a) 指數(shù)據(jù)輸入輸出的流, I/O 流提供一條通道程序,可以使用這條通道把源中的字節(jié)序列送給目的地。

  53. 如何查看一個(gè)文件的大小,絕對(duì)路徑,是否可讀?

  a) File file = new File(“e://a.txt”);

  b) file.length();

  c) file.getAbsolutePath();

  d) file.canRead();

  54. 已知如下代碼

  File f = new File("myfile.dat");

  FileInputStream istream = new FileInputStream(f); 如何從流中讀取數(shù)據(jù)。

  a) byte[] buff = new byte[100];

  b) istream.read(buff);

  55. 實(shí)現(xiàn)多線程的兩種方法?

  a) 從Java.lang.Thread類派生一個(gè)新的線程類,重寫它的run()方法。

  b) 實(shí)現(xiàn)Runnable接口,重寫Runable接口中的run()方法。

  56. 簡(jiǎn)述一個(gè)線程的生命周期?

  a) 新建---運(yùn)行---中斷---死亡

  57. 如何讓一個(gè)準(zhǔn)備就緒的線程運(yùn)行?

  a) 調(diào)用線程的start方法讓一個(gè)處于準(zhǔn)備就緒的狀態(tài)的線程運(yùn)行。

  58. 如何讓一個(gè)線程休眠1000毫秒?

  a) 調(diào)用線程的sleep方法,參數(shù)為1000。

  59. 如何使線程同步?

  a) 使用同步方法

  synchronized void methodA() { }

  b) 使用同步塊

  synchronized(object) {

  //要同步的語句

  }

  60. 什么是GC?為什么有GC?

  a) GC是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。

  61. 構(gòu)造方法能否被重寫?為什么?

  a) 不能,因?yàn)闃?gòu)造方法不能被繼承,所以不能重寫。

  62. 是否可以繼承String類,為什么?

  a) 因?yàn)镾tring類是final類,final修飾的類不能被繼承。

  63. java關(guān)鍵字區(qū)分大小寫嗎?

  a) java關(guān)鍵字一律小寫。所以無所謂區(qū)分大小寫,大寫的不是關(guān)鍵字。

  64. java采用什么字符集?該字符集有多少字符

  a) Java 使用 unicode 字符集,所以常量共有 65535 個(gè)

  65. 列舉算術(shù)運(yùn)算符?

  a) +,-,*,/,%

  66. 算術(shù)混合運(yùn)算結(jié)果精度如何確定?

  a) Java按照運(yùn)算符兩邊的操作元的最高精度保留結(jié)果的精度。

  67. &是位運(yùn)算符,與運(yùn)算的規(guī)則是什么?

  a) 全1則1,否則為0

  68. | 是位運(yùn)算符,或運(yùn)算的規(guī)則是什么?

  a) 全0則0,否則是1

  69. ^是位運(yùn)算符,異或運(yùn)算的規(guī)則是什么?

  a) 相同0,不同1

  70. ~是位運(yùn)算符,非運(yùn)算的規(guī)則是什么?

  a) 遇1則0,遇0則1

  71. if語句后邊有個(gè)括號(hào),該括號(hào)里表達(dá)式為什么類型?

  a) boolean類型

  72. switch語句后括號(hào)里的表達(dá)式是什么類型?case后類型如何確定?

  a) char,int,byte,short,枚舉類型。

  b) case后面是一個(gè)常量,該常量類型由switch后括號(hào)內(nèi)表達(dá)式來確定。

  73. switch語句后,default關(guān)鍵字起什么作用?break起什么作用?

  a) default:當(dāng)用戶指定的表達(dá)式與任何case都不匹配的時(shí)候,執(zhí)行了 default后的語句。 b) break:退出當(dāng)前case。

  74. for循環(huán)后括號(hào)里三個(gè)表達(dá)式分別起什么作用?

  a) 1:循環(huán)初始化的時(shí)候執(zhí)行,只執(zhí)行一次。

  b) 2:循環(huán)成立的條件。

  c) 3:循環(huán)每次執(zhí)行都會(huì)調(diào)用該表達(dá)式,一般做變量自增。

  75. while 和do。while區(qū)別?

  a) while先判斷條件,再執(zhí)行。

  b) do……while先執(zhí)行,再判斷條件

  c) do……while至少執(zhí)行一次。

  76. 什么是編譯執(zhí)行的語言?什么是解釋執(zhí)行的語言?

  a) 編譯方式:Compilation:針對(duì)當(dāng)前的機(jī)器處理器芯片,將源程序全部翻譯成機(jī)器指令,稱做目標(biāo)程序,再將目標(biāo)程序交給計(jì)算機(jī)執(zhí)行.

  b) 解釋方式:Interpretation:這種方式不產(chǎn)生整個(gè)的目標(biāo)程序,而是根據(jù)當(dāng)前的機(jī)器處理器芯片,邊翻譯邊執(zhí)行,翻譯一句執(zhí)行一句.

  77. 簡(jiǎn)述一個(gè)java程序執(zhí)行的過程?

  a) 首先編寫java源文件(擴(kuò)展名為.java的文本文檔)。

  b) 用javac命令把源文件編譯成字節(jié)碼文件(.class文件)

  c) 用java命令執(zhí)行字節(jié)碼文件。

  78. 成員變量的作用范圍?局部變量的作用范圍?

  a) 成員變量在整個(gè)類內(nèi)都有效

  b) 局部變量只在定義它的類內(nèi)有效。

  79. 構(gòu)造方法有什么作用?

  a) 在創(chuàng)建對(duì)象的時(shí)候,java虛擬機(jī)會(huì)調(diào)用類的構(gòu)造方法來創(chuàng)建對(duì)象。一般對(duì)象的初始化工作可以放在構(gòu)造方法里。

  80. java三大特性?

  a) 封裝,繼承,多態(tài)。

  數(shù)據(jù)庫部分

  81. 簡(jiǎn)述什么是關(guān)系型數(shù)據(jù)庫?

  a) 所謂關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫。關(guān)系模型指的就是二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系組成的一個(gè)數(shù)據(jù)組織。

  b) 關(guān)系型數(shù)據(jù)庫是由許多數(shù)據(jù)表(Table)所組成,表又是由許多記錄(Row 或Record)所組成,而紀(jì)錄又是由許多的字段(Column 或Filed)所組成。

  82. 什么是主鍵?

  a) 設(shè)置一個(gè)表中的某個(gè)字段為主鍵,這個(gè)字段能夠唯一的確定該表中某條記錄,這樣的字段我們稱為主鍵。

  83. 什么是外鍵?

  a) 外部鍵約束用于強(qiáng)制參照完整性,提供單個(gè)字段或者多個(gè)字段的參照完整性。

  84. 主外鍵關(guān)聯(lián)的作用?

  a) 保證數(shù)據(jù)完整性。

  b) 消除冗余數(shù)據(jù)。

  85. SQL語句中文含義是?

  a) Structured Query Language,結(jié)構(gòu)化查詢語言。

  86. 什么是數(shù)據(jù)庫?

  a) 數(shù)據(jù)庫是長期存儲(chǔ)在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。

  87. 什么數(shù)據(jù)庫管理系統(tǒng)?

  a) DBMS就是實(shí)現(xiàn)把用戶意義下的抽象的邏輯數(shù)據(jù)轉(zhuǎn)換成計(jì)算機(jī)中的具體的物理數(shù)據(jù)的處理軟件。

  JDBC部分

  88. JDBC含義?

  a) JDBC(Java DataBase Connectivity) java數(shù)據(jù)庫連接,是java連接數(shù)據(jù)庫的AIP。

  89. JDBC連接數(shù)據(jù)庫步驟?

  a) 加載驅(qū)動(dòng)

  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

  b) 建立連接

  Connection conn = DriverManager.getConnection(dbURL,username,password);

  c) 創(chuàng)建語句對(duì)象

  Statement stmt = conn.createStatement()

  90. 如何使用sql語句操作數(shù)據(jù)庫?

  a) 得到語句對(duì)象之后,使用語句對(duì)象調(diào)用executeUpdate(sql)方法和executeQuery(sql)

  方法分別執(zhí)行更新語句和查詢語句。

  91. executeUpdate(sql)方法的返回值表示什么含義?

  a) 表示該更新方法影響了幾行記錄。

  92. executeQuery(sql)方法的返回值如何使用?

  a) 該方法的返回值為一個(gè)結(jié)果集,即ResultSet類型的對(duì)象。

  b) ResultSet類型的對(duì)象有一個(gè)游標(biāo),指向當(dāng)前操作的行。該游標(biāo)默認(rèn)指向第一行記錄

  之前,如果我們想操作結(jié)果集,需要先將游標(biāo)下移,我們調(diào)用ResultSet接口的next()方法將游標(biāo)下移,如果結(jié)果集里有數(shù)據(jù),則游標(biāo)下移,指向第一行,如果結(jié)果集里沒有記錄,則下移失敗。當(dāng)游標(biāo)指向具體的某一行時(shí),我們就可以從結(jié)果集里邊獲取值了。獲取的值為當(dāng)前游標(biāo)指向行的值。

  93. 如何獲取游標(biāo)所指的行的數(shù)據(jù)?

  a) 當(dāng)游標(biāo)指向某一行時(shí),我們可以使用ResultSet接口的getString(列名)方法來獲取某一列的值,列名作為方法的參數(shù)。

  94. 創(chuàng)建語句對(duì)象時(shí),createStatement(參數(shù)1,參數(shù)2),兩個(gè)參數(shù)分別表示什么含義?

  a) 第一個(gè)參數(shù)指定該語句對(duì)象生成的結(jié)果集是否可滾動(dòng)以及是否敏感,

  b) 第二個(gè)參數(shù)指定該語句對(duì)象生成的結(jié)果集是否可以更新數(shù)據(jù)庫。

  《JAVA程序設(shè)計(jì)》期末考試試題 8

  1. Java中sleep和wait的區(qū)別

 、 這兩個(gè)方法來自不同的類分別是,sleep來自Thread類,和wait來自O(shè)bject類。

  sleep是Thread的靜態(tài)類方法,誰調(diào)用的誰去睡覺,即使在a線程里調(diào)用b的sleep方法,實(shí)際上還是a去睡覺,要讓b線程睡覺要在b的代碼中調(diào)用sleep。

  ② 鎖: 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。

  sleep不出讓系統(tǒng)資源;wait是進(jìn)入線程等待池等待,出讓系統(tǒng)資源,其他線程可以占用CPU。一般wait不會(huì)加時(shí)間限制,因?yàn)槿绻鹷ait線程的運(yùn)行資源不夠,再出來也沒用,要等待其他線程調(diào)用notify/notifyAll喚醒等待池中的所有線程,才會(huì)進(jìn)入就緒隊(duì)列等待OS分配系統(tǒng)資源。sleep(milliseconds)可以用時(shí)間指定使它自動(dòng)喚醒過來,如果時(shí)間不到只能調(diào)用interrupt()強(qiáng)行打斷。

  Thread.sleep(0)的作用是“觸發(fā)操作系統(tǒng)立刻重新進(jìn)行一次CPU競(jìng)爭(zhēng)”。

 、 使用范圍:wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用。

  synchronized(x){ x.notify() //或者wait() }

  2. Java中HashMap和HashTable的區(qū)別

 、 歷史原因: Hashtable是給予陳舊的Dictonary類的, HashMap是Java1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)

 、 HashMap允許空的鍵值對(duì), 而HashTable不允許

 、 HashTable同步,而HashMap非同步,效率上比HashTable要高

  3. 請(qǐng)簡(jiǎn)述在異常當(dāng)中,throw和throws有什么區(qū)別

 、 throw代表動(dòng)作,表示拋出一個(gè)異常的動(dòng)作;throws代表一種狀態(tài),代表方法可能有異常拋出

 、 throw用在方法實(shí)現(xiàn)中,而throws用在方法聲明中

 、 throw只能用于拋出一種異常,而throws可以拋出多個(gè)異常

  4. 內(nèi)存溢出和內(nèi)存泄露的區(qū)別

  內(nèi)存溢出 out of memory,是指程序在申請(qǐng)內(nèi)存時(shí),沒有足夠的內(nèi)存空間供其使用,出現(xiàn)out of memory;比如申請(qǐng)了一個(gè)integer,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出。

  內(nèi)存泄露 memory leak,是指程序在申請(qǐng)內(nèi)存后,無法釋放已申請(qǐng)的內(nèi)存空間,一次內(nèi)存泄露危害可以忽略,但內(nèi)存泄露堆積后果很嚴(yán)重,無論多少內(nèi)存,遲早會(huì)被占光。

  memory leak會(huì)最終會(huì)導(dǎo)致out of memory!

  內(nèi)存溢出就是你要求分配的內(nèi)存超出了系統(tǒng)能給你的,系統(tǒng)不能滿足需求,于是產(chǎn)生溢出。

  內(nèi)存泄漏是指你向系統(tǒng)申請(qǐng)分配內(nèi)存進(jìn)行使用(new),可是使用完了以后卻不歸還(),結(jié)果你申請(qǐng)到的那塊內(nèi)存你自己也不能再訪問(也許你把它的地址給弄丟了),而系統(tǒng)也不能再次將它分配給需要的程序。一個(gè)盤子用盡各種方法只能裝4個(gè)果子,你裝了5個(gè),結(jié)果掉倒地上不能吃了。這就是溢出!比方說棧,棧滿時(shí)再做進(jìn)棧必定產(chǎn)生空間溢出,叫上溢,?諘r(shí)再做退棧也產(chǎn)生空間溢出,稱為下溢。就是分配的內(nèi)存不足以放下數(shù)據(jù)項(xiàng)序列,稱為內(nèi)存溢出。

  以發(fā)生的方式來分類,內(nèi)存泄漏可以分為4類:

  ① 常發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼會(huì)被多次執(zhí)行到,每次被執(zhí)行的時(shí)候都會(huì)導(dǎo)致一塊內(nèi)存泄漏。

  ② 偶發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只有在某些特定環(huán)境或操作過程下才會(huì)發(fā)生。常發(fā)性和偶發(fā)性是相對(duì)的。對(duì)于特定的環(huán)境,偶發(fā)性的也許就變成了常發(fā)性的。所以測(cè)試環(huán)境和測(cè)試方法對(duì)檢測(cè)內(nèi)存泄漏至關(guān)重要。

 、 一次性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只會(huì)被執(zhí)行一次,或者由于算法上的缺陷,導(dǎo)致總會(huì)有一塊僅且一塊內(nèi)存發(fā)生泄漏。比如,在類的構(gòu)造函數(shù)中分配內(nèi)存,在析構(gòu)函數(shù)中卻沒有釋放該內(nèi)存,所以內(nèi)存泄漏只會(huì)發(fā)生一次。

 、 隱式內(nèi)存泄漏。程序在運(yùn)行過程中不停的分配內(nèi)存,但是直到結(jié)束的時(shí)候才釋放內(nèi)存。嚴(yán)格的說這里并沒有發(fā)生內(nèi)存泄漏,因?yàn)樽罱K程序釋放了所有申請(qǐng)的內(nèi)存。但是對(duì)于一個(gè)服務(wù)器程序,需要運(yùn)行幾天,幾周甚至幾個(gè)月,不及時(shí)釋放內(nèi)存也可能導(dǎo)致最終耗盡系統(tǒng)的所有內(nèi)存。所以,我們稱這類內(nèi)存泄漏為隱式內(nèi)存泄漏。

  從用戶使用程序的角度來看,內(nèi)存泄漏本身不會(huì)產(chǎn)生什么危害,作為一般的用戶,根本感覺不到內(nèi)存泄漏的.存在。真正有危害的是內(nèi)存泄漏的堆積,這會(huì)最終消耗盡系統(tǒng)所有的內(nèi)存。從這個(gè)角度來說,一次性內(nèi)存泄漏并沒有什么危害,因?yàn)樗粫?huì)堆積,而隱式內(nèi)存泄漏危害性則非常大,因?yàn)檩^之于常發(fā)性和偶發(fā)性內(nèi)存泄漏它更難被檢測(cè)到。

  5. String,StringBuffer 和 StringBuilder的區(qū)別

  ①可變與不可變

  String類中使用字符數(shù)組保存字符串,如下就是,因?yàn)橛小癴inal”修飾符,所以可以知道string對(duì)象是不可變的。

  private final char value[];

  StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數(shù)組保存字符串,如下就是,可知這兩種對(duì)象都是可變的。

  char[] value;

 、谑欠穸嗑程安全

  String中的對(duì)象是不可變的,也就可以理解為常量,顯然線程安全。

  AbstractStringBuilder是StringBuilder與StringBuffer的公共父類,定義了一些字符串的基本操作,如expandCapacity、append、、indexOf等公共方法。

  StringBuffer對(duì)方法加了同步鎖或者對(duì)調(diào)用的方法加了同步鎖,所以是線程安全的?慈缦略创a:

  public synchronized StringBuffer reverse() { super.reverse(); return this; } public int indexOf(String str) { return indexOf(str, 0); //存在 public synchronized int indexOf(String str, int fromIndex) 方法 }

  StringBuilder并沒有對(duì)方法進(jìn)行加同步鎖,所以是非線程安全的。

 、跾tringBuilder與StringBuffer共同點(diǎn)

  StringBuilder與StringBuffer有公共父類AbstractStringBuilder(抽象類)。

  抽象類與接口的其中一個(gè)區(qū)別是:抽象類中可以定義一些子類的公共方法,子類只需要增加新的功能,不需要重復(fù)寫已經(jīng)存在的方法;而接口中只是對(duì)方法的申明和常量的定義。

  StringBuilder、StringBuffer的方法都會(huì)調(diào)用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer會(huì)在方法上加synchronized關(guān)鍵字,進(jìn)行同步。

  最后,如果程序不是多線程的,那么使用StringBuilder效率高于StringBuffer。

  6. 數(shù)組和鏈表的區(qū)別

  二者都屬于一種數(shù)據(jù)結(jié)構(gòu)

  從邏輯結(jié)構(gòu)來看:

  ① 數(shù)組必須事先定義固定的長度(元素個(gè)數(shù)),不能適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況。當(dāng)數(shù)據(jù)增加時(shí),可能超出原先定義的元素個(gè)數(shù);當(dāng)數(shù)據(jù)減少時(shí),造成內(nèi)存浪費(fèi);數(shù)組可以根據(jù)下標(biāo)直接存取。

 、 鏈表動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配,可以適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況,且可以方便地插入、刪除數(shù)據(jù)項(xiàng)。(數(shù)組中插入、刪除數(shù)據(jù)項(xiàng)時(shí),需要移動(dòng)其它數(shù)據(jù)項(xiàng),非常繁瑣)鏈表必須根據(jù)next指針找到下一個(gè)元素。

  從內(nèi)存存儲(chǔ)來看:

 、(靜態(tài))數(shù)組從棧中分配空間,對(duì)于程序員方便快速,但是自由度小。

  ②鏈表從堆中分配空間,自由度大但是申請(qǐng)管理比較麻煩。

  從上面的比較可以看出,如果需要快速訪問數(shù)據(jù),很少或不插入和刪除元素,就應(yīng)該用數(shù)組;相反,如果需要經(jīng)常插入和刪除元素就需要用鏈表數(shù)據(jù)結(jié)構(gòu)了。

  7. ArrayList和LinkedList的區(qū)別

 、貯rrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。

 、趯(duì)于隨機(jī)訪問get和set,ArrayList覺得優(yōu)于LinkedList,因?yàn)長inkedList要移動(dòng)指針。

 、蹖(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢(shì),因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)。

  《JAVA程序設(shè)計(jì)》期末考試試題 9

  一、選擇題:(每題3分,共20題)

  1. 下面關(guān)于類的說法錯(cuò)誤的一項(xiàng)是( )。

  A、類屬于Java語言中的復(fù)合數(shù)據(jù)類型 中的基本結(jié)構(gòu)單位

  C、類是同種對(duì)象的集合和抽象

  2. 如下所示代碼:

  public class Test05_01{ }

  private float a;

  public static void m ( ){ }

  D、類就是對(duì)象 B、對(duì)象是Java語言

  如何使成員變量a被方法m( )訪問( )。

  A、將private float a改為public float a

  B、將private float a改為static float a

  C、將private float a改為protected float a

  D、將private float a改為float a

  3. 下面關(guān)于類的說法有誤的一項(xiàng)是( )。

  A、類就是對(duì)象 抽象

  C、類屬于Java語言中的復(fù)合數(shù)據(jù)類型 中的基本結(jié)構(gòu)單位

  D、對(duì)象是Java語言

  B、類是同種對(duì)象的集合和

  關(guān)于Java面向?qū)ο蟮目荚囶}。

  4. 下列哪種類成員修飾符修飾的變量只能在本類中被訪問( )。

  A、protected

  B、default

  C、private

  D、public

  5. 下面關(guān)于方法的說法不正確的一項(xiàng)是( )。

  A、類的私有方法不能被其他類直接訪問。

  B、Java中的構(gòu)造方法名必須和類名相同。

  C、方法體是對(duì)方法的實(shí)現(xiàn),包括變量聲明和合法語句。

  D、如果一個(gè)類定義了構(gòu)造方法,也可以用該類的默認(rèn)構(gòu)造方法。

  6. 下列程序的運(yùn)行結(jié)果是( )。

  public class Test05_02 extends x{ }

  B、編譯錯(cuò)誤

  D、運(yùn)行成功,但不輸出

  int ab(){ }

  public static void main(String[] args) { }

  Test05_02 b = new Test05_02 (); b.ab(); static int a = 10; a++;

  System.out.println(a);

  A、10 C、11

  關(guān)于Java面向?qū)ο蟮目荚囶}。

  7. 下面關(guān)于構(gòu)造方法的描述有誤的一項(xiàng)是( )。

  A、構(gòu)造方法必須要有返回類型的聲明。

  B、構(gòu)造方法和類中的方法很相似:有訪問修飾符、方法名、參數(shù)列表、方法體。

  C、構(gòu)造方法當(dāng)成是一個(gè)特殊的方法,這個(gè)方法的作用就是用來產(chǎn)生一個(gè)類的實(shí)例。

  D、構(gòu)造方法的方法名必須和類名完全相同。

  8. 下列關(guān)于對(duì)象的說法錯(cuò)誤的一項(xiàng)是( )。

  A、對(duì)象成員是指一個(gè)對(duì)象所擁有的屬性或可以調(diào)用的方法。

  B、由類生成對(duì)象,稱為類的`實(shí)例化過程,一個(gè)實(shí)例可以是多個(gè)對(duì)象。

  C、在創(chuàng)建類的對(duì)象時(shí),需要使用Java的new關(guān)鍵字。

  D、在Java中要引用對(duì)象的屬性和方法,需要使用“.”操作符來實(shí)現(xiàn)。

  9. 類的方法可以不包含下面哪一項(xiàng)( )。

  A、方法的參數(shù) C、方法的名稱

  B、方法的主體 D、方法的返回值類型

  10. 下面關(guān)于變量說法錯(cuò)誤的一項(xiàng)是( )。

  A、對(duì)于成員變量,我們可以不需要手動(dòng)的顯式初始化,因?yàn)橄到y(tǒng)在創(chuàng)建一個(gè)新的對(duì)象的時(shí)候,會(huì)給這些成員變量賦一個(gè)初值。

  B、對(duì)于引用變量,它的默認(rèn)初值是null而非相應(yīng)的引用類型對(duì)象,也就是說,它并不是指向任何對(duì)象的首地址。

  關(guān)于Java面向?qū)ο蟮目荚囶}。

  C、系統(tǒng)會(huì)對(duì)全局(成員)變量指定默認(rèn)的值,也會(huì)對(duì)局部變量賦值。

  D、局部變量在使用之前,必須對(duì)其進(jìn)行顯式初始化。

  11. 下面的各種數(shù)據(jù)類型的默認(rèn)初始化值表示錯(cuò)誤的一項(xiàng)是( )。

  A、int是0

  B、float 是0.0

  C、char 是‘u0000’

  D、boolean是false

  12. 下面哪一項(xiàng)不是Java的訪問控制符( )。

  A、public

  B、private

  C、void

  D、protected

  13. Java語言類間的繼承關(guān)系和接口間的繼承關(guān)系分別是( )。

  A、單繼承、不能繼承

  C、多重繼承、單繼承

  B、多重繼承、不能繼承

  D、單繼承、多重繼承

  14. 如果局部變量和成員變量同名,如何在局部變量作用域內(nèi)引用成

  員變量( )。

  A、不影響,系統(tǒng)可以自己區(qū)分

  B、不能引用,必須改名,使它們的名稱不相同

  C、在成員變量前加this,使用this訪問該成員變量

  D、在成員變量前加super,使用super訪問該成員變量

  15. 下列關(guān)于內(nèi)部類說法錯(cuò)誤的一項(xiàng)是( )。

  A、內(nèi)部類可用private或protected修飾符修飾

  B、內(nèi)部類不能有自己的成員方法和成員變量

  C、除static內(nèi)部類外,不能在類內(nèi)聲明static成員

  D、內(nèi)部類可以作為其他類的成員,而且可訪問它所在的類的成員

  16. 定義外部類時(shí)不能用到的關(guān)鍵字是( )。

  A、public

  B、abstract

  C、protected

  D、final

  17. 下面說法不正確的一項(xiàng)是( )。

  A、abstract和final能同時(shí)修飾一個(gè)類

  B、抽象類既可以做父類,也可以做子類

  C、聲明為final類型的方法不能在其子類中重新定義

  D、抽象類中可以沒有抽象方法,有抽象方法的類一定是抽象類或接口

  18. 有一個(gè)類B,下面為其構(gòu)造方法的聲明,正確的是( )。

  A、void b(int x) {} C、B(int x) {}

  B、void B(int x) {}

  D、b(int x) {}

  19. 區(qū)分類中重載方法的依據(jù)是( )。

  A、不同的形參名稱

  B、返回值的類型不同

  D、訪問權(quán)限不同

  C、形參列表的類型和順序

  20. 下面說法錯(cuò)誤的一項(xiàng)是( )。

  A、在Java中,為了節(jié)省創(chuàng)建對(duì)象的時(shí)間和空間,對(duì)于一些常用的方法,會(huì)將它在內(nèi)存中緩存起來。

  B、在JDK中針對(duì)各種基本數(shù)據(jù)類型分別定義相應(yīng)的引用類型,稱之為封裝類(Wrapper Classes)。

  C、JDK5.0中,引入了自動(dòng)裝箱/拆箱功能,可以讓我們方便的在簡(jiǎn)單類型和對(duì)應(yīng)的封裝類型數(shù)據(jù)之間轉(zhuǎn)換。

【《JAVA程序設(shè)計(jì)》期末考試試題】相關(guān)文章:

2016年《JAVA程序設(shè)計(jì)》期末考試試題06-23

sun認(rèn)證:java程序設(shè)計(jì)考試試題07-25

大學(xué)java期末考試試題08-18

2017年java期末考試試題10-20

計(jì)算機(jī)二級(jí)Java語言程序設(shè)計(jì)試題11-01

2016年java期末考試試題及答案10-11

java試題及答案07-04

2017java期末考試參考試題07-31

2024年計(jì)算機(jī)Java語言程序設(shè)計(jì)考試試題03-13