文章 - 353,收藏 - , 评论 - 570, trackbacks - 3

导航

公告


我们热爱沉浸在计算机中的感觉,凭着十指的跳跃穿行于数字的时空,我们觉得自己成了一名无畏的探险家。

文章

收藏

    相册

      友情链接

      存档


      正在读取评论……

      2004年08月


      当废品卖了。好大一堆,将近100块,想想当时得花多少钱呀。
      现在这堆废纸,真的懒得再翻一翻,全都过时了。
      以后下决心不再买杂志了,网上资源真的足够足够了。
      网上找不到的书还是得买几本。






      估计是从窝里掉下来的,还不太会飞,嘴是黄黄的。
      喂了它一些粥,桃子,和一些水。
      现在,这个小家伙正舒服的眯着眼睛睡觉呢。哈哈



      摘要

        虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。

      (2002-08-25 14:09:58)

      By Wing, 出处:Laura Bennett

        Java调试教程--Java调试器(JDB)概述

        SUN Laura Bennett

        什么是 JDB?

        虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。它在 Java 2 平台中得到了增强。有关详细信息,请参考关于 Java 调试 API 的章节。

        JDB 的详细信息

        可以为调试多个项目配置 JDB。JDB 将查找 user.home 目录中的 jdb.ini 配置文件。因此,对于每个项目,应该将 user.home 特性设置成指向另一个目录中的另一个 .ini 文件。可以输入以下命令来完成此操作:


      jdb -J-Duser.home=. //Will look in the current directory for the
      //jdb.ini file

        jdb.ini 文件可以启动 JDB 会话,传递参数并关于系统的信息。以下是 jdb.ini 文件的一个示例。它包括了源路径列表中的 Java 平台源码,并将参数 34 传递给程序。然后它运行并在第 2 行停止,显示可用内存并等待进一步输入。


      load MyTest
      stop at MyTest:20
      use c:/java;c:/jdk/src
      run MyTest 34
      memory

        可以用 JDB 记录调试会话。通过在运行 JDB 的目录中创建文件 .agentLog,以启用日志记录。在 .agentLog 文件中,在第一行中放入要将会话信息写入其中的文件名。运行 jdb 命令时,将会看到 jdb 会话信息。日志文件可能包含以下内容:


      -------- debug agent message log --------
      [debug agent: adding Debugger agent to system thread list]
      [debug agent: adding Breakpoint handler to system thread list]
      [debug agent: no such class: MyApplication.main]

        使用 JDB 和 Servletrunner 调试 Servlet 在下一章中,我们将完成一个练习使用 JDB 和 Servlet 引擎调试 Servlet。Tomcat 是与 JDB 对接得很好的 JSP/Servlet引擎。其它是 Windows 应用程序 .exe 文件的 Servlet 引擎不能以调试方式运行。然而,Tomcat 有一个启动脚本,该脚本允许您配置它以便调试。需要配置 TOMCAT_OPTS环境变量。 以调试方式运行引擎还会影响 CLASSPATH。使用 -Xbootclasspath 以及在JDK 2.0 中找到的 rt.jar 和 tools.jar 文件的路径来设置引导类路径。或者,可以使用 Servletrunner 进行调试。Servletrunner 是 JSDK 附带的应用程序。它让您可以不使用 Web 浏览器就运行 Servlet。Servletrunner 运行时就象 Java Web服务器,但又比 Java Web 服务器轻巧。它处理 Servlet 的HTTP 请求。Servletrunner 运行 java sun.servlet.http.HttpServer 命令。应该使用 HttpServer() 类来运行jdb 会话。

        在调试 Servlet 时,请记住 Java Web 服务器和 Servletrunner 不会通过在 CLASSPATH 中包括 Servlet 目录来装入和卸装 Servlet。实际上,它们使用定制类装入器,而不是缺省系统类装入器。




      根据我在unisys, capinfo, bell labs(上学时实习的公司),和现在的美国公司的经验,我认为绝大多数软件公司的效率很低。花费大量金钱雇来的员工工作效率很低(一类是水平有限,一类 是缺乏激情),加上落后的开发模式导致软件品质很低。因此,如果解决好着两个问题,即能够用很少的钱开发高品质的软件,我想我将来的公司一定可以很快发 展。



      上班的路上,轻而易举地捉到一只蜻蜓。不禁想起了我的小时候,那时候,我绝对是个捉蜻蜓的高手。夏天每天吃完晚饭,下楼遛弯的时候我都要到处捉蜻蜓。每次两只手都夹的满满的。然后带回家,让他们帮我吃蚊子。呵呵。走近大楼前,轻轻松开手放走了它。




      变化总是在发生,他们总是不断地拿走你的奶酪

      预见变化,随时做好奶酪被拿走的准备

      追踪变化,经常闻一闻你的奶酪,以便知道它们什么时候开始变质

      尽快适应变化,越早放弃旧的奶酪,你就会越早享用到新的奶酪

      改变,随着奶酪的变化而变化

      享受变化,尝试冒险,去享受新奶酪的美味

      做好迅速变化的准备不断地去享受变化

      记住,他们仍会不断地拿走你地奶酪




      直接去了海龙,在2楼,4楼反复跑了几趟。
      确定了4楼的一家,又在那里配了memory stick pro,包,电池套装。

      黑色的Sony W1真pp呀,就是有点小,不过现在已经习惯了,嘿嘿。



      三国演艺听完了,射雕英雄传也快听完了。于是晚上花了点时间google听书的资源。
      找到了一个好地方。
      www.ting8.com.cn,可以下载,可以在线听,嘿嘿。完全免费的。



      今天又和别人辩论了一通,很是后悔。一直觉得辩论很没意思,说清楚自己的观点,对方明白就明白,不理解多说也无意义。唉,浪费时间的东西。



       第一,谈谈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 运算符可以用来决定某对象的类是否实现了接口。

      第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
      都不能

      第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
      接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

      第二十三,启动一个线程是用run()还是start()?
      启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。



      第二十四,构造器Constructor是否可被override?
      构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

      第二十五,是否可以继承String类?
      String类是final类故不可以继承。

      第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
      不能,一个对象的一个synchronized方法只能由一个线程访问。

      第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
      会执行,在return前执行。


      第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
      有C背景的程序员特别喜欢问这种问题。

      2 << 3

      第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
      不对,有相同的hash code。

      第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
      是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。


      第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
      switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

      第三十二,编程题: 写一个Singleton出来。
           Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
      一般Singleton模式通常有几种种形式:
      第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
      public class Singleton {
        private Singleton(){}
        //在自己内部定义自己一个实例,是不是很奇怪?
        //注意这是private 只供内部调用
        private static Singleton instance = new Singleton();
        //这里提供了一个供外部访问本class的静态方法,可以直接访问  
        public static Singleton getInstance() {
          return instance;   
         }
      }
      第二种形式:
      public class Singleton {
        private static Singleton instance = null;
        public static synchronized Singleton getInstance() {
        //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
        //使用时生成实例,提高了效率!
        if (instance==null)
          instance=new Singleton();
      return instance;   }
      }
      其他形式:
      定义一个类,它的构造函数为private的,所有方法为static的。
      一般认为第一种形式要更加安全些




      Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
       
      HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
       
      还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

      最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在
      多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap
      就必须为之提供外同步。
       
      Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。





      故事

        公元2035年,总部位于芝加哥的美国USR公司开发出超能机器人产品--NS-5,其外形酷似人类,拥有强化耐久的钛金属外壳,可执行各种任务。从 保母、厨师、快递、遛狗到管理家庭收支,简直是无所不能。一时间,机器人的数量成3倍趋势增长,平均每5人便拥有1个机器人。随着NS-5被大量倾销,机 器人开始充当起社会各个领域的重要角色。而发明它的USR公司也成为地球上有史以来最强大的集团。

        警探史普纳(威尔·史密斯Will Smith饰)始终留恋以往简单的生活,爱听老歌,喜欢老式的打扮。他厌恶科技和机器人,却又不得不生活在由这两者组成的世界里。专门从事机器人心理研究 的科学家苏珊(布里吉特·莫伊纳罕Bridget Moynahan饰)向来崇尚逻辑与科学,她坚信总有一天机器人会胜过人类,并回过头来帮助人类进步。

        生活观念南辕北辙的史普纳和苏珊却在调查一桩疑似NS-5谋杀人类的案件中不期而遇……人类制造机器人时,通常会遵循所谓“机器人三大安全法则”来设 计并控制它们。但是,随着调查的深入,人们发觉机器人似乎已经学会了自我思考,并且解开了控制他们的密码,成为了完全独立的“机器类”。

        人类必须开始重新思考如何面对机器人,但是,机器人或者人类自身都值得信赖吗?
      剧本由来

        未来,发达的高科技社会中发生的足以改变人类历史的危机--《机械公敌》的故事蓝本,最早来源于编剧杰夫·温塔Jeff Vintar十多年以前创作的剧本《Hardwired》,它讲述了一桩神秘的谋杀案,而机器人可能才是幕后元凶。制片人劳伦斯·马克Laurence Mark对这个故事相当感兴趣,与此同时,二十世纪福斯电影公司一直想拍一部有关机器人的大型电影,遂将之列入筹拍日程,并初步拟订由亚历克斯·普罗亚斯 Alex Proyas执导。2000年初,杰夫·温塔飞赴澳洲开始同导演普罗亚斯就《机械公敌》拍片计划进行沟通,整个合作案足足花了两年多。

        开始时,该片被定位于未来背景下的谋杀惊悚片,接下来他们尝试将格局放大以便有更多可发挥的空间。因为导演普罗亚斯对视觉风格独到且优异的品味,主创人员最终达成共识,要将《机械公敌》拍成宏大背景下的史诗浩劫,他们的野心促使该片必须要在视觉特效上力争有所突破。

        在当时,制片人约翰·戴维斯John Davis名下的制片公司拿到了《机械公敌》的电影版权,而导演普罗亚斯在科幻大师艾萨克·阿西莫夫Isaac Asimov的小说里找到了剧本以外的视觉元素,阿西莫夫作品中的思想和人物很自然地融入编剧杰夫·温塔的未来谋杀案剧本。
      完全班底

      威尔·史密斯:官方首选

        据几位制片人口径一致的“官方”说法,威尔·史密斯是制作方的首选。同时,他还答应在该片中担任监制(此前,他曾为由罗伯特·德尼罗和埃迪·墨菲主演的影片《作秀时刻》(Showtime)。担任监制),正是由于威尔的推荐,《美丽心灵》的金奖编剧阿齐瓦·高斯曼Akiva Goldsman也得已加入幕后阵容。

        “《机械公敌》最吸引我的是,它的中心概念是机器人没有问题,科技并不是问题本身,人类逻辑的极限才真的是问题,而最终,我们成为自己最大的敌人。”这是威尔·史密斯出演该片的最大体会。

      布里吉特·莫伊纳罕:热忱至上

        依旧引用官方的说法:“她能够非常贴切地传达我们对这个角色的设计,也就是在机器人般冰冷的外表下,却有着很人性的热忱。”

        相貌秀丽的布里吉特·莫伊纳罕从影片《妹力四射》(Coyote Ugly)中迅速崛起。在热门剧集《欲望都市》中她也曾有上佳表现。影片《新手》(The Recruit)中她与阿尔·帕西诺和科林·法瑞尔有过愉快的合作。

      导演:亚历克斯·普罗亚斯

        这位来自澳洲且科班出身的导演,素来以擅长营造充满神秘和未来感的影片而闻名。1994年,他凭一部改编自同名漫画的《乌鸦》(The Crow)令世人所知。四年后,更是以那部《移魂都市》(Dark City)征服了观众。此前,他还自编自导了其第一部描写现实世界的青春片《车库时光》(Garage Days)。

        亚历克斯自小便是阿西莫夫的忠实读者,他一直梦想着能拍一部如《机械公敌》的影片,这次他梦想成真了。
      链接

      NS-5基本资料

        高度180公分,耐久钛金属外壳,具456个活动零件,需经由12位博士组装完成,熔点华氏六千度,可负重800磅,能承受数千磅撞击。电子智慧脑可复制人类自由意志,具有1TB内存,每秒能执行6兆笔以上运算,拥有80种语言能力。


      科幻大师阿西莫夫--划时代的机器人三大安全法则:

      1. 机器人不能伤害人类,或坐视人类受到伤害而袖手旁观。 
      2. 除非违背第一法则,机器人必须服从人类的命令。 
      3. 在不违背第一和第二法则前提下,机器人必须保护自己。



      现在很多人买东西,动不动就提性价比。好像即使那个东西不好,只要用了很少的钱,这笔买卖也赚了。我却不以为然,买还是应该买好东西,没有钱先不买,攒够 再出手,不凑合。我的T40用了9个月了,还没有一次死机,我都惊讶了。还有,当年图便宜买了一个800多的mp3,结果电池只能听两个小时,又花了 400多升级,费电问题倒是解决了,可是还是有各种各样的Bug,唉,失败。
      其实,数码如此,衣服如此,甚至外面吃饭也是这样。所谓,宁吃仙桃一口,不吃烂桃一筐,确有道理。



      面试是没什么道理可讲的,它的题目有的不合情理、脱离实际。有在纸上写的,有当面考你的,也有在电话里问的,给你IDE的估计很少(否则你赶快去 买彩票, 说不定中)。所以如果你看完此文后,请不要抱怨说这些问题都能用IDE来解决。你必须在任何情况下准确回答这些问题,在面试中如果出现一两题回 答不准确很 有可能你就被拒之门外了。

      当然这些都是Java的基本题,那些面试的人大多数不会问你Hibernate有多先进,Eclipse的三个组成部分,或 command design pattern,他们都是老一辈了,最喜欢问的就是基础知识。别小看了这些基础,我朋友水平一流,结果就栽在一到基础知识 的问题下,和高薪无缘。

      好了废话少说,开始正题。

      第一,谈谈final, finally, finalize的区别。
      最常被问到。

      第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

      第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

      第四,&和&&的区别。
      这个问得很少。

      第五,HashMap和Hashtable的区别。
      常问。

      第六,Collection 和 Collections的区别。
      你千万别说一个是单数一个是复数。

      第七,什么时候用assert。
      API级的技术人员有可能会问这个。

      第八,GC是什么? 为什么要有GC? 
      基础。

      第九,String s = new String("xyz");创建了几个String Object?

      第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

      第十一,short s1 = 1; s1 = s1 + 1;有什 么错? short s1 = 1; s1 += 1;有什么错?
      面试题都是很变态的,要做好受虐的准备。

      第十二,sleep() 和 wait() 有什么区别?
      搞线程的最爱。

      第十三,Java有没有goto?
      很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。

      第十四,数组有没有length()这个方法? String有没有length()这个方法?

      第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
      常问。

      第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

      第十七,给我一个你最常见到的runtime exception。
      如果你这个答不出来,面试的人会认为你没有实际编程经验。

      第十八,error和exception有什么区别?

      第十九,List, Set, Map是否继承自Collection接口?

      第二十,abstract class和interface有什么区别?
      常问。

      第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

      第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

      第二十三,启动一个线程是用run()还是start()?

      第二十四,构造器Constructor是否可被override?

      第二十五,是否可以继承String类?

      第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

      第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

      第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
      有C背景的程序员特别喜欢问这种问题。

      第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

      第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

      第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

      第三十二,编程题: 写一个Singleton出来



      发张图片纪念一下吧,这小东西确实可爱。




      向一个Swing队列传送一条讯息的唯一安全的途径是,调用一个类似SwingUtilities.invokeLater() 的方法,这样就在Swing事件队列上发送了一个runnable 对象,当轮到它执行时,Swing 事件处理线程将会处理它。



      DDN简介
        DDN是英文Digital Data Network的缩写,是随着数据通信业务的发展而迅速发展起来的一种新型网络。DDN的主干网传输媒介有光纤、数字微波、卫星信道等;到用户端多使用普 通电缆和双绞线。DDN利用数字信道传输数据信号这与传统的模拟信道相比有本质的区别,DDN传输的数据具有质量高、速度快、网络时延小等一系列的优点, 特别适合于计算机主机之间、局域网之间、计算机主机与远程终端之间的大容量、多媒体、中高速通信的传输,DDN可以说是我国的中高速信息国道。

        DDN特点
        由于DDN是采用数字传输信道传输数据信号的通信网,因此,它可提供点对点、点对多点透明传输的数据专线出租电路,为用户传输数据、图像、声音等信息。使用DDN具有如下特点:
        1、DDN是透明传输网。由于DDN将数字通信的规则和协议寄托在智能化程度的用户终端来完成,本身不受任何规程的约束,所以是全透明网,是一种面向各类数据用户的公用通信网,它可以看成是一个大型的中继开放系统。
        2、传输速率高,网络时延小。由于DDN用户数据信息是根据事先的协议,在固定通道带宽和预先约定速率的情况下顺序连接网络,这样只需按时隙通道就可以准确地将数据信息送到目的地,从而免去了目的终端对信息的重组,因此减少了时延。
        3、DDN可提供灵活的连接方式。DDN可以支持数据、语音、图像传输等多种业务,它不仅可以和客户终端设备进行连接,而且还可以和用户网络进行连 接,为用户网络互连提供灵活的组网环境。DDN的通信速率可根据用户需要在N×64Kbps(N=1~32)之间进行选择,当然速度越快租用费用也就越 高。
        4、灵活的网络管理系统。DDN采用的图形化网络管理系统可以实时地收集网络内发生的故障并进行故障分析和定位。通过网络图形颜色的变化,显示出故障点的信息,其中包括网络设备的地点、网络设备的电路板编号及端口位置,从而提醒维护人员及时准确地排除故障。
        5、保密性高。由于DDN专线提供点到点的通信,信道固定分配,保证通信的可靠性,不会受其他客户使用情况的影响,因此通信保密性强,特别适合金融、保险客户的需要。
        总之,DDN将数字通信技术、计算机技术、光纤通信技术以及数字交叉连接技术有机地结合在一起,提供了高速度、高质量的通信环境,为用户规划、建立自己安全、高效的专用数据网络提供了条件,因此在多种接入方式中深受广大客户的青睐。



      看了兔子的文章,我也Furl了一把。
      现在还不知道怎么把Furl It的链接放到FireFox的Toolbar上。
      另外,每次用Furl It,麻烦而且慢。



      最近下班回家正事干的不多,只好拉个TODO List,提醒一下自己。

      1. 继续自己的小软件 SendTo Express改成Shell Ext (最好能选中文件后,热键激活)
      2. 完成自己在1lh上的Homepage
      3. CSDN增值合订本上的Java Thread教程
      4. 看完《开源软件文集》
      5. 全面掌握公司产品的构架,和主要实现
      6. 安装eclipse,并将全部基于ant的代码,配置上去
      7. 用Java写备份Blog的程序




      反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领 域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作系统和文件系统中。 反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之 处,这些有助于我们的理解。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述 (self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的 语义。可以看出,同一般的反射概念相比,计算机科学领域的反射不单单指反射本身,还包括对反射结果所采取的措施。所有采用反射机制的系统(即反射系统)都 希望使系统的实现更开放。可以说,实现了反射机制的系统都具有开放性,但具有开放性的系统并不一定采用了反射机制,开放性是反射系统的必要条件。一般来 说,反射系统除了满足开放性条件外还必须满足原因连接(Causally-connected)。所谓原因连接是指对反射系统自描述的改变能够立即反映到 系统底层的实际状态和行为上的情况,反之亦然。 开放性和原因连接是反射系统的两大基本要素。



         
          生日:1981年5月25日

        身高:6英尺1英寸

        家乡:犹他州盐湖城

        受教育程度:大学(斯坦福大学国际关系学士学位)

        场上位置:主攻

        荣誉榜:

        1998年全美高中联赛年度最佳球员

        2000年悉尼奥运会女排比赛第四名

        2001年全美大学生女排联赛冠军

        2002年女排世锦赛亚军

        四届全美大学生联赛年度最佳球员、两届AVCA全美高校年度最佳球员

        排球生涯简介:

        1996年:以16岁的年纪成为美国青年女排队中最小的队员,但在拦网及其他技术指标上均名列前茅;

        1997年:曾出现在当年某一期的《体育画报》杂志上;

        2000年:还是个19岁的高中生时就代表美国女排出征悉尼奥运会,并帮助球队获得第四名;

        2003年:1月签约巴西女排联赛球队MRV/Minas,正式转为职业球员,此后陆续有巴西、意大利、波多黎各以及西班牙四国联赛的球队渴望与其签约;

        2003年:被全美女子体育基金会提名为“年度最佳女运动员”;




      NetTransport缺省每个Job是两个线程,我每次New Job时都要重新设一下,今天终于烦了,
      研究了一下,搞定了。

      1. 增加最大线程数。缺省最大10个。我们可以多来几个。

      regedit打开注册表
      HKEY_CURRENT_USER\Software\Xi\NetTransport 2\Download\
      增加
      Max Threads(DWORD类型的键),随便定个值,e.g. 128

      2. 定义缺省为32线程。点击New按钮,在add new download对话框中,将Transports的值改为32,然后save as为名为32的schema。OK,即可。以后new job就是用32线程下载了。嘿嘿。

      “懒惰是程序员的美德”



      下面这段代码

      import java.io.*;

      class FileTest {
         public static void main(String args[]) {
            try {
               File f = new File("1.txt");
               FileWriter writer = new FileWriter(f);
             
               f.delete();
              
               writer.write("hello world");
               writer.flush();
               writer.close();
            }
            catch(Exception e) {
               e.printStackTrace();
            }
         }  
      }

      在windows下可以顺利生成1.txt,在linux下就不行。
      其实不行是正常的,可是为什么windows下可以呢?



      坚持做一件事,结果绝对让你吃惊。
      我每天看电视,或者玩计算机的休息期间,就随便拿哑铃玩几下。没有想到的是,不知不觉,几个月下来,胳膊上的肌肉线条变的清晰多了,而且脂肪也少了很多。呵呵。下面准备练习掉腰上的肥肉,嘿嘿。



      除了开会,解答别人问题,我一天只能Fix三个Bug或者新的Feature,感觉少了点,但是好像也快不起来。自己感觉对整个产品还不是很熟。
      下一月计划,每天平均Fix四个Bug。以后每月多一个。呵呵




      我估计很多和我一样,都是怀着崇敬的心情来看《开源软件文集》的。可是,当我看到“大派送,Red Hat如何偶然发现一个新经济模式并促进一个行业”这篇文章时,惊了。P148上赫然出现这样的句子,
      “你必须记住现在有二亿三千万D操作系统/Windows用户”

      一开始没反映出D操作系统为何物,但是,马上明白了,就是DOS。译者一定是用了翻译软件,该软件自作聪明的把OS翻译出来。他们一定是连再看一遍都没有。我不知道说什么了,但是,毫无疑问,译者:徐六通,校订:洪峰 将永远被牢牢的钉在“耻辱柱”上。






      试了半天也不起作用。Liu Ren是不是给个官方的说法??



      1. Duplicated Code
      2. Long Method
      3. Large Class
      4. Long Parameter List
      5. Divergent Change
      6. Shotgun Surgery
      7. Feature Envy
      8. Data Clumps
      9. Primitive Obsession
      10.Switch Statements
      11.Parallel Inheritance Hierarchies
      12.Lazy Class
      13.Speculative Generality
      14.Temporary Field
      15.Message Chains
      16.Middle Man
      17.Inappropriate Initmacy
      18.Alternative Classes with Different Interfaces
      19.Incomplete Library Class
      20.Data Class
      21.Refused Bequest
      22.Comments