Open luanguang opened 4 years ago
智团
数据库索引最左原则 模糊搜索最左开头不模糊匹配是可以使用到索引的 联合索引(A,B,C)使用的顺序必须是A-B-C,不然不会使用索引。
数据库索引类型 普通索引、联合索引、唯一索引、主键索引、全文索引
redis初始多少个数据库 16个
红黑树、B树、B+树区别,为什么数据库用B+树 红黑树是弱二叉树,用于linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块 B树是树状,每个节点都能够存储数据,并且排序完毕,一直延伸 B+树是对B树的优化,树有根结点都相当于目录,只有叶节点进行存储数据,这样子查询更快,并且命中率更高。
数据库热备份 自己使用过的是Xtrabackup一款开源的mysql备份软件。但是对方希望用binlog来进行备份。
队列的使用场景 主要用于异步处理大量耗时操作。我遇到过的使用队列的基本是短信推送,积分发放,邮件发送。 以及限流,这个限制访问次数,好像有遇到,但是不太记得了。 还有就是在登陆的时候密码错误次数限定
多技
I/O复用 这个跟select、poll、epoll有关,一个tcp链接一个进程,少的时候没关系,但是多了就有问题。于是有了一个进程里面有多个线程进行链接,但是没有立刻执行,在系统有数据返回的时候再循环这些线程,给需要的线程进行执行。这是select。
而这样子循环也是很缓慢的,有性能问题。于是记录下每个线程的一个id,当系统返回数据的时候也传回id,就能直接去线程里查找这些id,不要每次都循环遍历。这是epoll。poll只是对select进行记录,并没有实质性的大变化。
redis为什么快 首先redis是将记录在内存当中的。而内存的速度原本就要比硬盘快上很多,不需要进行硬盘读取的I/O。 数据结构简单,他是Nosql。 单线程阻塞I/O。不需要进行线程之间的切换(历史问题,现已经改成多线程)。
258M的服务器内存,如何对1G的文件进行排序。 这是一个很典型使用归并算法的题目,还是需要申请磁盘空间,时间复杂度是nlogn。优化之后最好能达到n。
简单的依赖注入和控制反转 依赖注入很简单,构造函数,然后传特定的类进去。控制反转则需要进行判断他需要什么类,然后传进去。
并发时QPS多少。 这个由于是运维当时观察,我并没有看到是多少,至于升级的服务器还是由运维来决定的。 pv 是指页面被浏览的次数,比如你打开一网页,那么这个网站的pv就算加了一次; tps是每秒内的事务数,比如执行了dml操作,那么相应的tps会增加; qps是指每秒内查询次数,比如执行了select操作,相应的qps会增加。