java

位置:IT落伍者 >> java >> 浏览文章

JAVA程序员面试32问,你能回答多少题?


发布日期:2021年07月06日
 
JAVA程序员面试32问,你能回答多少题?

第一谈谈final finally finalize的区别

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

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

第四&和&&的区别

第五HashMap和Hashtable的区别

第六Collection 和 Collections的区别

第七什么时候用assert

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

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

第十Mathround()等于多少? Mathround()等于多少?

第十一short s = ; s = s + ;有什么错? short s = ; s += ;有什么错?

第十二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前还是后?

第二十八编程题: 用最有效率的方法算出乘以等于几?

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

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

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

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

以下是答案

第一谈谈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++嵌套类最大的不同就在于是否有指向外部的引用上具体可见

静态内部类(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);

第十一short s = ; s = s + ;有什么错? short s = ; s += ;有什么错?

short s = ; s = s + ;有错s是short型s+是int型不能显式转化为short型可修改为s =(short)(s + ) short s = ; s += 正确

第十二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的方法是可以改变返回值的类型

上一篇:详细讲解怎样在Java中运行其它应用程序

下一篇:vtk在Java2中的使用