本文档全面概述了 Tech Interview Handbook 代码库,解释了其目的、主要组成部分和系统架构。Tech Interview Handbook 是一个开源项目,旨在通过精选内容和互动工具帮助软件工程师准备技术面试。
Tech Interview Handbook 代码库是技术面试准备资源的中心枢纽。它旨在提供全面、高质量的内容,涵盖技术面试过程的所有阶段,从准备简历、掌握编码面试到协商录用。
正如 README.md22-24中所述,Tech Interview Handbook 包含精选内容,包括:
并非每个人都有时间刷几百道 LeetCode 题目。以下是为忙碌的工程师准备的免费精选技术面试准备材料,由我(Blind 75 的作者)提供。已有超过 100 万人从中受益!
来源:README.md
Tech Interview Handbook 采用 monorepo 结构,使用 pnpm/yarn 进行包管理。这种结构使得在整个平台中共享组件和维护一致的开发实践成为可能。
来源:pnpm-workspace.yaml、package.json、README.md
代码库包含两个主要应用程序:
文档网站:一个使用 Docusaurus 构建的静态网站,是用户寻找面试准备资源的入口。
门户应用程序:一个交互式 Next.js 应用程序,提供简历评审、薪酬数据共享和面试准备题库等功能。
文档网站包含精选内容,例如:
有关网站结构的更多详细信息,请参阅 网站和文档。
来源:README.md
门户应用程序提供互动工具,帮助用户准备技术面试。
正如 apps/portal/src/pages/index.tsx6-28所示,该门户包含三个主要功能:
有关门户架构的更多信息,请参阅 门户应用程序架构。
来源:apps/portal/src/pages/index.tsx、apps/portal/src/pages/_app.tsx
Tech Interview Handbook 按照 pnpm-workspace.yaml所定义的 monorepo 结构进行组织。
packages:
- 'apps/*'
- 'packages/*'
这种结构允许在应用程序的不同部分之间共享代码,同时保持关注点的分离。
在 package.json11-22中定义了关键项目命令,包括:
pnpm build:构建所有包和应用程序。pnpm dev:以开发模式运行门户应用程序。pnpm dev:website:以开发模式运行文档网站。pnpm dev:all:并行运行所有应用程序。来源:package.json、pnpm-workspace.yaml
门户应用程序采用 Next.js 构建,并使用了以下技术:
门户应用程序使用 tRPC 在客户端和服务器之间建立类型安全的 API 通信,配置位于 apps/portal/src/pages/_app.tsx45-92 中配置。
来源:apps/portal/package.json、apps/portal/src/pages/_app.tsx、apps/portal/next.config.mjs
简历评审系统允许用户上传简历、浏览他人的简历并提供反馈。
技术 offer 系统使用户能够跨公司分享和比较薪酬信息,帮助求职者对其 offer 进行基准测试。
题库是一个社区驱动的面试题库,用户可以在其中浏览、贡献并记录遇到的特定题目。
来源:apps/portal/src/pages/index.tsx
项目使用多种配置工具来维护代码质量和一致性:
| 配置 | 目的 | 位置 |
|---|---|---|
| ESLint | 代码 Lint | packages/eslint-config-tih/index.js |
| TypeScript | 类型检查 | packages/tsconfig |
| Tailwind CSS | 样式 | apps/portal/tailwind.config.cjs |
| Next.js | 框架配置 | apps/portal/next.config.mjs |
来源:apps/portal/.eslintrc.js、packages/eslint-config-tih/index.js、apps/portal/tailwind.config.cjs、apps/portal/next.config.mjs
Tech Interview Handbook 是一个全面的技术面试准备平台,包含教学内容和互动工具。其 monorepo 结构允许跨应用程序不同部分共享代码和保持一致的开发实践。
有关特定组件的更详细信息,请参阅以下页面: