計算機二級JAVA模擬試題及答案(精選3套)
無論是身處學(xué)校還是步入社會,我們最不陌生的就是試題了,試題可以幫助參考者清楚地認(rèn)識自己的知識掌握程度。什么樣的試題才能有效幫助到我們呢?下面是小編幫大家整理的計算機二級JAVA模擬試題及答案,希望能夠幫助到大家。

計算機二級JAVA模擬試題及答案 1
一、選擇題
1.數(shù)據(jù)的存儲結(jié)構(gòu)是指( )。
A.存儲在外存中的數(shù)據(jù)
B.數(shù)據(jù)所占的存儲空間量
c.數(shù)據(jù)在計算機中的順序存儲方式
D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示
2.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是( )。
A.冒泡排序n/Z
B.冒泡排序為n
C.快速排序為n
D.快速排序為n(n一1)/z
3.棧和隊列的共同點是( )。
A.都是先進先出
B.都是先進后出
C.只允許在端點處插入和刪除元素
D.沒有共同特點
4.有下列二叉樹,對此二叉樹中序遍歷的結(jié)果為( )。
A.ABCEDF
B.ABCDEF
C.ECBDFA
D.ECFDBA
5.對建立良好的程序設(shè)計風(fēng)格,下列描述中正確的是( )。
A.程序應(yīng)該簡單、清晰、可讀性好
B.符號名的命名只需要符合語法
C.充分考慮程序的執(zhí)行效率
D.程序的注釋可有可無
6.下列敘述中正確的是( )。
A.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間具有密切的關(guān)系
B.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象都是公用的
C.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間相對獨立,相互依賴性小
D.上述3種說法都不對
7.為了提高軟件模塊的.獨立性,模塊之間最好是( )。
A.控制耦合
B.公共耦合
C.內(nèi)容耦合
D.高內(nèi)聚低耦合
8.數(shù)據(jù)獨立性是數(shù)據(jù)庫技術(shù)的重要特點之一。所謂數(shù)據(jù)獨立性是指( )。
A.數(shù)據(jù)與程序獨立存放
B.不同的數(shù)據(jù)被存放在不同的文件中 ..
C.不同的數(shù)據(jù)只能被對應(yīng)的應(yīng)用程序所使用
D.以上三種說法都不對
9.下列描述中正確的是( )。
A.軟件工程只是解決軟件項目的管理問題
B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題
C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則
D.軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題
10.對關(guān)系S和R進行集合運算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運算稱為( )。
A.并運算
B.交運算
C.差運算
D.積運算
11.下列關(guān)于數(shù)據(jù)存儲方式的敘述中,不正確的是( )。
A.數(shù)據(jù)的主要存儲方式有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)
B.順序存儲結(jié)構(gòu)存儲空間利用率低,鏈?zhǔn)酱鎯Y(jié)構(gòu)空間利用率高
C.順序存儲結(jié)構(gòu)的結(jié)點只有自身域,鏈?zhǔn)酱鎯Y(jié)構(gòu)除了自身域還包括指針域
D.順序存儲結(jié)構(gòu)可通過計算直接確定數(shù)據(jù)結(jié)構(gòu)中某個結(jié)點的存儲地址
12.二維數(shù)組A[0,…,8][0,…,9],其每個元素占2字節(jié)。從首地址400開始,按行優(yōu)先順序存儲,則元素A[8][5]的存儲地址為( )。
A.570
B.506
C.410
D.482
13.下列有關(guān)操作系統(tǒng)的敘述中,不正確的是( )。
A.操作系統(tǒng)管理計算機系統(tǒng)中的各種資源
B.操作系統(tǒng)為用戶提供良好的界面
C.操作系統(tǒng)與用戶程序必須交替運行
D.操作系統(tǒng)位于各種軟件的最底層
14.系統(tǒng)出現(xiàn)死鎖的原因是( )。
A.計算機系統(tǒng)發(fā)生了重大故障
B.有多個封鎖的進程同時存在
C.若干進程因競爭資源而無休止地等待其他進程釋放已占有的資源
D.資源數(shù)大大少于進程數(shù),或進程同時申請的資源數(shù)大大超過資源總數(shù)
15.若干進程之間相互合作,共同完成一項任務(wù),進程的這種協(xié)同工作關(guān)系稱為( )。
A.異步
B.同步
C.并發(fā)
D.互斥
16.下面屬于面向?qū)ο笳Z言的是( )。
A.Java語言
B.機器語言
C.C語言
D.匯編語言
17.下列選項默認(rèn)的布局管理器不是BorderLayout的是( )。
A.Window B.Panel
C.Frame D.Dialog
18.用來實現(xiàn)Java虛擬機的語言是( )。
A.Java
B.C
C.C++
D.匯編
19.下列關(guān)于Java安全性的說法錯誤的是( )。
A.有嚴(yán)格的訪問權(quán)限檢查
B.對程序執(zhí)行前要檢查
C.不允許使用指針
D.可防止對內(nèi)存的非法入侵
20.下列有關(guān)Java語言的敘述中,正確的是( )。
A.可以有2個以上package語句
B.可以有2個以上import語句
C.可以有2個以上public類
D.只能有l(wèi)個類定義
21.下列對類的聲明,正確的是( )。
A.abstract final classHh{…}
B.abstract private move(){…}
C.protected private number;
D.public abstract classCar{…}
22.Java中用于提供Java語言、Java虛擬機的核心的類和接口的包是( )。
A.java.io包
B.java.applet包
C.java.lang包
D.java.net包
23.下列關(guān)于JDK目錄結(jié)構(gòu)的說法,錯誤的是( )。
A.bin目錄下有許多工具
B.demo目錄下有各種演示例子
C.include目錄下都是庫文件
D.jre目錄是Java程序運行環(huán)境的根目錄
24.下列說法正確的是( )。
A.類FileInputStream和FileOutputStream用來進行文
件I/O處理,由它們所提供的方法可以打開本地主機上的
文件,并進行順序的讀/寫
B.通過類File的實例或者一個表示文件名稱的字符串
可以生成文件輸入/輸出流,在流對象生成的同時,文件被
打開,但還不能進行文件讀/寫
C.對于InputStream和OutputStream來說,它們的實
例都是是非順序訪問流,即只能進行順序的讀/寫
D.當(dāng)從標(biāo)準(zhǔn)輸入流讀取數(shù)據(jù)時,從鍵盤輸入的數(shù)據(jù)直
接輸入到程序中
25.能將程序補充完整的選項是( )。
class Person
{
private int a;
public int change(int m){return m;)
}
public class Teacher extends Person
{
public int b;
public static void main(String arg[])
{
Person p=new Person();
Teacher t=new Teacher();
int i;
}
}
A.i=m
B.i=b
C.i=P.a
D.i=P.change(50)
26.下列程序?qū)崿F(xiàn)對ZIP文件file.zip的檢索,在橫線處
填入正確的語句( )。
package test;
importjava.io.*;
import java.util.*;
import java.util.zip.*;
public class Exam
{
public static void main(String[]args){
try{
FileInputStream fis=new FileInputStream("test/file.
zip");
ZipInputStream zis=new ZiplnputStream(fis);
ZipEntry an;
while(( )!=null){
en.getName();
zis.closeEntry();
}
zis.close():
}
catch(Exception e){
e.printStackTrace();
}
}
}
A.en=zis.getNextEntry()
B.en= =zis.getNextEntry()
C.en=zis.getEntry()
D.zis.getNextEntry()
27.將一個容器panel1放到容器framel中的方法是( )。
A.framel.(panel1)
B.framel.add(panel1)
C.framel.addJPanel(panel1)
D.framel.JPanel(panel1)
28.下列程序的輸出結(jié)果是( )。
class Test{
public static void main(String args[]){
int n=7:
n<<=3;
n=n&n+1|n+2^n+3;
n>>=2:
System.out.println(n);
}
)
A.0
B.-l
C.14
D.64
29.文件操作中,用于移動文件指針到指定的位置的是( )。
A.seek(long pos)
B.lengh()
C.find()
D.skipBytes(int n)
30.當(dāng)檢索一個壓縮文件時,首先要建立壓縮文件輸入流對象,該對象( )。
A.以選中的壓縮文件為參數(shù)
B.以FileInputStream對象為參數(shù)
C.以InputStreamReader對象為參數(shù)
D.以BufferedReader對象為參數(shù)
31.下列不是InputStream子類的是( )。
A.文件輸入流FilelnputStream
B.對象輸入流ObjectlnputStream
C.字符輸入流CharInputStream
D.壓縮文件輸入流ZiplnputStream
32.下列方法中可以用來創(chuàng)建一個新線程的是( )。
A.實現(xiàn)java.lang.Runnable接口并重寫start()方法
B.實現(xiàn)java.lang.Runnable接口并重寫run()方法
C.繼承java.lang.Thread類并重寫run()方法
D.實現(xiàn)java.lang.Thread類并實現(xiàn)start()方法
33.下列關(guān)于JavaApplication與Applet的說法中,正確的是( )。
A.都包含main()方法
B.都通過“appletviewer”命令執(zhí)行
C.都通過“javac”命令編譯
D.都嵌入在HTML文件中執(zhí)行
34.當(dāng)啟動Applet程序時,首先調(diào)用的方法是( )。
A.stop()
B.init()
C.start()
D.destroy()
35.下列關(guān)于線程優(yōu)先級的說法中,正確的是( )。
A.線程的優(yōu)先級是不能改變的
B.線程的優(yōu)先級是在創(chuàng)建線程時設(shè)置的
C.在創(chuàng)建線程后的任何時候都可以設(shè)置
D.B和C
36.下列代碼中,將引起編譯錯誤的行是( )。
1)public class Exercise{
2)public static void main(String args[]){
3)floatf=0.0;
4)f+=1.0:
5))
6))
A.第2行
B.第3行
C.第4行
D.第6行
37.為了向一個Applet傳遞參數(shù),可以在HTML文件的APPLET標(biāo)志中使用param選項。在Applet程序中獲取參數(shù)時,應(yīng)使用的方法是( )。
A.getParameter()
B.getDocumentBase()
C.getCodeBase()
D.getlmage()
38.線程在生命周期中要經(jīng)歷5種狀態(tài)。如果線程當(dāng)前是新建狀態(tài),則它可到達的下一個狀態(tài)是( )。
A.運行狀態(tài)
B.阻塞狀態(tài)
C.可運行狀態(tài)
D.終止?fàn)顟B(tài)
39.下列關(guān)于Java多線程并發(fā)控制機制的敘述中,錯誤的是( )。
A.Java中對共享數(shù)據(jù)操作的并發(fā)控制是采用加鎖技術(shù)
B.線程之間的交互,提倡采用suspend()/resume()方法
C.共享數(shù)據(jù)的訪問權(quán)限都必須定義為private
D.Java中沒有提供檢測與避免死鎖的專門機制,但程序員可以采用某些策略防止死鎖的發(fā)生
40.下列操作中,不屬于Applet安全限制的是( )。
A.加載本地庫
B.讀寫本地文件系統(tǒng)
C.運行本地可執(zhí)行程序
D.與同一個頁面中的Applet通信
二、基本操作題
本題提示輸入年份,然后判斷該年份是否為閏年。
importjava.io.*;
public class javal{
public static void main(String[]args){
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
int year=1900;
System.out.print("請輸入年份:");
try{
String s=in.readLine();
;
} (Exception e){
}
if( )
System.OUt.println(year+"是閏年");
else
System.out.println(year+"不是閏年");
}
}
三、簡單應(yīng)用題
本題使用下拉菜單來控制字體,窗口中有一個標(biāo)簽和一個下拉菜單,當(dāng)選中下拉菜單中的任一項字體時,標(biāo)簽上字符串的字體就隨之改變。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class ComboBoxFrame extends JFrame {
public ComboBoxFrame(){
setTitle("java2");
setSize(300,200);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
style=new JComboBox():
style.setEditable(true);
style.addhem("Serif");
style.addItem("SansSerif");
style.addhem("Monospaced");
style.addhem("Dialog");
style.addhem("Dialoglnput");
style.addActionListener(this);
JPanel p=new JPanel();
P.add(style);
getContentPane().add(p,"South");
panel=new ComboBoxTestPanel();
getContentPane().add(panel,"Center");
}
public void actionPerformed(ActionEvent evt){
JComboBox source=(JComboBox) ;
String item=(String)source.getSelectedhem():
panel.setStyle(item);
}
private ComboBoxTestPanel panel;
private JComboBox style;
}
class ComboBoxTestPanel extends JPanel{
public ComboBoxTestPanel(){
setStyle("Serif");
}
public void setStyle(String s){
setFont(new Font(S,F(xiàn)ont.PLAIN,12));
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
9.drawString("Welcome to China!",0,50);
}
}
public class java2{
public static void main(String[]args){
JFrame frame=new ComboBoxFrame();
frame.show();
}
}
計算機二級JAVA模擬試題及答案 2
1. 下面哪些是Thread類的方法()
A start() B run() C exit() D getPriority()
答案:ABD
解析:看Java API docs吧:/pic/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。
擴展:錯誤和異常的區(qū)別(Error vs Exception)
1) java.lang.Error: Throwable的子類,用于標(biāo)記嚴(yán)重錯誤。合理的應(yīng)用程序不應(yīng)該去try/catch這種錯誤。絕大多數(shù)的錯誤都是非正常的,就根本不該出現(xiàn)的。
java.lang.Exception: Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運行條件,而非嚴(yán)重錯誤,并且鼓勵用戶程序去catch它。
2) Error和RuntimeException 及其子類都是未檢查的異常(unchecked exceptions),而所有其他的Exception類都是檢查了的異常(checked exceptions).
checked exceptions: 通常是從一個可以恢復(fù)的程序中拋出來的,并且最好能夠從這種異常中使用程序恢復(fù)。比如FileNotFoundException, ParseException等。檢查了的異常發(fā)生在編譯階段,必須要使用try…catch(或者throws)否則編譯不通過。
unchecked exceptions: 通常是如果一切正常的話本不該發(fā)生的異常,但是的確發(fā)生了。發(fā)生在運行期,具有不確定性,主要是由于程序的邏輯問題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復(fù),但是并不鼓勵終端程序員這么做,因為完全沒要必要。因為這類錯誤本身就是bug,應(yīng)該被修復(fù),出現(xiàn)此類錯誤時程序就應(yīng)該立即停止執(zhí)行。 因此,面對Errors和unchecked exceptions應(yīng)該讓程序自動終止執(zhí)行,程序員不該做諸如try/catch這樣的事情,而是應(yīng)該查明原因,修改代碼邏輯。
RuntimeException:RuntimeException體系包括錯誤的類型轉(zhuǎn)換、數(shù)組越界訪問和試圖訪問空指針等等。
處理RuntimeException的原則是:如果出現(xiàn) RuntimeException,那么一定是程序員的錯誤。例如,可以通過檢查數(shù)組下標(biāo)和數(shù)組邊界來避免數(shù)組越界訪問異常。其他(IOException等等)checked異常一般是外部錯誤,例如試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯誤。
3. 下面程序的運行結(jié)果是()
String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);
答案:false
解析:因為str2中的llo是新申請的內(nèi)存塊,而==判斷的是對象的地址而非值,所以不一樣。如果是String str2 = str1,那么就是true了。
4. 下列說法正確的有()
A. class中的constructor不可省略
B. constructor必須與class同名,但方法不能與class同名
C. constructor在一個對象被new時執(zhí)行。
D.一個class只能定義一個constructor
答案:C
解析:這里可能會有誤區(qū),其實普通的類方法是可以和類名同名的,和構(gòu)造方法唯一的區(qū)分就是,構(gòu)造方法沒有返回值。
5. 具體選項不記得,但用到的知識如下:
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. 下面程序的運行結(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)調(diào)用start方法后,系統(tǒng)才會開啟一個新的線程,進而調(diào)用run()方法來執(zhí)行任務(wù),而單獨的調(diào)用run()就跟調(diào)用普通方法是一樣的,已經(jīng)失去線程的特性了。因此在啟動一個線程的時候一定要使用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線程是否為守護線程?()
答案:是
解析:線程分為守護線程和非守護線程(即用戶線程)。
只要當(dāng)前JVM實例中尚存在任何一個非守護線程沒有結(jié)束,守護線程就全部工作;只有當(dāng)最后一個非守護線程結(jié)束時,守護線程隨著JVM一同結(jié)束工作。
守護線程最典型的應(yīng)用就是 GC (垃圾回收器)
9. volatile關(guān)鍵字是否能保證線程安全?()
答案:不能
解析:volatile關(guān)鍵字用在多線程同步中,可保證讀取的可見性,JVM只是保證從主內(nèi)存加載到線程工作內(nèi)存的值是最新的讀取值,而非cache中。但多個線程對
volatile的寫操作,無法保證線程安全。例如假如線程1,線程2 在進行read,load 操作中,發(fā)現(xiàn)主內(nèi)存中count的值都是5,那么都會加載這個最新的值,在線程1堆count進行修改之后,會write到主內(nèi)存中,主內(nèi)存中的count變量就會變?yōu)?;線程2由于已經(jīng)進行read,load操作,在進行運算之后,也會更新主內(nèi)存count的變量值為6;導(dǎo)致兩個線程及時用volatile關(guān)鍵字修改之后,還是會存在并發(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ù)時,i+1就溢出變成負(fù)數(shù)了,此時不就
擴展:存在使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. 下面哪個流類屬于面向字符的輸入流( )
A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader
答案:D
解析:Java的IO操作中有面向字節(jié)(Byte)和面向字符(Character)兩種方式。
面向字節(jié)的操作為以8位為單位對二進制的數(shù)據(jù)進行操作,對數(shù)據(jù)不進行轉(zhuǎn)換,這些類都是InputStream和OutputStream的子類。
面向字符的操作為以字符為單位對數(shù)據(jù)進行操作,在讀的時候?qū)⒍M制數(shù)據(jù)轉(zhuǎn)為字符,在寫的時候?qū)⒆址D(zhuǎn)為二進制數(shù)據(jù),這些類都是Reader和Writer的子類。
總結(jié):以InputStream(輸入)/OutputStream(輸出)為后綴的是字節(jié)流;
以Reader(輸入)/Writer(輸出)為后綴的是字符流。
14. Java接口的修飾符可以為()
A private B protected C final D abstract
答案:CD
解析:接口很重要,為了說明情況,這里稍微啰嗦點:
(1)接口用于描述系統(tǒng)對外提供的所有服務(wù),因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們;
(2)接口僅僅描述系統(tǒng)能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;
(3)接口不涉及和任何具體實例相關(guān)的.細(xì)節(jié),因此接口沒有構(gòu)造方法,不能被實例化,沒有實例變量,只有靜態(tài)(static)變量;
(4)接口的中的變量是所有實現(xiàn)類共有的,既然共有,肯定是不變的東西,因為變化的東西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了。
(5) 接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會說了,沒有關(guān)系,可以通過 實現(xiàn)接口的對象的行為來修改接口中的屬性。這當(dāng)然沒有問題,但是考慮這樣的情況。如果接口 A 中有一個public 訪問權(quán)限的靜態(tài)變量 a。按照 Java 的語義,我們可以不通過實現(xiàn)接口的對象來訪問變量 a,通過 A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類中是可以這樣做的,那么實現(xiàn)接口 A 的所有對象也都會自動擁有這一改變后的 a 的值了,也就是說一個地方改變了 a,所有這些對象中 a 的值也都跟著變了。這和抽象類有什么區(qū)別呢,怎么體現(xiàn)接口更高的抽象級別呢,怎么體現(xiàn)接口提供的統(tǒng)一的協(xié)議呢,那還要接口這種抽象來做什么呢?所以接口中 不能出現(xiàn)變量,如果有變量,就和接口提供的統(tǒng)一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實現(xiàn)接口的對象提供一個統(tǒng) 一的屬性。
通俗的講,你認(rèn)為是要變化的東西,就放在你自己的實現(xiàn)中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關(guān)閉,對擴展(不同的實現(xiàn) implements)開放,接口是對開閉原則的一種體現(xiàn)。
所以:
接口的方法默認(rèn)是public abstract;
接口中不可以定義變量即只能定義常量(加上final修飾就會變成常量)。所以接口的屬性默認(rèn)是public static final 常量,且必須賦初值。
注意:final和abstract不能同時出現(xiàn)。
15. 不通過構(gòu)造函數(shù)也能創(chuàng)建對象嗎()
A 是 B 否
答案:A
解析:Java創(chuàng)建對象的幾種方式(重要):
(1) 用new語句創(chuàng)建對象,這是最常見的創(chuàng)建對象的方法。
(2) 運用反射手段,調(diào)用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
(3) 調(diào)用對象的clone()方法。
(4) 運用反序列化手段,調(diào)用java.io.ObjectInputStream對象的 readObject()方法。
(1)和(2)都會明確的顯式的調(diào)用構(gòu)造函數(shù) ;(3)是在內(nèi)存上對已有對象的影印,所以不會調(diào)用構(gòu)造函數(shù) ;(4)是從文件中還原類的對象,也不會調(diào)用構(gòu)造函數(shù)。
坐完筆試后,很多人都希望能提前預(yù)知面試題目,最好的方法就是整理一些經(jīng)典的面試題,java面試的專業(yè)性比較強,如果你的基礎(chǔ)不夠扎實,那么最好找些經(jīng)典的java面試題及答案分析,提前參透一下吧!
java面試題1、說說HashMap和Hashtable的差別
答案分析:
都屬于Map接口的類,實現(xiàn)了將惟一鍵映射到特定的值上。
HashMap類沒有分類或排序。他允許一個null鍵和多個null值。
Hashtable類似于HashMap,不過不允許null鍵和null值。他也比HashMap慢,因為他是同步的。
java面試題2、Anonymous Inner Class (匿名內(nèi)部類)是否能extends(繼承)其他類,是否implements(實現(xiàn))interface(接口)?
答案分析:
匿名的內(nèi)部類是沒有名字的內(nèi)部類。不能extends(繼承)其他類,但一個內(nèi)部類能作為一個接口,由另一個內(nèi)部類實現(xiàn)。
java面試題3、STRING與STRINGBUFFER的區(qū)別是什么?
答案分析:
STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內(nèi)容經(jīng)常進行操作,特別是內(nèi)容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。
java面試題4、什么時候用assert
答案分析:
斷言是個包含布爾表達式的語句,在執(zhí)行這個語句時假定該表達式為true。如果表達式計算為false,那么系統(tǒng)會報告一個AssertionError,他用于調(diào)試目的。
java面試題5、Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)和否呢?是用==還是equals()?他們有何差別?
答案分析:
Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)和否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當(dāng)兩個分離的對象的內(nèi)容和類型相配的話,返回真值。
java面試題6、List, Set, Map是否繼承自Collection接口?
答案分析:
List,Set是
Map不是
計算機二級JAVA模擬試題及答案 3
一.選擇題(30分)
1.下列哪些情況可以終止當(dāng)前線程的運行?
a. 拋出一個異常時。
b. 當(dāng)該線程調(diào)用sleep()方法時。
c. 當(dāng)創(chuàng)建一個新線程時。(與當(dāng)前進程無關(guān))
d. 當(dāng)一個優(yōu)先級高的線程進入就緒狀態(tài)時。
2. 下面哪些為構(gòu)造函數(shù)的特性定義
a. 在類中聲明構(gòu)造函數(shù)時,名稱應(yīng)該與類名相同
b. 具有重載特性,可以建立多個相同的名稱
c. 使用類建立新對象時,會自動執(zhí)行構(gòu)造函數(shù),因此在構(gòu)造函
數(shù)內(nèi)設(shè)定變量的初值或進行內(nèi)存分配
d. 以上都是
3. 關(guān)于異常處理機制的敘述哪些正確
a. catch部分捕捉到異常情況時,才會執(zhí)行finally部分(無論是否有毛病,都執(zhí)行)
b. 當(dāng)try區(qū)段的程序發(fā)生異常時,才會執(zhí)行catch區(qū)段的程序
c. 不論程序是否發(fā)生錯誤及捕捉到異常情況,都會執(zhí)行finally部分
d. 以上都是
4. 下列關(guān)于接口的敘述中哪些是正確的
a. 接口中的數(shù)據(jù)必須設(shè)定初值(就是接口中的常量)
b. 接口中的方法都是抽象方法
c. 接口可以聲明引用
d. 以上都正確
5.Java語言中,方法的重寫(Overriding)和重載(Overloading)是多態(tài)性的不同表現(xiàn)。下邊哪些說法是對的?
A. 重寫是父類與子類之間多態(tài)性的一種表現(xiàn)。
B. 重寫是一個類中多態(tài)性的一種表現(xiàn)。
C. 重載是一個類中多態(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中可以對頁面上傳遞來的參數(shù)進行一下格式上的驗證,這種驗證是一種客戶端的驗證
C 用戶每次提交表單,都會產(chǎn)生一個新的FormBean實例
D 動態(tài)FormBean不能進行驗證操作
8哪些方法可以進行servlet的調(diào)試?()
A、使用打印語句; 在桌面計算機上運行服務(wù)器
B、使用Apache Log4J
C、使用IDE集成的調(diào)試器
D、直接查看HTML源碼 ????
E、返回錯誤頁面給客戶
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的用法哪些是錯誤的?(
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的輸出在請求時入到JSP頁面中
B、不能含有影響整個頁面的JSP內(nèi)容
C、被包含文件改變后不需更改使用它的頁面
D、被包含文件更改后,需要手動地更新使用它的頁面(不需要手動更新)
12、關(guān)于bean的說法正確的有哪些?()
A、具備一個零參數(shù)(空)的構(gòu)造函數(shù)(不是必須的)
B、不應(yīng)該有公開的實例變量(字段)
C、所有的屬性都必須通過getXxx和setXxx方法來訪問
D、布爾型的屬性使用isXxx,而非getXxx
13、下面關(guān)于MVC說法錯誤的有哪些?()
A、必須使用復(fù)雜的框架
B、使用內(nèi)建的RequestDispatcher能夠很好地實現(xiàn)MVC
C、當(dāng)其中一個組件發(fā)生變化的時候,MVC影響整個系統(tǒng)的設(shè)計
D、我們可以用MVC來處理單個請求
14、下面的標(biāo)簽中哪些是JSTL標(biāo)簽?()
15、struts框架,錯誤的是,下面那些說法正確?
A Struts中無法完成上傳功能
B Struts框架基于MVC模式
C Struts框架容易引起流程復(fù)雜、結(jié)構(gòu)不清晰等問題(清晰)
D Struts可以有效地降低項目的類文件數(shù)目
二、填空題( 5分)
1、調(diào)用函數(shù)MOD(123,10)返回值為___。
2、select round (123.67,1) from dual;這語句輸出值為______。
3、創(chuàng)建一個臨時替代變量使用的字符是_____。
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約束的列不能包含多個空值。 ()
3、DATE型數(shù)據(jù)中包含著時間值。 ()
4、具有外鍵約束的列可以包含空值。 ()
5、如果在類型為4)的列中輸入“hello”,則只能存儲hell。 ()
6、含有Group by子句的查詢,其結(jié)果是排好序的。 ()
7、定義游標(biāo)時,其中的select語句不能使用order by子句。(子查詢
不能用) ()
9、觸發(fā)器一定會被激發(fā)。 、過程可以有返回值。 ()
10、instead
of觸發(fā)器只是基于視圖的。
四、寫出相應(yīng)的SQL語句(括號內(nèi)為列名)(10分)
1、查詢從事各工作(JOB)的員工人數(shù)。
2、查詢與員工SMITH在同一部門(DEPTNO)的員工的姓名(ENAME),工資(SAL)和部門。
3、查詢所有員工的姓名(ENAME),工資(SAL)和工資等級(GRADE)。
4、查詢獲得工資(SAL)最高的3個員工信息。
5、查詢所有員工的`姓名(ENAME)及其主管姓名(ENAME)。
五、簡答題(15分)
1. 在PL/SQL程序中,進行用戶自定義異常處理的3個步驟是
什么?
2. 面向?qū)ο蟮奶卣饔心男┓矫?并簡要介紹
3. List、Map、Set三個接口,存取元素時,各有什么特點?
List 以特定次序來持有元素,可有重復(fù)元素。Set 無法擁有重復(fù)元素,內(nèi)部排序。Map 保存key-value值,value可多值。
4 .struts1.0和struts2.0的區(qū)別?如何控制兩種框架中的單例模式?
5. 描述一下如何在struts1.0實現(xiàn)國際化,以兩國語言(中文,英文)為例:
6.struts中怎么配置form-bean、action
7. Hibernate自帶的分頁機制是什么?如果不使用Hibernate自帶的分頁,則采用什么方式分頁?
8. hibernate中一對多配置文件返回的是什么?
9.什么樣的數(shù)據(jù)適合存放到第二級緩存中?
10你一般用spring做什么?
11項目中如何體現(xiàn)Spring中的切面編程,具體說明。
12 觸發(fā)觸發(fā)器的數(shù)據(jù)操作有哪些?
13 解釋視圖的含義以及使用視圖的好處。
14 簡述ORACLE中5種約束及其作用。
15 ORACLE中過程和函數(shù)的異同點。
六、編程題(30分)
1、創(chuàng)建一個PL/SQL塊,根據(jù)用戶輸入的編號,在emp表中查詢出該編號的員工姓名、部門號及其主管編號,要有異常處理。
2、創(chuàng)建一個PL/SQL塊,根據(jù)用戶輸入的工作,從emp表中逐條輸出從事這一工作的每位員工的編號、姓名和受雇如期,每條信息格式如下:(用游標(biāo)實現(xiàn))
編號 姓名 受雇日期
7751 JOHN 95-12-31
3、編寫一個函數(shù),用于判斷EMP表中某一工作(JOB)是否存在,若EMP表存在此工作名稱,則返回TRUE,否則返回FALSE。
4、編寫一觸發(fā)器,在EMP表執(zhí)行插入或修改前被激發(fā),此觸發(fā)器將對員工的工資(SAL)超過5000進行報錯,不能插入或修改,不超
過5000的才將員工編號、工作及當(dāng)時的日期(SYSDATE)插入UP_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次,請寫出程序。
8去掉一個Vector集合中重復(fù)的元素
9有一個字符串,其中包含中文字符、英文字符和數(shù)字字符,請統(tǒng)計和打印出各個字符的個數(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’打頭的所有員工,列出這些員工的全部個人信息。
(2) 基于上述EMPLOYEES表寫出查詢:查出部門平均工資大于1800
元的部門的所有員工,列出這些員工的全部個人信息。()
(3) 基于上述EMPLOYEES表寫出查詢:查出個人工資高于其所在部門平均工資的員工,列出這些員工的全部個人信息及該員工工資高出部門平均工資百分比。
參考答案
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;
五簡答
可以通過聲明和發(fā)布來截獲自定義異常。
一、在聲明部分為聲明自定義異常名。
二、在執(zhí)行部分使用 RAISE 語句顯式地發(fā)布異常。
三、在相應(yīng)的異常處理例程中引用已聲明的異常。
2(1).抽象:
抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細(xì)節(jié)。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。
(2).繼承:
繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性, 新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。
(3).封裝:
封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。
(4). 多態(tài)性:
多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應(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類繼承一個基類。struts2.0 Action要求繼承ActionSupport基類 b、線程模式
struts1.2 Action是單例模式的并且必須是線程安全的,因為僅有一個Action的實例來處理所有的請求。
單例策略限制了Struts1.2 Action能做的事情,并且開發(fā)時特別小心。Action資源必須是線程安全的或同步的。
struts2.0 Action為每一個請求產(chǎn)生一個實例,因此沒有線程安全問題。
c、Servlet依賴
struts1.2 Action依賴于Servlet API,因為當(dāng)一個Action被調(diào)用時HttpServletRequest和HttpServletResponse被傳遞給execut方法。
struts2.0 Action不依賴于容器,允許Action脫離容器單獨測試。如果需要,Struts2 Action仍
然可以訪問初始的Request和Response。
但是,其他的元素減少或者消除了直接訪問HttpServletRequest和HttpServletResponse的必要性。
d、可測性
測試struts1.2 Action的一個主要問題是execute方法暴露了Servlet API(這使得測試要依賴于容器)。一個第三方擴展:struts TestCase
提供了一套struts1.2的模擬對象來進行測試。
Struts2.0 Action可以通過初始化、設(shè)置屬性、調(diào)用方法來測試,“依賴注入”也使得測試更容易。
【計算機二級JAVA模擬試題及答案】相關(guān)文章:
計算機二級JAVA考試模擬試題及答案08-31
計算機考試二級java模擬試題(含答案)03-11
計算機二級JAVA全真模擬試題03-07
計算機二級Java單選模擬試題03-10
計算機二級JAVA考試模擬試題11-23
計算機二級考試JAVA模擬試題02-05
計算機二級JAVA考試精選模擬試題11-06