導航:首頁 > 編程語言 > java試題

java試題

發布時間:2022-01-29 06:53:16

『壹』 java 試卷

二. 選擇題 (18題,共42分)。
(一)單選題(共12題,每題2分,共24分)。
1. 程序設計語言的三種基本控制結構是: (B)
A. 輸入、處理、輸出 B. 順序、選擇、循環
C. 樹形、網形、環形 D. 主程序、子程序、函數
2. 在Java中,下列哪句話是正確的: (A)
A. 幾個類可以寫在一個文件里 B. 一個類可以寫在幾個文件里
C. 類的名稱是不區分大、小寫的 D. 方法的名稱是不區分大、小寫的
3. 一個必須被繼承的類要用哪個關鍵字來描述: (D)
A. static B. protected C. final D. abstract
4. 下面程序的輸出結果是: (D)
class DemoClass{
public static void main(String args[]){
int i=1,s=5;
do{
s += i;
i++;
}while(i < 5);
System.out.println(「s=」+s); }}
A. s=0 B. s=5 C. s=10 D. s=15
5. 下列方法method的定義正確的是 (A)
A. private int method () {char ch=』a』; return (int) ch; }
B. public void method {int a=8; return a;}
C. int method (int i ) {return (double) (i+10) ;}
D. method (int a) {return a;}
6. 哪一組都是Java關鍵字: (C)
A. Student, float, main, public B. byte, boolean, box, float
C. long, extends, float, double D. classes, float, short, import
7. 下面哪種說法是正確的: (C)
A. String是用來處理字元串的類,而StringBuffer不是
B. StringBuffer是用來處理字元串的類,而String不是
C. String和StringBuffer都是用來處理字元串的類
D. String和StringBuffer都不是用來處理字元串的類
8. int x=1,a=0,b=0;
switch(x){
case 0: b++;
break;
case 1: a++;
break;
case 2: a++;b++;
break;
}
System.out.println("a="+a+",b="+b);
該程序的輸出結果是 (A)
A. a=1,b=0 B. a=1,b=1 C. a=1,b=2 D. a=2,b=2
9. 下面哪個賦值語句是不合法的? (A)
A、float a = 2.0 B、double b = 2.0
C、int c = 2 D、long d = 2
10. 下面四組變數命名,符合JAVA變數命名規則的是 (D)
A. a@bc B. 6x C. void D. ye_78
11. 定義類A及類中的方法getVar(),定義類A的子類B,若要在類B中覆蓋類A的同名方法,下面正確的定義是
(C)
class A
{
private float x = 1.0f;
protected float getVar()
{return x;}
}
class B extends A
{
private float x = 2.0f;
//覆蓋類A中的同名方法的代碼放在此處}
A. float getVar(){return x;}
B. protected float getVar(float y){return x_y;}
C. protected float getVar(){return x;}
D. public float getVar(){return x;}
12. 根據下面給出的代碼,判斷哪個敘述是正確的。 (B)
public class Person {
static int arr[]=new int[10];
public static void main ( String a[] ) {
System.out.println ( arr[12] );
}
}
A. 編譯時將發生錯誤
B. 編譯時正確但是運行時出錯
C. 輸出為0
D. 輸出為null

『貳』 JAVA試題

1. C 2.B
3.D(樓上的都選B,如果第三題選了B,那意思就是AC是對的,如果AC對,那麼D說以上都不對,就是錯的,所以矛盾了)
4.B 5.選項沒看到
6. C 7.B 8.B 9.D

『叄』 JAVA試卷

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Menuout2 extends JFrame
{
private Color colorValues[]={Color.black,Color.blue,Color.red,Color.green};
private ButtonGroup fontGroup,colorGroup;
private JMenuItem colorItems[],fonts[];
private JLabel lbl1;

public Menuout2()
{
super( "菜單演示程序" );
JMenuBar bar; //創建菜單條bar
setJMenuBar(bar);
JMenu filemenu; //創建「文件 」菜單filemenu
JMenuItem filemenu; //創建「新建」菜單項filenew
JMenuItem fileopen; //創建「打開」菜單項fileopen
JMenuItem filesave; //創建「保存」菜單項filesave
JMenuItem exit; //創建「退出」菜單項exit

//以下代碼為菜單項「退出」注冊事件監聽者
exit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit( 0 );
}
} );

filemenu.add(filenew); //把菜單項filenew添加到菜單filemenu
filemenu.add(fileopen);//把菜單項fileopen添加到菜單filemenu
filemenu.add(filesave); //把菜單項filesave添加到菜單filemenu
filemenu.addSeparator();//把菜單分割條添加到菜單filemenu
filemenu.add(exit); //把菜單項exit添加到菜單filemenu
bar.add(filemenu); //將文件菜單filemenu添加到菜單條bar
JMenu formatMenu = new JMenu("格式"); //創建「格式」菜單formatMenu
String colors[]={"Black","Blue","Red","Green"};
JMenu colorMenu=new JMenu( "顏色" );//創建「顏色」菜單colorMenu
colorItems=new JMenuItem[colors.length];
colorGroup=new ButtonGroup();
for(int i=0;i<colors.length;i++){
//以下這條語句創建第i個顏色菜單項colorItems[i],菜單項標題為colors[i]
colorItems[i] = new JMenuItem(colors[i]);
//把第i個顏色菜單項colorItems[i]添加到顏色菜單colorMenu
colorMenu.add(colorItems[i]);
//把第i個顏色菜單項colorItems[i]添加到顏色按鈕組colorGroup
colorGroup.add(colorItems[i]);
//將事件監聽者new handler()向第i個顏色菜單項colorItems[i]注冊

『肆』 JAVA考試題

樓上的答案有些錯誤,重新回答如下

Java Application 源程序文件的擴展名為( .java);如果利用編譯器對源文件進行編譯,編譯後將產生相應的位元組碼文件,這些位元組碼文件的擴展名為(.class )。
如果一個Java Applet源程序文件只定義有一個類,該類的類名為MyApplet,則類MyApplet必須是( Applet)類的子類並且存儲該源程序文件的文件名為(MyApplet.java)
若x = 5,y = 10,則x < y和x >= y的邏輯值分別為( true)和(false )。
面向對象編程主要有四個特點,這四個特點分別是(抽象 )、(繼承 )、( 封裝)、(多態 )
設 x = 4 ,則表達式 ( x + + )/3 的值是(1 )。
表達式(int)(3.7)的值是(3 );
設有數組定義:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 則執行以下幾個語句後的輸出結果是(120 )。
int s = 0 ;
for ( int i = 0 ; i < MyIntArray.length ; i + + )
if ( i % 2 = = 1 ) s += MyIntArray[i] ;
System.out.println( s );
8、在Java的基本數據類型中,char型採用Unicode編碼方案,每個Unicode碼佔用(2 )位元組內存空間,這樣,無論是中文字元還是英文字元,都是佔用( 2)位元組內存空間。
選擇題(2x5)
Java是在哪一種語言上衍生出來的?(a)
A、 C/C++ B、 BASIC C、 PASCAL D、 Ada
下面哪一個不是合法的標識符? (c)
A、x$ B、 π C 、1X D、 XYZ
int 類型數據佔用多少位? (a)
A、32 B、64 C、16 D、20
Java Application程序中有且只能有一個main方法,該方法頭的書寫合法的是( b )。
A. public static void main()
B.public static void main(String[] args)
C. public static int main(String[] arg)
D. public void main(String arg[] )
5、下面的哪些語句是正確的:(d)
A)String temp [] = new String {"j" "a" "z"}; B) char temp [] = { "j" "b" "c"};
C)String temp = {"a", "b", "c"}; D) String temp [] = {"a", "b", "c"};
判斷題(1x5)。
1、Java是一種面向過程的編程語言。 (錯 )
2、Java不區分大小寫。 (錯 )
3、Java不提供無符號整數類型。 ( 對)
4、Jave的向量對象的元素既可以是對象,也可以是基本元素 (對 )
5、任何類都有構造函數,如果沒有構造函數,就不能創建該類的對象。(對 )

『伍』 java題

package com.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 字元串工具類
*
* @author 劉逸暉
*
*/
public class StringUtil {
/**
* 刪除字元串數組中重復的成員
*
* @param src
* 原數組
* @return 刪除重復成員後的數組
*/
public static String[] trim(String[] src) {
// 我這個方法估計也不是效率最高的,只是想到可以這樣寫就這樣寫了。
List<String> srcList = new ArrayList<>(Arrays.asList(src));
// 注意,不能直接用數組轉化出來的那個ArrayList對象,因為用數組轉化出來的那個ArrayList對象做某些操作的時候會報錯。
for (int i = 0; i < srcList.size(); i++) {
String str = srcList.get(i);
// 注意,在這里別用高級for循環,因為在使用高級for循環的時候不能修改集合或數組中的元素。
while (srcList.remove(str)) {
}
srcList.add(str);
}
return srcList.toArray(new String[srcList.size()]);
}
/**
* 字元反轉
*
* @param src
* 原文本
* @return 反轉後的文本
*/
public static String reverse(String src) {
return new StringBuffer(src).reverse().toString();
}
/**
* 統計字元串中單詞的個數。
*
* @param str
* 原文本
* @return 單詞個數
*/
public static int split(String str) {
return str.split("[^A-Za-z]+").length;
}
}

package com.test;
import java.util.Arrays;
/**
* 我的測試類
*
* @author 劉逸暉
*
*/
public class MyTest {
public static void main(String[] args) {
String[] srcArray = new String[] { "a", "b", "c", "a", "a", "d", "c",
"b" };
System.out.println("原字元串數組:\r\n" + Arrays.toString(srcArray));
System.out.println("去除重復成員後的數組:\r\n"
+ Arrays.toString(StringUtil.trim(srcArray)));
String srcStr = "hello world";
System.out.println("原文本:\r\n" + srcStr);
System.out.println("反轉後的文本:\r\n" + StringUtil.reverse(srcStr));
System.out.println("文本中的單詞數:\r\n" + StringUtil.split(srcStr));
}
}

『陸』 java面試題

1抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。

2繼承:繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增加新的方法使之更適合特殊的需要。

3封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。

4多態性:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

5.基本數據類型包括byte、char 、chort、int、long、float、double、boolean
java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類

6.Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。
原始類型封裝類booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble
引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特徵和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的預設值。對象引用實例變數的預設值為 null,而原始類型實例變數的預設值與它們的類型有關。

7.JAVA平台提供了兩個類:String和StringBuffer,它們可以儲存和操作字元串,即包含多個字元的字元數據。這個String類提供了數值不可改變的字元串。而這個StringBuffer類提供的字元串進行修改。當你知道字元數據要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態構造字元數據。

8.異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。

9.Servlet被伺服器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當伺服器決定將實例銷毀的時候調用其destroy方法。
與cgi的區別在於servlet處於伺服器進程中,它通過多線程方式運行其service方法,一個實例可以服務於多個請求,並且其實例一般不會銷毀,而CGI對每個請求都產生新的進程,服務完成後就銷毀,所以效率上低於servlet。

10.ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或後向遍歷,但是插入數據時只需要記錄本項的前後項即可,所以插入速度較快。

『柒』 java試題

start方法哈

給你個例子哈

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class AppletAnimation extends Applet implements Runnable {
int frameNumber = -1;

int delay = 100;

Thread animatorThread;

boolean frozen = false;

public void init() {
String str;
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (frozen) {
frozen = false;
start();
} else {
frozen = true;
stop();
}
}
});
}

public void start() {
if (!frozen) {
if (animatorThread == null) {
animatorThread = new Thread(this);
}
animatorThread.start();
}
}

public void stop() {
animatorThread = null;
}

public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

long startTime = System.currentTimeMillis();

Thread currentThread = Thread.currentThread();

while (currentThread == animatorThread) {
frameNumber++;

repaint();

try {
startTime += delay;
Thread.sleep(100);
} catch (InterruptedException e) {
break;
}
}
}

public void paint(Graphics g) {
g.drawString("Frame " + frameNumber, 0, 30);
}
}

『捌』 Java試題

1.對 2.對 3.錯(可以沒有) 4.對 5.錯(用來拋出自定義異常) 6.對 7.對 8.對 9.錯(不一定) 10.錯(java只支持單繼承,所以只有一個父類) 11.錯(重寫) 12.錯(類只能有一個) 13.錯(沒有-這種定義)

『玖』 java面試題及答案

JAVA 面試32問
第一, 談談final, finally, finalize的區別。 (最常被問到)
final修飾符(關鍵字)
如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為abstract,又被聲明為final。將變數或方法聲明為final,可以保證它們在使用中不被改變。其初始化可以在兩個地方:一是其定義處,也就是說在final變數定義時直接給其賦值;二是在構造函數中。這兩個地方只能選其一,要麼在定義時給值,要麼在構造函數中給值,不能同時既在定義時給了值,又在構造函數中給另外的值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重寫(override)。
finally
在異常處理時提供finally塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的catch子句就會執行,然後控制就會進入finally塊(如果有的話)。
finalize
方法名。Java 技術允許使用finalize()方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統資源或者執行其他清理工作。finalize()方法是在垃圾收集器刪除對象之前對這個對象調用的。

第二,Anonymous Inner Class(匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?
匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面,由另一個內部類實現。

第三,Static Nested Class 和 Inner Class的不同,說得越多越好。(面試題有的很籠統)
Nested(嵌套)Class(一般是C++的說法)
nested class 是合成型聚集關系(Composite Aggregation) 的另一種表達方式,也就是說nested class也可以用Aggregation表達出來,但是,nested class更加精確地表達了一種專用的、緊耦合的關系,尤其在代碼生成時,nested class在Java中映射成inline class。比如,計算機專用開關電源類可以作為計算機類的nested class,但是,電池組類就不一定適合作為計算機類的nested class,因為,電池組類表述的是一個過於通用的對象,可能還被包含(Aggregation)於模型中的其他設備對象。class A nested in class B,則說明A是一個nested class,一般A是用來完成B中的某種重要功能。
Inner Class (一般是JAVA的說法)
Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上。
靜態內部類(Inner Class)意味著a創建一個static內部類的對象,不需要一個外部類對象,b不能從一個static內部類的一個對象訪問一個外部類對象

第四,&和&&的區別。(這個問得很少)
&是位運算符。&可為位運算,也可為邏輯運算,看情況而定。&&是布爾邏輯運算符。

第五,HashMap和Hashtable的區別。(常問)
都屬於Map介面的類,實現了將惟一鍵映射到特定的值上。
HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
Hashtable 類似於 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許,還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue(Returns true if this map maps one or more keys to the specified value)和containsKey(Returns true if this map contains a mapping for the specified key)。因為contains(Tests if some key maps into the specified value in this hashtable)方法容易讓人引起誤解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。
Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以性能不會有很大的差異。

第六,Collection 和 Collections的區別。(你千萬別說一個是單數一個是復數)
Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
Collection是個java.util下的介面,它是各種集合結構的父介面。

第七,什麼時候用assert。(API級的技術人員有可能會問這個)
斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 true。如果表達式計算為 false,那麼系統會報告一個 Assertionerror。它用於調試目的:
assert(a > 0); // throws an Assertionerror if a <= 0
斷言可以有兩種形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 應該總是產生一個布爾值。
Expression2 可以是得出一個值的任意表達式。這個值用於生成顯示更多調試信息的 String 消息。
斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記:
javac -source 1.4 Test.java
要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。
要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。
要系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。
可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。不過,斷言不應該用於驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任何方式改變程序的狀態。

第八,GC是什麼?為什麼要有GC?(基礎)
GC是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
gc 雖可清理,但非立刻清理

第九,String s = new String("xyz");創建了幾個String Object?
兩個對象,一個是"xyx",一個是指向"xyx"的引用對象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;有什麼錯? short s1 = 1; s1 += 1;有什麼錯? ( 面試題都是很變態的,要做好受虐的准備)
short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為s1 =(short)(s1 + 1) 。
short s1 = 1; s1 += 1正確。
Byte a=1,b=1,bye c=a+b;錯誤,byte與byte,short與short運算返回值為int

第十二,sleep() 和 wait() 有什麼區別? (搞線程的最愛)
sleep()
是使線程停止一段時間的方法。在sleep 時間間隔期滿後,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)"醒來"的線程具有更高的優先順序 (b)正在運行的線程因為其它原因而阻塞。
wait()
是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到

第十三,Java有沒有goto?(很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司)
Goto java中的保留字,現在沒有在java中使用。

第十四,數組有沒有length()這個方法? String有沒有length()這個方法?
數組沒有length()這個方法,有length的屬性。
String有有length()這個方法。

第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型? (常問)
方法的重寫Overriding和重載Overloading是Java多態性的不同表現。
重寫Overriding是父類與子類之間多態性的一種表現,
重載Overloading是一個類中多態性的一種表現。
如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。
如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。但是不能通過返回值進行overload。

第十六,Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
Set里的元素是不能重復的,那麼用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。

第十七,給我一個你最常見到的runtime exception。(如果你這個答不出來,面試的人會認為你沒有實際編程經驗)
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, , DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

第十八,error和exception有什麼區別?
error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。
error--unchecked exception--checked

第十九,List, Set, Map是否繼承自Collection介面?
List,Set是Map不是(與Collection同級)

第二十,abstract class和interface有什麼區別? (常問)
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程序體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程序體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何對象上調用介面的方法。由於有抽象類,它允許使用介面名作為引用變數的類型。通常的動態聯編將生效。引用可以轉換到介面類型或從介面類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了介面。

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

第二十二,介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?
介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。

第二十三,啟動一個線程是用run()還是start()?
啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味著它可以由JVM調度並執行。這並不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。

第二十四,構造器Constructor是否可被override?
構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。

第二十五,是否可以繼承String類?
String類是final類故不可以繼承

第二十六,當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。

第二十七,try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行,什麼時候被執行,在return前還是後?
會執行,在return前執行。

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

第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
不對,有相同的hash code。看你的對象類型了。

第三十,當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這里到底是值傳遞還是引用傳遞?
是值傳遞。Java 編程語言只由值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。
Ps:在Java7中String可以用在switch中
第三十二,編程題: 寫一個Singleton出來。
Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
一般Singleton模式通常有幾種種形式:
第一種形式: 定義一個類,它的構造函數為private的,它有一個static的private的該類變數,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。
public class Singleton {
private Singleton(){}
//在自己內部定義自己一個實例,是不是很奇怪?
//注意這是private 只供內部調用
private static Singleton instance = new Singleton();
//這里提供了一個供外部訪問本class的靜態方法,可以直接訪問
public static Singleton getInstance() {
return instance;
}
}
第二種形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次
//使用時生成實例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
其他形式:
定義一個類,它的構造函數為private的,所有方法為static的。
一般認為第一種形式要更加安全些

閱讀全文

與java試題相關的資料

熱點內容
xps文件轉pdf 瀏覽:132
怎麼樣獲得命令方塊 瀏覽:897
安卓studio如何改主題 瀏覽:931
linux自動獲取ip命令行 瀏覽:208
做設計做程序員適合的電腦 瀏覽:778
網站有源碼和沒有源碼的區別 瀏覽:680
如何自學開發app 瀏覽:595
修電梯pdf 瀏覽:351
政務雲是不是提供虛擬伺服器 瀏覽:59
在哪裡看每個app用了多長時間 瀏覽:637
學程序員要英語四級嗎 瀏覽:133
java視頻錄制 瀏覽:758
口頭指派式命令 瀏覽:474
php開發工程師面試題 瀏覽:954
linux內核源碼pdf 瀏覽:66
mc命令方塊怎麼提取 瀏覽:367
有關程序員的五大魔咒你中了幾個 瀏覽:204
本地文件如何上傳linux伺服器 瀏覽:17
傳奇資源網站源碼 瀏覽:377
f26app怎麼下載 瀏覽:120