拓展内容
1. 设计(Design)
核心 :定义系统架构、模块划分、接口设计,确保可扩展性和可维护性。
常见问题:
-
OOP设计:类图、继承/组合(如设计停车场系统)。
-
系统设计:分布式、缓存策略(如设计Twitter)。
-
设计模式:单例、工厂、观察者模式。
2. 数据流(Data Flow)
核心 :数据从输入到输出的处理过程,强调顺序和依赖关系。
应用:
-
流处理:实时计算(如Apache Kafka)。
-
管道模式 :
Producer → Buffer → Consumer
。
3. 交互(Interaction)
核心 :系统与用户/外部的动态响应。
类型:
-
CLI:命令行交互(如Linux终端)。
-
GUI:图形界面事件驱动(如点击按钮)。
-
API:系统间接口调用(如RESTful API)。
4. 迭代器(Iterator)
核心 :提供一种顺序访问集合元素的方式,无需暴露底层结构。
代码示例(Python):
class Squares:
def __init__(self, n):
self.n = n
def __iter__(self):
self.i = 0
return self
def __next__(self):
if self.i >= self.n:
raise StopIteration
result = self.i ** 2
self.i += 1
return result
for x in Squares(5):
print(x) # 输出 0, 1, 4, 9, 16
5. 多线程(Multithreading)
核心 :并发执行任务,共享内存,需处理竞态条件。
关键点:
-
锁 :
threading.Lock()
避免数据竞争。 -
GIL:Python的全局解释器锁限制多线程并行。
示例(Python):
import threading
def task():
print("Thread running")
thread = threading.Thread(target=task)
thread.start()
6. 数据库(Database)
核心 :结构化存储和查询数据。
分类:
-
SQL:MySQL(关系型,强一致性)。
-
NoSQL :MongoDB(文档型,高扩展性)。
基础操作:
SQL
SELECT * FROM users WHERE age > 20; INSERT INTO products (name, price) VALUES ('Laptop', 999);
7. Shell
核心 :命令行环境下的脚本编程。
常用语法:
-
变量 :
name="Alice"
。 -
循环 :
for file in *.txt; do echo $file; done
。
示例:
bash
#!/bin/bash
echo "Hello, $USER!"
8. 水塘抽样(Reservoir Sampling)
核心 :从数据流中随机抽取k个样本,保证每个元素被选中的概率相等。
算法步骤:
-
保留前k个元素。
-
对第i个元素(i > k),以k/i的概率替换 reservoir 中的随机元素。
应用:日志抽样、大数据随机采样。
9. 拒绝采样(Rejection Sampling)
核心 :通过"生成-检验"方式从复杂分布中采样。
步骤:
-
在简单分布中生成候选样本。
-
以一定概率接受/拒绝该样本。
应用:蒙特卡洛模拟、随机数生成。
10. 脑筋急转弯(Brain Teaser)
核心 :考察逻辑思维和跳出常规的能力。
经典问题:
-
烧绳子计时:如何用两根燃烧速度不均匀的绳子测量15分钟?
-
灯泡开关:房间外有3个开关,如何确定哪个控制房内的灯泡?
对比总结
主题 | 关键点 | 典型应用场景 |
---|---|---|
设计 | 架构、扩展性、模式 | 系统设计面试 |
迭代器 | 遍历集合,隐藏实现 | 自定义数据结构的访问 |
多线程 | 并发、锁、竞态条件 | 高并发服务器 |
水塘抽样 | 等概率采样数据流 | 大数据随机抽样 |
拒绝采样 | 生成-检验机制 | 复杂概率分布采样 |
脑筋急转弯 | 非传统逻辑 | 面试逻辑测试 |