java面试的时候大家都遇到过什么样的问题
接下来就为大家介绍下从各方收集到的java面试的问题吧
第一谈谈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++嵌套类最大的不同就在于是否有指向外部的引用上具体可见;amp;page= 注 静态内部类(Inner Class)意味着创建一个static内部类的对象不需要一个外部类对象不能从一个static内部类的一个对象访问一个外部类对象
第四&和&&的区别&是位运算符&&是布尔逻辑运算符
第五HashMap和Hashtable的区别都属于Map接口的类实现了将惟一键映射到特定的值上HashMap 类没有分类或者排序它允许一个null 键和多个null 值Hashtable 类似于HashMap但是不允许null 键和null 值它也比HashMap 慢因为它是同步的
第六Collection 和Collections的区别Collections是个javautil下的类它包含有各种有关集合操作的静态方法Collection是个javautil下的接口它是各种集合结构的父接口
第七什么时候用assert断言是一个包含布尔表达式的语句在执行这个语句时假定该表达式为true如果表达式计算为false那么系统会报告一个AssertionError它用于调试目的assert(a > )// throws an AssertionError if a <= 断言可以有两种形式assert Expression ; assert Expression : Expression ; Expression 应该总是产生一个布尔值 Expression 可以是得出一个值的任意表达式这个值用于生成显示更多调试信息的String 消息 断言在默认情况下是禁用的要在编译时启用断言需要使用source 标记javac source Testjava 要在运行时启用断言可使用enableassertions 或者ea 标记要在运行时选择禁用断言可使用da 或者disableassertions 标记要系统类中启用断言可使用esa 或者dsa 标记还可以在包的基础上启用或者禁用断言可以在预计正常情况下不会到达的任何位置上放置断言断言可以用于验证传递给私有方法的参数不过断言不应该用于验证传递给公有方法的参数因为不管是否启用了断言公有方法都必须检查其参数不过既可以在公有方法中也可以在非公有方法中利用断言测试后置条件另外断言不应该以任何方式改变程序的状态
第八GC是什么? 为什么要有GC? (基础)GC是垃圾收集器Java 程序员不用担心内存管理因为垃圾收集器会自动进行管理要请求垃圾收集可以调用下面的方法之一 Systemgc() RuntimegetRuntime()gc()
第九String s = new String(xyz)创建了几个String Object? 两个对象一个是xyx一个是指向xyx的引用对象s
第十Mathround()等于多少?Mathround()等于多少? Mathround()返回(long)Mathround()返回(long);