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

在找java相关工作的过程中,我们肯定要进行java面试,面试不用的岗位,面试题肯定也是不一样的,那java有哪些中高级面试题?下面来我们就来给大家讲解一下java中高级面试题及答案。

1、Java会存在内存泄漏吗?请简单描述。

内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。理论上来说,Java是有GC垃圾回收机制的,也就是说,不再被使用的对象,会被GC自动回收掉,自动从内存中清除

但是,即使这样,Java也还是存在着内存泄漏的情况,java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。

2、Redis可以在线扩容吗?zk呢?

Reids的在线扩容,不需要重启服务器,动态的在原始集群中添加新的节点,并分配slot槽。但是zk不能在线扩容,需要重启,但是我们可以选择一个一个重启。

3、java内存溢出是如何造成的?

OutOfMemoryError:

(1)PerGern Space 程序中使用了大量的jar或class,使虚拟机装载类空间不够。

解决方案:调参 XX:PermSize 和XX:MaxPermSize、减少jar包减少类的重复加载

(2)Java Heap

Space Java虚拟机创建太多对象。 解决方法:调参Xms(初始化堆大小)Xmx(最大堆大小)、检查死循环或不必要创建的重复对象。

(3)unable to create new native Thread

JVM占用了太多内存空间,而在JVM中创建线程还要再操作系统中创建线程。 解决方案:调整JVM中线程大小。

4、String s = “123”,这个语句有多少对象产生?

若字符串池中没有“123”,则产生一个,并且放入常量池中,若有“123”,则产生0个。

5、谈一下你的项目选择Struts2的理由?

(1)Action是POJO类,没有依赖Servlet API,具有良好的可测试性;

(2)强大的拦截器,简化了开发的复杂度;

(3)支持多种表现层技术:JSP、Freemarker等;

(4)灵活的验证方式;

(5)国际化(I18N)支持

(6)声明式异常管理;

(7)通过JSON插件简化Ajax;

(8)通过Spring插件跟Spring整合;

Spring支持的事务管理类型?

编程式事务管理:编程的方式管理事物,极大的灵活性,难维护;

声明式事务管理:可以将业务代码和事物管理分离、只需要用注解和XML配置来管理事物;

Java中高级面试题一般难度肯定会比较大,所以java人员要想通过面试,除了要掌握好基本知识之外,还需要拓展,实践项目,提高自己的技能哦!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

qt怎么获取当前系统时间?四种方法轻松解决

怎么用eclipse编写java程序?Eclipse插件怎么安装?

git客户端如何设置用户名密码?git合并冲突怎么办?