java面试题(二)

Java 后端面试题

一,单例模式的应用场景?

1.封装一些常用的工具类,摆正整个应用常用的数据统一
2.保存一些共享的数据在内存中,使其他类能随时读取
  • 其中优点在于:
一,提供了对唯一实例的受控访问
二,由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象,可以提高系统性能
  • 也有缺点
一,由于单例模式没有抽象层,所以扩展性有很大的
二,滥用单例模式将带来一些负面问题,例如,长时间不利用实例化对象,系统默认垃圾进行回收,导致对象状态的丢失;

二,高并发访问数据库优化方法

1.服务器配置优化
根据应用服务器的性能和并发访问量的大小进行规划服务器的数量,原则上单台应用服务器的性能不一样要求好,但是数量要够,并且有一定的多余来保障服务器故障
2.使用负载均衡技术
使用负载均衡服务器,把网站部署在两台或多台服务器上,在这几台服务器上通过安装特定软件实现负载均衡
3.数据库结构设计
程序层SQL语句优化
4.数据缓存技术的应用
类似Redis缓存,数据库数据不是直接传输,将数据调用到内存,从内存中读取

三,List接口、Set接口、Map接口的区别

List和Set 继承于 Collection,
List存储是无序的,Set存储的时候无法存放重复的元素,Map不能存入重复的 Key,而且是Key,value 键值对应的方式进行存储

四,Java GC 是什么时候,对什么东西,做了什么事情

无法确定什么时候运行,这个是由系统进行决定,无法预测
对可回收对象,这个对象的是否可回收根据 可达性分析算法,对象不可达,则可回收
删除不使用对象,回收内存空间,运行默认的finalize方法,在Java堆上分为新生代和老年代,也采用了不同的回收方式,新生代(复制算法);老年代(标记整理法)

五,简述JVM虚拟机调优

1.设置参数,
1)JVM的堆设置;
2)收集器设置
2.垃圾回收器的选择
1)串行收集器
2)并行收集器
3)并发收集器

六,Volatile和Synchronized的四个不同

Volatile不会造成线程的阻塞,Synchronized可能会造成线程阻塞
Volatile只能使用在变量,Synchronized 可以使用在变量,方法和类

七,Spring并发访问的线程安全问题和解决方法

怎么产生线程安全问题?
当只有一个Controller 的实例,而多个线程同时进行调用的时候,变量产生窜数据的问题
解决办法:

在控制器中不使用实例变量;
在控制器中使用 线程局部变量
修改Spring配置文件,使其每次创建新的控制器;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值