a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 133|回复: 1

[程序员] 2012年软件水平考试程序员第二套经典面试题及答案

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
 1、HashMap和Hashtable的区别。   HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。1 k3 x: D* }' F/ k: p) t

9 }" z- W# E+ q) n  t  HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
% Y2 L8 P8 b% ]! l& E  HashMap 把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误 解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
* S2 p' p( C# J- }, O: k( |  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
1 s$ k) c: b  W: Z* ]  Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
, n3 ~7 }) W) ~) D2 R( g  2、final, finally, finalize的区别。
1 z$ S3 t, D: `& S% l) P3 Y  final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 0 U# q! \  v$ P5 W$ m
  3、sleep() 和 wait() 有什么区别? " \3 g3 A+ f: K2 u
  sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对 象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 ! |5 [  P+ `1 R  P- v& K
  4、Overload和Override的区别。 & [) v" j, B/ R
  Overloaded的方法是否可以改变返回值的类型? 7 r) W2 p+ K; d/ H. m- k
  方法的重写Overriding 和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一 个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方 法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
回复

使用道具 举报

 楼主| 发表于 2012-8-2 08:51:16 | 显示全部楼层

2012年软件水平考试程序员第二套经典面试题及答案

  5、error和exception有什么区别? & X( P- h) }9 D' p0 M- Z
  error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 4 n$ h. [) Z: j
  exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
% ~! t' x2 v; U; N+ R, v  6、Math.round(11.5)等於多少? " N4 p; R9 @; j# E9 C5 |# n
  Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor.   7、GC是什么? 为什么要有GC? % @/ a+ ^6 z' V. p) ^( }
  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以 自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
! J1 T9 N5 f1 F) ?4 s/ w  8、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
4 [/ B" u  b8 d" |. P$ ~  G5 c  i4 U6 V
  以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。
8 i: b$ W- y2 o/ B  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
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 10:00 , Processed in 0.188642 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表