面试
文章平均质量分 92
一个忧国忧民的程序员
这个作者很懒,什么都没留下…
展开
-
JavaWeb方向-面试汇总
JVM 1. 垃圾回收算法 标记-清除:标记已死对象,GC时直接清除。CMS回收器使用。 特点: 简单、速度快,但会留有内存空间碎片,空间碎片会导致后面的GC频率增加。 适合场景:只有小部分对象需要进行回收的,因为回收对象太多,其清除的时间就会越长。关注引用停顿时间,因为收集速度快,用户线程停顿的时间较短。 标记-复制:将内存分为两块区域,标记已死对象,GC时将存活对象复制到另一块区域,清除已死对象。 特点:收集速度快,可以避免空间碎片,但是有空间浪费,存活对象较多的情况下会非常耗时,而原创 2020-11-28 22:15:18 · 260 阅读 · 0 评论 -
RabbitMQ总结
简介 RabbitMQ是一个消息代理。它的工作就是接收和转发消息。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ就扮演着邮箱、邮局以及邮递员的角色。 RabbitMQ和邮局的主要区别在于,它处理纸张,而是接收、存储和发送消息(message)这种二进制数据。 名词解释 Produce:生产者,即消息的制造者 Consume:消费者,即消息的使用者 Queue:MQ中的队列,所以消息都会从队列中排队进出,先入先出 Exchange:交换机,M原创 2020-11-11 17:31:52 · 98 阅读 · 0 评论 -
缓存之缓存击穿/穿透/雪崩
Redis高频面试题 缓存穿透 概念 有一个查询接口,频繁接受到数据库中并不存在的查询条件,每次根据key查询缓存中都查不到,则这些查询请求纷纷落到数据库上,请求量大,造成数据库频繁IO最终宕机。例如接口是根据id获取用户,查询参数为-1、-2这种数据库根本没有的数据。 解决方案 1. 在Redis中缓存不存在的查询结果。 每当接口被请求时,如果数据库返回为空,则依旧往Redis里根据查询的key写入缓存,这样下次再来同样的请求则可以直接走缓存取数据 问题 当频繁调用接口查数据这个操作是黑客在弄时,就会发现原创 2020-08-14 16:11:18 · 133 阅读 · 0 评论 -
HTTP1.0/1.1/2.0的区别
HTTP1.1与1.0的区别 长连接 1.0默认在HTTP请求响应结束后会关闭TCP通道,每个HTTP请求都要重复创建/销毁TCP通道的过程。 1.1默认支持长连接,即创建一个TCP通道可以运输N个HTTP请求,通过request header 的Connection = keep alive来标识这是一个长连接,在响应回来后不销毁TCP通道,关Connection=close时,销毁通道。 Host属性 1.0的request header中并没有Host属性 1.1后因为虚拟主机技术发达,一个IP可能原创 2020-08-11 19:17:01 · 142 阅读 · 0 评论 -
Mysql面试题总结
一. Mysql两种引擎的区别 InnoDB 支持行锁和表锁,默认为行锁 行锁:在更新数据时锁住某条数据,性能差,并发效率高 表锁:在更新数据时锁住整个表,性能好,并发效率低 支持acid的事务操作,支持事务的四种隔离级别 聚集索引,索引文件,主索引key存储主键值,value存储其它数据;辅索引key存储索引的值,value存储主键,使用索引查询数据时涉及到回表操作 select count(*)会触发全表扫描操作 MyIASM 只支持表锁,写请求优先于读请求锁表 不支持事务 非聚集索引,索引存储数原创 2020-08-10 15:15:22 · 74 阅读 · 0 评论