feat: IMAP mail sync with thread-to-contact matching (PRD §6.1)

Real IMAP connection via imapflow library:
- Connects to IMAP server (IMAPFlow, TLS on port 993)
- Fetches recent messages (configurable limit, default 20)
- Extracts: from, fromEmail, subject, date, snippet (200 chars)
- Thread-to-contact matching (PRD §6.1):
  1. Match sender email against persons table
  2. If no person match, extract domain and match against company.website
  3. Returns matchedCompany + matchedPerson for each email
- Audit-logged (action: crm.mailsync:imap)
- Zod validated (host, port, user, password, folder, limit)
- 502 on IMAP connection failure with detail
- 400 on validation failure

Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
This commit is contained in:
Z User committed 2026-10-27 22:50:50 +00:00
1 parent 7acc0c5451
commit e45b68bb8b
1089 files changed
+260614

No files matched your search

+100
View File
@@ -0,0 +1,100 @@
# 技术面题库
适用:研发 / 算法 / 数据 / DevOps 岗位的 1~2 面(技术轮)。
按职级分层:
- **初级(0-3 年)**:基础八股 + 简单算法 + 项目细节
- **中级(3-5 年)**:系统设计 + 复杂场景题 + 项目深度追问
- **高级(5+ 年)**:架构权衡 + 跨团队问题 + 业务理解
## 一、后端 / 服务端
### 基础八股(每家都问)
1. HTTP / HTTPS / TLS 流程,session vs cookie vs token
2. TCP 三握四挥,为什么是 4 次挥手
3. MySQL 索引底层(B+ 树)、何时失效、最左前缀
4. MySQL 事务隔离级别 + 各自解决什么问题
5. Redis 持久化(RDB / AOF)+ 主从 + 哨兵 + 集群
6. Redis 缓存击穿 / 穿透 / 雪崩 怎么解
7. 分布式锁 3 种实现(Redis / Zookeeper / 数据库)+ 各自坑
8. Kafka 怎么保证消息不丢、不重复、有序
9. JVM 内存模型 + GC(Java 岗)/ Goroutine 调度(Go 岗)
10. 一致性哈希、CAP、BASE、Raft / Paxos 简述
### 系统设计高频
- 设计一个秒杀系统(QPS 10w)
- 设计一个短链服务(生成 / 重定向 / 统计)
- 设计一个分布式 ID 生成器
- 设计微博 feed 流(推 / 拉 / 推拉结合)
- 设计一个限流器(令牌桶 / 漏桶 / 滑动窗口)
### 系统设计回答框架
```
1. 澄清需求(问清 QPS、读写比、数据量、SLA)
2. 估容量(QPS × 平均请求大小 = 带宽;数据量 × 时间 = 存储)
3. 高层架构(接入层 → 业务层 → 存储层 → 数据流)
4. 关键模块深挖(讲清楚选型为什么)
5. 扩展性 / 高可用 / 容灾
6. 主动指出 trade-off
```
## 二、前端
1. 浏览器渲染流程(DNS → TCP → TLS → HTTP → HTML 解析 → 布局 → 绘制)
2. 事件循环 + 微任务 / 宏任务
3. 闭包、原型链、this 绑定
4. React / Vue 响应式原理
5. 性能优化(FCP / LCP / CLS 指标 + 实操)
6. SSR vs CSR vs SSG,何时用哪个
7. 跨域方案(CORS / JSONP / 反向代理)
8. webpack / vite 区别 + 原理
## 三、算法 / 机器学习
### 基础
1. 偏差 / 方差,过拟合怎么解
2. L1 / L2 正则的区别
3. 随机森林 vs GBDT vs XGBoost
4. 梯度消失 / 爆炸 + 解决(BatchNorm / 残差 / 激活函数)
5. Attention 机制讲清,Transformer 与 RNN 对比
6. 样本不平衡处理(采样 / 类权重 / Focal Loss)
7. 模型评估:准确率、精确率、召回率、AUC、F1,何时用哪个
### LLM / GenAI 方向(2024+ 热门)
1. SFT vs RLHF vs DPO,原理 + 何时用
2. RAG 完整 pipeline:分块策略、Embedding 选型、检索融合、Reranker
3. Agent 的 tool use / planning / memory,与单 LLM 的区别
4. 长上下文(YARN / RoPE 缩放、Context window 扩展)
5. 推理优化:KV cache、speculative decoding、量化
6. 大模型评估:benchmark、人工评估、LLM-as-Judge 各自坑
### 项目深挖(每个面试官必问)
- 你这个模型为什么选 ___ 而不是 ___
- 数据是怎么标注 / 清洗的,量级
- 训练用了什么硬件、跑了多久、超参怎么调
- 上线后效果怎么评估,与基线对比
- 失败 / bug 的 case,怎么 debug
## 四、数据 / 数仓 / 分析
### SQL(必考)
- 行转列 / 列转行 / 透视
- 窗口函数(rank / dense_rank / lead / lag)
- 计算 7 日 / 30 日活跃用户
- 同 user 连续登录天数
- 留存率 / 漏斗 / 同期群分析
- 性能优化(索引、explain、分区、避免子查询)
### 业务题
- 给你一个业务场景,让你设计指标体系
- DAU 跌了 5%,怎么排查
- 设计一个 A/B 测试(样本量计算、显著性、停损)
- 用户分层模型(RFM / 生命周期)
## 五、技术面回答原则
1. **澄清问题再答**:模糊的题先问 1~2 个澄清问题
2. **结构化输出**:分点 / 分模块讲,不要意识流
3. **trade-off 思维**:选 A 而不选 B 时,主动说"因为 ___"
4. **诚实**:不会的题说"这个我没研究过,但根据我对 X 的理解,可能可以这样想 ___"
5. **画图 / 写代码**:白板题写代码先讲思路,再写,最后跑测试用例