当前位置: 首页 > 后端技术 > Python

python面试准备知识点

时间:2023-03-26 11:29:47 Python

linux如何监控你的应用程序的资源消耗g][-t]写一个定时检测的脚本,发送通知CPU占用率高可能是什么问题,CPU占用率低响应慢可能是什么问题?检查死循环,优化循环检查内存不足,磁盘IO和硬盘IO速度会变慢,如何解决?可能存在高并发、攻击、大量读写操作。使用CDN隐藏服务器IP,分布式架构。设计闪购系统,需要考虑哪些问题,如何解决闪购系统场景特点:闪购时会出现大量用户同时抢购,网站流量瞬间暴增。在秒杀中,访问请求的数量远大于存量,只有小部分用户能够秒杀成功。秒杀的业务流程比较简单,一般就是下单,减少库存。应对高并发:拆分:负载均衡。当前限制:每个服务器的当前限制。削峰:消息队列可以削峰,会拦截大量的并发请求。异步处理:消息队列也是一个异步处理过程。后台业务根据自身处理能力主动从消息队列中拉取请求消息进行业务处理。使用缓存:使用缓存可以大大提高系统的读写速度。高可用:主备升级服务器配置:升级带宽、CPU、内存等具体:前端:使用CDN,禁止重复提交。后端:负载均衡,限制访问频率,用redis代替mysql,用MQ。防止超发:使用rediswatch分布式乐观锁解决高并发下的超买超卖问题。mysql事务隔离级别,MVCC机制MVCC的全称是“多版本并发控制”。这种技术使得在InnoDB的事务隔离级别下执行一致的读操作成为可能,换句话说,查询一些正在被另一个事务更新的行,并在它们被更新之前查看它们的值。这是一种可用于提高并发性的强大技术,因为查询不必等待另一个事务释放锁。这种技术在数据库世界中并不常用。其他一些数据库产品,以及mysql的其他存储引擎不支持。MVCC的实现是通过保存数据在某个时间点的快照来实现的。每行数据中额外保存两个隐藏列:当前行创建时的版本号和删除时的版本号(可能为空,其实还有一列叫回滚指针,用于事务回滚,不在本文讨论范围内)。mysql的主从同步方案有哪些,优缺点对比?实现原理?MySQL的主备也是通过binlog实现数据一致性的。mysql索引,为什么要用B+树mysql分库分表,redis缓存雪崩、缓存穿透、缓存击穿如何实现,redis数据结构、持久化、内存、算法、列表如何解决,zset如何实现?对比redis和memcached如何解决redis和mysql的数据一致性问题?无论是先写MySQL数据库,再删除Redis缓存,还是先删除缓存,再写数据库,都可能出现数据不一致的情况。举个例子:1、如果删除了Redis缓存,另外一个线程在写入数据库MySQL之前读取了它,发现缓存为空,然后从数据库中读取数据写入缓存。这时候,缓存中就包含了脏数据。.2.如果先写库,删除缓存前,写库的线程挂了,不删除缓存,也会出现数据不一致的情况。第一种方案:采用延迟双删策略,在写数据库前后分别执行redis.del(key)操作,并设置合理的超时时间。方案二:异步更新缓存(基于订阅binlog的同步机制)。一旦MySQL中产生新的写入、更新、删除等操作,就可以将binlog相关的消息推送到Redis,Redis就可以使用binlog中的记录,来更新Redis。分布式事务是如何实现的?分布式锁如何实现分布式全局唯一id如何实现分布式会话共享方案?分布式系统如何保证数据一致性分布式架构设计:单点登录、分布式缓存、数据库优化让你实现一个MQ,如何保证消息不丢失HTTPS请求到响应过程TCP三次握手,四次握手线程安全需要注意什么Hashmap实现原则面向对象设计原则