Java测试题
1.選擇填空題:
????選擇題全部為多選題,只有全部正確才能得分。
編譯java程序的命令是__javac____;運行java程序的命令是____java__;產生java文擋的命令是_____javadoc___;查詢java類型是否是serializable類型的命令是___serialver_____;產生java安全策略文件的命令是_____policytool___;產生類型歸檔文件.jar的命令是_____jar___。
A. java ????????????B. javac ????????????C. serialver
D.javadoc ??????????E.policytool ?????????F.jar
2.在一個java原文件中,import, class, package語句的順序是______G__。
A:import class package
B:class import package
C:package class import
D:import package class
E:class package import
G: ?package import class
3.下面敘述正確的有___BC_________________。
A:在一個java原文件中只能定義一個class
B:在一個java原文件中只能定義一個interface
C:在一個java原文件中可以定義多個class
D:在一個java原文件中可以定義多個interface
E:在一個java原文件中可以定義多個class和interface
F:在一個java原文件中只能定義public class
G:java原文件的前綴一定是所包含類型的名字
4.java程序中程序運行入口方法main的簽名正確的有____AB____。
A:public static void main(String args[])
B:static public void main(String[] args)
Cpublic void static main(String[] args)
D:public void main(String args[])
5:java程序中程序入口方法main的參數代表命令行輸入參數,命令行參數從____A____開始。
A. 0 ????????????B. 1 ????????????C.-1
6:以下屬于正確的java注釋有___ACD_____。
A. //This is comment ?????????B. /*This is comment
C. /**This is comment*/ ??????D. /*This is comment*/
7:以下能作為class, interface, method或variable有效標識符的有__________ADF______。
A For ????????????B.boolean ??????C.23age
D. _id ?????E.my name ?????F. $this_is_a_long_variable_name
8:以下不是java關鍵字的有___D_____。
A. super ??????C.this ??????D.NULL ?????E.true
9:以下能作為char類型的字面值的有__AC______。
A. “e”???????????B.’f’????????C. ‘\u12’??????D.’\u0012’
10: byte變量的取值范圍是____B____。
A. 0 - 65535 ???B.-128 –?127 ??C.-256 –?255 ???D.0 - 32767
11:以下正確的有__A______。
?
12:以下返回true的表達式有__C____。
A. “george”?== “george”?????????B.”george”?= “george”
C. “george”.equals(new String(“george”))
D. “george”?== new String(“george”)
13:根據以下程序選擇正確答案______C__:
public class Test {
? static int total = 10;
? public static void main (String args []) {
? new Test();
? }
? public Test () {
? System.out.println("In test");
? System.out.println(this);
? int temp = this.total;
? if (temp > 5) {
? ????System.out.println(temp);
? }
? }
?}
A. 編譯出錯 ??????????B.運行時有異常 ?????C. 編譯運行都正確
14下面集合定義正確的有____B__D__。
A:String strs[] = { ‘a’?‘b’?‘c’}; ?
B:String[] strs = {“a”, “b”, “c”};
C. String[] strs = new String{“a”?”b”?”c”};
D.String strs[] = new String[]{“a”, “b”, “c”};
E.String[] strs = new String[3]{“a”, “b”, “c”};
15.分別使用for, while, do/while循環實現從1到100的累加。
1): for
?
2): while
?
3): do-while
?
16.以下switch表達語句正確的有___AC_____。
A:public void switchTest(char c){//char byte int short
switch(c){…}
}
B. public void switchTest(long c){
switch(c){…}
}
C. public void switchTest(byte c){
switch(c){…}
}
D. public void switchTest(double c){
switch(c){…}
}
在面向對象編程中,一個類型由________、________和________組成。面向對象的特性包括________、________和________。在java中訪問權限的限制由嚴格到寬松依次是____E____、____H____、____B____和___A_____。
A.public ?B.protected C.identifier ?D.data ?E.private ??????????????F.operations ????G.inheritance ?????H.default(no modifier) ??
?I.encapsulation ????J.polymorphism
以下方法申明正確的有________________。
A.public static synchronized void writeLog(String msg)
B. synchronized public static writeLog(String msg)
C. public final abstract void writeLog(String msg)
D.final public void writeLog(String msg)
E.abstract synchronized void writeLog(String msg)
Java方法的參數傳遞對于基本數據類型如int, byte等,參數傳遞是________;對自定義數據類型,參數傳遞是________。
A. by reference ?B.by pointer ?????C. by value ?????D.by address
?
如下程序:
public class ArugmentTest{
static class IntA{
??private int a;
??public IntA(int a){ this.a = a; }
??public int getA() { return a; }
??public void setA(int a){ this.a = a; }
}
?
static public void change(int a){
??a = 3;
}
?
static public void change(IntA a){
??a.setA(3);
}
?
static public void changeRef(IntA a){
??a = new IntA(9);
}
?
public static void main(String[] args){
???int a = 2;
???change(a);
???System.out.print(a);
???IntA ia = new IntA(5);
???change(ia);
???System.out.print(ia.getA());
???changeRef(ia);
???System.out.println(ia.getA());
}
}
在控制臺上輸出的是________。
A. 2 3 3 ????B.333 ?????C.259 ??????D.339 ??????E.239
下面程序出錯的有________行。
1. class Student{
2. ?private String name; private int age;
public Student(){}
public void setName(String name){ this.name=name; }
void setAge(int age){ this.age= age; }
}
public class StudentTest{
?public void static main(String[] args){
???Student s = new Student();
???s.name = “Hellen”;
???s.setAge(20);
?}
}
方法重載(overloading)必須滿足________。
A. 在不同class中定義的方法 ????B.在同一類型中定義的方法
C. 方法名必須相同 ?????????????D.返回類型必須相同
E. 參數一定不同 ???????????????F.參數可以相同
對于構造方法(constructor)描述正確的有________。
A. 構造方法沒有返回類型 ??????B.構造方法一定是public的方法
C.如果我們沒有顯示定義構造方法,系統會提供一個缺省的
D.構造方法不能重載
在java語法中允許________繼承,________方法不能被繼承,________被繼承,顯示調用父類型的構造方法是通過調用________來完成的。
A. constructor ???B. single ???C. methods ???D. fields ??E. super
以下對于方法覆蓋(overriding)的說法正確的有________。
A.方法覆蓋發生在同一類中 ?B.方法的覆蓋發生在子類型中
C.方法名一定要一樣 ???????D.參數一定要一樣
E.返回類型可以不一樣 ?????F.訪問權限只能一樣
G.如有異常,子類型中拋出的異常與父類型中的一致或是其子類型
H.靜態方法可以被靜態方法覆蓋
請看以下程序:
class Vehicle {
?????public void drive() {
?????????System.out.println("Vehicle: drive");
?????}
?}
???
?class Car ??extends Vehicle {
?????public void drive() {
?????????System.out.println("Car: drive");
?????}
?}
???
?public class Test {
?????public static void main (String args []) {
?????????Vehicle v;
?????????Car c;
?????????v = new Vehicle();
?????????c = new Car();
?????????v.drive();
?????????c.drive();
?????????v = c;
?????????v.drive();
?????}
?}
以下描述正確的有________。
A.對于語句v=c;會導致編譯錯誤 ?B.對于語句v=c;會導致運行錯誤
C.運行輸出:
Vehicle: drive
Car: drive
Car: drive
D.運行輸出:
Vehicle: drive
Car: drive
Vehicle: drive
程序:
??public class StaticTest {
????static {
???????System.out.println("Hi there");
????}
????public void print() {
???????System.out.println("Hello");
????}
????public static void main(String args []) {
???????StaticTest st1 = new StaticTest();
???????st1.print();
???????StaticTest st2 = new StaticTest();
???????st2.print();
????}
?}
什么時候字符串“Hi there”會輸出________。
A.永遠都不會輸出 ?????????B.創建st1和st2時
C.第一次將StaticTest類型裝載進內存時 ??D.顯示調用print方法時
以下描述正確的有________。
A. final class不能被繼承 ???????B.final變量不能被修改
C.final成員變量可以在構造方法中賦值
D.final方法不能被覆蓋(overriden)
以下描述正確的有________。
A.abstract class一定有abstract method(s)
B.abstract class可以沒有abstract method(s)
C.定義abstract class的目的是為了被繼承
D.interface中定義的方法全是abstract methods
E.interface中定義的變量全部是final static變量
inner class的類型有________。
A.member inner class ????????B.static inner class
C.local inner class ???????????D.anonymous inner class
E.public inner class ???????????F.global inner class
?
一個匿名的內置類有可能________。
A.繼承其他的類 ????????????????B.實現了某一接口
C.定義了構造方法 ??????????????D.可以使用成員變量
如果你想將一組對象按一定順序存取,在不考慮并發訪問的情況下會使用________, 反之則會使用________;如果你想存儲一組無序但唯一的對象,你會使用________; 如果你想按關鍵字對對象進行存取,在不考慮并發訪問的情況下會使用________, 反之則會使用________。
A.Vector ???????????B.HashSet ???????????C.ArrayList
D.HashMap ????????E.Hashtable ??????????????
程序代碼:
public class ExceptionTest{
???public double div(double a, double b){
??????try{
?????????return a/b;
??????}catch(Exception e){
?????????System.out.println(“Exception thrown”);
??????}finally{
?????????System.out.println(“Release resources.”);
}
}
?
public static void main(String[] args){
???ExceptionTest et = new ExceptionTest();
???et.div(1, 2);
???et.div(3.4, 0);
}
}
可能產生的結果是________:
A. 編譯不成功 ?????????????B.無法運行
C.程序運行輸出為:
??????Release resources.
Exception thrown
Release resources.
________又叫做unchecked exception。 Checked Exception通常繼承________。在方法簽名上指定可能有異常產生用關鍵字________, 在程序中產生異常用關鍵字________。獲得異常的簡單描述信息調用方法________, 獲得詳細的異常棧信息調用方法________。
A. RuntimeException ???????B. Exception ??????C. getMessage
D. throw ?E.throws ??????????F.printStackTrace
在圖形編程中,將不同的控件按區域排列用________布局管理器;讓控件自動排列并保持大小用________布局管理器;讓控件按相同大小排列用________布局管理器;一次只有一個控件可見的布局管理器是________。
A. CardLayout ?????????B. GridLayout ?
C. FlowLayout ?????????D. BorderLayout
圖形編程通常按__________________順序。
A.設置布局管理器(Layout manager) ?????B.向容器中增加控件
C.選擇容器 ?????D.為控件設置事件處理器
完成如下代碼,按照FlowLayout的布局方式向JFrame中添加一JButton:
JFrame frame = new JFrame(“Simple GUI”);
FlowLayout fl = new FlowLayout();
frame.__________________;
JButton btn = new JButton(“OK”);
frame._____________________;
事件處理方式采用了observer(觀察者)設計模式,事件編程模式三要素是________、________和________。其中,?________通常繼承java.util.EventObject, ________通常繼承java.util.EventListener。
A.Event source ??????????B.Event object
C.Event listener ?????????D.Helper ?????????E.Model
JButton是________事件的事件源,它通過方法________注冊事件偵聽器, 事件偵聽器必須實現接口________,當事件發生時偵聽器的方法________被調用,在此方法中調用________的方法________可以獲得事件源。
A. addActionListener ???????B. ActionEvent
C.ActionListener ????????D.getSource ???????E.actionPerformed
40.JFrame的卻省布局管理器是______, JDialog的卻省布局管理器是______, JPanel的卻省布局管理器是________。
A. FlowLayout ???????????B.BorderLayout ????
C.GridLayout ????????????D.GridBagLayout
41.在swing編程中,用作提示信息的控件是________, 作單行文本編輯的控件是________, 用作多行文本編輯的控件是________,可編輯HTML等類型文檔的控件是________,在界面上顯示多條記錄并可多重選擇的控件是________, 從下拉框中選擇記錄的空間是________。
A. JTextArea ??????B. JList ???????C. JComboBox ??????????
D. JTextField ??????E. JEditorPane ??????????F. JLabel
42.swing圖形界面通常都會有菜單控件,所有的菜單都加到________;菜單的類型是________;在菜單上會有選項類型________。
JMenuItem ??????????B.JCheckBoxMenuItem
C.JMenuBar ????????D.JRadioButtonMenuItem ???????E.JMenu
43.一個applet如果使用了swing控件,這個applet必須繼承________; 控制applet生命周期的方法有________個,它們是________ 。applet是嵌入在html頁面的java程序,放置________標簽中,它的屬性包含________。Applet要調用html頁面里提供的定制參數,調用方法________,要在瀏覽器的狀態欄顯示信息調用方法________。
A. Applet ????????????B.JApplet ???????????C. 兩個
D.三個 ??????????????E.四個 ?????????????F.init,start
G.init,start,stop,destory ?H.init,start,destory ????I.applet
J.code ?K.codebase ?????L.getParameter ????M.showStatus
44.創建線程(Thread)的方式有兩種,一種是繼承類________,另一種是實現接口________。啟動線程的方法是________。線程啟動后運行的是________里的代碼。
A.run ??B.Thread ?????C.Runnable ???????D.start
45.完成以下代碼創建并啟動線程:
public class TestThread implements Runnable{
????public void run(){
????????for(int i = 0; i < 10000; i++)
???????????System.out.println(i);
????}
?
???public static void main(String[] args){
???????TestThread tt = new TestThread();
???????Thread t = ________;
???????t.________;
}
}
46.判斷一個線程是否被中斷,調用方法________;中斷一個線程,調用方法________;等待一個線程退出,調用方法________;一個線程放棄執行權利調用方法________。
A. interrupt ?????B.join ?????????C.isInterrupted ???????D.yield
47.并發控制是多線程編程的難點。一個線程要等待某個條件的滿足調用方法________;通知某一個處于等待狀態線程的方法是________,通知多個的是________;處于等待狀態的線程當前調用的方法或程序塊用關鍵字________來限制。
A.notify ??????B.wait ???????C.synchronized ??????D.notifyAll
48.對原始數據的讀寫,采用流________和________,為了提高性能,采用流________和________;對各種基本數據類型和String類型的讀寫,采用流________和________;讀寫文本類型采用________和________,方便讀寫文本行采用流________和________;對象讀寫采用流________和________;能指定字符編碼的I/O流類型是________和________。
A. InputStream ??????B.DataInputStream ??????C. Reader
D.InputStreamReader ?E.BufferedReader F.BufferedInputStream ??????????????????????G.DataOutputStream ??H.OutputStream ????I.BufferedOutputStream ???J.Writer ??K.PrintWriter ?????L.ObjectInputStream ?????M.ObjectOutputStream ?N.OutputStreamWriter ?
49.在當前工作目錄下有一個用GBK編碼的文本文件conf.txt,完成如下代碼塊能正確讀該文件的每一行:
FileInputStream fis = ________________;
InputStreamReader isr = ________________;
BufferedReader br = ________________;
String line = ________;
50.一個File對象是文件或目錄在內存中的表示,File類型中定義了方法______來判斷一個文件是否存在,定義方法________創建一個新文件,定義方法________刪除一個文件,定義方法________改變文件名,定義方法________創建一級目錄,定義方法________同時創建一個目錄層次。對原始數據類型文件的操作用文件I/O流________和________;對文本文件操作用文件I/O流________和________;同時對一個文件進行讀寫操作用文件流________。
A.createNewFile ????B.renameTo ???????C.delete ???????D.exists
E.mkdirs ??????????F.mkdir ???????????G.FileReader ??
H.FileInputStream ??I.RandomAccessFile ?J.FileWriter ???
K.FileOutputStream
51.在unix服務器www.openlab.com.cn上提供了基于TCP的時間服務應用,該應用使用port為13。創建連接到此服務器的語句是________。
Socket s = new Socket(“www.openlab.com.cn”, 13);
Socket s = new Socket(“www.openlab.com.cn:13”);
Socket s = accept(“www.openlab.com.cn”, 13);
52.創建一個TCP服務程序,該程序運行在port為6868,完成以下代碼,實現一個多線程的服務程序:
________ ss = new ________;
while(true){
??Socket clientRequest = ss.________;
??service(clientRequest);
}
53.創建一個tcp客戶程序的順序是________。
獲得I/O流
關閉I/O流
對I/O流進行讀寫操作
建立socket
關閉socket
54.創建一個tcp服務程序的順序是________。
創建一個服務線程處理新的連接
創建一個服務器socket
從服務器socket接受客戶連接請求
在服務線程中,從socket中獲得I/O流
對I/O流進行讀寫操作,完成與客戶的交互
關閉socket
關閉I/O流
55.可以通過使用URL和URLConnection類型來完成基于HTTP/FTP的遠程通訊,完成以下代碼讀取Tarena網站www.tarena.com.cn的首頁內容:
??URL tarenaFirstPage = ________;
???InputStream is = tarenaFirstPage.________;
???BufferedReader br = ________;
???String line = null;
???while((line = br.readLine()) != null) System.out.println(line);
56.Java UDP編程主要用到的兩個類型是________和________。發送和接收信息的方法是________。
A.UDPSocket ????????????B.DatagramSocket
C.UDPPacket ????????????D.DatagramPacket
E.read/write ?????????????F.send/receive
Lab部分(前三題必須完成,4、5至少完成一個):
Unix系統的用戶信息通常都放置在/etc/passwd文件中,每個用戶的信息占用一行,文件格式如下:
?username:password:uid: gid:gcos-field:home-dir:login-shell
每個用戶都會屬于不同的組,組信息通常放置在/etc/group文件中,每個組信息占用一行,文件格式如下:
groupname:password: gid:user-list
一個用戶可以屬于不同的組,一個組也可以包含多個用戶。用戶信息中的password和gcos-field信息,組信息中的password信息在我們的系統中被忽略?,F在要建立一個用戶管理系統,將所有的類型都放置在tarena.com.usermgmt包下:
盡量采用JavaBean的方式建立類型User和Group,類型除了包含以上提供的信息外,還要反映出兩個類型之間的關系,同時這兩個類型的對象能在網絡上傳輸;
創建類型DataBuilder,通過解析字符串(文件/etc/passwd和/etc/group中的串)創建User和Group對象,DataBuilder類圖為:
?
?
創建類型FileAnalyzer, 讀取文件/etc/passwd和/etc/group的內容,使用DataBuilder,將文件內容完全反映到內存中;
編寫一個Socket的客戶程序UserClient,將3中產生的用戶和組對象傳遞到服務器上;
編寫一個Socket 的多線程服務程序UserServer,接收UserClient發送的對象,并在內存中形成所有服務器上的用戶和組的內存映像。
轉載于:https://www.cnblogs.com/justdoitba/articles/8064685.html
總結
- 上一篇: markdownpad2自定义githu
- 下一篇: Redis保存Java Session