第10-12章 系统设计考察点
作者:互联网
第10-12章 系统设计考察点
系统设计考察点第10章 系统设计考点
◆什么是系统设计? ◆系统设计需要掌握哪些知识? ◆如何设计和实现一个后端系统服务的设计?什么是系统设计?
什么是系统设计?( System Design) ◆系统设计是一个定义系统架构、模块、接口和数据满足特定需求的过程 ◆比如设计一个短网址服务、评论服务、Feed流系统、抢红包系统 ◆微服务架构很多系统被按照业务拆分,需要单独设计一个系统服务 公司里提供一个供其他所有业务使用的一个短网址服务系统设计的难点
中高级工程师必经之路 ◆需要具备相关领域、算法的经验,有一定的架构设计能力 Feed流,推拉模型 ◆熟悉后端技术组件,比如消息队列、缓存、数据库、框架 ◆具备文档撰写、流程图绘制、架构设计、编码实现等综合能力系统设计怎么答?
很多新手碰到这种问题完全不知道怎么回答 ◆完全没有思路的(很多毕业生对这种问题完全手足无措) ◆有一定思路,但是回答没有重点 ◆能回答上来重点,但是思路不够清晰系统设计的要素
系统设计三大要素
◆使用场景和限制条件 ◆数据存储设计 ◆算法模块设计如何回答系统设计题目?
按照三个要素来回答 ◆问面试官:什么场景和条件下使用? 面试官上来就抛一句:如何设计一个短网址系统? ◆设计数据存储系统 ◆设计算法相关模块要素之一:场景和限制
什么场景使用?有哪些条件? ◆这个系统是在什么地方使用的?比如短网址系统提供给站内各种服务生成短网址 ◆限制条件:用户估计有多少?至少要能支撑多少用户(服务)? ◆估算并发qps:峰值qps是多少?平均qpS是多少?要素之二:数据存储设计
数据库的选型 ◆按需设计数据表,需要哪些字段,使用什么类型?数据增长规模 ◆数据库选型:是否需要持久化?使用关系型还是NoSQL? ◆如何优化?如何设计索引?是否可以使用缓存?要素之三:算法模块设计
算法解决问题的核心。程序=算法+数据结构。系统=服务+存储 ◆需要哪些接口?接口如何设计 ◆使用什么算法或者模型? ◆不同实现方式之间的优劣对比,如何取舍?延伸考点
如何回答不错,可能会问一些深入的问题(扩展、容错) ◆用户多了,qps高了如何处理? ◆数据存储多了不够存了如何处理? ◆故障如何处理?单点失败、多点失败、雪崩问题系统设计真题解析:短网址系统设计与实现
如何设计与实现一个短网址系统? ◆什么是短网址系统?包含哪些功能(接口) ◆短网址系统的存储设计?需要存储哪些字段? ◆如何设计算法生成短网址?什么是短网址系统?
TinyUrl Service ◆把一个长网址转成短网址的服务 ◆比如https:/bitly.com/ ◆转换之后网址的后缀不超过7位(字符或者数字)场景和限制
使用场景:提供短网址服务为公司其他各业务服务 ◆功能:一个长网址转成短网址并存储;根据短网址还原长url ◆要求短网址的后缀不超过7位(大小写字母和数字) ◆预估峰值插入请求数量级:数百;査询请求数量级:数干数据存储设计
根据需求设计数据存储方式 ◆使用Mysql即可满足 ◆需要的字段有哪些? ◆如何根据查询设计索引?算法实现设计
短网址生成算法有哪些?对比优缺点 ◆两个API:long2short_url, short2long_url ◆常用算法:hash算法截取;自增序列算法 ◆对比多种算法,我们采取自增序列算法实现编码实现
使用 Flask框架演示本系统实现 ◆代码里实现了短网址生成算法 ◆数据库使用Mysql ◆计数器使用 Redis回答重点
回答要点,最好图文并茂 ◆遵守三个要素来回答 ◆包含数据表的设计、api的设计、算法的设计 ◆图文并茂,有数据表、接口定义、流程图如何设计一个秒杀系统
难点:如何应对高并发的用户请求 ◆什么是秒杀系统?你有没有使用过? ◆如何根据我们提到的三个要素来设计秒杀系统? ◆秒杀系统涉及到哪些后端组件(你可以参考网上资料思考如何设计)第11章 面试经验分享
Python后端面试经验分享 寒冬之下,如何自保 虽然年年都喊互联网寒冬,但是今年确实有点不一样 ◆互联网红利期已过,今年爆出大量知名互联网公司裁员 ◆竞争压力增加,如何提升个人竞争力? ◆居安思危,持续学习,多读经典 Python就业 Python能做什么? ◆后端职位 Python相较于PHP和Java不够多 ◆Python就业面广:爬虫、运维、数据分析、后端、AI等,找准兴趣 ◆重视基础,淡化语言面试之前
面试之前如何充分准备? ◆复习基础(算法数据结构+数据库+网络是重中之重),查漏补缺 ◆网上搜索意向公司面经,了解对方公司喜欢问什么? ◆重基础,没事多刷题,很多公司越来越重视算法数据结构简历投递
广泛撒网,重点捕鱼 ◆多投递和面试一些公司,争取多拿几个ofer ◆从易到难,可以先从小公司开始面试 ◆了解对方所用到的技术和业务,了解面试重点面试环节
坦然面对,友好交流 ◆一般技术可能有三面(基础+项目) ◆很多公司基本都要手写代码 ◆引导交流,察言观色,尽量找自己擅长的话题聊,实事求是,防止挖坑面试之后
总结问题,查漏补缺。多复盘,多总结经验 ◆总结经验 ◆合理定位,面试是一件很看运气的事,面不过不代表能力不行 ◆扎实的基础+强悍的编程能力可以大幅提升面试成功率 整理面试经验,写面试电子书居安思危
工作了就稳定了? ◆关注经济环境,尽量进入公司核心业务 ◆持续学习,保持职场竞争力 ◆算法题不能丢下,长时间不练习手生第12章 课程总结
课程内容回顾
课程体系(上) ◆面试技巧篇 ◆编程范式篇 ◆Python语言篇 ◆操作系统篇 ◆算法与数据结构篇 课程体系(下) ◆网络编程篇 ◆系统设计篇 ◆数据库篇 ◆面试经验总结 ◆Web框架篇Python基础高频考点
Python语言基础考察点
◆Python特性:装饰器、生成器与协程、异常处理 ◆常用内置模块:collections等模块 ◆Cpython解释器:GIL,内存管理算法与数据结构高频考点
Python算法与数据结构考察点:学会手写算法题 ◆常用的内置结构∶list/ tuple/set/dict, collections模块 ◆常考算法:快排、归并、堆排序等高级排序算法 ◆常考数据结构:链表,二叉树,栈,队列编程范式高频考点
编程范式:OOP ◆面向对象基础, Python类的实现 ◆装饰器模式 ◆单例模式手写操作系统高频考点
操作系统一般考的是Linux ◆常用 Linux命令:top/kill/ps ◆线程和进程的区别 ◆操作系统内存管理机制网络高频考点
网络协议和网络编程基础 ◆网络协议:TCP/UDP/HTTP ◆多路复用和并发编程 ◆Python并发网络框架 Tornado/ Gevent/Asyncio数据库高频考点
Mysql+ Redis是重点 ◆Mysql基础和索引原理 ◆SQL语句编写 ◆缓存, Redis的使用和原理Python Web框架高频考点
常见的Web框架 Django/ Flask/ Tornado至少要熟练一个 ◆WSGI,不同框架对比 ◆常见网络安全问题SQL注入/XSS/CSRF ◆ RESTful系统设计高频考点
如何设计和实现一个后端系统? ◆系统设计三要素:场景限制、数据存取设计、算法实现设计 ◆短网址系统、秒杀系统、评论系统 ◆回答重点:图文并茂,架构设计图重中之重
考点太多,排序重点 ◆算法和数据结构,面试刷题 ◆数据库(关系型+内存型) ◆网络协议和网络编程<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
标签:10,12,面试,Python,系统,网址,算法,考察点,设计 来源: https://www.cnblogs.com/wenyule/p/14398808.html