16 个编码模式

  1. 双指针技术(Two-Pointer Technique)
  2. HashMaps
  3. 链表(Linked Lists)
  4. 快慢指针(Fast and Slow Pointers)
  5. 滑动窗口技术(Sliding Window Technique)
  6. 二分搜索(Binary Search)
  7. (Stacks)
  8. (Heaps)
  9. 前缀和(Prefix Sum)
  10. (Trees)
  11. 字典树(Tries)
  12. (Graphs)
  13. 回溯(Backtracking)
  14. 动态规划(Dynamic Programming)
  15. 贪心算法(Greedy Algorithms)
  16. 区间(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

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。