16 个编码模式
- 双指针技术(Two-Pointer Technique)
- HashMaps
- 链表(Linked Lists)
- 快慢指针(Fast and Slow Pointers)
- 滑动窗口技术(Sliding Window Technique)
- 二分搜索(Binary Search)
- 栈(Stacks)
- 堆(Heaps)
- 前缀和(Prefix Sum)
- 树(Trees)
- 字典树(Tries)
- 图(Graphs)
- 回溯(Backtracking)
- 动态规划(Dynamic Programming)
- 贪心算法(Greedy Algorithms)
- 区间(Intervals)
如何学习数据库
数据库供电一切从网站和应用到企业系统。
数据库基础
- “什么是数据库”
- RDBMS
- SQL vs NoSQL
- ACID vs BASE
- OLTP vs OLAP
- 事务和隔离级别
数据模型和类型
- 关系数据库
- 非关系数据库
- 数据类型(Integer、String、Boolean、Date、JSON 等)
查询和语言
- SQL 基础(SELECT、INSERT 等)
- 高级 SQL(Views、Indexes、CTEs 等)
- NoSQL 查询(聚合和键值查找)
索引和优化
- 索引(B-Tree、Hash 和 Bitmaps)
- 查询执行计划
- 非规范化 vs 规范化
- 分片
- 连接池
- 查询批处理
安全、备份和扩展
- 用户角色
- 权限
- 加密
- SQL 注入
- 高可用性(复制和故障转移)
- 水平 vs 垂直扩展
工具和生态系统
- 流行 SQL 数据库
- NoSQL 数据库
- GUI 工具
- ORMs
- 云数据库服务(RDS、DynamoDB、Google Cloud SQL 等)
URL 缩短器如何工作
步骤 1:DNS 解析
用户输入 URL(bytebytego.com)到浏览器并按下 Enter。第一件我们需要做是翻译 URL 为 IP 地址。映射通常存储在缓存,所以浏览器查找 IP 地址在多层缓存:浏览器缓存、OS 缓存、本地缓存和 ISP 缓存。如果浏览器不能在缓存找到映射,它将问 DNS(域名系统)解析器解析它。
步骤 2:递归 DNS 查找
如果 IP 地址不能在任何缓存找到,浏览器去 DNS 服务器做递归 DNS 查找直到 IP 地址找到。
步骤 3:HTTP/HTTPS 请求
现在我们有了服务器 IP 地址,浏览器发送 HTTP 请求到服务器。为安全访问服务器资源,我们应该总是使用 HTTPS。它首先通过 TCP 3 次握手与服务器建立 TCP 连接。然后它发送公钥到客户端。客户端使用公钥加密会话密钥并发送到服务器。服务器使用私钥解密会话密钥。客户端和服务器现在可以交换加密数据使用会话密钥。
步骤 4:服务器响应
服务器处理请求并发送回响应。为成功响应,状态码是 200。响应有 3 部分:HTML、CSS 和 Javascript。浏览器解析 HTML 并生成 DOM 树。它也解析 CSS 并生成 CSSOM 树。它然后组合 DOM 树和 CSSOM 树为渲染树。浏览器渲染内容并显示给用户。
HTTPS 如何工作
HTTPS 确保你浏览器(客户端)和网站服务器之间安全通信使用加密。
TCP 握手
在任何安全通信发生前,客户端和服务器首先建立基本连接使用 TCP 握手过程。在这点,数据不加密。
证书检查
这个阶段 meant 验证服务器身份。客户端开始 TLS 握手带”hello”消息提供支持加密算法。服务器回复,选择算法并发送它数字证书,包含公钥。客户端验证证书确保它来自可信证书颁发机构(CA)。
密钥交换
一旦客户端验证证书,它开始密钥交换过程。客户端使用服务器公钥(从证书)加密会话密钥。加密会话密钥发送到服务器,服务器可以解密它使用它私钥。改变密码规范消息 signify 从这点起,所有消息将加密使用同意会话密钥和加密。这个步骤使用非对称加密安全交换会话密钥。
数据传输
现在,两边切换到对称加密(更快)使用共享会话密钥。消息加密和解密用相同密钥。所有数据交换现在安全和私有。
Netflix 扩展演进
多年来,Netflix 经历几个增长阶段。与每个阶段,他们必须演进扩展方法。
阶段 1(早期流媒体架构)
- 典型 3 层由客户端、API 和数据库组成
- API 应用名为 NCCP(Netflix Content Control Protocol)
- 它是单体应用包含所有功能
阶段 2(引入微服务)
- 随着更多功能添加,维护工程速度变得关键
- 为支持这个,单体应用打破为微服务
- 功能从 NCCP 应用提取并开发为单独应用
- 但编排逻辑保留在 NCCP 应用
阶段 3(Zuul 网关)
- 接下来,Netflix 分裂应用
- NCCP 停留为播放体验而其他 API 开始处理其他功能
- Zuul API 网关引入减少客户端和服务之间耦合
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP174: 16 Coding Patterns That Make Interviews Easy。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。