某大型公司Java面试题

 

 


    找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司。 

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

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

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

  第一,谈谈final, finally, finalize的区别。 

  final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承

finally是异常处理语句结构的一部分,表示总是执行。

finalizeObject类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

 
  第二,Anonymous Inner Class (匿名内部类是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 
可以继承其他类或完成其他接口,在swing编程中常用此方式。
  第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
  第四,&&&的区别。 
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and.
  第五,HashMapHashtable的区别。 
HashMapHashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key,由于非线程安全,效率上可能高于Hashtable.


  第六,Collection 和 Collections的区别。 

  Collection是集合类的上级接口,继承与他的接口主要有Set List.

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

  第七,什么时候用assert。 
1.4新增关键字(语法),用于测试boolean表达式状态,可用于调试程序。

使用方法 assert 表达式>,表示如果表达式为真(true,则下面的语句执行,否则抛出AssertionError

另外的使用方式assert < boolean表达式>:表达式>,表示如果表达式为真,后面的表达式忽略,否则后面表达式的值用于AssertionError的构建参数。

注意编译时要增加-source 1.4 参数,否则报错。]运行时要增加 –ea参数,否则assert行被忽略

  第八,GC是什么为什么要有GC? 

  GC是垃圾收集的意思(Gabage Collection,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 

  第九,String s = new String("xyz");创建了几个String Object? 
两个
  第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少
Math.round(11.5)==12

Math.round(-11.5)==-11

round方法返回与参数最接近的长整数,参数加1/2后求其floor.
  第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)

short s1 = 1; s1 += 1;(可以正确编译)
  第十二,sleep() 和 wait() 有什么区别
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

waitObject类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

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

你可能感兴趣的:(某大型公司Java面试题)