核心内容:
- 技术选择:更加关注选择,选择什么策略、选择什么技术,为什么这么选择。
- 架构设计:关注系统如何分割,如何协作,保证效率和扩展性等。
技术选型和架构设计
1. 技术选型
1.1 简介
技术选型是指在软件开发过程中选择合适的技术栈和工具,以满足项目的需求和目标。这包括选择编程语言、框架、数据库、服务器、开发工具等。
1.2 考虑的因素:
- 项目需求:技术必须能够满足项目的功能需求和非功能需求(如性能、安全性)。
- 团队技能:选择团队熟悉的技术可以减少学习成本和开发风险。
- 社区支持和生态系统:选择有良好社区支持的技术有助于解决问题和获取资源。
- 成本:考虑技术的许可费用、开发和维护成本。
- 可扩展性和性能:技术需要能够支持未来的扩展和高性能需求。
- 兼容性和集成:技术需与现有系统和其他工具兼容。
- 安全性:技术应具有良好的安全特性和支持。
1.3 示例:
假设一个团队要开发一个电商网站,他们可能会选择以下技术栈:
- 前端:React.js,因其组件化和强大的社区支持。
- 后端:Node.js,因其适合实时应用和团队已有的JavaScript经验。
- 数据库:MongoDB,因其灵活的文档模型适合电商数据的多样性。
- 托管:AWS,因其提供的可扩展性和可靠的基础设施。
1.4 面试中会问到的问题
- 你选择基于无线端的页面协议进行架构选型。请具体描述一下你选择这一方案的原因,以及在选择过程中考虑的核心因素是什么?
- 在模块化开发和页面协议之间,可能存在一定的技术权衡。你是如何评估和解决这些技术权衡的?
2. 架构设计
2.1 简介
架构设计是指在软件开发中定义系统的高层结构和设计原则。它包括组件的组织、接口定义、数据流、控制流、以及如何满足系统的质量属性(如性能、可用性、可维护性)。
架构设计的目标是创建一个清晰的、可扩展的和可维护的系统结构,以便开发团队能够有效地实现和维护系统。
2.2 面试中会问到的问题
- 你提到协议层包含多个协议,比如页面控制协议、页面渲染协议、模块控制协议等。能否详细讲解一下这些协议的设计初衷,以及它们在架构中是如何协同工作的?
- 在模块发布流程中,你设计了小二和ISV的开发流程,请描述其中的关键步骤以及这两个流程的主要区别。
- 服务端渲染(SSR)被用于提升性能。请谈谈你在SSR实现过程中遇到的挑战,并描述你是如何优化SSR渲染的。
- 你提到了多项监控能力,如业务打点、接口监控、渲染性能监控等。请具体说明这些监控能力在系统中的实现方式,以及如何确保它们能够有效捕捉和分析系统中的异常或性能问题。
3. 技术选型和架构设计的核心区别
- 关注点不同:
- 技术选型:关注于选择具体的技术和工具,以便实现架构设计中的各个部分。
- 架构设计:关注于系统的整体结构和设计原则,确保系统能够满足所有功能和非功能需求。
- 层次不同:
- 技术选型是实现层面的决策,涉及具体的技术细节。
- 架构设计是策略层面的决策,涉及系统的整体设计和结构。
- 时机不同:
- 架构设计通常在项目初期进行,以定义系统的高层结构。
- 技术选型可能在架构设计之后进行,以选择适合实现架构的具体技术。
- 输出不同:
- 架构设计的输出是系统的架构图、设计文档等。
- 技术选型的输出是所选技术栈的列表及其理由。