其他分享
首页 > 其他分享> > 第10-12章 系统设计考察点

第10-12章 系统设计考察点

作者:互联网

第10-12章 系统设计考察点

  系统设计考察点

第10章 系统设计考点

◆什么是系统设计? ◆系统设计需要掌握哪些知识? ◆如何设计和实现一个后端系统服务的设计?  

什么是系统设计?

什么是系统设计?( System Design) ◆系统设计是一个定义系统架构、模块、接口和数据满足特定需求的过程 ◆比如设计一个短网址服务、评论服务、Feed流系统、抢红包系统 ◆微服务架构很多系统被按照业务拆分,需要单独设计一个系统服务   公司里提供一个供其他所有业务使用的一个短网址服务

系统设计的难点

中高级工程师必经之路 ◆需要具备相关领域、算法的经验,有一定的架构设计能力 Feed流,推拉模型 ◆熟悉后端技术组件,比如消息队列、缓存、数据库、框架 ◆具备文档撰写、流程图绘制、架构设计、编码实现等综合能力  

系统设计怎么答?

很多新手碰到这种问题完全不知道怎么回答 ◆完全没有思路的(很多毕业生对这种问题完全手足无措) ◆有一定思路,但是回答没有重点 ◆能回答上来重点,但是思路不够清晰  

系统设计的要素

系统设计三大要素

◆使用场景和限制条件 ◆数据存储设计 ◆算法模块设计    

如何回答系统设计题目?

按照三个要素来回答 ◆问面试官:什么场景和条件下使用? 面试官上来就抛一句:如何设计一个短网址系统? ◆设计数据存储系统 ◆设计算法相关模块  

要素之一:场景和限制

什么场景使用?有哪些条件? ◆这个系统是在什么地方使用的?比如短网址系统提供给站内各种服务生成短网址 ◆限制条件:用户估计有多少?至少要能支撑多少用户(服务)? ◆估算并发qps:峰值qps是多少?平均qpS是多少?  

要素之二:数据存储设计

数据库的选型 ◆按需设计数据表,需要哪些字段,使用什么类型?数据增长规模 ◆数据库选型:是否需要持久化?使用关系型还是NoSQL? ◆如何优化?如何设计索引?是否可以使用缓存?  

要素之三:算法模块设计

算法解决问题的核心。程序=算法+数据结构。系统=服务+存储 ◆需要哪些接口?接口如何设计 ◆使用什么算法或者模型? ◆不同实现方式之间的优劣对比,如何取舍?  

延伸考点

如何回答不错,可能会问一些深入的问题(扩展、容错) ◆用户多了,qps高了如何处理? ◆数据存储多了不够存了如何处理? ◆故障如何处理?单点失败、多点失败、雪崩问题  

系统设计真题解析:短网址系统设计与实现

如何设计与实现一个短网址系统? ◆什么是短网址系统?包含哪些功能(接口) ◆短网址系统的存储设计?需要存储哪些字段? ◆如何设计算法生成短网址?  

什么是短网址系统?

TinyUrl Service ◆把一个长网址转成短网址的服务 ◆比如https:/bitly.com/ ◆转换之后网址的后缀不超过7位(字符或者数字)

场景和限制

使用场景:提供短网址服务为公司其他各业务服务 ◆功能:一个长网址转成短网址并存储;根据短网址还原长url ◆要求短网址的后缀不超过7位(大小写字母和数字) ◆预估峰值插入请求数量级:数百;査询请求数量级:数干

数据存储设计

根据需求设计数据存储方式 ◆使用Mysql即可满足 ◆需要的字段有哪些? ◆如何根据查询设计索引?   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=  

算法实现设计

短网址生成算法有哪些?对比优缺点 ◆两个API:long2short_url, short2long_url   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk= watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk= watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk= watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=     watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk= watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk= watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=   ◆常用算法:hash算法截取;自增序列算法 ◆对比多种算法,我们采取自增序列算法实现  

编码实现

使用 Flask框架演示本系统实现 ◆代码里实现了短网址生成算法 ◆数据库使用Mysql ◆计数器使用 Redis   watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=  

回答重点

回答要点,最好图文并茂 ◆遵守三个要素来回答 ◆包含数据表的设计、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://blog.51cto.com/wenyule/2860127