面试宝典

面试宝典

介绍

小编也是后台开发者,出去面试总会遇到一些棘手的问题,小编也是一头雾水,不知所措.特总结一下,方便后续面试者使用.
废话补多少,直蹦主题.

1 Java 中 sleep 方法和 wait 方法的区别

sleep是Thread类里的方法,此方法执行的时候,如果线程有锁,则锁机制没有被释放.并且需要抛异常.
wait 是Object类里的方法,此方法执行的时候,锁机制已经被被释放.并且不需要抛异常.wait属于Object的成员方法,一旦一个对象调用了wait方法,必须要采用notify()和notifyAll()方法唤醒该进程.

2 java当中的四种引用

强引用,软引用,弱引用,虚引用. 主要是考虑内存回收的问题.

3 BeanFactory和ApplicationContext有什么区别

1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。
2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:
a. 国际化支持
b. 资源访问:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”
c. 事件传递:通过实现ApplicationContextAware接口
3. 常用的获取ApplicationContext
FileSystemXmlApplicationContext:从文件系统或者url指定的xml配置文件创建,参数为配置文件名或文件名数组,有相对路径与绝对路径。

4 redis的穿刺和雪崩

1  缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义.
解决思路 : 可以缓存null值,设置较短的过期时间.或者使用隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力.
2  雪崩是指在一段时间类缓存过期,数据库面临巨大的压力,,请求全部转发到DB,DB瞬时压力过重雪崩.  
解决思路可以采用redis主从机制,或者redis的持久化,或者采用缓存标记法,设置标记时间为缓存时间的一段,当标记时间到的时候,启动任务更新缓存数据.

5 zset和set的区别

set是一个集合,它是string类型的无序集合,可以去重.
zset是在set的基础上增加了顺序,形成一个有序的集合,可以设置每个对象的分数.

在这里插入图片描述

待完成

作者:连理枝
转载请注明出处:https://mp.csdn.net/mdeditor/89163680