先给大家复习一下基础题!!!
Java基础是java初学者的起点,是帮助你从小白入门到精通必学基础课程!
为初学者而著!
Java300集>>>适合准备入行开发的零基础员学习Java,基于最新JDK13、IDEA平台讲解的,视频中穿插多个实战项目。每一个知识点都讲解的通俗易懂,由浅入深。不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。
Java基础板块知识:
- 职业规划
- 学习方法
- 泛型、容器
- 数据结构和算法
- 智能电话本实战
- IO流
- Java介绍
- 变量、数据类型、运算符
- IDEA
- 控制语句、方法、递归算法
- 面向对象
- JVM
- 数组和数据储存
- JDK
- 异常机制、可视化
- 飞机大战项目
配套学习:Java初学者入门教程>>>
1、redis如何跟本地数据同步?
- 程序实现mysql更新、添加、删除就会同步操作redis
- 程序查询redis,不存在就查询mysql,自动保存redis
2、redis几种数据结构?
- set
- list
- hash
- string
- zset
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、JDK8的新特性,举例描述
- lambda表达式:函数式编程,方法的引用
- Stream API
- 接口的默认方法
- 日期时间API的改进,新增DateTimeFormatter方法
6、解决高并发和高负载
- 尽可能html静态化,采用信息录入发布系统CMS实现信息录入自动生成静态页面,在前端缓存不经常改变的动态数据。
- CDN加速,把CSS/JS等资源分布在不同的服务器上
- 缓存不常改变的数据(Redis、memcache)。
- 图片服务器与应用服务器分离。
- 集群
7、生产者和消费者模型得瑟作用是什么?
- 通过平衡生产能力和消费者的消费能力来提升整个系统的运行效率
- 解耦
8、Mybatis一级、二级缓存
- 一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域Session,当Session flush或close之后,该Session中的所有Cache就将清空。
- 二级缓存与一级缓存机制相同,默认也是采用PerpetualCache,HashMap存储,不同在存储作用域Mapper,并且可自定义存储源,如需开启二级缓存。在sql映射文件添加
9、描述一个服务从发布到被消费的详细过程
首先获取zk的配置信息,然后获取需要暴露的url,然后调用registry,register方法将url注册到zookeeper上去。
10、如何实现负载均衡,有哪些算法可以实现?
- 随机(random)
- 轮训(round-robin)
- 一致哈希(consistent-hash)
- 主备(master-slave)
11、如果要你实现Spring AOP,怎么实现?
实现aop技术,主要分为两大类:
- 采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执
- 是采用静态织入的方式,引入特定语法创建“方面”,从而使得编译器间织入有关“方面”的代码
12、如何防止页面重复提交?
集群环境:采用token加redis(redis是单线程的,处理需要排队)
处理流程:
1、数据提交前要向服务申请token,token放到redis内存,token有效时间
2、提交后后台校验token,同时删除token,生成新的token返回
13、什么是微服务?
将工程根据不同的业务规则拆分成微服务,部署在不同的机器上。服务间进行相互调用。
14、什么是web服务?
- web service就是一个应用程序,它向外界暴露出一个能够通过web进行调用的API
- 基于HTTP协议传输数据,这使得运行在不同机上的不同应用程序,无需借助附加的、专门的第三方软件和硬件,就可以相互交换数据或集成
15、谈一下你的项目选择Struts2的理由?
- Action是POJO类,没有依赖Servlet API,具有良好的可测试性;
- 强大的拦截器,简化了开发的复杂度;
- 支持多种表现层技术:JSP、Freemarker等;
- 灵活的验证方式;
- 国际化(I18N)支持
- 声明式异常管理;
- 通过JSON插件简化Ajax;
- 通过Spring插件跟Spring整合;
16、谈一下拦截器和过滤器的区别?
拦截器和过滤器都可以用来实现横切关注功能,其区别主要在于:
- 拦截器是基于JAVA反射机制的,而过滤器是基于函数回调的
- 过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器
- 拦截器只能对Action请求起作用(Action中的方法),而过滤器可以对几乎所有的请求起作用(CSS JSP JS)
17、Spring支持的事务管理类型?
- 编程式事务管理:编程的方式管理事物,极大的灵活性,难维护
- 声明式事务管理:可以将业务代码和事物管理分离、只需要用注解和XML配置来管理事物
想要学习更多的知识可以,工众号:编程领域
配套学习:Java初学者入门教程>>>
实战游戏项目:大鱼吃小鱼>>>