Skip to content

Commit 712ed07

Browse files
committed
整理面试资料
1 parent d70616b commit 712ed07

10 files changed

+207
-144
lines changed

_drafts/面试题/总结-cache-redis-local-cache.md

Lines changed: 14 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -1,146 +1,6 @@
11
总结-redis
22
===
3-
<!-- TOC -->
4-
5-
- [redis 基础](#redis-基础)
6-
- [什么是Redis?](#什么是redis)
7-
- [Redis支持哪几种数据类型?](#redis支持哪几种数据类型)
8-
- [Redis主要消耗什么物理资源?](#redis主要消耗什么物理资源)
9-
- [Redis的全称是什么?](#redis的全称是什么)
10-
- [Redis官方为什么不提供Windows版本?](#redis官方为什么不提供windows版本)
11-
- [一个字符串类型的值能存储最大容量是多少?](#一个字符串类型的值能存储最大容量是多少)
12-
- [为什么Redis需要把所有数据放到内存中?](#为什么redis需要把所有数据放到内存中)
13-
- [Redis如何设置密码及验证密码?](#redis如何设置密码及验证密码)
14-
- [怎么测试Redis的连通性?](#怎么测试redis的连通性)
15-
- [Redis中的管道有什么用?](#redis中的管道有什么用)
16-
- [怎么理解Redis事务?](#怎么理解redis事务)
17-
- [Redis事务相关的命令有哪几个?](#redis事务相关的命令有哪几个)
18-
- [Redis key的过期时间和永久有效分别怎么设置?](#redis-key的过期时间和永久有效分别怎么设置)
19-
- [Redis如何做内存优化?](#redis如何做内存优化)
20-
- [Redis回收进程如何工作的?](#redis回收进程如何工作的)
21-
- [Redis回收使用的是什么算法?](#redis回收使用的是什么算法)
22-
- [Redis如何做大量数据插入?](#redis如何做大量数据插入)
23-
- [为什么要做Redis分区?](#为什么要做redis分区)
24-
- [36、Redis持久化数据和缓存怎么做扩容?](#36redis持久化数据和缓存怎么做扩容)
25-
- [分布式Redis是前期做还是后期规模上来了再做好?为什么?](#分布式redis是前期做还是后期规模上来了再做好为什么)
26-
- [Twemproxy是什么?](#twemproxy是什么)
27-
- [支持一致性哈希的客户端有哪些?](#支持一致性哈希的客户端有哪些)
28-
- [Redis与其他key-value存储有什么不同?](#redis与其他key-value存储有什么不同)
29-
- [Redis的内存占用情况怎么样?](#redis的内存占用情况怎么样)
30-
- [都有哪些办法可以降低Redis的内存使用情况呢?](#都有哪些办法可以降低redis的内存使用情况呢)
31-
- [查看Redis使用情况及状态信息用什么命令?](#查看redis使用情况及状态信息用什么命令)
32-
- [Redis的内存用完了会发生什么?](#redis的内存用完了会发生什么)
33-
- [Redis是单线程的,如何提高多核CPU的利用率?](#redis是单线程的如何提高多核cpu的利用率)
34-
- [一个Redis实例最多能存放多少的keys?List、Set、Sorted Set他们最多能存放多少元素?](#一个redis实例最多能存放多少的keyslistsetsorted-set他们最多能存放多少元素)
35-
- [Redis常见性能问题和解决方案?](#redis常见性能问题和解决方案)
36-
- [如何选择合适的持久化方式?](#如何选择合适的持久化方式)
37-
- [修改配置不重启Redis会实时生效吗?](#修改配置不重启redis会实时生效吗)
38-
- [缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级](#缓存雪崩缓存穿透缓存预热缓存更新缓存降级)
39-
- [Redis常见的回收策略](#redis常见的回收策略)
40-
- [Redis插槽的分配](#redis插槽的分配)
41-
- [Redis主从是怎么选取的](#redis主从是怎么选取的)
42-
- [Redis队列应用场景;](#redis队列应用场景)
43-
- [Redis主节点宕机了怎么办,还有没有同步的数据怎么办;](#redis主节点宕机了怎么办还有没有同步的数据怎么办)
44-
- [Redis渐进式rehash过程?](#redis渐进式rehash过程)
45-
- [Tomcat缓存,聊下缓存的整体理解,知道多少种缓存;](#tomcat缓存聊下缓存的整体理解知道多少种缓存)
46-
- [Redis中zSet跳跃表问题;](#redis中zset跳跃表问题)
47-
- [Redis的set的应用场合?](#redis的set的应用场合)
48-
- [Redis的pipeline有什么用处?](#redis的pipeline有什么用处)
49-
- [Redis原子操作怎么用比较好;](#redis原子操作怎么用比较好)
50-
- [Redis过期策略是怎么实现的呢?](#redis过期策略是怎么实现的呢)
51-
- [缓存击穿问题,你们怎么做的?](#缓存击穿问题你们怎么做的)
52-
- [缓存更新怎么做的?](#缓存更新怎么做的)
53-
- [有哪些类型?,你用过哪些类型?](#有哪些类型你用过哪些类型)
54-
- [缓存机器增删如何对系统影响最小,一致性哈希的实现](#缓存机器增删如何对系统影响最小一致性哈希的实现)
55-
- [Redis的缓存失效策略](#redis的缓存失效策略)
56-
- [缓存和数据库的一致性问题](#缓存和数据库的一致性问题)
57-
- [Redis、MongoDB和Memcached的区别](#redismongodb和memcached的区别)
58-
- [多个用户请求同时第一次访问空的redis,怎么样不使redis崩溃?](#多个用户请求同时第一次访问空的redis怎么样不使redis崩溃)
59-
- [秒杀过程中怎么保证redis缓存和数据库的一致性?](#秒杀过程中怎么保证redis缓存和数据库的一致性)
60-
- [redis你们都用它做什么?怎么用的?](#redis你们都用它做什么怎么用的)
61-
- [redis是单线程的还是多线程的?为啥这么快?](#redis是单线程的还是多线程的为啥这么快)
62-
- [redis集群有哪些方式?你们怎么做的?客户端集群(shardingjedispool)原理是啥?](#redis集群有哪些方式你们怎么做的客户端集群shardingjedispool原理是啥)
63-
- [项目里用到了redis 为什么用它?](#项目里用到了redis-为什么用它)
64-
- [memcached是分布式吗?怎么实现memecached的分布式?](#memcached是分布式吗怎么实现memecached的分布式)
65-
- [多个线程同时访问为空的redis,怎么解决(这两个问题跟网易一模一样)](#多个线程同时访问为空的redis怎么解决这两个问题跟网易一模一样)
66-
- [他的存储结构有什么特点,做了什么优化。](#他的存储结构有什么特点做了什么优化)
67-
- [你们在使用redis 时 缓存过期时间设置多久?](#你们在使用redis-时-缓存过期时间设置多久)
68-
- [将一个Null 放入 key 中,调用jedis 的 key.len 返回什么(这个没听清)](#将一个null-放入-key-中调用jedis-的-keylen-返回什么这个没听清)
69-
- [**Redis单线程问题**](#redis单线程问题)
70-
- [**为什么说Redis能够快速执行**](#为什么说redis能够快速执行)
71-
- [**Redis的内部实现**](#redis的内部实现)
72-
- [**Redis关于线程安全问题**](#redis关于线程安全问题)
73-
- [**使用Redis有哪些好处?**](#使用redis有哪些好处)
74-
- [**redis相比memcached有哪些优势?**](#redis相比memcached有哪些优势)
75-
- [**Redis主从复制**](#redis主从复制)
76-
- [**Redis两种持久化方式的优缺点**](#redis两种持久化方式的优缺点)
77-
- [**Redis常见的性能问题都有哪些?如何解决?**](#redis常见的性能问题都有哪些如何解决)
78-
- [**Redis提供6种数据淘汰策略**](#redis提供6种数据淘汰策略)
79-
- [用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)](#用hashmap实现redis有什么问题死锁死循环可用concurrenthashmap)
80-
- [redis能把内存空间交换进磁盘中吗(这个应该是可以的,但是那个面试官非跟我说不可以)](#redis能把内存空间交换进磁盘中吗这个应该是可以的但是那个面试官非跟我说不可以)
81-
- [Redis的并发竞争问题如何解决](#redis的并发竞争问题如何解决)
82-
- [了解Redis事务的CAS操作吗](#了解redis事务的cas操作吗)
83-
- [redis 集群](#redis-集群)
84-
- [不同集群方式,他的数据是怎么分配的。](#不同集群方式他的数据是怎么分配的)
85-
- [你知道有哪些Redis分区实现方案?](#你知道有哪些redis分区实现方案)
86-
- [Redis分区有什么缺点?](#redis分区有什么缺点)
87-
- [Redis集群的主从复制模型是怎样的?](#redis集群的主从复制模型是怎样的)
88-
- [Redis集群会有写操作丢失吗?为什么?](#redis集群会有写操作丢失吗为什么)
89-
- [Redis集群之间是如何复制的?](#redis集群之间是如何复制的)
90-
- [Redis集群最大节点个数是多少?](#redis集群最大节点个数是多少)
91-
- [Redis集群如何选择数据库?](#redis集群如何选择数据库)
92-
- [Redis集群宕机如何处理,怎么样进行数据的迁移;](#redis集群宕机如何处理怎么样进行数据的迁移)
93-
- [Redis集群方案应该怎么做?都有哪些方案?](#redis集群方案应该怎么做都有哪些方案)
94-
- [11、Redis集群方案什么情况下会导致整个集群不可用?](#11redis集群方案什么情况下会导致整个集群不可用)
95-
- [redis 实现原理](#redis-实现原理)
96-
- [说说Redis哈希槽的概念?](#说说redis哈希槽的概念)
97-
- [Redis 内部结构是什么样的?Redis底层数据结构有哪些](#redis-内部结构是什么样的redis底层数据结构有哪些)
98-
- [Redis 为什么是单线程的?](#redis-为什么是单线程的)
99-
- [redis 运用](#redis-运用)
100-
- [MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?](#mysql里有2000w数据redis中只存20w的数据如何保证redis中的数据都是热点数据)
101-
- [Redis有哪些适合的场景?](#redis有哪些适合的场景)
102-
- [14、Redis支持的Java客户端都有哪些?官方推荐用哪个?](#14redis支持的java客户端都有哪些官方推荐用哪个)
103-
- [15、Redis和Redisson有什么关系?](#15redis和redisson有什么关系)
104-
- [16、Jedis与Redisson对比有什么优缺点?](#16jedis与redisson对比有什么优缺点)
105-
106-
<!-- /TOC -->
107-
108-
# redis 基础
109-
110-
## 什么是Redis?
111-
112-
Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
113-
114-
115-
## Redis支持哪几种数据类型?
116-
117-
String、List、Set、Sorted Set、hashes
118-
119-
## Redis主要消耗什么物理资源?
120-
121-
内存。
122-
123-
## Redis的全称是什么?
124-
125-
Remote Dictionary Server。
126-
127-
## Redis官方为什么不提供Windows版本?
128-
129-
因为目前Linux版本已经相当稳定,而且用户量很大,无需开发windows版本,反而会带来兼容性等问题。
130-
131-
## 一个字符串类型的值能存储最大容量是多少?
132-
133-
512M
134-
135-
## 为什么Redis需要把所有数据放到内存中?
136-
137-
Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。 如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
138-
139-
## Redis如何设置密码及验证密码?
140-
141-
设置密码:config set requirepass 123456
142-
143-
授权密码:auth 123456
3+
1444

1455
## 怎么测试Redis的连通性?
1466

@@ -156,8 +16,11 @@ ping
15616

15717
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
15818

159-
事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
19+
- 1. 单独的隔离操作:事务中的所有命令会被序列化、按顺序执行,在执行的过程中不会被其他客户端发送来的命令打断
20+
- 2. 没有隔离级别的概念:队列中的命令在事务没有被提交之前不会被实际执行
21+
- 3. 不保证原子性:redis中的一个事务中如果存在命令执行失败,那么其他命令依然会被执行,没有回滚机制,如果命令入队失败,则事务失败。
16022

23+
redis的锁CAS(check and set)类似于乐观锁,redis的实现原理是使用watch进行监视一个(或多个)数据,如果在事务提交之前数据发生了变化(估计使用了类似于乐观锁的标记),那么整个事务将提交失败
16124
## Redis事务相关的命令有哪几个?
16225

16326
MULTI、EXEC、DISCARD、WATCH
@@ -170,6 +33,9 @@ EXPIRE和PERSIST命令。
17033
## Redis如何做大量数据插入?
17134

17235
Redis2.6开始redis-cli支持一种新的被称之为pipe mode的新模式用于执行大量数据插入工作。
36+
cat data.txt | redis-cli --pipe
37+
- 1,把命令写到文件
38+
- 2,把协议数据写到文件
17339

17440

17541
## Redis与其他key-value存储有什么不同?
@@ -193,7 +59,8 @@ info
19359

19460
## Redis的内存用完了会发生什么?
19561

196-
如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回。)或者你可以将Redis当缓存来使用配置淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。
62+
- 当库使用,如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回。)
63+
- 当缓存来使用,配置淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。
19764

19865

19966
## 一个Redis实例最多能存放多少的keys?List、Set、Sorted Set他们最多能存放多少元素?
@@ -581,3 +448,7 @@ Redisson是一个高级的分布式协调Redis客服端,能帮助用户在分
581448
Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
582449

583450

451+
## 使用redis 的主从负责模式是怎么实现的,redis 的集群模式是如何实现的,redis 的key 是如何寻址的
452+
## 使用redis 如何设计分布式锁,使用zk可以吗,如何实现,这两种哪个效率更高
453+
## 知道redis的持久化吗,都有什么优缺点,具体底层是怎么实现的?
454+
## redis 过期策略都有哪些,lru,写一下java 版本的代码

_drafts/面试题/总结-java基础-语法-jdk-编译器.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111
* 若hashcode方法永远返回1或者一个常量会产生什么结果?
1212

13-
* Java Collections和Arrays的sort方法默认的排序方法是什么;
1413

14+
* Java Collections和Arrays的sort方法默认的排序方法是什么;
1515

1616
* 浅拷贝和深拷贝的区别;
1717

_drafts/面试题/总结-mq-rabbitmq-rocketmq.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,8 @@ rabbitmq 消息的ack?
7474

7575
消息中间件如何解决消息丢失问题
7676

77+
## 为什么使用消息队列啊?消息队列有什么优点和缺点
78+
## 如何保证消息队列的高可用?如何保证消息不被重复消费?
79+
## kafka,activemq,rabbitmq,rocketmq都有什么优点,缺点?
80+
## 如果让你写一个消息队列,改如何进行架构设计啊?说一下你的思路
81+

_drafts/面试题/总结-mysql-mongodb.md renamed to _drafts/面试题/总结-mysql-mongodb-es.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -857,3 +857,31 @@ MySQL InnoDB存储的文件结构
857857

858858

859859
、写一个sql语句,查询一张表中,发表批评最多的人
860+
861+
862+
## es 的工作过程实现是如何的?如何实现分布式
863+
## es 在数据量很大的情况下,如何提高查询销量的
864+
## es 的查询是一个怎么的工作过程?理财lucence 介绍下?倒排索引是怎么回事?
865+
## es 和mongodb 什么区别?都在什么场景下使用啊
866+
867+
868+
869+
使用mysql 索引都有哪些规则,所以呢什么数据结构,b+tree 和b tree 的区别
870+
## mysql 都有哪些存储引擎,都是啥区别
871+
## 设计高并发系统数据库层面该怎么设计
872+
## 数据库锁都有哪些类型,如何实现的
873+
## 数据库事务都有哪些
874+
## 如何设计可以动态扩容缩荣的分库分表方案
875+
## 用过哪些分库分表中间件,有啥优点,缺点
876+
## 将一些你了解的分库分表中间库的底层实现原理
877+
## 我现在有一个未分库分表的系统,以后系统需分库分表,如何设计,让未分库分表的系统懂得切换到分库分表系统上
878+
## 分布式事务知道吗,你们怎么解决的,tcc,那若出现网络原因,网络连接不通怎么办
879+
880+
## 未什么药分库分表
881+
## 分布式寻址方式都有哪些算法,知道一致性hash吗,手写一下java 实现,你若userId取模分片,那我要查一段连续时间里的数据怎么办
882+
5、第一二三范式是什么?
883+
884+
6、一个表一千个列值为true和false,写sql 查询 有300个列值为true的行。
885+
886+
7、脏读和幻读是什么?
887+
4、项目 MySQL 的数据量和并发量有多大?

_drafts/面试题/总结-soa-dubbo.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,6 @@ Dubbo的服务请求失败怎么处理
9999
Dubbo的服务请求失败怎么处理
100100
11、dubbo如何一条链接并发多个调用。Dubbo的原理,序列化相关问题。
101101

102+
## dubbo 支持哪些序列化协议,hessian,说些hessian的 数据结构,pb知道吗,为啥pb 效率是最高的
103+
## dubbo 负载均衡策略和高可用策略都有哪些,动态代理策略呢
104+

0 commit comments

Comments
 (0)