2021/01/25背题笔记
好久没有学习了,是时候再捡起来了
-
什么是mysql事务,事务的四大特性?
事务就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。
ACID:原子-一致-隔离-持久
原子:需要保证事务是原子性的,即不可被外界分割的一个整体操作
一致:可以理解为是保持一致正确的状态,从一个一致状态转到另一个一致状态
隔离:事物之间不会出现干扰情况
持久:事务一旦提交,对数据库的改变僵尸永久的 -
缓存过大如何解决?
执行Redis淘汰策略?6种-random(allkey,volatile),lru(allkey,volatile) ttl(volatile) no-enviction -
redis的底层数据结构,详细说明zset?
string,hash,list,set,zset
zset,有序集合,按照权值排列,zrange start end可以从小到大拿出元素
底层采用hash字典+skiplist/ziplist(个数小于128,key和value小于64kb采用压缩),采取抛硬币的方式进行上浮,如果两两一组决定上浮,时间复杂度就和二叉树很像
为何不用红黑树作为底层,是因为虽然两者,增删改,都一样,但是范围查找对红黑树来说比较困难 -
redis 穿透、雪崩,如何解决,该解决方法可以如何改进
穿透-数据不仅在缓存中不存在,在数据库中也不存在-(黑客恶意访问不存在的数据)-----布隆过滤器
雪崩-大量热点数据同时失效,可以理解为多个缓存击穿同时发生,-----随机分配热点数据过期时间 -
tcp首部结构以及相关场景题
tcp(16位源端口+16位目的端口)+(32位序号)+(32位确认序号)+(4位首部长度+保留6位+6位状态码+16位窗口大小)+(16位校验和+16位紧急指针)
5个(),共20字节 5*32/8 -
操作系统-系统调用fork()
子进程与父进程共同使用同一代码段,但是数据不互通
如果fork成功,父进程返回子进程id,子进程返回0,如果失败,父进程返回error -
awk
不太了解,应该是linux处理文本文件的一种技术 -
如何查看进程、如何查看线程,这些数据是存储在哪里的
ps -ef |grep programname 查看进程pid
再使用 ps -Lf pid 查看对应进程下的线程数.
存储到哪里?-不知道-磁盘? -
DNS域名解析过程
浏览器缓存->hosts文件->本地域名解析服务器(校园网)->{根域名解析服务器->主域名解析服务器gTLD(已经达到.com,.cn这种级别了)返回name server服务器->本地域名解析服务器去请求nameserver服务器返回ip}->本地域名解析服务器解析出来返回给用户 -
DNS劫持
本机入侵,比如修改浏览器缓存,修改hosts文件
路由器入侵,
攻击DNS服务器,少见 -
mysql如何更新索引
对于非唯一性索引,InnoDB会进行change buffering操作。将更改排入队列,之后再在后台将其合并到索引中
唯一索引,是需要进入磁盘进行校验的,因为无法确定新的索引会不会和原来的索引产生冲突,违背唯一性 -
redis的单线程模型
使用单线程模型能带来更好的可维护性,方便开发和调试;
使用单线程模型也能并发的处理客户端的请求(IO多路复用)
Redis 服务中运行的绝大多数操作的性能瓶颈都不是 CPU;(Redis 并不是 CPU 密集型的服务,如果不开启 AOF 备份,所有 Redis 的操作都会在内存中完成不会涉及任何的 I/O 操作) -
IO多路复用(上道题中提到了所以就问了)
select poll epoll -
redis持久化方式
RDB-AOF -
一致性哈希
环的那个,便于拓展和删除 -
解释什么是内核态、用户态,如何切换
内核态--控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。
用户态--提供应用程序运行的空间
异常,中断,系统调用 -
进程和线程的区别
进程下细分为多个线程,一个程序跑起来就是一个进程,但是这个进程可以有多个线程并行执行
进程是系统调用的基本单位,线程是CPU调度的基本单位 -
进程的通信方式
管道,有名管道,信号,信号量,消息队列,共享内存,套接字 -
线程的通信方式
锁机制,信号机制,信号量机制 -
分布式cap理论相关
一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

浙公网安备 33010602011771号