DrillLab
引导计划Guided plan

从零完整学习Complete DrillLab

从「npm install 做了什么」走到在空文件夹里重写三个项目,并把 105 道八股过一遍。From what npm install actually does, to rebuilding three projects in an empty folder, with all 105 questions covered.

20 档 · 350 条20 stages · 350 items第 1 档 · 地基:一个项目是怎么跑起来的stage 1 · Foundations: how a project actually runs还剩约 42 小时about 42 h left
0 / 350

刚开始接触 npm、React、GraphQL,想要一条完整的路。New to npm, React and GraphQL, and wanting one complete route.

这条计划的全程The whole route

  1. Learn

    地基:一个项目是怎么跑起来的Foundations: how a project actually runs

    你在这You are here
    0 / 9约 2 小时about 2 h

    后面每一门课都假设你会 npm、会读 package.json、会不改原数组地更新数据。这一门就是补这些。Every later course assumes you know npm, can read a package.json, and can update data without mutating it. This course is where that comes from.

    1. Node.js、npm、node_modules 和 lockfileNode.js, npm, node_modules and the lockfile学课程Learn约 12 分钟~12 min没做Not started
    2. package.json 逐字段读一遍package.json, field by field学课程Learn约 14 分钟~14 min没做Not started
    3. npm scripts:命令到底跑了什么npm scripts: what the command actually runs学课程Learn约 13 分钟~13 min没做Not started
    看这一档全部 9 条View all 9 items
    1. Node.js、npm、node_modules 和 lockfileNode.js, npm, node_modules and the lockfile学课程Learn约 12 分钟~12 min没做Not started
    2. package.json 逐字段读一遍package.json, field by field学课程Learn约 14 分钟~14 min没做Not started
    3. npm scripts:命令到底跑了什么npm scripts: what the command actually runs学课程Learn约 13 分钟~13 min没做Not started
    4. 两个考试项目的目录,逐个说明The directory layout of both exam projects学课程Learn约 12 分钟~12 min没做Not started
    5. 数组与对象:不可变更新三件套Arrays and objects: three ways to update without changing the original学课程Learn约 14 分钟~14 min没做Not started
    6. 异步:Promise、await、all 和 allSettledAsync: Promise, await, all and allSettled学课程Learn约 15 分钟~15 min没做Not started
    7. ESM:import / export 与那些莫名其妙的报错ESM: import / export, and the errors that look strange at first学课程Learn约 10 分钟~10 min没做Not started
    8. 类型、type 与 interfaceTypes, type and interface学课程Learn约 12 分钟~12 min没做Not started
    9. 泛型参数,以及怎么读 tsc 的报错Generic parameters, and how to read a tsc error学课程Learn约 12 分钟~12 min没做Not started
  2. Practice

    地基的课内练习The Foundations exercises

    0 / 16

    读懂和写得出之间差一步,这一步就是这些练习。别攒着最后一起做。There is a gap between following an explanation and producing the code. These exercises are that gap. Do not save them up.

    16 格,一格一个真实条目 —— 鼠标停上去或用键盘走过去会读出它的标题。16 squares, one per real item — hover or tab to one and it reads out its title.

  3. Learn

    React 考试:课文React exam: the lessons

    0 / 21约 6 小时about 6 h

    21 节,从「组件是一个函数」讲到 Q1 的三个任务和 Q2 的并发上限。21 lessons, from a component being a function to Q1's three tasks and Q2's concurrency limit.

    1. 组件就是一个返回界面的函数A component is a function that returns what you see on screen学课程Learn约 11 分钟~11 min没做Not started
    2. props:数据往下流,事件往上报props: data flows down, events go back up学课程Learn约 12 分钟~12 min没做Not started
    3. useState:让界面跟着数据变useState: making the screen follow the data学课程Learn约 14 分钟~14 min没做Not started
    4. 受控输入:value + onChange 的闭环Controlled inputs: the loop between value and onChange学课程Learn约 13 分钟~13 min没做Not started
    5. 列表渲染与 keyRendering a list, and the key prop学课程Learn约 10 分钟~10 min没做Not started
    6. useEffect:把 props 的变化同步进 stateuseEffect: copying a change in props into state学课程Learn约 15 分钟~15 min没做Not started
    7. 派生数据与状态提升:什么不该做成 stateValues you can compute, and lifting state up: what should not be state学课程Learn约 11 分钟~11 min没做Not started
    8. 先读题:三个任务、一条硬约束、四个测试Read the question first: three tasks, one rule you must not break, four tests学课程Learn约 13 分钟~13 min没做Not started
    9. Task 1 · Add:提交表单,新笔记进入表格Task 1 · Add: submit the form and the new note appears in the table学课程Learn约 12 分钟~12 min没做Not started
    10. Task 2 · Delete:点 Delete,该行按 id 被移除Task 2 · Delete: click Delete and that one row is removed by id学课程Learn约 11 分钟~11 min没做Not started
    11. Task 3 · Edit:回填、改文字、就地更新、退出编辑Task 3 · Edit: refill the form, change the button text, update the row where it is, leave edit mode学课程Learn约 18 分钟~18 min没做Not started
    12. 四个测试逐条读,以及它们的盲区The four tests read line by line, and what they fail to catch学课程Learn约 12 分钟~12 min没做Not started
    13. 读题:三条要求,每一条都在指定一种写法Reading the question: three requirements, and each one decides how you write it学课程Learn约 12 分钟~12 min没做Not started
    14. 实现:worker pool(工人池)Building it: a worker pool, meaning a fixed number of workers sharing one queue学课程Learn约 16 分钟~16 min没做Not started
    15. 变式一 · Todo ListVariation 1 · Todo List学课程Learn约 14 分钟~14 min没做Not started
    16. 变式二 · 计时器:useEffect 的清理函数Variation 2 · a timer: the useEffect cleanup function学课程Learn约 16 分钟~16 min没做Not started
    17. 变式三 · fetch 取数:loading、error 与竞态Variation 3 · fetching data: loading, error, and the race between two requests学课程Learn约 18 分钟~18 min没做Not started
    18. 变式四 · 递归读取评论的评论Variation 4 · reading replies to replies with recursion学课程Learn约 20 分钟~20 min没做Not started
    19. 变式五 · 主题切换:Context 怎么用Variation 5 · theme switching: how to use Context学课程Learn约 20 分钟~20 min没做Not started
    20. Debug Lab · React 十种典型故障Debug Lab · ten typical React failures学课程Learn约 20 分钟~20 min没做Not started
    21. 从零重写:空文件夹到 4 个测试全过Write it again yourself: from an empty folder to 4 passing tests学课程Learn约 60 分钟~60 min没做Not started
  4. Practice

    React 的课内练习The React exercises

    0 / 54

    填空、写整块、Debug Lab —— 挖好了空等你填,是从「认得出」到「写得对」的过渡。Blanks, whole blocks and debug labs: the step between recognising the code and writing it correctly.

    54 格,一格一个真实条目 —— 鼠标停上去或用键盘走过去会读出它的标题。54 squares, one per real item — hover or tab to one and it reads out its title.

  5. Code

    React 的 Coding 题The React coding problems

    0 / 7约 4 小时about 4 h
  6. 空手做Rebuild

    React:空文件夹里重写React: rebuild in an empty folder

    0 / 2约 2 小时about 2 h

    沙箱跑绿不等于能空手做出来。这一档没有脚手架、没有提示,只有一个计时器。A green sandbox does not mean you can build it from nothing. No scaffold, no hints, just a clock.

    1. 从零重建 Q1 · Notes ManagerRebuild Q1 · Notes Manager模拟考试Assess约 75 分钟~75 min没做Not started
    2. 从零重建 Q2 · 并发任务调度器Rebuild Q2 · the concurrent task runner模拟考试Assess约 45 分钟~45 min没做Not started
  7. 模拟考Assess

    React 模拟考The React mock exam

    0 / 1约 75 分钟about 75 min

    换了业务场景、考点不变。这是检验「你是理解了还是背下来了」最直接的办法。Same skills, a different business scenario — the most direct way to find out whether you understood it or memorised it.

    1. 模拟考 A · Support Ticket BoardMock exam A · Support Ticket Board模拟考试Assess约 75 分钟~75 min没做Not started
  8. Learn

    Federation 考试:课文Federation exam: the lessons

    0 / 17约 6 小时about 6 h

    17 节,从「GraphQL 是一份 schema 加一组 resolver」讲到 entity 缝合、DataLoader 和六个 Spring 端点。17 lessons, from GraphQL being one schema plus a set of resolvers, through entities, DataLoader and the six Spring endpoints.

    1. GraphQL 是什么:一份 schema 加一堆 resolverWhat GraphQL is: one schema plus a set of resolvers学课程Learn约 15 分钟~15 min没做Not started
    2. resolver 的四个参数The four arguments of a resolver学课程Learn约 14 分钟~14 min没做Not started
    3. 非空、列表,和那个没有 price 的 inputNon-null, lists, and the input that has no price学课程Learn约 13 分钟~13 min没做Not started
    4. 为什么会有 FederationWhy Federation exists学课程Learn约 11 分钟~11 min没做Not started
    5. subgraph 是怎么跑起来的How a subgraph starts up学课程Learn约 13 分钟~13 min没做Not started
    6. entity、@key 与 __resolveReferenceentity, @key and __resolveReference学课程Learn约 16 分钟~16 min没做Not started
    7. N+1 问题与 DataLoaderThe N+1 problem and DataLoader学课程Learn约 14 分钟~14 min没做Not started
    8. 先读题:四个 TODO、三处埋雷、十个测试Read the task first: four TODOs, three planted bugs, ten tests学课程Learn约 15 分钟~15 min没做Not started
    9. TODO 1 · User.ordersTODO 1 · User.orders学课程Learn约 13 分钟~13 min没做Not started
    10. TODO 2 · Order.shippingInfoTODO 2 · Order.shippingInfo学课程Learn约 11 分钟~11 min没做Not started
    11. TODO 3 & 4 · Query.order 与 Query.ordersTODO 3 & 4 · Query.order and Query.orders学课程Learn约 14 分钟~14 min没做Not started
    12. 三处埋雷:怎么系统地找出来The three planted bugs: how to find them systematically学课程Learn约 16 分钟~16 min没做Not started
    13. 先看懂给你的东西:Spring 的几个注解和一条请求链路Understand what you are given: a few Spring annotations and the path one request takes学课程Learn约 16 分钟~16 min没做Not started
    14. 六个端点:状态码就是这道题的全部Six endpoints: the status codes are the whole task学课程Learn约 18 分钟~18 min没做Not started
    15. 两道书面题:延迟传播与生产配置The two written questions: how delay spreads, and production configuration学课程Learn约 22 分钟~22 min没做Not started
    16. Debug Lab · Federation 十种典型故障Debug Lab · ten common Federation failures学课程Learn约 22 分钟~22 min没做Not started
    17. 从零重写:空目录到 10 个测试全过Rewrite it: from an empty directory to all 10 tests passing学课程Learn约 90 分钟~90 min没做Not started
  9. Practice

    Federation 的课内练习The Federation exercises

    0 / 47

    这门课的练习里有 8 个 Debug Lab —— 那三处人为埋雷都在里面。Eight of these are debug labs, and the three planted defects all live in them.

    47 格,一格一个真实条目 —— 鼠标停上去或用键盘走过去会读出它的标题。47 squares, one per real item — hover or tab to one and it reads out its title.

  10. Code

    Federation 与 Spring 的 Coding 题The Federation and Spring coding problems

    0 / 2约 3 小时about 3 h

    这两道要在本机跑:一道要真起一个 subgraph 服务,一道要 JVM 和 Maven。页面把命令和期望输出写全了。These two run locally: one needs a real subgraph process, the other a JVM and Maven. The pages spell out every command and the expected output.

    1. Orders subgraph:四个 resolver + DataLoaderOrders subgraph: four resolvers and DataLoader做练习Practice约 90 分钟~90 min没做Not started
    2. 六个 Spring Boot REST 端点Six Spring Boot REST endpoints做练习Practice约 75 分钟~75 min没做Not started
  11. 空手做Rebuild

    Federation:空文件夹里重写Federation: rebuild in an empty folder

    0 / 2约 3 小时about 3 h

    自己搭 subgraph、自己配 Spring 骨架。环境本身就是考点。Build the subgraph yourself, wire the Spring skeleton yourself. Setting up the environment is part of what is being tested.

    1. 从零重建 Task 1 · Orders subgraphRebuild Task 1 · the Orders subgraph模拟考试Assess约 90 分钟~90 min没做Not started
    2. 从零重建 Task 2 · Spring Boot 控制器Rebuild Task 2 · the Spring Boot controller模拟考试Assess约 75 分钟~75 min没做Not started
  12. 模拟考Assess

    Federation 模拟考The Federation mock exam

    0 / 1约 2 小时about 2 h

    subgraph 加 entity 缝合,考点和 Task 1 一致,题面是新的。A subgraph stitched together with an entity: the same skills as Task 1, on a new problem.

    1. 模拟考 B · Book Reviews SubgraphMock exam B · Book Reviews Subgraph模拟考试Assess约 90 分钟~90 min没做Not started
  13. Learn

    Cab Booking:课文Cab Booking: the lessons

    0 / 8约 3 小时about 3 h
  14. Practice

    Cab Booking 的课内练习The Cab Booking exercises

    0 / 15

    包含那个「完整答案跑不起来,原因是一个文件扩展名」的 Debug Lab。Includes the debug lab where the finished answer does not run, and the cause is one file extension.

    15 格,一格一个真实条目 —— 鼠标停上去或用键盘走过去会读出它的标题。15 squares, one per real item — hover or tab to one and it reads out its title.

  15. Code

    Cab Booking 的 Coding 题The Cab Booking coding problem

    0 / 1约 45 分钟about 45 min

    整个应用在浏览器里写一遍,四个测试全绿。Write the whole app in the browser and take all four tests green.

    1. Cab Booking(Context 版)Cab Booking (Context version)做练习Practice约 45 分钟~45 min没做Not started
  16. 空手做Rebuild

    Cab Booking:空文件夹里重写Cab Booking: rebuild in an empty folder

    0 / 1约 60 分钟about 60 min

    只给四个测试和一份数据文件,其余全部自己建。You get four tests and one data file. Everything else you create yourself.

    1. 空文件夹里做出整个 Cab BookingBuild the whole of Cab Booking from an empty folder模拟考试Assess约 60 分钟~60 min没做Not started
  17. Review

    面试八股:105 道问答Interview questions: all 105

    0 / 105

    这条支线不依赖前面任何一门课,任何时候都能开始 —— 放在最后只是因为它最长。This track has no prerequisites and can start at any time. It sits last only because it is the longest.

    过过一遍 0 / 105 · 其中标了「会」的 0 道。自评过一次就算过了这一档 —— 不用把每道都标成「会」才往下走。0 / 105 reviewed, 0 of them marked confident. One rating is enough to clear this stage — you do not have to reach confident on every question first.

    覆盖方向:Topics covered: HTMLHTMLCSSCSSJavaScriptJavaScriptReact 与生态React & ecosystemNode / ExpressNode / Express数据库Databases网络与安全Web & securityTypeScript 深度TypeScript deep dive

    105 格,一格一个真实条目 —— 鼠标停上去或用键盘走过去会读出它的标题。105 squares, one per real item — hover or tab to one and it reads out its title.

  18. Learn

    手写题与组件题的讲解The walkthroughs for the hand-written and component problems

    0 / 10约 4 小时about 4 h

    这 10 节课不是问答题,它们是下面那 15 道 coding 题的讲解。These ten lessons are not questions; they are the walkthroughs for the fifteen coding problems below.

    1. 16 道题逐题对照The 16 problems, compared one by one学课程Learn约 12 分钟~12 min没做Not started
    2. 缺口一 · Dropdown、Tabs、星级评分Gap 1 · dropdown, tabs and star rating学课程Learn约 24 分钟~24 min没做Not started
    3. 缺口二 · useRef 操作 DOM,与写一个自定义 hookGap 2 · using useRef on the DOM, and writing a custom hook学课程Learn约 22 分钟~22 min没做Not started
    4. 缺口三 · 同一个 Todo 换成 Redux ToolkitGap 3 · the same Todo app, moved to Redux Toolkit学课程Learn约 24 分钟~24 min没做Not started
    5. 缺口四 · Kanban 看板:一次改两个数组Gap 4 · a Kanban board: changing two arrays in one update学课程Learn约 20 分钟~20 min没做Not started
    6. 计时两兄弟:debounce 与 throttleTwo timing helpers: debounce and throttle学课程Learn约 30 分钟~30 min没做Not started
    7. 数据与函数:deepClone、flatten、curryData and functions: deepClone, flatten, curry学课程Learn约 35 分钟~35 min没做Not started
    8. 异步与结构:Promise.all、EventEmitter、LRUAsync and structure: Promise.all, EventEmitter, LRU学课程Learn约 35 分钟~35 min没做Not started
    9. Utility Types:会用,还要会手写Utility types: use them, and write them yourself学课程Learn约 28 分钟~28 min没做Not started
    10. 泛型与收窄:把 any 赶出代码Generics and narrowing: getting any out of the code学课程Learn约 26 分钟~26 min没做Not started
  19. Practice

    面试那门课的练习The exercises in the interview course

    0 / 16

    16 个,大部分是「写整块」—— 手写 debounce、curry、EventEmitter 那一类。Sixteen of them, mostly write-a-block: debounce, curry, EventEmitter and the like.

    16 格,一格一个真实条目 —— 鼠标停上去或用键盘走过去会读出它的标题。16 squares, one per real item — hover or tab to one and it reads out its title.

  20. Code

    手写题与组件题The hand-written and component problems

    0 / 15约 6 小时about 6 h

    面试现场最常出的两类:手写工具函数,和从零搭一个受控组件。The two kinds interviews ask for most: implement a utility by hand, and build a controlled component from nothing.

    1. 手写 debounce(带 cancel)Write debounce yourself (with cancel)做练习Practice约 15 分钟~15 min没做Not started
    2. 手写 throttle(leading + trailing)Write throttle yourself (leading and trailing)做练习Practice约 20 分钟~20 min没做Not started
    3. 手写 deepClone(防循环)Write deepClone yourself (handling cycles)做练习Practice约 25 分钟~25 min没做Not started
    4. 手写 flatten(depth 语义对齐原生)Write flatten yourself (depth behaves like the built-in)做练习Practice约 15 分钟~15 min没做Not started
    5. 手写 curry(部分应用可复用)Write curry yourself (reusable partial application)做练习Practice约 15 分钟~15 min没做Not started
    6. 手写 Promise.all + allSettledWrite Promise.all and allSettled yourself做练习Practice约 25 分钟~25 min没做Not started
    7. 手写 EventEmitter(on/off/once/emit)Write EventEmitter yourself (on / off / once / emit)做练习Practice约 20 分钟~20 min没做Not started
    8. 手写 LRUCache(用 Map 的插入序)Write LRUCache yourself (using Map insertion order)做练习Practice约 20 分钟~20 min没做Not started
    9. Tabs 组件(只用一个 state)Tabs component (one piece of state only)做练习Practice约 20 分钟~20 min没做Not started
    10. 星级评分(hover 预览 + 受控双模式)Star rating (hover preview, controlled and uncontrolled)做练习Practice约 25 分钟~25 min没做Not started
    11. Dropdown:点外面要关掉Dropdown: close it on an outside click做练习Practice约 25 分钟~25 min没做Not started
    12. 写一个自定义 hook:useLocalStorageWrite a custom hook: useLocalStorage做练习Practice约 25 分钟~25 min没做Not started
    13. 播放器(useRef 操作 DOM)Media player (touching the DOM with useRef)做练习Practice约 25 分钟~25 min没做Not started
    14. Kanban 看板:一次改两个数组Kanban board: changing two arrays at once做练习Practice约 40 分钟~40 min没做Not started
    15. Redux Toolkit 版 TodoTodo with Redux Toolkit做练习Practice约 40 分钟~40 min没做Not started

正在读这台浏览器里的进度…Reading your progress from this browser…

计划里每一格的完成状态都是已有进度的一个视图 —— 以前自己刷过的八股、做过的练习一条都不会白做,跟着计划做完的 也照样在 课程 里打勾。 换计划、不跟计划都不动任何记录。Every square here is a view of progress you already have. Questions you rated and exercises you solved before picking a plan all count, and anything you finish inside a plan is still ticked in the courses. Changing plans or stopping never touches a record.