1.自我介绍、科研介绍、项目介绍、实习介绍
2.实习内容涉及了redis,问了redis的数据类型,sortedset一般用于什么情况
排行榜取topK
3.redis为什么不可靠,怎么变得可靠
1)异步主从复制,没复制完master宕机
2)脑裂,master脱离连接范围,哨兵选举新的mastere,client没来得及切换继续发送到旧master,数据丢失
这里面试官还提示了并发场景,但是我只知道redis单线程上面两种情况数据丢失,有大佬解答一下吗
4.实习内容涉及了MQ,问了几种MQ的对比
5.事务是干什么的,事务特性,事务隔离级别,mysql默认级别,为什么是RR
1)作用:保证数据的一致性和完整性
2)特性:ACID(原子性,隔离性,持久性,一致性)
3)隔离级别:读取未提交,读取已提交,可重复读,可串行化
4)默认级别:可重复读
5)原因:当时答了在一致性和性能之间做平衡,但是后来详细看到如下解释:
低版本的MYSQL,使用RC+STATEMENT组合会导致主从不一致(1.5之前binlog只有statement格式,按照commit时间顺序保存,先插入后删除,master时先删除后插入),
但在RR级别下binlog任何格式都不会造成主从不一致,现在已经修复了问题,但沿用了老的设定
binlog不同模式:
statement:每修改一条会修改数据的sql都记录在binlog 一致性问题
Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改 一条update执行多次,多条数据
Mixedlevel: 是以上两种level的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog
6.CAS原理,如果比较不相等会怎么样,自旋锁为什么要不断重试,CAS性能什么时候比锁差
1)原理:CAS是比较值,如果值相等则变换,不相等只返回当前值,多线程下会自旋竞争
2)这个我也不大会,感觉是因为用到CAS自旋,默认是乐观情况,几乎不存在竞争,不断重试等待保持者释放锁就立刻竞争?
3)单核CPU?
7. linux命令,看进程id,端口状态
1) 进程id:ps -ef
2) 具体端口状态:netstat -anp |grep 端口号
8. 数据库,mysql索引,插入数据索引维护,最坏会发生什么
1) B+树 blabla
2)整个树进行一个平衡的调整
9.四次挥手,close_wait和time_wait是什么,如果出现大量time_wait会是什么原因
1)四次挥手 blabla
2)close_wait 服务端还有消息没法送完时候
3) time_wait 客户端 最后的ACK发送完等待2MSL时间,如果丢失重发时间2MSL,上一次链接的消息完全消失
4) 出现大量time_wait:在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常关闭连接。这个场景下会出现大量socket处于TIME_WAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。
具体一点,短连接表示“业务处理+传输数据的时间 远远小于 TIMEWAIT超时的时间”的连接。比如取一个web页面,1秒钟的http短连接处理完业务,在关闭连接之后,这个业务用过的端口会停留在TIMEWAIT状态几分钟,而这几分钟,其他HTTP请求来临的时候是无法占用此端口的。这样大量端口占用造成严重的资源浪费
至于如何处理的话,”打开系统的TIMEWAIT重用和快速回收“
10.反问
全部评论
(5) 回帖