求JAVA经典试题因为下周五考试 时间不多了 所以求最最经典的,难度中等以上的试题 (附详细答案的更好)谢谢高手们鼎力相助.

解决方案 »

  1.   

    给你一些链接,相当丰富啦:http://www.qqread.com/java/2007/07/x319589.htmlhttp://dev.csdn.net/develop/article/49/49017.shtm
    http://liubin.itpub.net/post/325/17421
    http://www.blogjava.net/happyfish/archive/2005/07/29/8761.aspx
    http://www.teecool.com/catalog.asp?tags=JAVA%E9%9D%A2%E8%AF%95%E9%A2%98还是觉得少了,去http://www.google.cn/,一搜。。
      

  2.   

    baidu一堆.
    http://www.ad0.cn/netfetch/read.php/379.htm
      

  3.   

     第一,谈谈final,   finally,   finalize的区别。     
        
      final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为   abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载     
        
      finally?再异常处理时提供   finally   块来执行任何清除操作。如果抛出一个异常,那么相匹配的   catch   子句就会执行,然后控制就会进入   finally   块(如果有的话)。     
      finalize?方法名。Java   技术允许使用   finalize()   方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在   Object   类中定义的,因此所有的类都继承了它。子类覆盖   finalize()   方法以整理系统资源或者执行其他清理工作。finalize()   方法是在垃圾收集器删除对象之前对这个对象调用的。     
        
      第二,Anonymous   Inner   Class   (匿名内部类)   是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?     
        
      匿名的内部类是没有名字的内部类。不能extends(继承)   其它类,但一个内部类可以作为一个接口,由另一个内部类实现。     
        
      第三,Static   Nested   Class   和   Inner   Class的不同,说得越多越好(面试题有的很笼统)。     
      Nested   Class   (一般是C++的说法),Inner   Class   (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http:   //www.frontfree.net/articles/services/view.asp?id=704&page=1     
      注:   静态内部类(Inner   Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象     
        
      第四,&和&&的区别。     
      &是位运算符。&&是布尔逻辑运算符。     
        
      第五,HashMap和Hashtable的区别。     
      都属于Map接口的类,实现了将惟一键映射到特定的值上。     
      HashMap   类没有分类或者排序。它允许一个   null   键和多个   null   值。     
      Hashtable   类似于   HashMap,但是不允许   null   键和   null   值。它也比   HashMap   慢,因为它是同步的。     
        
      第六,Collection   和   Collections的区别。     
      Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。     
      Collection是个java.util下的接口,它是各种集合结构的父接口。     
        
        
      第七,什么时候用assert。     
      断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为   true。如果表达式计算为   false,那么系统会报告一个   Assertionerror。它用于调试目的:     
      assert(a   >   0);   //   throws   an   Assertionerror   if   a   <=   0     
      断言可以有两种形式:     
      assert   Expression1   ;     
      assert   Expression1   :   Expression2   ;     
      Expression1   应该总是产生一个布尔值。     
      Expression2   可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的   String   消息。     
      断言在默认情况下是禁用的。要在编译时启用断言,需要使用   source   1.4   标记:     
      javac   -source   1.4   Test.java     
      要在运行时启用断言,可使用   -enableassertions   或者   -ea   标记。     
      要在运行时选择禁用断言,可使用   -da   或者   -disableassertions   标记。     
      要系统类中启用断言,可使用   -esa   或者   -dsa   标记。还可以在包的基础上启用或者禁用断言。     
      可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。     
        
        
      第八,GC是什么?   为什么要有GC?   (基础)。     
      GC是垃圾收集器。Java   程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:     
      System.gc()     
      Runtime.getRuntime().gc()     
        
      第九,String   s   =   new   String("xyz");创建了几个String   Object?     
      两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。     
        
      第十,Math.round(11.5)等於多少?   Math.round(-11.5)等於多少?     
      Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;    
    第十一,short   s1   =   1;   s1   =   s1   +   1;有什么错?   short   s1   =   1;   s1   +=   1;有什么错?     
      short   s1   =   1;   s1   =   s1   +   1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1   =(short)(s1   +   1)   。short   s1   =   1;   s1   +=   1正确。     
        
      第十二,sleep()   和   wait()   有什么区别?   搞线程的最爱     
      sleep()方法是使线程停止一段时间的方法。在sleep   时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级     
      (b)正在运行的线程因为其它原因而阻塞。     
      wait()是线程交互时,如果线程对一个同步对象x   发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。     
        
        
        
      第十三,Java有没有goto?     
      Goto?java中的保留字,现在没有在java中使用。     
        
      第十四,数组有没有length()这个方法?   String有没有length()这个方法?     
      数组没有length()这个方法,有length的属性。     
      String有有length()这个方法。     
        
      第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?     
      方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写   (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。     
        
      第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?   是用==还是equals()?   它们有何区别?     
      Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。     
      equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。     
        
      第十七,给我一个你最常见到的runtime   exception。     
      ArithmeticException,   ArrayStoreException,   BufferOverflowException,   BufferUnderflowException,   CannotRedoException,   CannotUndoException,   ClassCastException,   CMMException,   ConcurrentModificationException,   DOMException,   EmptyStackException,   IllegalArgumentException,   IllegalMonitorStateException,   IllegalPathStateException,   IllegalStateException,     
      ImagingOpException,   IndexOutOfBoundsException,   MissingResourceException,   NegativeArraySizeException,   NoSuchElementException,   NullPointerException,   ProfileDataException,   ProviderException,   RasterFORMatException,   SecurityException,   SystemException,   UndeclaredThrowableException,   UnmodifiableSetException,   UnsupportedOperationException     
        
      第十八,error和exception有什么区别?     
      error   表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。     
      exception   表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。     
        
        
      第十九,List,   Set,   Map是否继承自Collection接口?     
      List,Set是     
        
      Map不是     
        
      第二十,abstract   class和interface有什么区别?     
      声明方法的存在而不去实现它的类被叫做抽象类(abstract   class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract   类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract   类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。     
      接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static   final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof   运算符可以用来决定某对象的类是否实现了接口。
      

  4.   

    集合操作方面,一般公司现在很少有用vector的了,除了银行之类的接口程序,取而代之的是arrylist;collection用也比较少了,hashtable被hashmap取代了,希望楼主多关注之。最后祝你好远……
      

  5.   

    l    JBS 
    1.列举出 10个JAVA语言的优势 
    a:免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台, 无线应用 
    2.列举出JAVA中10个面向对象编程的术语 
    a:包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型 
    3.列举出JAVA中6个比较常用的包 
    Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing 
    4.JAVA中的标识符有什么作用和特点 
    作用:标识符用作给变量、类和方法命名 
    特点:可以以字母、下划线“_”和”$”符开头 
    首字符外,可以跟上字母、下划线“_”和”$”符或数字 
    Java是大小写敏感的,标识符也不例外 
    5.JAVA中的关键字有什么特点,列举出至少20个关键字 
    Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword) 
    所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字 ; 
    goto和const 虽然从未被使用,但也作为Java关键字保留; 
    •          中一共有51个关键字Java 
    abstract assert boolean break byte continue 
    case catch char class const double 
    default do extends else final float 
    for goto long if implements import 
    native new null instanceof int interface 
    package private protected public return short 
    static strictfp super switch synchronized this 
    while void throw throws transient try 
    volatile                  6.JAVA中数据类型如何分类? 可分为简单数据类型和引用数据类型: 
    简单数据类型:数值型(byte,short,int,long,float double),字符型(char),布尔型(boolean); 
    引用数据类型:类,接口,数组. 
    7.JAVA中运算符的分类及举例 
    •          分割符:,,;,[],() 
    •          算术运算符: +,―,*,/,%,++,―― 
    •          关系运算符: >, <,>=, <=,==,!= 
    •          布尔逻辑运算符: !,& , | , ^ , &&,|| 
    •          位运算符: &,|,^,~ , >>, < <,>>> 
    •          赋值运算符: = 扩展赋值运算符:+=,―=,*=,/= 
    •          字符串连接运算符: + 
    •          造型操作符:() 8.super,this关键字的作用及用法 
    •          在Java类中使用super来引用父类的成分 
    –        可用于访问父类中定义的属性super 
    –        可用于调用父类中定义的成员方法super 
    –        可用于在子类构造器中调用父类的构造器super 
    –        的追溯不仅于直接父类super 
    •          中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。Java 
    –        构造器中指该构造器所创建的新对象 
    –        方法中指调用该方法的对象 
    •          关键字的用法this 
    –        在类本身的方法或构造器中引用该类的实例变量和方法 
    –        将当前对象作为参数传递给其它方法或构造器 
    –        用来调用其他的重载的构造器 9.什么是JAVA中的表达式?有什么作用? 
    •          表达式是运算符和操作数的结合,它是任何一门编程语言的关键组成部分 
    •          表达式允许程序员进行数学计算、值的比较、逻辑操作以及在Java中进行对象的操作。 
    •          一些表达式的例子: 
    –        X 
    –        X+10 
    –        Y=x+10 
    –        Arr[10] 
    –        student.geName() 10.做表列出JAVA中所有修饰符和他们的适用范围(能不能修饰构造器,属性,自由块等) 
      class 属性 方法 构建器 自由块 内部类 
    public Y Y Y Y  Y 
    protected    Y Y Y  Y 
    (Default) Y Y Y Y Y Y 
    private  Y Y Y  Y 
    final Y Y Y    Y 
    abstract Y  Y    Y 
    static    Y  Y Y 
    11.写一个方法,用一个for循环打印九九乘法表 
        /** 
        *一个for循环打印九九乘法表 
        */ 
        publicvoid nineNineMultiTable() 
        { 
          for (int i = 1,j = 1; j <= 9; i++) { 
              System.out.print(i+"*"+j+"="+i*j+" "); 
              if(i==j) 
              { 
                  i=0; 
                  j++; 
                  System.out.println(); 
              } 
          } 
        } 
    12.给定一个java.util.Date对象,如何转化为”2007-3-22 20:23:22”格式的字符串 
    /** 
        *将某个日期以固定格式转化成字符串 
        *@paramdate 
        *@returnstr 
        */ 
        public String dateToStr(java.util.Date date) 
        { 
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
          String str = sdf.format(date); 
          return str; 
        } 
    13.写一个方法,能够判断任意一个整数是否素数 
    /** 
        *判断任意一个整数是否素数 
        *@paramn 
        *@returnboolean 
        */ 
        publicboolean isPrimes(int n) 
        { 
          for (int i = 2; i <= Math.sqrt(n); i++) { 
              if(n%i==0) 
              { 
                  returnfalse; 
              } 
          } 
          returntrue; 
        } 
    14.写一个方法,输入任意一个整数,返回它的阶乘 
    /** 
        *获得任意一个整数的阶乘 
        *@paramn 
        *@returnn! 
        */ 
        publicint factorial(int n) 
        { 
          //递归 
          if(n==1) 
          { 
              return 1; 
          } 
          return n*factorial(n-1); 
          //非递归 
    //    int multi = 1; 
    //    for (int i = 2; i <= n; i++) { 
    //        multi*=i; 
    //    } 
    //    return multi; 
        } 
    15.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1 
    /** 
        *二分查找特定整数在整型数组中的位置(递归) 
        *@paramdataset 
        *@paramdata 
        *@parambeginIndex 
        *@paramendIndex 
        *@returnindex 
        */ 
        publicint binarySearch(int[] dataset,int data,int beginIndex,int endIndex) 
        { 
          int midIndex = (beginIndex+endIndex)/2; 
          if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1; 
          if(data <dataset[midIndex]) 
          { 
              return binarySearch(dataset,data,beginIndex,midIndex-1); 
          }elseif(data>dataset[midIndex]) 
          { 
              return binarySearch(dataset,data,midIndex+1,endIndex); 
          }else 
          { 
              return midIndex; 
          } 
        } 
        
        /** 
        *二分查找特定整数在整型数组中的位置(非递归) 
        *@paramdataset 
        *@paramdata 
        *@returnindex 
        */ 
        publicint binarySearch(int[] dataset ,int data) 
        { 
          int beginIndex = 0;  
          int endIndex = dataset.length - 1;  
          int midIndex = -1; 
          if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1; 
          while(beginIndex <= endIndex) { 
              midIndex = (beginIndex+endIndex)/2; 
              if(data <dataset[midIndex]) {  
              endIndex = midIndex-1;  
              } elseif(data>dataset[midIndex]) {  
              beginIndex = midIndex+1;  
              }else 
              { 
              return midIndex; 
              } 
          } 
          return -1; 
        } 
    16.做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 
    package com.softeem.demo; /** 
    *@authorleno 
    *动物的接口 
    */ 
    interface Animal 

        publicvoid eat(Food food); 

    /** 
    *@authorleno 
    *一种动物类:猫 
    */ 
    class Cat implements Animal 

        publicvoid eat(Food food) 
        { 
          System.out.println("小猫吃"+food.getName()); 
        } 

    /** 
    *@authorleno 
    *一种动物类:狗 
    */ 
    class Dog implements Animal 

        publicvoid eat(Food food) 
        { 
          System.out.println("小狗啃"+food.getName()); 
        } 
    } /** 
    *@authorleno 
    *食物抽象类 
    */ 
    abstractclass Food 

        protected String name; 
        public String getName() { 
          returnname; 
        }     publicvoid setName(String name) { 
          this.name = name; 
        } 
    } /** 
    *@authorleno 
    *一种食物类:鱼 
    */ 
    class Fish extends Food 

        public Fish(String name) { 
          this.name = name; 
        } 

    /** 
    *@authorleno 
    *一种食物类:骨头 
    */ 
    class Bone extends Food 
    {  
        public Bone(String name) { 
          this.name = name; 
        } 
    } /** 
    *@authorleno 
    *饲养员类 

    */ 
    class Feeder 

        /** 
        *饲养员给某种动物喂某种食物 
        *@paramanimal 
        *@paramfood 
        */ 
        publicvoid feed(Animal animal,Food food) 
        { 
          animal.eat(food); 
        } 
    } /** 
    *@authorleno 
    *测试饲养员给动物喂食物 
    */ 
    publicclass TestFeeder {     publicstaticvoid main(String[] args) { 
          Feeder feeder=new Feeder(); 
          Animal animal=new Dog(); 
          Food food=new Bone("肉骨头"); 
          feeder.feed(animal,food); //给狗喂肉骨头 
          animal=new Cat(); 
          food=new Fish("鱼"); 
          feeder.feed(animal,food); //给猫喂鱼 
        } 

    17.描述JAVA中异常处理的机制 
    •          程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。Java 
    •          当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 
    •          如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。 
    •          程序员通常只能处理违例(Exception),而对错误(Error)无能为力。
      

  6.   

    具体路径 :
    http://topic.csdn.net/u/20080617/15/706679c5-e108-4ec0-801b-75728ad19fe6.html
      

  7.   

    37,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。 38,编程题: 用最有效率的方法算出2乘以8等於几? 有C背景的程序员特别喜欢问这种问题。 2 << 3 39,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 
    不对,有相同的hash code。 40,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
     
    41,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 4、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 答:一种分页方法 <% 
    int i=1; int numPages=14; String pages = request.getParameter("page") ; int currentPage = 1; currentPage=(pages==null)?(1):{Integer.parseInt(pages)} sql = "select count(*) from tables"; ResultSet rs = DBLink.executeQuery(sql) ; while(rs.next()) i = rs.getInt(1) ; int intPageCount=1; intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1); int nextPage ; int upPage; nextPage = currentPage+1; if (nextPage>=intPageCount) nextPage=intPageCount; upPage = currentPage-1; if (upPage<=1) upPage=1; rs.close(); sql="select * from tables"; rs=DBLink.executeQuery(sql); i=0; while((i<numPages*(currentPage-1))&&rs.next()){i++;} %> //输出内容 //输出翻页连接 合计:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">第一页</a><a href="List.jsp?page=<%=upPage%>">上一页</a> <% for(int j=1;j<=intPageCount;j++){ if(currentPage!=j){ 
    %> <a href="list.jsp?page=<%=j%>">[<%=j%>]</a> <% }else{ out.println(j); } } %> 
    <a href="List.jsp?page=<%=nextPage%>">下一页</a><a href="List.jsp?page=<%=intPageCount%>">最后页 </a> 49、列出某文件夹下的所有文件;
    50、调用系统命令实现删除文件的操作;
    51、实现从文件中一次读出一个字符的操作;
    52、列出一些控制流程的方法;
    54、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入"END"为止,让你写出客户端的程序;
    55、作用域public,private,protected,以及不写时的区别 答:区别如下: 
    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √  friendly √ √   
    private √    不写时默认为friendly 56、ArrayList和Vector的区别,HashMap和Hashtable的区别 
    答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 
    就HashMap与HashTable主要从三方面来说。 一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 57、char型变量中能不能存贮一个中文汉字?为什么? 
    答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 58、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 60、float型float f=3.4是否正确? 答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 61、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 
    答:Collection FrameWork如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack 
    └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) Map提供key到value的映射 6、用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 接口 7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我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(); } } 3、JAVA SERVLET API中forward() 与redirect()的区别? 
    答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。 4、Servlet的基本架构 public class ServletName extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } 1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询. 
    答:程序如下: package hello.ant; import java.sql.*; public class jdbc { String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String theUser="admin"; String thePw="manager"; Connection c=null; Statement conn; ResultSet rs=null; public jdbc() { try{ Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); c = DriverManager.getConnection(dbUrl,theUser,thePw); conn=c.createStatement(); }catch(Exception e){ e.printStackTrace(); } } public boolean executeUpdate(String sql) { try { conn.executeUpdate(sql); return true; } catch (SQLException e) { e.printStackTrace(); return false; } } public ResultSet executeQuery(String sql) { rs=null; try { rs=conn.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } 
    public void close() { try { conn.close(); c.close(); } catch (Exception e) { e.printStackTrace(); } } 
    public static void main(String[] args) { ResultSet rs; jdbc conn = new jdbc(); rs=conn.executeQuery("select * from test"); try{ while (rs.next()) { System.out.println(rs.getString("id")); System.out.println(rs.getString("name")); } }catch(Exception e) { e.printStackTrace(); } } } 2、Class.forName的作用?为什么要用? 答:调用该访问返回一个以字符串指定类名的类的对象。 
      

  8.   

    、Java基础知识
    1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。
    2.字符串的操作:
      写一个方法,实现字符串的反转,如:输入abc,输出cba
      写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。
    3.数据类型之间的转换
      如何将数值型字符转换为数字(Integer,Double)
      如何将数字转换为字符
      如何取小数点前两位,并四舍五入。
    4.日期和时间
      如何取得年月日,小时分秒
      如何取得从1970年到现在的毫秒数
      如何获取某个日期是当月的最后一天
      如何格式化日期
    5.数组和集合
    6.文件和目录(I/O)操作
      如何列出某个目录下的所有文件
      如何列出某个目录下的所有子目录
      判断一个文件或目录是否存在
      如何读写文件
    7.Java多态的实现(继承、重载、覆盖)
    8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
    9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。
    10.找出下列代码可能存在的错误,并说明原因:
    二、JSP&Servlet技术
    1.描述JSP和Servlet的区别、共同点、各自应用的范围
    2.在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(< > & “”)
    3.在JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。
    4.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
    5.列出Jsp中包含外部文件的方式,两者有何区别。
    6.说明Jsp中errorPage的作用,应用范围。
    7.介绍在Jsp中如何使用JavaBeans。
    8.简单介绍JSP的标记库
    9.Jsp和Servlet中的请求转发分别如何实现。
    三、J2EE相关知识
    1.介绍J2EE、J2SE、J2SE的区别。
    2.J2EE是一种技术还是一种平台,他提供了那些技术。
    3.什么是Application Server,它有什么功能和优点。
    4.简单介绍连接池的优点和原理。
    5.Web.xml的作用
    四、其他
    1.Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑)
    2.简单介绍您所了解的MVC。
    3.简单介绍所了解的XML。
    4.文档和编码规范
    5.Java中的分页、效率考虑。
    6.简单介绍您所了解的structs。
    ________________________________________
    1.xml在项目中的作用
    2.s-EJB 与 e-EJB的区别
    3.会话面的作用
    4.cmp与bmp的优缺点
    5.j2me程序的必需的几个部分
    6.c/s与b/s的区别
    7.构建一个connect pool,然后再调用它,
    8.j2ee平台与dotnet平台的区别
    9.ejb的life cycle
    10.session bean 和 entity bean的区别
    11.ejb中的transaction机制
    12.synchronized (生产者和消费)
    13.String 和 StringBuffer
    14.Serializable
    15.MVC (Struts的工作流程)
    16.什么是MDA
    17.tcp与udp的区别
    18.链表与散列表和数组的区别
    19.堆和栈的区别
    20.ejb的分类及区别
    21.你对现在软件业以及国内软件业的看法
    22.谈谈java多线程
    23.谈谈文件加密技术
    24.软件开发生命周期
    25.路由协议种类及特点
    26.java的awt和swing组件的GUI设计的关键
    27.对于java流的认识
    28.简单描述一下awt与swing区别。
    29.简述java编程中事件处理模式。
    30.你编写过applet吗?applet的安全权限如何?试列举java application或者applet中与servlet/jsp通信可以采用的方式。
    31.简述逻辑操作(如&,|)与条件操作(如&&,||)的区别。
    32.简述 Java Server Page 和 Servlet 的联系和区别。
    33.简述synchronized和java.util.concurrent.locks.Lock的异同 ?
    34.EJB规范规定EJB中禁止的操作有哪些?
    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用?
    36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式?
    37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有什么区别?
    38.列举三种以上垃圾回收算法,并比较其优缺点?
    39.编写代码实现一个线程池
    40.描述一下JVM加载class文件的原理机制?
    41.试举例说明一个典型的垃圾回收算法? 
    42.请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来. 
    43.请写一个java程序实现线程连接池功能? 
    44.给定一个C语言函数,要求实现在java类中进行调用。
    45.如何获得数组的长度?
    46.访问修饰符“public/private/protected/缺省的修饰符”的使用
    47.用关键字final修饰一个类或者方法时,有何意义?
    48.掌握类和对象的概念,掌握面向对象编程的本质
    49.静态变量和静态方法的意义,如何引用一个类的静态变量或者静态方法?
    50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally
    51.Object类(或者其子类)的finalize()方法在什么情况下被调用?
    52.一个“.java”原文件中是否可以包括多个类(不是内部类)?
    53.掌握内部类和接口的概念
    54.StringTokenizer类的使用
    55.数据结构,如何遍历List中的元素?
       如果要按照键值保存或者访问数据,使用什么数据结构?
       要掌握Collection相关的接口和类的使用
    56.使用StringBuffer类与String类进行字符串连接时有何区别?
    57.调用Thread类的destroy()方法有什么后果?
    58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
    59.使用socket建立客户端与服务器的通信的过程
    60.JAVA语言国际化应用,Locale类,Unicode
    61.描述反射机制的作用
    62.如何读写一个文件?
    63.在图形界面中,一个按钮如何处理鼠标点击事件?
    64.在图形界面中,一个表格,如何实现编辑单元格时弹出下拉框?
    65.如何加载图片?
    66.什么是模态对话框?
    67.阐述MVC的概念
    68.GUI布局管理器的使用,FlowLayout,BorderLayout,GridBagLayout
    69.如何构造一棵树?选择树的一个节点时,如何得到这个节点?
    70.向编辑框中输入字符时,如何控制只输入整数?
    71.描述使用JDBC连接数据库的过程
    72.EJB分为几类?什么是BMP,CMP?
    73.什么是JNDI?
    74.ADO是什么?ActiveX数据对象,是一个应用级程序接口.
    75.四种JDBC方式?目前的版本?
    76.EJB有哪几种?区别是什么?
    77.JavaBean与EJB有什么区别?
    78.软件开发生命周期有哪几个阶段?
    79.软件开发有哪些因素?
    80.软件开发中如何进行版本控制?
    81.UML中,类视图如何表示类中的继承与聚合?
    82.客户端游标与服务器端游标的区别?
    83.动态游标与静态游标的区别?
    84.dotnet由哪几个基本框架组成?
    85.Oracle中SGA是什么?
    86.web servers是什么?
    87.UNIX中QT是什么意思?
    88.在软件开发生命周期中的哪个阶段开始测试?
    89.dotnet与J2EE的比较?
    90.什么是ActiveX?
    91.Java中IDL是什么?
      

  9.   

                                                           
    Java Web 开发考题
    1. Which method in the HttpServlet class services the HTTP POST request?(select one)
    A do Post (ServletRequest, ServletResponse)
    B do POST (ServletRequest, ServletResponse)
    C service Post (HttpServletRequest, HttpServletResponse)
    D do Post (HttpServletRequest,HttpServletResponse)
    2. Consider the follow code and select the correct statement about it from the options below (Select one)
    <html><body>
    <%! Int aNum=5 %>
    The value of aNum is <%=aNum%>
    </body></html>
    a it will print “The value of aNum is 5”to the output 
    b it will flag a compile-time error because of an incorrect declaration
    c it will throw a runtime exception while executing the expression
    d it will not flag any compile time or runtime errors and will not print anything to the output 
    3. Select the correct statement about the following code. (Select one)
    %@page language=j”ava”%
    <html><body>
    out.print(“Hello”);
    out.print(“World”);
    </body></html>
    a it will pint Hello World in the output
    b it will generate compile-time errors
    c it will throw runtime exceptions
    d it will only print Hello
    e None of above
    4. Which of the following interfaces or classes is used to retrieve the session associated with a user?(Select one)
    a GenericServlet
    b ServletConfig
    c ServletContext
    d HttpServlet
    e HttpServletRequest 
    f HttpServletResponse
    5. Which method is required for using the URL rewriting mechanism of implementing session support?(Select one)
    a HttpServletRequest.encodeURL()
    b HttpServletRequest.rewriteURL()
    c HttpServletResponse.encodeURL()
    d HttpServletResponse.rewriteURL()
    6.请说出java的基本数据类型有哪些?
    7.使用StingBuffer类与String类进行字符串连接时有和区别?
    8.阐述MVC的概念
    9.说一说Servlet的生命周期
    10.描述JSP和Servlet的区别、共同点、各自应用的范围
    1. 给定3*3方格图I和II,并在每一方格内填写“+”,“-”(如图),现对方格图中的任何一行或一列进行全部变号的变换,请问经过若干次上述的操作能否从图I变换成图II。为什么?
    + + -
    + + -
    - - +
    - - +
    + - -
    - - +2. 有三个人,甲从不说谎,是君子;乙从不说真话,是小人;丙有时说真话有时说谎话,是滑头。一天,这三个人坐在了一起。有一个人问他们:“坐在中间的人是什么身份?”
    坐在左边的人说:“他是君子”,做在中间的人说:“我是滑头。”坐在右边的人说:“塌实小人。”根据这三个人的回答,您能判断出他们的身份吗?(请写出推理过程)。
    3. 有兄弟三人住在一个院子里,素来和睦,有三个门可以出入,日子过得去很好。后来有一天,互相闹了矛盾,就再也不想往来,于是决定三家总共建造两堵不相交的围墙,只准各出个家自己的门,不得在院子里相碰面。这两堵围墙如何建?(墙可为曲线)(直接画在图上)
    4. 有三顶红帽子和两顶白帽子。将其中的三顶帽子分别戴在A、B、C三人头上。这三人每人都只能看见其他两人头上的帽子,但看不见自己头上戴的帽子,并且也不知道剩余的两顶帽子的颜色。问A:“你戴的是什么颜色的帽子?”A回答:“不知道。”接着,有以同样的问题问B。B想了想之后,也回答说:“不知道。”最后问C。C回答:“我知道我戴的帽子是什么颜色的了”。当然,C是在听了A、B的回但之后而作出回答的。试问:C戴的是什么颜色的帽子?为什么? 
    1、如何让服务器在启动时就自动加载SERVLET?
    答:<init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>2、分割字符窜str的代码?
    答:方法①String s[]=str.split(“,”);
    Int a=s.length;
    For(int b=0;b<a;b++)
    Out.print(s[b] + “&nbsp”);
    方法②StringTokenizer s=new StringTokenizer(str,“,”);
    Out.print(“共”+s.countTokens()+“个元素”);
    While(s.hasMoreElements())
    {
    Out.print(s.nextToken());
    }3、如何验证IP是否是正确?
    答:String IP=request.getRemoteAddr();
    String IP1=request.getHeader(“x-forward-for”);
    If(IP1==null||IP1.length()==0)
    Out.print(IP);
    Else
    Out.print(IP1);4、Get和Post方法的区别?
    答:区别a、Post是通过Http中的Post机制将表单中的数据提交道Action所制定的程序Get方法是通过Url请求来提交表单数据的。
    b、Get适用于传输数据量小于1K数据,执行效率高。
    Post传输数据量较大,但也有限量。5、如何设置/取得Bean 中的属性值?
    答:设置属性值<jsp:setPropertyname=”haha”,property=”haha的属性” value=”变量值”/>
    < jsp:setProperty name=”haha”,property=”*” />获取从上一个表单中提交过来的,与Bean中变量名字相同的所有属性.
    取得属性值:<jsp:getProperty name=”haha” property=”bean的属性”/>
    相当于:<%=getA()%>6、Servlet和Jsp的区别?
    答:Servlet是直接执行的文件
    Jsp是要被通过编译形成Servlet后才执行。7、如何防止列出站点中的文件?
    答:<init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
    </init-param>8、加密的方法举例?
    答:Md5算法。9、编写一个Servlet?
    答:Servlet的编写看实例。10、汉字的Unicode编码范围:4E00-9FA5。11、处理表单中的特殊字符:在特殊字符的前面加’\’符号。12、JavaBean的使用:<jsp:useBean id=”name” class=”sist.md5” scope=”page”/>或者<jsp:useBean id=”name” class=”sist.md5” scope=”page”></jsp:useBean>13、实现页面跳转的两种方法:
    答:a、<jsp:forward page=”for2.jsp”/>
    b、<%response.sendRedirect(“for2.jsp”);%>14、include指令标签:
    <%@include file=”inc1.jsp”%> 简单的代码复制。
    include动作标签:<jsp:include page =”inc2.jsp”>获取inc2.jsp的执行结果。 15、页面之间的值传递:
    答:a、设置Session 变量:session.setAttribute(“name”,”sist”);
    获取Session 变量:session.getAttribute(“name”);
    b、地址方式传递:show.jsp?id=变量值16、内置对象的作用域分为4种:
    答:a、page 当前页面。
    b、session 同一个网站内。
    c、request 从上一页到下一个页面。
    d、application 同一个网站内。
    17、获取session ID:  <%=session.getId()%>;判断session是否有效:session.isNew(); 18、使用Cookie对象
    答:Cookie ck=new Cookie(“name”,”sist”);
    写入:response.addCookie(ck);
    读取:Cookie[] ck=request.getCookies();
          If(ck==null) 
    for(int a=0;a<ck.length;a++)
    {
    If(“name”.equals(ck[a].getName()))
       Out.print(ck[a].getValue());
    }19、Cookie 与session 的区别是:session为短对话,Cookie可以设置任意时间的有效期。
    1、什么是servlet:在web容器中运行的服务器端JAVA程序,主要用于响应HTTP请求。Servlet一般用于MVC中的控制器部分。2、什么是servlet容器:用来管理servlet生命周期的应用程序如(tomcat)。
      

  10.   

    最基础的java面试一百题,很多公司都考这里面的。