Knowledge

Chapters for every direction the job board covers — engineering, data, design, sales, marketing, operations and more. Every topic shows how many live jobs ask for it. The first chapter is free; a paid plan opens the rest.

Track syllabus

Software Engineering Core

Covers the general software engineering skills every company screens for: coding interviews, design trade-offs, code quality, debugging and testing.

4 chapters · 6443 jobs hiring now

Track progress 0 / 0
01 基础篇 6 topics Free
数据结构与算法基本功

面试官不是考你背没背过题,而是看你拿到问题后能不能先判断数据规模,再选合适的数据结构,并把思路讲清楚。

  • 数组、哈希表、栈与队列的适用场景
  • 树与图的遍历:BFS 与 DFS 模板
  • 排序、二分与双指针的常见变形
  • 用真实业务说明数据结构选型
Example answer

我会先问清数据规模:一万条以内我直接用哈希表去重,内存放得下;到千万级我会先按时间分片再聚合。比如我们做过的日志查询,最初用列表线性扫描,P95 要 3 秒;后来按时间戳建索引加二分定位,降到 200 毫秒。面试时我会把从暴力解到优化的过程一步步讲出来,而不是只报结果。

复杂度分析与取舍表达

考的是成本意识:任何优化都有代价,你能不能主动说出自己放弃了什么、换来了什么,而不是只讲好的一面。

  • 用大 O 描述时间与空间代价
  • 先算输入规模再谈算法选择
  • 说清「为什么更快」的因果链
  • 预留扩展:数据涨十倍会怎样
Example answer

我一般先报数量级:这个接口每次要扫全部 50 万条记录,是 O(n),延迟随数据量线性涨。改成预聚合之后,写入时多花 20 毫秒,读路径降到 O(1),P99 从 400 毫秒掉到 30 毫秒。代价是每天凌晨要跑一次重算,我们接受这个延迟。面试时我会把两端都讲清楚,而不是只说优化结果。

在线编程的解题流程

在线编程考的是协作过程:面试官要判断你入职后能不能一起把问题拆开,而不是只看最后代码对不对。

  • 复述题目并确认边界条件
  • 先给暴力解,再逐步优化
  • 边写边说,让面试官跟上思路
  • 写完主动跑两个用例验证
  • 卡住时说出卡点和假设
Example answer

我拿到题会先复述一遍,并确认三个边界:输入会不会为空、有没有重复元素、规模多大。然后先说出暴力解两层循环,O(n²),能过但不体面,再提出用哈希表把时间降到 O(n)。写的时候我会说每一步在干什么,写完手动跑一遍题目给的例子,再补一个空数组的用例。中间卡住我会直接说我卡在这里,先假设输入有序可以吗,而不是沉默。

主力语言深度与常见陷阱

语料里 Python 占 36%、JavaScript/TypeScript 占 21%、Go 占 17%,面试官会挑一门问到底,看你是否真的用它干过活。

  • 讲清语言的类型系统与内存模型
  • 常用标准库与惯用写法
  • 该语言常见的坑与规避方式
  • 用一门语言讲透而不是都浅尝
Example answer

我主用 Python,会主动讲清三件事:可变默认参数这类经典坑我怎么在代码规范里禁掉;生成器和切片为什么能省内存;以及 GIL 对我们这种 IO 密集服务意味着什么。比如一个批量导入脚本,最初用列表累加 200 万条记录占了 3GB 内存,改成生成器逐条处理后峰值降到 200MB。面试官通常会顺着往下问我最熟的那门语言。

SQL 与数据处理基础

软件岗有 7% 的 JD 明确写 SQL,但实际面试里几乎人人被问:考的是你能不能自己从数据里拿到答案,而不是每次都找别人跑数。

  • 用 join 与聚合回答业务问题
  • 索引与执行计划的基本判断
  • 把慢查询改写成可验证的版本
  • 数据口径先对齐再写查询
Example answer

被问到怎么找出上周流失的用户,我会先说清口径:流失定义为 14 天没有活跃。然后写一个先按用户聚合最后活跃时间、再和日期过滤 join 的查询。如果对方追问性能,我会说先看执行计划有没有走索引。之前把一次全表扫描的报表查询加上复合索引后,从 40 秒降到 1.5 秒。

计算机基础:并发与网络

这是通用门槛:面试官用一个并发 bug 或内存问题,判断你遇到系统级现象时有没有底层的直觉,而不是只会重启服务。

  • 进程、线程与协程的区别
  • 竞态与锁的基本概念
  • 内存分配与回收的直觉
  • 用一次真实 bug 说明理解深度
Example answer

我被问到过线上 CPU 打满的问题。我的回答是:先区分是计算密集还是锁竞争,前者看火焰图,后者看线程堆栈。我们那次是一个每秒轮询的线程持锁去调外部接口,把整个队列堵住了;改成异步回调之后 CPU 从 100% 降到 30%。我不背概念,而是用这次排查说明我理解线程、锁和 IO 的关系。

02 工程篇 6 topics Member

The first chapter is free. A paid plan opens the rest.

03 交付篇 6 topics Member

The first chapter is free. A paid plan opens the rest.

04 项目故事篇 6 topics Member

The first chapter is free. A paid plan opens the rest.

A paid plan opens every chapter in this track.

The remaining chapters cover the full knowledge map and a preparation checklist.

See plans

Hiring now

Related jobs hiring now

Roles whose skill requirements overlap with this track. Review a chapter, then check the live openings.