java高级面试题目,高级java面试问题大全及答案大全

  java高级面试题目,高级java面试问题大全及答案大全

  

  1、redis如何跟本地数据同步?

  mysql的更新、添加、删除都会同步操作redis。

  查询redis程序,不存在就查询mysql,自动保存redis。

  2、redis几种数据结构?

  集合、列表、哈希、字符串、zset

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

  OutOfMemoryError错误:

  (pergernspace程序中使用了大量的jar或类,导致虚拟机加载类空间不足。

  解决方法:调整XX:PermSize和XX:MaxPermSize,减少jar包,减少类的重复加载。

  (2)Java堆

  空间Java虚拟机创建了太多对象。解决方法:调整Xms(初始化堆大小)Xmx(最大堆大小),检查无限循环或不必要的重复对象。

  (3)无法创建新的本机线程

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

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

  如果字符串池中没有“123”,就会生成一个放入常量池;如果有“123”,将生成0。

  5、JDK8的新特性,举例描述

  (1)lambda表达式:函数式编程,方法参考

  (2)流API

  (3)默认的接口方法

  (4)日期时间API的改进,增加了DateTimeFormatter方法

  6、解决高并发和高负载

  (1) html尽量静态,采用信息录入和发布系统CMS,通过信息录入自动生成静态页面,不经常变化的动态数据在前端缓存。

  (2)CDN加速,将CSS/JS等资源分布在不同的服务器上。

  (3)缓存不经常变化的数据(Redis,memcache)。

  (4)图片服务器与应用服务器分离。

  (5)集群

  7、生产者和消费者模型得瑟作用是什么?

  (1)通过平衡生产能力和消费者的消费能力,提高整个系统的运行效率;(2)脱钩。

  8、Mybatis一级、二级缓存

  (1)一级缓存:基于PerpetualCache的HashMap本地缓存,其存储范围为Session,当Session

  刷新或关闭后,此会话中的所有缓存都将被清空。

  (2)L2缓存的机制与L1缓存相同。默认情况下,它使用PerpetualCache和HashMap进行存储,这与存储范围中的Mapper不同。您还可以自定义存储源。如果你需要打开L2缓存。添加到sql映射文件中

  9、描述一个服务从发布到被消费的详细过程

  首先获取zk的配置信息,然后获取要暴露的url,然后调用registry,register方法将url注册到zookeeper。

  10、如何实现负载均衡,有哪些算法可以实现?

  随机、循环、一致散列和主从。

  11、如果要你实现Spring AOP,怎么实现?

  aop技术的实现可以分为两类:一类是采用动态代理技术,通过截取消息来修饰消息,代替原来对象行为的执行。

  第二,采用静态编织的方法,引入特定的语法来创建“方面”,使编译器将相关的“方面”相互编织在一起。

  12、如何防止页面重复提交?

  集群环境:采用token加Redis(Redis单线程,处理需要排队)

  处理流程:

  1.在提交数据之前,您应该向服务申请令牌,并将令牌放在redis内存中。令牌在一段时间内有效。

  2.提交后,在后台检查令牌,删除令牌,生成新令牌返回。

  13、什么是微服务?

  根据不同的业务规则将项目拆分成微服务,部署在不同的机器上。服务之间互相调用。

  14、什么是web服务?

  (1)web service是一个应用程序,它公开了一个可以通过web调用的API。

  (2)基于HTTP协议的数据传输,使得运行在不同计算机上的不同应用能够在不需要额外的、专门的第三方软硬件的情况下进行数据交换或相互集成。

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

  Action是一个POJO类,不依赖Servlet API,测试性好;强大的拦截器,简化了开发的复杂度;

  支持多种表示层技术:JSP、Freemarker等。灵活的验证方法;国际化(I18N)支持声明式异常管理;

  简化Ajax通过JSON插件;通过Spring插件与Spring集成;

  16、谈一下拦截器和过滤器的区别?

  拦截器和过滤器都可以用来实现横切关注点,区别如下:拦截器基于JAVA反射机制,过滤器基于函数回调。

  过滤器依赖于Servlet容器,而拦截器不依赖。

  拦截器只能处理动作请求(动作中的方法),而过滤器可以处理几乎所有的请求(CSS JSP JS)

  17、Spring支持的事务管理类型?

  程序化事务管理:通过编程来管理事物,灵活性极强,维护难度大。

  声明式事务管理:业务代码和事务管理可以分开,只需要注释和XML配置来管理事情。

  我们,大量免费的Java入门教程,欢迎在线学习!以上是Java高级面试问题的详细内容(附答案)。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: