系统设计面试
1 系统设计面试官想要考察什么?
-
系统架构设计的能力
-
知识的广度与深度
-
综合能力 (开放性题目, 沟通能力, 系统抽象能力, 逻辑思维能力)
定级别是通过系统设计来的
2 如何准备系统设计
- 知识储备
可用性, 可扩展性, 性能, 安全性, 大数据量, 高并发, 分布式设计
- 多刷题和模拟面试
采用模拟面试的方式, 练习常见的系统设计题
- 保持好奇心
多思考功能是怎么实现的
3 4S分析法与课程介绍
有两点非常重要, 一点是技术问题, 一点说话要有条理, 不能想到什么说什么
1 Scenario 场景: 需要设计哪些功能, 设计得多牛
ASK: Features/QPS/DAU/Interfaces
-
询问面试官:
-
需要设计哪些功能?
-
需要承受多大的访问量? QPS?
-
2 Service 服务: 将大服务拆分成为小服务
Split/Application/Module
3 Storage 存储: 数据如何存储和访问
系统 = 服务 + 数据存储
-
为每一个 Service 选择存储结构
-
数据库系统 Database
-
关系型: MySQL
-
非关系型: Redis, ElasticSearch, HBase, MongoDB
-
-
文件系统 File System
- 图片, 视频
-
缓存系统 Cache
-
不需要支持持久化的数据
-
效率高, 内存级别的访问速度
-
-
-
Schema 细化表结构
常用数据存储系统 QPS:
-
MySQL / PosgreSQL 等 SQL 数据库的性能: 1k
-
MongoDB / Cassandra 等硬盘型 NoSQL 数据库性能: 10k QPS
-
Redis / Memcached 等内存型 NoSQL 数据库性能: 100k ~ 1M
-
以上数据根据机器性能和硬盘数量及硬盘读写速度会有区别
4 Scale: 升级: 解决缺陷, 处理可能遇到的问题
Sharding/Optimize/Special Case
-
第一步: Optimize
-
解决设计缺陷
-
更多功能设计
-
一些特殊情况
-
-
第二部 Maintenance
-
鲁棒性 Robust
- 如果有一台服务器挂了/数据库挂了怎么办
-
扩展性
- 如果有流量暴增, 如何扩展
-
4 如何准备大厂面试 & 面试经验分享
-
花时间看面试题, 足够的重视
-
不能闭门造车, 多看别人的面试经验 (基本每个人的题目都差不多)
-
多刷题
-
多尝试, 多面试, 大胆尝试积累实战经验
-
多总结, 多反思, 自己的差距和不足点
-
有针对性的去准备, 每个大厂的风格不一样
5 系统设计面试的评分标准
-
可行解 25%
-
特定问题 20%
-
分析问题 25%
-
权衡 15%
-
知识储备 15%
系统设计没有标准答案, 给出一个可行解即可, 给出多个可行解那么分数会更高.
标签:存储,数据库,系统,面试,QPS,设计,概论 From: https://www.cnblogs.com/geraldkohn/p/17091083.html