20091223 中山面试

1.
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:
都有两种方式
线程
1
通过继承Thread类
2
实现Runnable接口

同步
关键字
Synchronized
1
同步代码块
2
同步方法

Java多线程编程总结
http://lavasoft.blog.51cto.com/62575/27069
探索 Java 同步机制
http://www.ibm.com/developerworks/cn/java/j-lo-synchronized/index.html

2.
匿名内部类是否可以继承其它类?是否可以实现接口?
都可以。

先定义一个接口:  
  interface   Contents   {  
      int   value();  
  }  
   
  再定义一个类(构造函数不是默认的):  
  public   class   Wrapping   {  
      private   int   i;  
      public   Wrapping(int   x)   {   i   =   x;   }  
      public   int   value()   {   return   i;   }  
  }  
   
  先实现接口:  
  public   class   Parcel6   {  
      public   Contents   cont()   {  
          return   new   Contents()   {  
              private   int   i   =   11;  
              public   int   value()   {   return   i;   }  
          };   //   Semicolon   required   in   this   case  
      }  
      public   static   void   main(String[]   args)   {  
          Parcel6   p   =   new   Parcel6();  
          Contents   c   =   p.cont();  
      }  
  }  
   
  再继承类:  
  public   class   Parcel7   {  
      public   Wrapping   wrap(int   x)   {  
          //   Base   constructor   call:  
          return   new   Wrapping(x)   {    
              public   int   value()   {  
                  return   super.value()   *   47;  
              }  
          };   //   Semicolon   required  
      }  
      public   static   void   main(String[]   args)   {  
          Parcel7   p   =   new   Parcel7();  
          Wrapping   w   =   p.wrap(10);  
      }  
  }    
   

关于JAVA匿名内部类的一点讨论
http://java.chinaitlab.com/base/720647.html
java内部类
http://hi.baidu.com/lrorolove/blog/item/06c17ff3db60bf19b07ec59b.html
关于Java 匿名内部类的疑问!
http://it.wenda.sogou.com/question/34173960.html
初学者对java匿名内部类构造原理的分析
http://topic.csdn.net/u/20080728/20/d60f719a-c103-44b8-8d0c-bc1c818b768a.html
内部类详解
http://www.iteye.com/topic/442435
原来Java代码还能这么写?
http://www.iteye.com/topic/7158

3.
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

http://blog.csdn.net/yakihappy/archive/2009/03/11/3979940.aspx

4.
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。    

http://zangweiren.iteye.com/blog/216005
http://xjtusaber.iteye.com/blog/164364


你可能感兴趣的:(java,多线程,编程,面试,Blog)