总结几个java面试题

来源:互联网 发布:seo视频教程下载 编辑:程序博客网 时间:2024/05/18 02:38

交流学习java加群460570824.

JVM 底层面试题及答案

1)你能保证 GC 执行吗?(答案)

不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC 的执行。

2)怎么获取 Java 程序使用的内存?堆使用的百分比?

可以通过 java.lang.Runtime 类中与内存相关方法来获取剩余的内存,总内存及最大堆内存。通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间。Runtime.freeMemory() 方法返回剩余空间的字节数,Runtime.totalMemory() 方法总内存的字节数,Runtime.maxMemory() 返回最大内存的字节数。

3)Java 中堆和栈有什么区别?(答案)

JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。

其他面试问题

4)嵌套静态类与顶级类有什么区别?(答案)

一个公共的顶级类的源文件名称与类名相同,而嵌套静态类没有这个要求。一个嵌套类位于顶级类内部,需要使用顶级类的名称来引用嵌套静态类,如 HashMap.Entry 是一个嵌套静态类,HashMap 是一个顶级类,Entry是一个嵌套静态类。

 

5)你能写出一个正则表达式来判断一个字符串是否是一个数字吗?(解决方案)

一个数字字符串,只能包含数字,如 0 到 9 以及 +、- 开头,通过这个信息,你可以下一个如下的正则表达式来判断给定的字符串是不是数字。

 

6)Java 中,受检查异常 和 不受检查异常的区别?(答案)

受检查异常编译器在编译期间检查。对于这种异常,方法强制处理或者通过 throws 子句声明。其中一种情况是 Exception 的子类但不是 RuntimeException 的子类。非受检查是 RuntimeException 的子类,在编译阶段不受编译器的检查。

 

7)Java 中,throw 和 throws 有什么区别?(答案)

 

throw 用于抛出 java.lang.Throwable 类的一个实例化对象,意思是说你可以通过关键字 throw 抛出一个 Error 或者一个Exception,如:

throw newIllegalArgumentException(“size must be multiple of 2″)

 

而throws 的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。Java 中,任何未处理的受检查异常强制在throws 子句中声明。

 

8)Java 中,Serializable 与 Externalizable 的区别?(答案)

Serializable 接口是一个序列化 Java 类的接口,以便于它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是 JVM 内嵌的默认序列化方式,成本高、脆弱而且不安全。Externalizable 允许你控制整个序列化过程,指定特定的二进制格式,增加安全机制。

 

9)Java 中,DOM 和 SAX 解析器有什么不同?(答案)

DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以更快的查找节点和修改XML 结构,而 SAX 解析器是一个基于事件的解析器,不会将整个 XML 文档加载到内存。由于这个原因,DOM 比 SAX 更快,也要求更多的内存,不适合于解析大 XML 文件。

 

10)说出 JDK 1.7 中的三个新特性?(答案)

虽然 JDK 1.7 不像 JDK 5 和 8 一样的大版本,但是,还是有很多新的特性,如 try-with-resource 语句,这样你在使用流或者资源的时候,就不需要手动关闭,Java 会自动关闭。Fork-Join 池某种程度上实现 Java 版的 Map-reduce。允许 Switch 中有 String 变量和文本。菱形操作符(<>)用于类型推断,不再需要在变量声明的右边申明泛型,因此可以写出可读写更强、更简洁的代码。另一个值得一提的特性是改善异常处理,如允许在同一个 catch 块中捕获多个异常。

 

11)说出 5 个 JDK 1.8 引入的新特性?(答案)

Java 8 在 Java 历史上是一个开创新的版本,下面 JDK 8 中 5 个主要的特性:

Lambda 表达式,允许像对象一样传递匿名函数

Stream API,充分利用现代多核 CPU,可以写出很简洁的代码

Date 与 Time API,最终,有一个稳定、简单的日期和时间库可供你使用

扩展方法,现在,接口中可以有静态、默认方法。

重复注解,现在你可以将相同的注解在同一类型上使用多次。


原创粉丝点击