Java基礎方面:
1,作用域public,protected,private,以及不寫(xiě)時(shí)的區別
答:區別如下:
作用域 當前類(lèi) 同一package 子孫類(lèi) 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不寫(xiě)時(shí)默認為friendly
2,ArrayList和Vector的區別,HashMap和Hashtable的區別
答:就ArrayList與Vector主要從二方面來(lái)說(shuō).
一.同步性:Vector是線(xiàn)程安全的,也就是說(shuō)是同步的,而ArrayList是線(xiàn)程序不安全的,不是同步的
二.數據增長(cháng):當需要增長(cháng)時(shí),Vector默認增長(cháng)為原來(lái)一培,而ArrayList卻是原來(lái)的一半
就HashMap與HashTable主要從三方面來(lái)說(shuō)。
一.歷史原因:Hashtable是基于陳舊的Dictionary類(lèi)的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現
二.同步性:Hashtable是線(xiàn)程安全的,也就是說(shuō)是同步的,而HashMap是線(xiàn)程序不安全的,不是同步的
三.值:只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value
3,char型變量能不能定義為一個(gè)中文?為什么?
答:是能夠定義成為一個(gè)中文的,因為java中以unicode編碼,一個(gè)char占16個(gè)字節,所以放一個(gè)中文是沒(méi)問(wèn)題的
4,多線(xiàn)程有幾種表示方法,都是什么?同步有幾種實(shí)現方法,都是什么?
答:多線(xiàn)程有兩種實(shí)現方法,分別是繼承Thread類(lèi)與實(shí)現Runnable接口
同步的實(shí)現方面有兩種,分別是synchronized,wait與notify
5,繼承時(shí)候類(lèi)的執行順序問(wèn)題,一般都是選擇題,問(wèn)你將會(huì )打印出什么?
答:父類(lèi):
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子類(lèi):
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
輸出結果:
C:\>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
6,內部類(lèi)的實(shí)現方式?
答:示例代碼如下:
package test;
public class OuterClass
{
private class InterClass
{
public InterClass()
{
System.out.println("InterClass Create");
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
輸出結果:
C:\>java test/OuterClass
InterClass Create
OuterClass Create
再一個(gè)例題:
public class OuterClass {
private double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line 3. Which two inner class declarations are
valid?(Choose two.)
A. class InnerOne{
public static double methoda() {return d1;}
}
B. public class InnerOne{
static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D. static class InnerOne{
protected double methoda() {return d1;}
}
E. abstract class InnerOne{
public abstract double methoda();
}
說(shuō)明如下:
一.靜態(tài)內部類(lèi)可以有靜態(tài)成員,而非靜態(tài)內部類(lèi)則不能有靜態(tài)成員。 故 A、B 錯
二.靜態(tài)內部類(lèi)的非靜態(tài)成員可以訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)變量,而不可訪(fǎng)問(wèn)外部類(lèi)的非靜態(tài)變量;return d1 出錯。
故 D 錯
三.非靜態(tài)內部類(lèi)的非靜態(tài)成員可以訪(fǎng)問(wèn)外部類(lèi)的非靜態(tài)變量。 故 C 正確
四.答案為C、E
7,垃圾回收機制,如何優(yōu)化程序?
8,float型float f=3.4是否正確?
答:不正確。精度不準確,應該用強制類(lèi)型轉換,如下所示:float f=(float)3.4
9、介紹JAVA中的Collection FrameWork(包括如何寫(xiě)自己的數據結構)?
答:Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素(Elements)
Map提供key到value的映射
10、Java中異常處理機制,事件機制?
答:使用New操作創(chuàng )建對象后,JAVA虛擬機自動(dòng)該對象分配內存并保持跟蹤,JAVA虛擬機能判斷出對象是否還被引用,對不再被引用的對象釋放其占用的內存.
11、JAVA中的多形與繼承?
希望大家補上,謝謝
12、抽象類(lèi)與接口?
答:抽象類(lèi)與接口都用于抽象,但是抽象類(lèi)(JAVA中)可以有自己的部分實(shí)現,而接口則完全是一個(gè)標識(同時(shí)有多重繼承的功能)。
13、Java 的通信編程,編程題(或問(wèn)答),用JAVA SOCKET編程,讀服務(wù)器幾個(gè)字符,再寫(xiě)入本地顯示?
答:Server端程序:
package test;
import java.net.*;
import java.io.*;
public class Server
{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server()
{
try
{
ss=new ServerSocket(10000);
while(true)
{
socket = ss.accept();
String RemoteIP = socket.getInetAddress().getHostAddress();
String RemotePort = ":"+socket.getLocalPort();
System.out.println("A client come in!IP:"+RemoteIP+RemotePort);
in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String line = in.readLine();
System.out.println("Cleint send is :" + line);
out = new PrintWriter(socket.getOutputStream(),true);
out.println("Your Message Received!");
out.close();
in.close();
socket.close();
}
}catch (IOException e)
{
out.println("wrong");
}
}
public static void main(String[] args)