文章收藏-FAQ 位置:电脑学习网

Java 面试笔试题大汇总(4)

    146、EJB的基本架构

    答:一个EJB包括三个部分:

    Remote Interface 接口的代码:

      package Beans;
      import javax.ejb.EJBObject;
      import java.rmi.RemoteException;
      public interface Add extends EJBObject {
        //some method declare
      }

    Home Interface 接口的代码:

      package Beans;
      import java.rmi.RemoteException;
      import jaax.ejb.CreateException;
      import javax.ejb.EJBHome;
      public interface AddHome extends EJBHome {
        //some method declare
      }
    EJB类的代码:

      package Beans;
      import java.rmi.RemoteException;
      import javax.ejb.SessionBean;
      import javx.ejb.SessionContext;
      public class AddBean Implements SessionBean
      {
        //some method declare
      }

    147、如何校验数字型?

    var re=/^\d{1,8}$|\.\d{1,2}$/;
    var str=document.form1.all(i).value;
    var r=str.match(re);
    if (r==null) {
      sign=-4;
      break;
    }else{
      document.form1.all(i).value=parseFloat(str);
    }

    148、将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七),请用java语言编一段程序实现!

    public class Reader {
      private String strNum;
      private String strNumChFormat;
      private String strNumTemp;
      private int intNumLen;
      private String strBegin;
      public Reader(String strNum) {
        this.strNum = strNum;
      }

      public boolean check(String strNum) {
       boolean valid = false;

        if (strNum.substring(0,1).equals(“0“)){
         this.strNum = strNum.substring(1);
        }
        try {
          new Double(strNum);
          valid = true;
        } catch (NumberFormatException ex) {
          System.out.println(“Bad number format!“);
        }
        return valid;
      }

      public void init() {
        strNumChFormat = ““;
        intNumLen = strNum.length();
        strNumTemp = strNum;
        strNumTemp = strNumTemp.replace(’1’, ’一’);
        strNumTemp = strNumTemp.replace(’2’, ’二’);
        strNumTemp = strNumTemp.replace(’3’, ’三’);
        strNumTemp = strNumTemp.replace(’4’, ’四’);
        strNumTemp = strNumTemp.replace(’5’, ’五’);
        strNumTemp = strNumTemp.replace(’6’, ’六’);
        strNumTemp = strNumTemp.replace(’7’, ’七’);
        strNumTemp = strNumTemp.replace(’8’, ’八’);
        strNumTemp = strNumTemp.replace(’9’, ’九’);
        strNumTemp = strNumTemp.replace(’0’, ’零’);
        strNumTemp = strNumTemp.replace(’.’, ’点’);
        strBegin = strNumTemp.substring(0, 1);
      }

      public String readNum() {
        if (check(strNum)) {
          init();
          try {
            for (int i = 1, j = 1, k = 1; i 〈 intNumLen; i++) {
              if (strNumTemp.charAt(intNumLen - 1) == ’零’ && i == 1) {
                strNumChFormat = “位“;
              }
              else if (strNumTemp.charAt(intNumLen - i) == ’零’ && j == 1) {
                strNumChFormat = “位“ + strNumChFormat;
              }
              else if (strNumTemp.charAt(intNumLen - i) == ’点’) {
                j = 1;
                k = 1;
                strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
                continue;
              }
              else {
                strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
              }
              if (strNumTemp.charAt(intNumLen - i - 1) != ’位’ &&
                  strNumTemp.charAt(intNumLen - i - 1) != ’零’) {
                if (j == 1 && i 〈 intNumLen) {
                  strNumChFormat = ’拾’ + strNumChFormat;
                }
                else if (j == 2 && i 〈 intNumLen) {
                  strNumChFormat = ’百’ + strNumChFormat;
                }
                else if (j == 3 && i 〈 intNumLen) {
                  strNumChFormat = ’千’ + strNumChFormat;
                }
              }
              if (j == 4 && i 〈 intNumLen) {
                j = 0;
              }
              if (k == 4 && i 〈 intNumLen) {
                strNumChFormat = ’万’ + strNumChFormat;
              }
              else if (k == 8 && i 〈 intNumLen) {
                k = 0;
                strNumChFormat = ’亿’ + strNumChFormat;
              }
              j++;
              k++;
            }
            while (strNumChFormat.indexOf(“位“) != -1) {
              strNumChFormat = strNumChFormat.replaceAll(“位“, “ “);
            }
            if (strNumChFormat.substring(0, 2) == “一拾“) {
              strNumChFormat = strNumChFormat.substring(1, strNumChFormat.length());
            }
            if (strNumChFormat.indexOf(“点“) 〉= 0) {
              String rebegin = strNumChFormat.substring(0,
                  strNumChFormat.indexOf(“点“));
              String relast = strNumChFormat.substring(strNumChFormat.indexOf(“点“),
                  strNumChFormat.length());
              for (int i = 1; i 〈= relast.length(); i++) {
                relast = relast.replaceAll(“拾“, ““);
                relast = relast.replaceAll(“百“, ““);
                relast = relast.replaceAll(“千“, ““);
                relast = relast.replaceAll(“万“, ““);
                relast = relast.replaceAll(“亿“, ““);
              }
              strNumChFormat = rebegin + relast;
            }
          }
          catch (ArrayIndexOutOfBoundsException ex) {
            ex.printStackTrace();
          }
          catch (Exception ex) {
            ex.printStackTrace();
          }
          int off = strNumChFormat.indexOf(“点“);
          strNumChFormat = strBegin + strNumChFormat.substring(0);
        }
        else {
          strNumChFormat = ““;
        }
        return strNumChFormat;
      }
      public static void main(String args[]) {
        try {
          String number = args[0].toString();
          System.out.println(“The number is: “ + number);
          Reader reader = new Reader(number);
          System.out.println(“Output String: “ + reader.readNum());
        }
        catch (Exception ex) {
          System.out.println(“Please input like that: javac Reader 〈number〉“);
        }
      }
    }

     149、JAVA代码查错

    (1) 下面这段代码有什么错误?

    abstract class Name {
       private String name;
       public abstract boolean isStupidName(String name) {}
    }
    答: abstract method必须以分号结尾,且不带花括号。

    (2) 下面这段代码有错吗?

    public class Something {
      void doSomething () {
        private String s = ““;
        int l = s.length();
      }
    }
    答: 有错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量
    (final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。

    (3) 下面这段代码有错吗?

    abstract class Something {
      private abstract String doSomething ();
    }
    答: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢? (同理,abstract method前不能加final)。

    (4)下面这段代码有什么错误?

    public class Something {
      public int addOne(final int x) {
        return ++x;
      }
    }
    答: 这个错误比较明显。int x被修饰成final,意味着x不能在addOne method中被修改。

    (5) 下面这段代码有错吗?

    public class Something {
      public static void main(String[] args) {
        Other o = new Other();
        new Something().addOne(o);
      }

      public void addOne(final Other o) {
        o.i++;
      }
    }

    class Other {
      public int i;
    }

    答案: 正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference
    (比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable
    (成员变量),而o的reference并没有改变。

    (6) 下面这段代码有错吗?

    class Something {
      int i;
      public void doSomething() {
        System.out.println(“i = “ + i);
      }
    }
     答案: 正确。输出的是“i = 0“。int i属於instant variable (实例变量,或叫成员变量)。instant variable有default value。int的default value是0。

    (7) 和上面一题只有一个地方不同,就是多了一个final。下面这段代码有错吗?

    class Something {
      final int i;

      public void doSomething() {
        System.out.println(“i = “ + i);
      }
    }

    答案: 错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为“final int i = 0;“。

    (8) 下面这段代码看上去很完美,错在哪里呢?

    public class Something {
      public static void main(String[] args) {
        Something s = new Something();
        System.out.println(“s.doSomething() returns “ + doSomething());
      }

      public String doSomething() {
        return “Do something ...“;
      }
    }

    答案: 错。看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。static method不能直接call non-static methods。可改成“System.out.println(“s.doSomething() returns “ + s.doSomething());“。同理,static method不能访问non-static instant variable。

    (9) 此处Something类的文件名叫OtherThing.java

    class Something {
      private static void main(String[] something_to_do) {
        System.out.println(“Do something ...“);
      }
    }
    答案: 从没有人说过Java的Class名字必须和其文件名相同。但public class的名字必须和文件名相同,错误,main一定是public的。

    (10) 下面这段代码有错吗?

    interface A {
      int x = 0;
    }

    class B {
      int x =1;
    }

    class C extends B implements A {
      public void pX(){
        System.out.println(x);
      }

      public static void main(String[] args) {
        new C().pX();
      }
    }

    答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。

    (11) 这个错误不容易发现

    interface Playable {
      void play();
    }

    interface Bounceable {
      void play();
    }

    interface Rollable extends Playable, Bounceable {
      Ball ball = new Ball(“PingPang“);
    }
    class Ball implements Rollable {
      private String name;

      public String getName() {
        return name;
      }

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

      public void play() {
        ball = new Ball(“Football“);
        System.out.println(ball.getName());
      }
    }

    答案: 错。“interface Rollable extends Playable, Bounceable“没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的“Ball ball = new Ball(“PingPang“);“。任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final。也就是说“Ball ball = new Ball(“PingPang“);“实际上是“public static final Ball ball = new Ball(“PingPang“);“。在Ball类的Play()方法中,“ball = new Ball(“Football“);“改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在“ball = new Ball(“Football“);“这里显示有错。

    150、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

    以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

    public class ThreadTest1{
      private int j;

      public static void main(String args[]){
      ThreadTest1 tt=new ThreadTest1();
      Inc inc=tt.new Inc();
      Dec dec=tt.new Dec();
      for(int i=0;i〈2;i++){
       Thread t=new Thread(inc);
       t.start();
       t=new Thread(dec);
       t.start();
      }
     }

     private synchronized void inc(){
      j++;
      System.out.println(Thread.currentThread().getName()+“-inc:“+j);
     }

     private synchronized void dec(){
      j--;
      System.out.println(Thread.currentThread().getName()+“-dec:“+j);
     }

     class Inc implements Runnable{
      public void run(){
       for(int i=0;i〈100;i++){
        inc();
       }
      }
      }

      class Dec implements Runnable{
      public void run(){
       for(int i=0;i〈100;i++){
        dec();
       }
       }
      }
    }

    6、 线程的基本概念、线程的本状态以及状态之间的关系
    ?新建 (Born) : 新建的线程处于新建状态?就绪 (Ready) : 在创建线程后,它将处于就绪状态,等待 start() 方法被调用?运行 (Running) : 线程在开始执行时进入运行状态?睡眠 (Sleeping) : 线程的执行可通过使用 sleep() 方法来暂时中止。在睡眠后,线程将进入就绪状态?等待 (Waiting) : 如果调用了 wait() 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。?挂起 (Suspended) : 在临时停止或中断线程的执行时,线程就处于挂起状态。?恢复 (Resume) : 在挂起的线程被恢复执行时,可以说它已被恢复。?阻塞 (Blocked) – 在线程等待一个事件时(例如输入/输出操作),就称其处于阻塞状态。?死亡 (Dead) – 在 run() 方法已完成执行或其 stop() 方法被调用之后,线程就处于死亡状态。 5、 串行化的注意事项以及如何实现串行化答:如果有循环引用是不可以串行化的。对象输出流的WriteObject方法和 对象输入流的ReadObect 方法
    7、 线程的同步、如何实现线程的同步答:当两个或多个线程同时访问同一个变量,并且以个线程需要修改这个变量。就要用到线程同步。在Java 中,同步是通过 synchronized 关键字来定义的。 诺是想同步化某程序段,可以使用 synchronized(object){}方法,其中{}内的程序语句被同步化。

    9、 socket通信(tcp/udp区别及JAVA的实现方式)TCP——传输控制协议,具有极高的可靠性,保证数据包按照顺序准确到达,但其也有着很高的额外负担。UDP——使用者数据元协议,并不能保证数据包会被成功的送达,也不保证数据包到达的顺序,但其传输速度很快。大多数我们会使用TCP,偶尔才会动用UDP,如声音讯号,即使少量遗失,也无        关紧要。

    10、 JAVA的事件委托机制和垃圾回收机制
    java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返回。垃圾回收机制 垃圾收集是将分配给对象但不在使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收

    11、 JDBC调用数据库的基本步骤导入必要的类,装入JDBC驱动程序,识别数据源,分配一个Connection对象,分配一个Statement对象,使用Statement执行一个查询,从返回的ResultSet对象中检索数据,关闭ResultSet,关闭Statement对象,关闭Connection对象

    12、 解析XML文件的几种方式和区别答:Dom解析 在内存中创建一个DOM树,能随机访问文件内容,也可以修改原文件内容SAX解析 线性解析,不能随机访问,也无法修改原文件Dom解析要先用SAX解析创建DOM树

    13、 JAVA的四种基本权限的定义public private protected 默认

    14、 JAVA的国际化  答:Java 中提供了诺干国际化明感类,来实现国际化的。例如:dateformat  timezone 等等。

    5、 servlet的配置
    〈web-app〉〈servlet〉〈servlet-name〉Admin〈/servlet-name〉〈servlet-class〉jb-aptech.adminservlet〈/servlet-class〉〈init-param〉〈param-name〉email〈/param-name〉〈param-value〉admin@jb-aptech.com.cn〈/param-value〉〈/init-param〉 〈/servlet〉〈/web-app〉

    16、 谈谈你对swing mvc模式的理解?
    答:Swing号称是完全按照MVC的思路来进行设计的。在设计开始前,Swing的希望能够达到的目标就包括:
    模型驱动(Model-Driven)的编程方式。 提供一套单一的API,但是能够支持多种视感(look-and-feel),为用户提供不同的界面。 严格的说,Swing中的MVC实际上是MVC的一个变体:M-VC。 Swing中只显示的定义了Model接口,而在一个UI对象中集成了视图和控制器的部分机制。View和Control比较松散的交叉组合在一起,而更多的控制逻辑是在事件监听者部分引入的。 但是,这并没有妨碍在Swing中体现MVC的精髓。事实上,在Swing的开发初期,Swing确实是按照标准的MVC模式来设计的,但是很快的问题就出现了:View和Controller实际上是紧密耦合的,很难作出一个能够适应不同View的一般化的Controller来,而且,一般也没有很大的必要。

    18、 Java程序怎么优化?答:提高JAVA的性能,一般考虑如下的四个主要方面:
    程序设计的方法和模式  (2) JAVA布署的环境。  (3) JAVA应用程序的实现 (4) 硬件和操作系统 为了提高JAVA程序的性能,需要遵循如下的六个步骤。 a) 明确对性能的具体要求 b) 了解当前程序的性能 c) 找到程序的性能瓶颈  d) 采取适当的措施来提高性能 e) 只进行某一方面的修改来提高性能 f) 返回到步骤c,继续作类似的工作,一直达到要求的性能为止。

    动态查询如何实现?表的结构变化后,如果不需要修改程序,如何设计和实现查询?答:讲查询封装进存储过程中,通过调用存储过程实现动态调用;表结构发生变化后修改相应的存储过程即可再不修改程序的情况下实现查询。

    2、 如何优化数据库,如何提高数据库的性能?答:优化数据库主要是优化查询语句,通过高性能的查询语句提高数据库的性能。

    3、 设计数据库应注意那些问题答:首先应尽量满足三范式的要求,在一定程度上打破3范式的要求以提高数据库的性能。

    4、 表与表之间的关联关系答:分为3种:一对一、一对多、多对多。

    5、 主键和外键的区别答:主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。

    3. 数据类型之间的转换  如何将数值型字符转换为数字(Integer,Double)  如何将数字转换为字符  如何去小数点前两位,并四舍五入。

    4. 日期和时间  如何取得年月日,小时分秒Date dat=new Date();dat.getYear();dat.getMonth();dat.getDay();dat.getHours();...
    如何取得从1970年到现在的毫秒数long now=dat.getTime();如何获取某个日期是当月的最后一天如何格式化日期
    DateFormate df=DateFormate.getInstance();df.Format(dat);

    6. 文件和目录(I/O)操作  如何列出某个目录下的所有文件  如何列出某个目录下的所有子目录  判断一个文件或目录是否存在  如何读写文件

    6. 文件和目录(I/O)操作  如何列出某个目录下的所有文件  如何列出某个目录下的所有子目录  判断一个文件或目录是否存在  如何读写文件

    4. 描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
    Cookie是在客户端开辟的一块可长期存储用户信息的地方;

    8. 描述一下你最常用的编程风格。

    (1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。

    (2) 为了常规用途而创建一个类时,请采劝经典形式”,并包含对下述元素的定义:equals()hashCode()toString()clone()(implement Cloneable)implement Serializable

    (3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。

    (4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。

    (5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。

    (6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:一个复杂的开关语句:考虑采用“多形”机制数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现许多成员变量在特征上有很大的差别:考虑使用几个类

    (7) 让一切东西都尽可能地“私有”——private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素——只有private字段才能在非同步使用的情况下受到保护。

    (8) 谨惕“巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。

    (9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。

    (10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的“用内部类改进代码”)。

    (11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。

    (12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大斜还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。

    (13) 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常——如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。

    (14) 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean(布尔)标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,并已丢弃了从RuntimeException继承的一个类(如果还没有的话),从而指出一个编程错误。在采取象这样的方案之前,请确定finalize()能够在自己的系统中工作(可能需要调用System.runFinalizersOnExit(true),从而确保这一行为)。

    (15) 在一个特定的作用域内,若一个对象必须清除(非由垃圾收集机制处理),请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。

    (16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。

    (17) 创建大小固定的对象集合时,请将它们传输至一个数组(若准备从一个方法里返回这个集合,更应如此操作)。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将对象“造型”到数组里。

    (18) 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。

    (19) 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果(参见第7章的详细说明)。

    (20) 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。

    (21) 在现成类的基础上创建新类时,请首先选择“新建”或“创作”。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许新建的场合使用了继承,则整个设计会变得没有必要地复杂。

    (22) 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色,这是绝对应该避免的:应直接使用一个“颜色”字段。

    (23) 为避免编程时遇到麻烦,请保证在自己类路径指到的任何地方,每个名字都仅对应一个类。否则,编译器可能先找到同名的另一个类,并报告出错消息。若怀疑自己碰到了类路径问题,请试试在类路径的每一个起点,搜索一下同名的.class文件。

    (24) 在Java 1.1 AWT中使用事件“适配器”时,特别容易碰到一个陷阱。若覆盖了某个适配器方法,同时拼写方法没有特别讲究,最后的结果就是新添加一个方法,而不是覆盖现成方法。然而,由于这样做是完全合法的,所以不会从编译器或运行期系统获得任何出错提示——只不过代码的工作就变得不正常了。

    (25) 用合理的设计方案消除“伪功能”。也就是说,假若只需要创建类的一个对象,就不要提前限制自己使用应用程序,并加上一条“只生成其中一个”注释。请考虑将其封装成一个“独生子”的形式。若在主程序里有大量散乱的代码,用于创建自己的对象,请考虑采纳一种创造性的方案,将些代码封装起来。

    (26) 警惕“分析瘫痪”。请记住,无论如何都要提前了解整个项目的状况,再去考察其中的细节。由于把握了全局,可快速认识自己未知的一些因素,防止在考察细节的时候陷入“死逻辑”中。

    (27) 警惕“过早优化”。首先让它运行起来,再考虑变得更快——但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候,才应进行优化。除非用专门的工具分析瓶颈,否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的代码变得难于理解,而且难于维护。

    (28) 请记住,阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己,还是对后来的人,它们都是相当重要的。如对此仍有怀疑,那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折,这样或许能将你说服。

    10. 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。

    public class BigInt() {

    public static final long maxlong = ^0;

    long[] ArrOne = new long[1000];

    String intString=““;



    public int[] Arr(String s){

    intString = s;

    for(int i=0;i〈ArrOne.leght;i++)

    ....................................

    49、列出某文件夹下的所有文件;
    50、调用系统命令实现删除文件的操作;
    51、实现从文件中一次读出一个字符的操作;
    52、列出一些控制流程的方法;
    54、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入“END“为止,让你写出客户端的程序;

    在Jdbc进行数据库调用时,你经常采用什么方式执行sql语句?为什么不用其他方式(比较一下即可)
    int类型在java中有多少位?(如果面试题目中有这样的问题,不是公司太牛就是公司太差)
    你用过线程吗?请启动4个线程对一个静态变量进行加1操作。
    线程是如何启动的?
    每个类实力化时都调用父类的构造函数吗?如果是,那么都调用object类的构造函数吗

    你懂得Ftp协议吗?如果不懂请问我告诉你Ftp协议命令格式及数据包的解析方法,你能用多长时间用java基本apI搞定一个ftp客户端程序(是这样的问题主要看你个人学习能力,一般也就是一人五天的工作量,不必要害怕,一般他不会给你五天做的,就是想看一下你的自信心及对工作的理解能力)
    你知道java与C的通信?吗你会用那些协议进行通信?(其实也就是问socret通信)
    请问java中的网络通信有那些方式,有什么区别?
    String a=“”For limit I=0;I〈100000;I++)A=a+“A”把字符串成“A”连接100000次,上面方法不够好,请优化上面代码?(采用stringBuffer进行优化)

    .写出从数据库表Custom中查询No、Name、Num1、Num2并将Name以姓名显示、计算出的和以总和显示的SQL。SELECT  No ,  Name  AS  ‘姓名’ ,Num1 ,Num2,(Num1+Num2) AS  ‘总和’
    FROM Custom

    何为“事务处理”,谈谈你对它的理解。事务处理是指一个单元的工作,这些工作要么全做,要么全部不做。作为一个逻辑单元,必须具备四个属性:自动性、一致性、独立性和持久性。自动性是指事务必须是一个自动的单元工作,要么执行全部数据的修改,要么全部数据的修改都不执行。一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。所有的内部数据结构,在事务结束之后,必须保证正确。独立性是指并行事务的修改必须与其他并行事务的修改相互独立。一个事务看到的数据要么是另外一个事务修改这些事务之前的状态,要么是第二个事务已经修改完成的数据,但是这个事务不能看到正在修改的数据。

    3. 常用的数据结构有哪些?请枚举一些。(不少于5个)链表、堆栈、二叉树、队列、图、堆,集合。

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822