有哪些高级java面试题?高级java面试题及答案整理

Java工作有初级中级高级之分,因此在找java工作的时候,我们需要根据自己的技能找相关工作,如果你要找高级工程师,那么就需要有更高的技能,并且也可以看一些高级java面试题,那下面我们就给大家分享一些高级java面试题及答案整理!

1、Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?

SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。对于应用程序,最好将SessionFactory通过单例模式进行封装以便于访问。Session是一个轻量级非线程安全的对象(线程间不能共享session),它表示与数据库进行交互的一个工作单元。Session是由SessionFactory创建的,在任务完成之后它会被关闭。Session是持久层服务对外提供的主要接口。Session会延迟获取数据库连接(也就是在需要的时候才会获取)。为了避免创建太多的session,可以使用ThreadLocal将session和当前线程绑定在一起,这样可以让同一个线程获得的总是同一个session。Hibernate 3中SessionFactory的getCurrentSession()方法就可以做到。

2、你是如何理解fiber的?

React Fiber 是一种基于浏览器的单线程调度算法。React 16之前 ,reconcilation 算法实际上是递归,想要中断递归是很困难的,React 16 开始使用了循环来代替之前的递归。

Fiber:一种将 recocilation (递归 diff),拆分成无数个小任务的算法;它随时能够停止,恢复。停止恢复的时机取决于当前的一帧(16ms)内,还有没有足够的时间允许计算。

3、memcache的分布式原理是什么?

memcached 虽然称为 “ 分布式 ” 缓存服务器,但服务器端并没有 “ 分布式 ” 功能。每个服务器都是完全独立和隔离的服务。memcached 的分布式,则是完全由客户端程序库实现的。这种分布式是 memcached 的最大特点。

4、用一个例子解释垃圾回收?

比方说,下面这个方法就会从函数调用。通过函数第一行代码中参考变量calendar,在堆上创建了GregorianCalendar类的一个对象。函数结束执行后,引用变量calendar不再有效。因此,在方法中没有创建引用到对象。JVM认识到这一点,会从堆中删除对象。这就是所谓的垃圾回收。

5、能否创建一个包含可变对象的不可变对象?

当然可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用。

6、String s1=”ab”,String s2=”a”+”b”,String s3=”a”,String s4=”b”,s5=s3+s4请问s5==s2返回什么?

返回false.在编译过程中,编译器会将s2直接优化为”ab”,会将其放置在常量池当中,s5则是被创建在堆区,相当于s5=new String(“ab”);

面试高级java,肯定是要比初级中级难的,所以作为高级工程师不仅要有基本技能,还要拓展自己的知识面,提高技能,这样在面试中才能顺利通过!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

qt如何读取xml某一节点值?xml格式是怎样的?

java你好世界代码怎么写?java你好世界代码编写以及运行过程

java系统架构设计遇到的问题有哪些?