一、選擇題(每題5分,共20分)
1、訪問修飾符作用范圍由大到小是(D)
A、 PRivate-default-protected-public
B、 public -default-protected- private
C、 private- protected-default- public
D、public - protected- default-private
2、以下(D)不是Object類的方法?
A、clone()
B、finalsize()
C、toString()
D、hasNext()
3.Java中,以下(B)接口以鍵——值對的方式存儲對象?
A、java.util.Collection
B、java.util.Map
C、java.util.List
D、java.util.Set
4、指出下列程序運(yùn)行的結(jié)果()
Public class Example{
String str=new String(“good”);
char[] ch={‘a’,’b’,’c’ };
public static void main(String args[]){
Exampleex=new Example();
Ex.change(ex.str,ex.ch);
System.out.print(ex.str+”and ”);
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str=”test ok”;
ch[0]=’g’;
}
A、good and abc
B、good and gbc
C、test ok and abc
D、test ok and gbc
二、填空題(每題5分,共20分)
5、JAVA基本數(shù)據(jù)類型包括__字符類型char,布爾類型boolean,數(shù)值類型____.
6、Math.round(11.5)等于多少?12,Math.round(-11.5)等于多少?-11
7、程序String str1="hello";String str2="he"+newString("llo");
System.out.println(str1==str2);的運(yùn)行結(jié)果是:false
8、字符串分為兩大類,一類是字符串常量,使用String類的對象表示;另一類是字符串變量,使用StringBuffer類的對象表示。
三 簡答
9.接口和抽象類的區(qū)別是什么?(10分)
答案:接口是公開的,里面不能有私有的方法或變量,是用于讓別人使用的,而抽象類是可以有私有方法或私有變量的,
另外,實現(xiàn)接口的一定要實現(xiàn)接口里定義的所有方法,而實現(xiàn)抽象類可以有選擇地重寫需要用到的方法,一般的應(yīng)用里,最頂級的是接口,然后是抽象類實現(xiàn)接口,最后才到具體類實現(xiàn)。
還有,接口可以實現(xiàn)多重繼承,而一個類只能繼承一個超類,但可以通過繼承多個接口實現(xiàn)多重繼承,接口還有標(biāo)識(里面沒有任何方法,如Remote接口)和數(shù)據(jù)共享(里面的變量全是常量)的作用.
10.利用遞歸方法求5!
答案:
public class Test {
public static void main(String args[]) {
int x = 5;
int rs = Fac(x);
System.out.println("" + x + "! = " + rs);
}
public static long Fac(int x) {
if(x > 1)
return (x * Fac(x - 1));
else
return 1;
}
}
11.編寫多線程代碼有幾種實現(xiàn)方法?請用一段代碼分別舉例實現(xiàn)。
答案:
三種:
(1)繼承Thread類,重寫run函數(shù)
創(chuàng)建:
classxx extends Thread{
public void run(){
Thread.sleep(1000) //線程休眠1000毫秒,sleep使線程進(jìn)入Block狀態(tài),并釋放資源
}}
開啟線程:
對象.start() //啟動線程,run函數(shù)運(yùn)行
(2)實現(xiàn)Runnable接口,重寫run函數(shù)
開啟線程:
Threadt = new Thread(對象) //創(chuàng)建線程對象
t.start()
(3)實現(xiàn)Callable接口,重寫call函數(shù)
Callable是類似于Runnable的接口,實現(xiàn)Callable接口的類和實現(xiàn)Runnable的類都是可被其它線程執(zhí)行的任務(wù)。
Callable和Runnable有幾點不同:
①Callable規(guī)定的方法是call(),而Runnable規(guī)定的方法是run().
②Callable的任務(wù)執(zhí)行后可返回值,而Runnable的任務(wù)是不能返回值的
③call()方法可拋出異常,而run()方法是不能拋出異常的。
④運(yùn)行Callable任務(wù)可拿到一個Future對象,F(xiàn)uture表示異步計算的結(jié)果。它提供了檢查計算是否完成的方法,以等
待計算的完成,并檢索計算的結(jié)果.通過Future對象可了解任務(wù)執(zhí)行情況,可取消任務(wù)的執(zhí)行,還可獲取任務(wù)執(zhí)行的結(jié)果
12.編程題:寫一個觀察者模式出來(先畫類圖,在用代碼實現(xiàn))
答案:

/// <summary> ///抽象主題類 /// </summary> public abstract class Subject { private IList<Observer> observers = new List<Observer>(); /// <summary> ///增加觀察者 /// </summary> /// <param name="observer"></param> public void Attach(Observer observer) { observers.Add(observer); } /// <summary> ///移除觀察者 /// </summary> /// <param name="observer"></param> public void Detach(Observer observer) { observers.Remove(observer); } /// <summary> ///向觀察者(們)發(fā)出通知 /// </summary> public void Notify() { foreach (Observer o in observers) { o.Update(); } } } /// <summary> ///抽象觀察者類,為所有具體觀察者定義一個接口,在得到通知時更新自己 /// </summary> public abstract class Observer { public abstract void Update(); } /// <summary> ///具體觀察者或具體通知者,將有關(guān)狀態(tài)存入具體觀察者對象;在具體主題的內(nèi)部狀態(tài)改變時,給所有登記過的觀察者發(fā)出通知。具體主題角色通常用一個具體子類實現(xiàn)。 /// </summary> public class ConcreteSubject : Subject { private string subjectState; /// <summary> ///具體觀察者的狀態(tài) /// </summary> public string SubjectState { get { return subjectState; } set { subjectState = value; } } } /// <summary> ///具體觀察者,實現(xiàn)抽象觀察者角色所要求的更新接口,已是本身狀態(tài)與主題狀態(tài)相協(xié)調(diào) /// </summary> public class ConcreteObserver : Observer { private string observerState; private string name; private ConcreteSubject subject; /// <summary> ///具體觀察者用一個具體主題來實現(xiàn) /// </summary> public ConcreteSubject Subject { get { return subject; } set { subject = value; } } public ConcreteObserver(ConcreteSubject subject, string name) { this.subject = subject; this.name = name; } /// <summary> ///實現(xiàn)抽象觀察者中的更新操作 /// </summary> public override void Update() { observerState = subject.SubjectState; Console.WriteLine("The observer's state of {0} is {1}", name, observerState); } }
四、選做題
一個有10億條記錄的文本文件,已按照關(guān)鍵字排好序存儲,設(shè)計算法,可以快速的從文件中查找指定關(guān)鍵字的記錄
分析:10億在 G量級, 分成100份, 為10M量級, 基本上放入內(nèi)存無壓力了.
在這10億記錄中, 均分為100份, 把每份的第一條記錄關(guān)鍵字和此記錄對應(yīng)的文件偏移量先掃入內(nèi)存(類似索引), 這里需要磁盤隨機(jī)io 100次.
這樣可以馬上定位出指定關(guān)鍵字所在的記錄塊, 把相應(yīng)的記錄塊拿到內(nèi)存, 二分查找即可.
原文:http://www.dy1280.com/thread-408-1-1.html
新聞熱點
疑難解答