面试常见问题汇总

基础篇

Nginx 作用是什么,为什么这么高效: 反向代理,主进程接收请求,工作进程异步非租塞的处理

负载均衡算法有哪些:随机,轮询,加权随机,ip hash 等

ng怎么解决惊群现象:加锁

ng用的是什么实现多路复用:epoll,

epoll的原理,底层数据结构,和其他多路复用对比的优点:红黑树,双链表,有点事没有限制连接数,也不会有用户态和内核态复制。

水平触发和边缘触发区别。

IO模型有哪些,阻塞和非租塞,同步和异步的区别是什么?

TCP和UDP的区别

TCP为什么是可靠的

TCP三次握手和四次挥手流程和状态怎样的,为什么要三次握手 四次挥手 两次握手不行吗?

timewait 表示什么意思 closewait表示什么状态  没有timewait可以吗,没有会出现什么问题

TCP为什么可靠:应答模式 校验 拥塞控制,滑动窗口

TCP有什么问题吗?

拥塞控制算法有哪些,详细说明:慢启动,拥塞避免,快重传,快恢复。

https和http的区别;

https的建立连接过程;

加密用的是什么加密;

对称加密和非对称加密区别

输入一个url比如 www.baidu.com发生了什么:域名解析:浏览器缓存-本地host-本地域名服务器缓存  --跟服务器域名解析-二级域名服务器解析。

递归查询和迭代查询的区别:递归没有返回,迭代每次有返回 例如 浏览器缓存-本地host-本地域名缓存  是递归 ,-跟服务器域名解析-二级域名服务器解析-主机域名系统是迭代

linux 查看端口号命令,其他常用命令

进程 线程 协程区别;进程:资源分配的单位,独占内存空间,线程:CPU调度的基本单位,共享内存空间。协程:用户级别的线程,

进程通信方式

协程为什么这么快 :用户级线程 不消耗内核资源

线程的状态有哪些:创建 就绪 运行 阻塞 结束

常用限流方案有哪些:令牌桶和漏斗

mysql:

mysql存储引擎有那些,有什么特点

InnoDB的特点有那些:行级锁,支持事物,支持外键,不支持全文索引

mysql索引有哪些:主键索引,唯一索引,普通索引,多列索引

mysql的事物有哪些特点:ACID

事物的隔离级别有哪些,分别是怎么实现的,

默认隔离级别是什么?

幻读怎么解决的:记录锁和间隙锁

锁加在什么地方:索引上

索引结构是什么样的 ,为什么使用B+树:查询磁盘次数少,范围查询快

聚族索引和非聚族索引的区别

如何排查慢查询问题:查看执行计划

什么情况下索引失效,

什么叫回表查询

一条SQL查询和读取的流程是什么样:

查询:校验-缓存-sql解析器-sql优化器-存储引擎

更新:先查询-更新-pre commit redo log - bin log -commit redo log (两阶段提交)

如果bin log 写成功宕机会恢复吗?写失败呢?

redo log 和undo log ,bin log分别有什么作用。

mysql主从复制的原理:slave起两个线程:IO线程 和SQL线程,IO线程接收master发来的binlog ,写入delay log SQL线程重新执行。

binlog 的模式有几种:row, statement,mixed

mvcc怎么实现的。

InnoDB特点:checkpoint,插入缓存(解决普通索引插入性能问题),两次写,异步IO(IO合并),自适应hash,刷新领近页

两次写的流程,解决什么问题。 解决宕机磁盘页写失败的问题

mysql的LRU算法是什么样的

mysql主从延迟怎么解决: 更好的硬件,更多的slave 降低slave的压力,关闭slave的binlog等

分库分表怎么实现:垂直分库分表和水平分库分表

redis:

redis数据类型

redis为什么这么快

redis数据类型的编码格式

SDS和字符窜的区别:SDS会冗余分配空间,小于1m按照二倍的方式扩容,超过1m 每次多扩容1m

redis的zset的底层结构:skiplist

跳跃表和红黑树的区别,为什么不用红黑树:跳跃表简单,省空间 是和范围查询

redis的持久化方式:RDB和AOF

两种持久化方式的优缺点

redis的删除策略:定时删除和懒删除

redis的内存淘汰策略:8中,按照key的范围和算法来记,范围包括所有key和带有超时时间的key,算法有随机 LRU LFU,ttl,在加上不淘汰。

redis 高可用方案:主从,哨兵 集群;分别有什么问题,主从不能实现宕机自动切换,哨兵可以切换但存在单点空间不足问题,集群解决了单点容量不足问题。

redis集群最多一般多少个节点:1000,

为什么分slot是16384个:从空间消耗和满足均匀分配上理解。

主节点下线评判标准是什么:主观下线和客观下线

哨兵主从切换的流程:选哨兵master节点,然后选redis master节点,原则是:优先级高的>事物ID较大的>服务ID小的

一致性hash原理,解决什么问题,如果节点过少会导致什么问题,解决办法是什么:一致性hash解决分布式缓存扩容时数据迁移的问题,节点比较少导致所有key存到一个节点上,增加虚拟节点,类似于redis集群的slot。

大key怎么解决

热点key怎么解决:增加本地换粗

缓存穿透,缓存击穿,缓存雪崩什么意思,怎么解决

redis如何实现分布式锁

kafka:

kafak的使用场景

kafka为什么这么快:并行写入,顺序写,磁盘缓存,0拷贝,压缩,合并发。

0拷贝原理是什么。

有哪些0拷贝方案:kafka使用的是那种 写入是mmap,消费是sendfile.

mmap有哪些问题:一般有空间限制,1.5-2G 这也是rocketMQ 日志文件为1G的原因。

kafka怎么保证可靠性:从producer ,broker,consumer三个角度去答。

producer 提供ACK机制 0 1 -1;

broker:实现灾难恢复。

consumer:提供自动提交和手动提交。

broker灾难恢复的原理:ISR HW保证性能和一致性的平衡。

ISR OSR AR什么意思

LEO什么意思。

consumer在均衡什么时候发生:消费者数量变化,消费组监听的topic变化,partion增加。

在均衡流程:先选coordinator,再选主consumer,再根据配置算法来做,(选举协调器的算法和选举consumer算法欢迎补充)

算法有哪些:range, round robin,sticky。

kafka怎么解决脑裂:epoch递增

kafka怎么实现事物:(如果问这个你就问他你用kafka来实现了事物了吗)

zookeeper:

zk可以做什么?

zk的节点类型有哪些

zookeeper怎么实现可靠性:zab协议

zab协议实现原理:原子广播协议和灾难恢复 ,原子广播是答两阶段提交,灾难恢复答选主流程。(zxid,serverID)

zab怎么解决脑裂呢;epoch

怎么实现不重复消费:我理解,手动提交加上标签

分布式理论:

CAP:CP,AP方案有哪些

BASE

两阶段提交 三阶段提交 TCC,最终一致性。

算法:

滑动窗口

动态规划

数据结构

链表

golang:

golang特点,

channel原理

GMP模型,GP模型不行吗?

垃圾回收原理:三色标记,

三色标记解决什么问题:STW

什么时候会造成对象错误回收:黑色标记应用白色标记,同事灰色标记断开白色标记的引用。

怎么避免对象错误回收:写屏障和删屏障

内存分配原理

sync.map怎么实现线程安全的:读写分离

defer的原理

你对加班怎么看:答我爱工作

很好,你要多少钱:答够吃就好,如果给一百万也不介意

你可能感兴趣的:(面试常见问题汇总)