python 面试准备知识点

linux 怎样监控自己的应用消耗资源情况

top 查找出耗CPU,内存资源较多的进程pid

top -Hp pid

ps  -ef

pstree -Aup

free [-b|-k|-m|-g] [-t]

写脚本定时检测,发通知

CPU占用高可能是什么问题,CPU占用低单响应慢有可能是什么问题?

检查死循环,优化循环

检查内存不足,磁盘IO

硬盘IO速度会变慢,有什么解决办法?

有可能是高并发,攻击,大量读写操作。使用CDN隐藏服务器IP,分布式架构。

设计一个秒杀系统,考虑哪些问题,如何解决

秒杀系统场景特点:

秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。
秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功。
秒杀业务流程比较简单,一般就是下订单减库存。
应对高并发:

分流:负载均衡。
限流:每台服务器限流。
削峰:消息队列可以削峰,将拦截大量并发请求。
异步处理:消息队列也是一个异步处理过程,后台业务根据自己的处理能力,从消息队列中主动的拉取请求消息进行业务处理。
使用缓存:用缓存可极大提高系统读写速度。
高可用:主备
升级服务器配置:升级带宽,CPU,内存等
具体:

  1. 前端:使用CDN,禁止重复提交。
  2. 后端: 负载均衡,限制访问频率,使用redis而不用mysql,使用MQ。
  3. 防止超发:采用redis的watch分布式乐观锁,解决高并发下的超买超卖问题。

mysql 事务隔离级别, MVCC机制

       MVCC的全称是“多版本并发控制”。这项技术使得InnoDB的事务隔离级别下执行一致性读操作有了保证,换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值。这是一个可以用来增强并发性的强大的技术,因为这样的一来的话查询就不用等待另一个事务释放锁。这项技术在数据库领域并不是普遍使用的。一些其它的数据库产品,以及mysql其它的存储引擎并不支持它。

       MVCC的实现,通过保存数据在某个时间点的快照来实现的。在每一行数据中额外保存两个隐藏的列:当前行创建时的版本号和删除时的版本号(可能为空,其实还有一列称为回滚指针,用于事务回滚,不在本文范畴)。

mysql 主从同步方案有哪些,优劣势比较?实现原理?

MySQL的主备也是通过binlog来实现的数据一致性。

mysql 索引,为什么用B+树

mysql 分库分表如何实现

redis 缓存雪崩,缓存穿透,缓存击穿怎么发生的,如何解决

redis 数据结构,持久化,内存,算法,list, zset如何实现的?

redis 和 mongodb的使用场景

redis 和 memcached的比较

如何解决 redis 和 mysql 的数据一致性?

不管是先写MySQL数据库,再删除Redis缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况。

举一个例子:

1.如果删除了缓存Redis,还没有来得及写库MySQL,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据。

2.如果先写了库,在删除缓存前,写库的线程宕机了,没有删除掉缓存,则也会出现数据不一致情况。

第一种方案:采用延时双删策略

在写库前后都进行redis.del(key)操作,并且设定合理的超时时间。

第二种方案:异步更新缓存(基于订阅binlog的同步机制)

一旦MySQL中产生了新的写入、更新、删除等操作,就可以把binlog相关的消息推送至Redis,Redis再根据binlog中的记录,对Redis进行更新。

 

分布式事务如何实现的?

分布式锁如何实现

分布式全局唯一id如何实现

分布式session的共享方案?

分布式系统如何保证数据一致性分布式架构设计:单点登录,分布式缓存,数据库优化

让你实现一个MQ,如何保证消息不丢失

https 的请求到响应的流程

TCP三次握手,四次挥手

线程安全 需要注意什么

hashmap 实现原理

面向对象的设计原则

你可能感兴趣的:(python)