企业面试总结
通过一礼拜的紧张面试,取得了许多的面试体会,总结了面试中碰到的问题,现对一些要紧问题进行总结,希望能给大伙儿以帮忙。
非项目方面
1. redis内存溢出及宕机状态的处置
redis存在于内存中,内存大小有限,也会存在宕机或重启致使内存数据清空的情形,现在咱们可通过对redis中的数据设置生存周期及对数据进行持久化操作来尽可能幸免这些情形带来的危害。 设置生命周期:到期后数据销毁 EXPIRE key seconds 设置生存时刻 PERSIST key
清除生命时刻(从头设值也会清除生命周期)
TTL key 查看剩余生存时刻 TTL返回值:
大于0的数字:剩余生存时刻,单位为秒i -1 : 没有生存时刻,永久存储 -2 : 数据已经被删除
持久化:是把数据从内存以某种形式持久化到磁盘上。
持久化方式:RDB(relational database)和 AOF(append only mode) RDB:
通过快照方式实现,当符合条件时就对内存数据进行快照并存储到硬盘上。快照的条件在配置文件中配置。由2个参数组成,时刻和改动的键的个数。
快照进程:
利用fork函数复制一份当前进程(父进程)的副本(子进程),然后父进程继续处置任务,子进程那么执行写入磁盘操作。写入完成后再用临时文件替旧的RDB文件。
AOF:
是将redis的每一条命令进行记录,并保留到磁盘的AOF文件中,重启后会执行该文件进行数据恢复,需要手动开启。
优化:aof会记录每一条命令,包括一条数据的多次操作,如此造成了冗余。可利用BGREWRITEAOF技术来进行重写,去除数据的中间执行进程,保留最终数据命令即可。重写的策略是当aof文件的大小超过上一次大小的某个比例时就会进行重写。
问题:文件是先写入缓存的,而缓存读取到硬盘需要时刻,假设在那个时刻数据丢失那也会致使数据的丢失。因此即便每秒做文件同步也可能致使数据丢失。
2. Spring注解开发的配置
此处会让你说出几个经常使用注解,说几个就行。有时还会问你注解底层怎么实现就说不太了解。
在xml配置文件中开启注解功能
@Component(value=\名称\ @Scope(value=\
利用构造方式创建对象 单例和多例
@Lazy(value=true/false) 延迟创建问题
相关推荐: