求一些java基础知识的考题,可以是各种题型。
 想看看自己最近学习java的效果如何 ,顺便复习一下.
100分送上

解决方案 »

  1.   

    http://hi.baidu.com/xianchao/blog/item/822f6a3e8d96b43d70cf6cbc.html
      

  2.   

    Java基础方面: 
    1、作用域public,private,protected,以及不写时的区别 
    答:区别如下: 
    作用域 当前类 同一package 子孙类 其他package 
    public √ √ √ √ 
    protected √ √ √ × 
    friendly √ √ × × 
    private √ × × × 
    不写时默认为friendly2、ArrayList和Vector的区别,HashMap和Hashtable的区别 
    答:就ArrayList与Vector主要从二方面来说. 
    一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 
    二.数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList却是原来的一半 
    就HashMap与HashTable主要从三方面来说。
    一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 
    二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 
    三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 3、char型变量中能不能存贮一个中文汉字?为什么? 
    答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 
    答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 
    同步的实现方面有两种,分别是synchronized,wait与notify 5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 
    答:父类: 
    package test; 
    public class FatherClass 

    public FatherClass() 

    System.out.println("FatherClass Create"); 


    子类: 
    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、内部类的实现方式? 
    答:示例代码如下: 
    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 
    再一个例题: 
    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(); 

    说明如下: 
    一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错 
    二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。 故 D 错 
    三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确 
    四.答案为C、E 7、垃圾回收机制,如何优化程序? 
    希望大家补上,谢谢 8、float型float f=3.4是否正确? 
    答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 9、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 
    答:Collection FrameWork如下: 
    Collection 
    ├List 
    │├LinkedList 
    │├ArrayList 
    │└Vector 
    │ └Stack 
    └Set 
    Map 
    ├Hashtable 
    ├HashMap 
    └WeakHashMap 
    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) 
    Map提供key到value的映射 10、Java中异常处理机制,事件机制? 11、JAVA中的多形与继承? 
    希望大家补上,谢谢 12、抽象类与接口? 
    答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。 13、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示? 
    答: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) 

    new Server(); 

    }; 
    Client端程序: 
    package test; 
    import java.io.*; 
    import java.net.*; public class Client 

    Socket socket; 
    BufferedReader in; 
    PrintWriter out; 
    public Client() 

    try 

    System.out.println("Try to Connect to 127.0.0.1:10000"); 
    socket = new Socket("127.0.0.1",10000); 
    System.out.println("The Server Connected!"); 
    System.out.println("Please enter some Character:"); 
    BufferedReader line = new BufferedReader(new InputStreamReader(System.in)); 
    out = new PrintWriter(socket.getOutputStream(),true); 
    out.println(line.readLine()); 
    in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
    System.out.println(in.readLine()); 
    out.close(); 
    in.close(); 
    socket.close(); 
    }catch(IOException e) 

    out.println("Wrong"); 


    public static void main(String[] args) 

    new Client(); 

    }; 14、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在COLLECTION框架中,实现比较要实现什么样的接口? 
    答:用插入法进行排序代码如下 
    package test; 
    import java.util.*; 
    class InsertSort 

    ArrayList al; 
    public InsertSort(int num,int mod) 

    al = new ArrayList(num); 
    Random rand = new Random(); 
    System.out.println("The ArrayList Sort Before:"); 
    for (int i=0;i<num ;i++ ) 

    al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1)); 
    System.out.println("al["+i+"]="+al.get(i)); 


    public void SortIt() 

    Integer tempInt; 
    int MaxSize=1; 
    for(int i=1;i<al.size();i++) 

    tempInt = (Integer)al.remove(i); 
    if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()) 

    al.add(MaxSize,tempInt); 
    MaxSize++; 
    System.out.println(al.toString()); 
    } else { 
    for (int j=0;j<MaxSize ;j++ ) 

    if (((Integer)al.get(j)).intValue()>=tempInt.intValue()) 

    al.add(j,tempInt); 
    MaxSize++; 
    System.out.println(al.toString()); 
    break; 




    System.out.println("The ArrayList Sort After:"); 
    for(int i=0;i<al.size();i++) 

    System.out.println("al["+i+"]="+al.get(i)); 


    public static void main(String[] args) 

    InsertSort is = new InsertSort(10,100); 
    is.SortIt(); 


    JAVA类实现序例化的方法是实现java.io.Serializable接口 
    Collection框架中实现比较要实现Comparable 接口和 Comparator 接口 15、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。 
    答:代码如下: 
    package test; class SplitString 

    String SplitStr; 
    int SplitByte; 
    public SplitString(String str,int bytes) 

    SplitStr=str; 
    SplitByte=bytes; 
    System.out.println("The String is:′"+SplitStr+"′;SplitBytes="+SplitByte); 

    public void SplitIt() 

    int loopCount; 
    loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split Byte+1); 
    System.out.println("Will Split into "+loopCount); 
    for (int i=1;i<=loopCount ;i++ ) 

    if (i==loopCount){ 
    System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length())); 
    } else { 
    System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte))); 



    public static void main(String[] args) 

    SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人 0ewldfls=103",4); 
    ss.SplitIt(); 

    } 16、JAVA多线程编程。 用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。 
    希望大家补上,谢谢 17、STRING与STRINGBUFFER的区别。 
    答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法 
    这几道是非常基础的Java题,可以看一下
      

  3.   

    看看这个:
    http://www.xxlinux.com/linux/article/development/soft/20060715/2762.html
      

  4.   

    http://download.csdn.net/source/180311
      

  5.   

    一.判断 
    1.递归优点在于简化程序设计,使程序易读,缺点是降低效率. 
    2.方法重写实现的动态多态性也称为运行时多态. 
    3.声明类必须在源程序文件的开始处. 
    4.对于堆栈来说,其尾端称为栈顶. 
    5.虚拟机是用来解释Java 指令的软件,可以让Java 程序在任何机器上运行. 
    6.对于链表来说,可以对其进行随机访问. 
    7.DataInputStream  类一个可以读取各种基本数据类型的输入流. 
    8.多线程可以影响程序的响应速度,这表明多线程提高了程序的效率. 
    9.if 语句后必须有一对大括号. 
    10.continue 的作用是结束正在进行的,直接进入下一次循环. 
    11.当同步方法被一个线程调用时,则其他线程无法调用该方法. 
    12.Java 中的程序入口函数名称是Main(). 
    13.使用int name[][]=new int [3][3];和使用int name2[][]=new int[3][];两种方式定义数组后,数 
    组中的每一个元素都可用. 
    14.InetAddress 封装了Internet IP 地址,并支持用点分开的地址形式. 
    15.在J2SE 中,Integer 类定义了一个静态方法toString{},它将返回Integer 值的String 对象. 
    16.BufferedReader 类是一个装饰器,所以创建时需要另外一个输入流做参数. 
    17.在一个类中,静态方法只能调用本类中的其他静态成员(包括变量和成员函数). 
    18.子类不能定义与父类同名的方法. 
    19.除继承自Thread 类以及实现Runnable 接口外,使用Timer 和TimerTask 也可以实现多线程 
    的目的. 
    二. 
    1.下列选项属于字符流的有() 
    A.ByteArrayOutputStream 
    B.DataOutputStream 
    C.InputStreamReader 
    D.OutputStreamWriter 
    2.下列利用for 语句,实现了10 次循环的有() 
    A.for(int i=1;i <=10i++){} 
    B.for(int i=0;i <10;i++){} 
    C.for(int i=0;i <=10;i++){} 
    D.for(int i=1;i <10;i++){} 
    3.以下能够正确创建一个String 对象的有() 
    A.String s=new String(); 
    B. String s=null; 
    C.String s="abc"; 
    String s=new String("abc"); 
    4.下列关于Character 类说法正确的是() 
    三 .  单选题 
    1.下列选项中不属于多线程作用的是() 
    A.使多CPU 系统更加有效. 
    B.改善程序结构 
    C.提高内存存储空间. 
    D 提高应用程序响应能力 
    2.以下对判断语句描述正确的是() 
    A.if 语句不可以嵌套使用,只有if-else 才可以嵌套使用. 
    B.if 语句可以嵌套使用,if -else 语句不可以嵌套使用. 
    C.无论if 语句还是if-else 语句均不可以嵌套使用. 
    D.if 语句可以嵌套使用,if-else 语句也可以嵌套使用. 
    3.下面以穷举法求素数的部分代码: 
    for(int i=3;i <max;_____){ 
        if(isPrimeNumber(i)){ 
        System.out.println(i) 
        } 

    其中isPrimerNumber()方法为求其参数是否为素数,若是素数则返回true,则空格处填入下列 
    那个选项比较合适? 
    A.i++ 
    B.i+=& 
    C.i+=2 
    D.i+=2 
    4.J2ME 的市场目标定位是() 
    A.主要是面向手机的运行平台. 
    B.面向消费电子产品,为消费电子产品提供一个Java 运行环境. 
    C.主要目的是为台式机和工作站提供一个开发和运行的平台. 
    D.主要目的是为企业提供一个应用服务器的运行和开发平台 
    5.有如下代码 
    for(int i=0;i <10;i__){} 
    则() 
    A. 编译错误 
    B. 运行错误 
    C.可以编译并运行,循环10 次 
    D.可以编译并运行,无限循环. 
    6.在多线程程序中,当某种资源发生什么状况时被称为临界资源? 
    A.被系统占用. 
    B.多个进程共享. 
    C.多个线程共享. 
    D 达到最大或者是最小值. 
    7.当Java 程序在执行过程中产生了异常对象,并传递给Java 运行时的被称为 
    A.生成异常 
    B.中止执行 
    C.抛出异常 
    D.捕获异常. 
    8.利用继承Thread 类实现多线程,在Thread 的子类中,下列那个方法必须被实现. 
    A. run() 
    B. start() 
    C.Thread() 
    D.sleep() 
    9.int[][]a=new int[3][4]; 
        for(int i=0;i <a.length;i++){ 
            for(int j=0;j <a[i].length;j++){ 
            a[i][j]=i+j; 
            } 
        } 
        则a[2][3]=()     A.3 
        B.4 
        C.5 
        D.2 10.以下能够正确声明类的代码是() 
      A  public class Main{} 
      B  public void class Main{} 
      C  public class Main(){} 
      D public void main(){}   11.一个已经连接的Socket 对象socket,调用socket 的什么方法可以得到输入流.   A getSocketInputStream() 
      B getOutputStream() 
      C getChannel() 
      D getOutputStream()   12.下列关于常量定义错误的是   A 常量表示只能对变量进行一次赋值 
      B.常量的值一旦设定,就不能再变更 
      C.常量要先赋值,后声明 
      D.声明常量的方法是在声明变量的语句前面加上final 关键字.   13.下列描述正确的是() 
      A  静态变量的值不能变化. 
      B. 静态变量就是常量,其值一旦被初始化就不能再改变 
      C. 静态变量只能做一次赋值运算 
      D. 一个类的懚有对象共享静态变量   14.下列连接属于服务器/客户端连接方式的是 
      A web 
      B P2P 下载 
      C.pos 终端连接 
    D.分布式服务器之间的连接 15 对下列两个对象r1 r2 描述正确的选项是() 
      Random r1=new Random() 
      Random r2=new Random() 
      A  结果不确定 
      B.r.nextInt()>r2.nextInt() 
      C.r.nextInt()==r2.nextInt() 
      D. r.nextInt() <r2.nextInt() 
      16  下列对Math 类描述错误的一项是()   A Math 类在java.lang 包中 
      B Math.sqrt(num)用于计算一个数num 的平方根 
      C  支持各种不同的数学函数的方法在Math 类中以静态方法出现 
      D Math 类包含的数据操作有复数,对数,指数,三角函数   17  有如下类     public class Simple{         public static int i; 
        } 
        若 s1,s2 均为Simple 的对象,则()     A.s1 ,s2 的i 值 不一定相同 
        B. s1,s2 的i 值一定不同. 
        C.s1,s2 的值没有任何关系,但当赋值后均不可改变 
        D s1,s2 的i 值永远相同.     18.  定义TestStaticBlock 类 
        public class TestStaticBlock{ 
            static { 
            System.out.println("在Static 块中"); 
            } 
        public TestStaticBlock(int i){ 
        System.out.println("在TestStaticBlock 的构造函数中"); 
        } 
        }     则下面的代码执行后,static 被执行了多少次?     A 4 
        B 0 
        C 2 
    D 1     19 读以下代码: 
        public static void main(String[] args){ 
            Socket [] sockets=new Socket[1024]; 
            point =0; 
            try{ 
            ServerSocket serverSocket=new ServerSocket(9700); 
            while(true&&point <1024){ 
                  sockets[point++]=serverSocket.accept(); 
                  System.out.println("ServerSocket connected"); 
            } 
            } 
            catch(Exception e){         }     }     对于以上代码描述正确的是()   A  该代码建立一个服务器,并且监听9700 端口,可以连接1024 个客户端 
    B  该代码建立一 个客户端,对同一服务器进行了1024 次连接 
    C  该代码建立一个客户端,使用9700 端口连接到1024 个服务器上 
    D  该代码建立一个服务器,对一个客户端进行了
      

  6.   

    google baidu搜索一下嘛,蛮多的!
      

  7.   

    1、面向对象的特征有哪些方面   
    1.抽象:
    抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
    2.继承:
    继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
    3.封装:
    封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
    4. 多态性:
    多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
    2、String是最基本的数据类型吗?
    基本数据类型包括byte、int、char、long、float、double、boolean和short。
    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类
    3、int 和 Integer 有什么区别
    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
    引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
    4、String 和StringBuffer的区别
    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
    5、运行时异常与一般异常有何异同?
    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
    7、说出ArrayList,Vector, LinkedList的存储性能和特性
    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
    9、Collection 和 Collections的区别。 
      Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
    10、&和&&的区别。 
       &和&&都可作为逻辑运算符“与”使用,但是&&是“短路与”,运算时先判断符号前面的表达式的值,如果能够确定整个表达式的值,则不进行符号后面的表达式的运算。
    另外,&也可作为位运算符使用。
    11、HashMap和Hashtable的区别。 
        HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
    HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
    HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 
    Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
    最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 
    Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
    12、final, finally, finalize的区别。 
      final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
    finally是异常处理语句结构的一部分,表示总是执行。
    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
    14、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。