项目相关的面试提问
- 表设计
- 服务器配置情况和 TPS、QPS 等指标
- 如何在项目种介绍这个项目,公司项目?学习项目?还是导师带的?
- DDD 和 MVC 的区别
工程列表
- 分布式核心功能服务系统
- 网关 API
- 测试
- 自研分库分表路由组件
- B端运营系统
- C端用户系统(Vue 前端页面)
大厂规范
大厂码农开发基础
主要是大厂开发的一整套流程:
- 文档撰写(如编写项目需求文档(PRD)、研发设计、代码评审、架构设计以及晋升答辩都涉及到文档的编写)
- 开发工具之类的,如文档编写工具Xmind、PPT等一些
- 技术方面除了我们常用的
①如 Spring、Spring Boot、MyBatis、MySQL、Redis、RPC、MQ等,
②根据不同的开发系统,如数据需要分库分表,将涉及数据库路由组件,
③分库分表后又会用到数据整合汇总服务,如 MySQL 的 binlog 日志,把数据通过 Otter 同步到 ES 中,
④还可能用到分布式任务以及分布式事务的组件,但也可以基于 MQ 做最终一致性。
⑤互联网项目往往采用前后端分离,有时候服务端会把 RPC 这样的接口转换为 http 服务,不过这种转换只要把 RPC 接口配置到网关平台即可,不需要自己处理 http 开发,
⑥网关服务上会提供像白名单、黑名单、防刷、切量、限流等各种服务治理的能力,
⑦前端的接口也会有 LVS/F5、Nginx、CDN 等各项能力来保障系统的可用度 - 数据方面,分库分表时需要进行数据整合服务,将 MySQL 汇总到 ES,还会有像 HBase 等大数据服务,用于使用量化模型做数据分析以及生成人群标签等
- 上线,大公司一般采用自动化上线系统,它们的内核开发有的是基于 Jenkins,也有一些是自研的,另外还有上云服务。上线之后还会有对应的 JMeter 压测服务和运行日志实时查询服务。
- 系统和数据库的监控,尤其对于业务体量大、流量较高、有秒杀和大促的业务场景时就更需要颗粒度更细的监控系统。比如需要知道 TP99、TP999、可用率、响应时长、TPS、QPS 等各项指标,来判断服务的整体可用度。数据库层面需要知道当前 IO 吞吐量、慢查询、事务、可用连接、LOAD 等综合指标和日常的数据报表。这些都是可以非常方便地反馈出整体服务的可用度。
需求怎么来的
需求确定和各方人员参与研发直到项目上线在传统行业和互联网有所不同:
系统架构设计
当完成 PRD 评审后,并不是立即开发,而要视需求大小进行不同层级的系统设计,这个过程包括:
进入开发阶段
当系统设计完成后,就正式进入开发阶段了,流程包括:
系统上线维护
当项目开发完成,并完成测试,就到了正式发布上线的阶段,流程如下: