资深java面试题有哪些?资深java面试题及答案大全

很多java人员都想在面试之前找一些面试题看,好提前有个心理准备,从容面对面试官的考核,那么今天我们就给大家分享一些资深java面试题及其答案,帮助大家顺利通关面试!

1、在多线程环境下,SimpleDateFormat 是线程安全的吗?

不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat 限制在ThreadLocal 中。

2、Java 中如何格式化一个日期?如格式化为 ddMMyyyy的形式?

Java 中,可以使用 SimpleDateFormat 类或者 joda-time 库来格式日期。DateFormat 类允许你使用多种流行的格式来格式化日期。

3、怎么利用 JUnit 来测试一个方法的异常?

对需要测试异常的代码使用try,catch语句块。比如:public void testException(){try{Long.parseLong(null);} catch(NumberFormatException expected){}}然后使用Junit的fail函数,对于没有抛出预期异常的代码。

4、Java 中如何利用泛型写一个 LRU 缓存?

这是一种混合的数据结构,我们需要在哈希表的基础上建立一个链表。但是Java已经为我们提供了这种形式的数据结构-LinkedHashMap!它甚至提供可覆盖回收策略的方法。

唯一需要我们注意的事情是,改链表的顺序是插入的顺序,而不是访问的顺序。但是,有一个构造函数提供了一个选项,可以使用访问的顺序。

5、什么是垃圾回收?

垃圾回收是Java中自动内存管理的另一种叫法。垃圾回收的目的是为程序保持尽可能多的可用堆(heap)。 JVM会删除堆上不再需要从堆引用的对象。

6、springCloud是什么?

springcloud是一个微服务框架,并提供全套分布式系统解决方案。支持配置管理,熔断机制,leader选举,服务治理,分布式session,微代理,控制总线,智能路由,一次性token。

7、内存溢出是怎么回事?请举一个例子?

内存溢出(out of memory)通俗理解就是内存不够,在计算机程序中通俗的理解就是开辟的内存空间得不到释放。

OOM有堆溢出,栈溢出,方法区溢出(主要是动态生成class的处理过多)。

8、java 中操作字符串都有哪些类?它们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilder。

String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

我们可以在平时的时候多积累一些面试题,提高相关经验,这样在面试的时候就不会胆怯,顺利通过面试哦!最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。

推荐阅读:

json解析错误是什么意思?json解析错误原因

java有哪些网络编程课程?如何学习java编程?

java中接口可以继承类吗?java接口可以多继承吗?