Skip to content

Commit 846b6be

Browse files
committed
Update
1 parent a437c20 commit 846b6be

File tree

4 files changed

+6
-149
lines changed

4 files changed

+6
-149
lines changed

MD/搜索引擎.md

Lines changed: 0 additions & 143 deletions
This file was deleted.

MD/数据库-MySQL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ MyISAM相对简单所以在效率上要优于InnoDB。如果系统插入和查
2929
答:`SELECT * FROM big_table order by xx LIMIT 1000000,20`,这条语句会查询出1000020条的所有数据然后丢弃掉前1000000条,为了避免全表扫描的操作,在order by的列上加**索引**就能通过扫描索引来查询。但是这条语句会查询还是会扫描1000020条,还能改进成`select id from big_table where id >= 1000000 order by xx LIMIT 0,20`,用ID作为**过滤**条件将不需要查询的数据直接去除。
3030

3131
#### 最左前缀匹配原则
32-
在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。mysql会一直向右匹配直到遇到范围查询(>/</between/like)就停止匹配,比如a=3 and b=4 and c>5 and d=6,如果建立(a,b,c,d)联合索引,d就用不到索引,如果建立(a,b,d,c)则都能用到索引。
32+
在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。mysql会一直向右匹配直到遇到范围查询(>/</between/like)就停止后面的匹配,比如a=3 and b=4 and c>5 and d=6,如果建立(a,b,c,d)联合索引,d就用不到索引,如果建立(a,b,d,c)则都能用到索引。
3333

3434
问:有个表特别大,字段是姓名、年龄、班级,如果调用`select * from table where name = xxx and age = xxx`该如何通过建立索引的方式优化查询速度?
35-
答:由于mysql查询每次只能使用一个索引,如果在name、age两列上创建联合索引的话将带来更高的效率。如果我们创建了(name, age)的联合索引,那么其实相当于创建了(name, age)、(name)三个索引,这是联合索引的特性,与联合索引的实现原理有关,也是最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。其次还要考虑该列的数据离散程度,如果有很多不同的值的话建议放在左边,name的离散程度也大于age。
35+
答:由于mysql查询每次只能使用一个索引,如果在name、age两列上创建联合索引的话将带来更高的效率。如果我们创建了(name, age)的联合索引,那么其实相当于创建了(name, age)、(name)2个索引,这是联合索引的特性,与联合索引的实现原理有关,也是最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。其次还要考虑该列的数据离散程度,如果有很多不同的值的话建议放在左边,name的离散程度也大于age。
3636

3737
## 事务隔离级别
3838
1. 原子性(Atomicity):事务作为一个整体被执行 ,要么全部执行,要么全部不执行;

MD/数据库-Redis.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Redis是一个键值对数据库,数据库中的键值对由字典保存。每
1111

1212
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/redis数据类型.png)
1313

14-
不同的数据类型的具体实现请看https://redisbook.readthedocs.io/en/latest/index.html#id3
14+
不同的数据类型的具体实现(压缩列表、跳表必看)请看https://redisbook.readthedocs.io/en/latest/index.html#id3
1515

1616
## 集群模式
1717
来源:

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
除开知识点,一定要准备好以下套路:
44
1. **个人介绍**,需要准备1分钟和5分钟两个版本,包括学习经历、工作经历、项目经历、个人优势、一句话总结。一定要自己背得滚瓜烂熟,张口就来
5-
2. **抽象概念回答方式**,当面试官问你是如何理解多线程的时候,你要知道从定义、来源、实现、问题、优化、应用方面系统性地回答
6-
3. **项目所占的比重是非常大的**,至少与知识点的比例是五五开,所以必须针对简历中的两个以上的项目,形成包括【架构和实现细节】,【正常流程和异常流程的处理】,【难点+坑+复盘优化】三位一体的组合拳
5+
2. **抽象概念**,当面试官问你是如何理解多线程的时候,你要知道从定义、来源、实现、问题、优化、应用方面系统性地回答
6+
3. **项目强化**,至少与知识点的比例是五五开,所以必须针对简历中的两个以上的项目,形成包括【架构和实现细节】,【正常流程和异常流程的处理】,【难点+坑+复盘优化】三位一体的组合拳
77
4. **压力练习**,面试的时候难免紧张,可能会严重影响发挥,通过平时多找机会参与交流分享,或找人做压力面试来改善
88
5. **表达练习**,表达能力非常影响在面试中的表现,能否简练地将答案告诉面试官,可以通过给自己讲解的方式刻意练习
9+
6. **重点针对**,面试官会针对简历提问,所以请针对简历上写的所有技术点进行重点准备
910

1011
### Java基础
1112
* [JVM原理](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/Java基础-JVM原理.md)
@@ -47,7 +48,6 @@
4748
* [数据结构-LRU淘汰算法](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/算法-数据结构-LRU淘汰算法.md)
4849
### 项目举例
4950
* [秒杀架构](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/秒杀架构.md)
50-
* [搜索引擎](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/搜索引擎.md)
5151
### 系统设计
5252
* [系统设计题答题套路](https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md#%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E4%B8%80%E4%B8%AA%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E7%9A%84%E9%9D%A2%E8%AF%95%E9%A2%98)
5353
* [在AWS上扩展到数百万用户的系统](https://www.wangtianyi.top/blog/2019/03/06/zai-awsshang-kuo-zhan-dao-shu-bai-mo-yong-hu-de-xi-tong/?utm_source=github&utm_medium=github)

0 commit comments

Comments
 (0)