IT行业经典非技术面试题汇总
工作面试自我介绍怎么说?(附范文)
Java实习生笔试
我碰到的Java实习面试题集合
java类的初始化及实例初始化加载顺序
https://blog.csdn.net/qq_38815856/article/details/90107122
java最全的单例模式详解
https://blog.csdn.net/qq_38815856/article/details/90114864
面向对象主要有四大特性
redis持久化
RDB持久化:
是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
优点:
- 节省磁盘空间
- 恢复速度快
缺点:
- 虽然redis在fork是使用了写实拷贝技术,但是如果数据庞大还是比较耗费性能。
- 在备份周期在一定时间做一次备份,所以如果redis意外down掉,会丢失最后一次修改。
AOF持久化:
以日志的形式记录服务器所处理的每一个写、删除操作。查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
优点:
- 备份机制更稳健,丢失数据概率更低
- 可读日志文本查询处理误操作
缺点:
- 比RDB占用更多的磁盘空间
- 恢复备份更慢
- 每次读写都同步,有一定性能压力
redis持久化的两种方式
https://www.cnblogs.com/chenliangcl/p/7240350.html
Mysql建立索引场景
定义:可以理解为“排好序的快速查找数据结构”。
优势:
- 提高检索效率,降低数据库的IO成本
- 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU消耗
劣势:
- 降低了更新表的速度,对表进行insert、update和delete都会对调整因为更新所带来的键值变化后的索引信息,因为更新表会更新这些索引信息
- 所以也是一张表,保存了逐渐与索引字段,并指向实体表的记录,所以要占用空间。
使用场景:
- 主键自动创建唯一索引
- 频繁作为查询条件的字段
- 查询中与其他表关联的字段,外键关系建立索引
- 单键/组合索引的选择问题,组合索引性价比更高
- 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
- 查询中统计或者分组字段
不适用场景:
- 记录太少
- 经常改动
- where条件里用不到的字段
- 过滤性不好的字段(比如性别难以定义出单条数据)
Redis在项目中的使用
数据类型 | 使用场景 |
String | 比如说 ,我想知道什么时候封锁一个IP地址。Incrby命令 |
Hash | 存储用户信息【id,name,age】 Hset(key,field,value) Hset(userKey,id,101) Hset(userKey,name,admin) Hset(userKey,age,23) ----修改案例---- Hget(userKey,id) Hset(userKey,id,102) 为什么不使用String 类型来存储? Set(userKey,用信息的字符串) Get(userKey) 它会取出多余的字段序列化,影响性能 |
List | 实现最新消息的排行,还可以利用List的push命令,将任务存在list集合中,同时使用另一个命令,将任务从集合中取出[pop]。 Redis—list数据类型来模拟消息队列。【电商中的秒杀就可以采用这种方式来完成一个秒杀活动】 |
Set | 特殊之处:可以自动排重。比如说微博中将每个人的好友存在集合(Set)中, 这样求两个人的共通好友的操作。我们只需要求交集即可。 |
Zset | 以某一个条件为权重,进行排序。 京东:商品详情的时候,都会有一个综合排名,还可以按照价格进行排名。 |
Elasticsearch 和 Solr 的区别
背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】
区别:
- 当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。
- 在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。
- Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】
- Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。
- Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。单纯的对已有数据进行检索的时候,solr效率更好,高于es。
- Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多有第三方插件。