系统设计三大要素
使用场景和限制条件
- 买这个系统是在什么地方使用的
- 用户估计多少,至少要能支撑多少用户
- 估算并发qps
数据存储设计
- 按需设计数据表,需要哪些字段,使用什么类型
- 数据库选型,是否需要持久化
- 如何优化,如何设计索引,是否可以使用缓存
算法模块设计
算法解决问题的核心。程序= 算法+数据结构。系统=服务+存储
- 需要哪些接口,接口如何设计
- 使用什么算法或模型
- 不同实现方式之间的优劣对比,如何取舍
面试经验
python就业
- python就业面广:爬虫、运维、数据分析、后端、AI等,找准兴趣
- 重视基础,淡化语言
面试准备
- 复习基础(算法+数据库+网络),查漏补缺
- 搜索意向公司面经,了解对方公司喜欢问什么
- 重基础,没事都刷题,很多公司越来越重视算法数据结构
简历投递
广泛撒网,重点捕鱼
- 多投递和面试一些公司,争取多拿几个offer
- 从易到难,可以先从小公司开始面试
- 了解对方所用到的技术和业务,了解面试重点
面试环节
坦然面对,友好交流
- 一般技术可能有三面(基础+项目)
- 很多公司基本都要手写代码
- 引导交流,察言观色,尽量找自己擅长的话题聊,实事求是,防止挖坑
面试之后
总结问题,查漏补缺。多复盘,多总结经验
- 总结经验
- 合理定位,面试时候一件很看运气的事,面不过不代表能力不行
- 扎实的基础+强悍的编码能力可以大幅提升面试成功率
居安思危
工作了就稳定了?
- 关注经济环境,尽量进入公司的核心业务
- 持续学习,保持职场竞争力
- 算法题不能丢下,长时间不练习手生
指北总结
python基础高频考点
- python特性:装饰器、生成器与协程、异常处理
- 常用内置模块:collections灯膜
- Cpython解释器:GIL,内存管理
算法和数据结构
学会手写算法题
- 常用的内置结构:list/tuple/set/dict,collections模块
- 常考算法:快排、归并、堆排序等高级排序算法
- 常考数据结构:链表,二叉树,栈,队列
编程范式
- 面向对象
- 装饰器模式
- 单例模式
操作系统
- top/kill/ps
- 线程和进程的区别
- 操作系统内存管理机制
网络
- TCP/UDP/HTTP
- 多路复用和并发编程
- python并发网络框架Tornado/Gevent/Asyncio
数据库
- Mysql基础和索引原理
- SQL语句编写
- 缓存,redis的使用和原理
web
- wsgi
- 网络安全 SQL注入/XSS/CSRF
- RESTful
系统设计
- 三要素:场景限制、数据存取设计、算法实现设计