Logo
☆☆☆☆☆
0.0
Beginner
17h

用 JavaScript 解码编程面试:真实案例解析

准备编程面试已变得令人望而生畏。试图做足够多的练习题并记住解法,感觉几乎不可能完成。 幸运的是,成功应对编程面试的最佳方法并不是盲目刷题。真正有效的方法是培养拆解新问题的能力,并掌握恰当的工具来找到解决方案。 因此,在本课程中,你将通过解决科技公司实际面临的现实问题来备战面试。当你解决与真实项目相关的实际问题(例如,实现Zoom会议参会者分页功能)时,不仅会更享受准备过程,而且也更容易记住所学内容。 每个项目结束后,我们还会展示你刚刚运用的技术能够解决哪些类型的面试题目,从而确保你的知识能够灵活迁移至新问题。 (本课程还提供 Rust、Java、C++、C#、Go、Python、Ruby、Elixir、Scala、Swift 和 Kotlin 版本。)

24 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
用 JavaScript 解码编程面试:真实案例解析
准备编程面试已变得令人望而生畏。试图做足够多的练习题并记住解法,感觉几乎不可能完成。 幸运的是,成功应对编程面试的最佳方法并不是盲目刷题。真正有效的方法是培养拆解新问题的能力,并掌握恰当的工具来找到解决方案。 因此,在本课程中,你将通过解决科技公司实际面临的现实问题来备战面试。当你解决与真实项目...

WHAT YOU'LL LEARN

通过解决实际问题,动手实践面试编程准备。

Content

24 Lessons • 0 Quizzes • 0 Challenges

✨入门指南
  1. 1

    课程概述

  2. 2

    谁应该参加此课程?

Netflix
  1. 1

    项目描述:Netflix

  2. 2

    特性1:分组相似标题

  3. 3

    功能二:获取热门电影

  4. 4

    特性 #3:查找中位数年龄

  5. 5

    功能四:流行度分析

  6. 6

    功能五:获取最近观看过的影片

  7. 7

    功能六:获取最常观看的影片

  8. 8

    功能 #7:浏览评分

  9. 9

    功能 #8:验证用户会话

  10. 10

    功能 #9:某一类型电影的组合

  11. 11

    功能 #10:计算缓冲事件的中位数

  12. 12

    功能 #11:生成电影观看顺序

  13. 13

    功能 #12:保持“继续观看”进度条

  14. 14

    我们学到了什么?

  15. 15

    动手实践:分组字母异位词

  16. 16

    DIY:合并 K 个已排序的列表

  17. 17

    DIY:从数据流中找出中位数

  18. 18

    DIY:单调数组

  19. 19

    DIY:LRU 缓存

  20. 20

    DIY:LFU 缓存

  21. 21

    DIY:最小栈

  22. 22

    DIY:验证栈序列

  23. 23

    DIY:电话号码的字母组合

  24. 24

    DIY:滑动窗口中位数

  25. 25

    DIY:排列

  26. 26

    DIY:最大频率栈

Facebook
  1. 1

    项目描述:Facebook

  2. 2

    功能一:好友圈

  3. 3

    功能二:复制连接

  4. 4

    功能三:查找故事ID

  5. 5

    功能四:请求限制器

  6. 6

    特性 #5:标记词

  7. 7

    特性 #6:合并相似消息

  8. 8

    功能 #7:分割帖子

  9. 9

    特性 #8:重叠主题

  10. 10

    特性 #9:重建决策树

  11. 11

    我们学到了什么?

  12. 12

    动手实践:岛屿数量

  13. 13

    DIY:省份数量

  14. 14

    动手实践:无向图中的连通分量数量

  15. 15

    DIY:克隆有向图

  16. 16

    动手实践:在旋转排序数组中搜索

  17. 17

    DIY:日志记录速率限制器

  18. 18

    DIY:富有表现力的词语

  19. 19

    DIY:分组移位字符串

  20. 20

    DIY:分巧克力

  21. 21

    DIY:最小窗口子串

  22. 22

    动手实践:根据前序遍历和中序遍历构造二叉树

搜索引擎
  1. 1

    搜索引擎项目描述

  2. 2

    功能一:存储和获取单词

  3. 3

    功能二:设计搜索自动补全系统

  4. 4

    特性 #3:添加空格以形成单词

  5. 5

    功能4:添加空格后建议可能的查询

  6. 6

    功能五:计算搜索排名因素

  7. 7

    特性 #6:重新组织搜索结果

  8. 8

    功能 #7:查找搜索时间

  9. 9

    特性 #8:分布式进程协调器

  10. 10

    特性 #9:查找最少服务器

  11. 11

    我们学到了什么?

  12. 12

    DIY:实现字典树

  13. 13

    DIY:建议相关句子

  14. 14

    DIY:单词拆分

  15. 15

    DIY:单词拆分 II

  16. 16

    自定义:除自身外数组元素的乘积

  17. 17

    DIY:重新排列字符串

  18. 18

    自定义:函数的独占时间

  19. 19

    DIY:快照数组

  20. 20

    DIY:硬币找零

  21. 21

    动手实践:零钱兑换 2

  22. 22

    DIY:组合总和

谷歌日历
  1. 1

    项目描述:Google 日历

  2. 2

    功能一:寻找会议室

  3. 3

    功能二:显示繁忙日程

  4. 4

    特性 #3:判断会议是否可行

  5. 5

    功能四:安排新会议

  6. 6

    功能五:查找共同会议时间

  7. 7

    特性 #6:寻找连续的两天

  8. 8

    功能 #7:最长繁忙时段

  9. 9

    我们学到了什么?

  10. 10

    DIY:查找区间集合

  11. 11

    DIY:合并区间

  12. 12

    DIY:我的日历

  13. 13

    自定义:插入区间

  14. 14

    DIY:区间列表交集

  15. 15

    DIY:员工空闲时间

  16. 16

    动手实践:和为目标值的两个不重叠子数组

  17. 17

    DIY:最长连续序列

股票爬虫
  1. 1

    股票爬虫项目描述

  2. 2

    特性1:遍历DOM树

  3. 3

    功能二:查找股票数据

  4. 4

    特性 #3:遍历 DOM 树 II

  5. 5

    功能四:最大利润

  6. 6

    我们学到了什么?

  7. 7

    自定义:二叉树层序遍历

  8. 8

    DIY:二叉树的最低公共祖先

  9. 9

    DIY:二叉树 III 的最低公共祖先

  10. 10

    DIY:填充每个节点的下一个右侧节点指针

  11. 11

    DIY:填充每个节点的下一个右侧节点指针 II

  12. 12

    动手实践:最大子数组

  13. 13

    自定义:最佳买卖股票时机

UBER
  1. 1

    项目描述:Uber

  2. 2

    功能一:选择最近的司机

  3. 3

    特性 #2:路径代价

  4. 4

    特性三:绘制并选择路径

  5. 5

    功能四:金额大写

  6. 6

    功能五:优步拼车

  7. 7

    特性 #6:最长路径

  8. 8

    功能七:最高排名

  9. 9

    特性 #8:最优路径

  10. 10

    我们学到了什么?

  11. 11

    自定义:到原点的 K 个最近点

  12. 12

    DIY:接雨水

  13. 13

    DIY:评估除法

  14. 14

    DIY:整数转英文单词

  15. 15

    DIY:按权重随机选择

  16. 16

    DIY:二叉树的直径

  17. 17

    自定义:数组中的第K个最大元素

  18. 18

    DIY:最小路径和

亚马逊
  1. 1

    项目描述(亚马逊)

  2. 2

    功能一:推荐免运费商品

  3. 3

    功能二:推荐商品参与特别优惠

  4. 4

    功能三:产品升级销售

  5. 5

    功能四:复制产品数据

  6. 6

    功能五:订单处理里程碑

  7. 7

    功能6:商品经常一起查看

  8. 8

    特性 #7:优化配送成本

  9. 9

    功能 #8:合并账户

  10. 10

    功能 #9:价格区间内的商品

  11. 11

    功能 #10:计算购物车商品的总费用

  12. 12

    功能 #11:广告投放

  13. 13

    功能 #12:仓库与配送点

  14. 14

    功能 #13:基于时间的商品价格存储

  15. 15

    功能 #14:查找相似产品

  16. 16

    我们学到了什么?

  17. 17

    自定义:两数之和

  18. 18

    动手实践:三数之和

  19. 19

    DIY:最接近的三数之和

  20. 20

    自定义:在 O(1) 时间内实现插入、删除和随机获取

  21. 21

    自定义:插入、删除、随机获取元素 O(1) - 允许重复元素

  22. 22

    DIY:复制带有随机指针的链表

  23. 23

    自定义:在有序数组中查找元素的第一个和最后一个位置

  24. 24

    DIY:在字符串中找到所有变位词

  25. 25

    DIY:随机索引选择

  26. 26

    DIY:连续子数组和

  27. 27

    DIY:账户合并

  28. 28

    DIY:二叉搜索树的范围和

  29. 29

    DIY:基本计算器 II

  30. 30

    DIY:基础计算器 III

  31. 31

    DIY:读取N个字符 — 给定Read4 II — 多次调用

  32. 32

    DIY:墙壁与门

  33. 33

    自定义:基于时间的键值存储

  34. 34

    DIY:两个数组的交集

Zoom
  1. 1

    项目描述:Zoom

  2. 2

    功能一:显示会议等候室

  3. 3

    功能二:序列化与反序列化参与者数据

  4. 4

    功能三:会议活动

  5. 5

    功能四:验证已排序的参与者数据

  6. 6

    功能五:移动设备自动旋转

  7. 7

    我们学到了什么?

  8. 8

    DIY:二叉搜索树迭代器

  9. 9

    DIY:序列化和反序列化二叉树

  10. 10

    DIY:跳跃游戏 IV

  11. 11

    DIY:验证二叉搜索树

  12. 12

    DIY:旋转图像

查重检测
  1. 1

    项目描述:抄袭检测器

  2. 2

    特性 #1:可能的匹配项

  3. 3

    特性 #2:返回匹配结果

  4. 4

    我们学到了什么?

  5. 5

    DIY:匹配的子序列数量

  6. 6

    DIY:最小窗口子序列

网络
  1. 1

    网络项目描述

  2. 2

    特性 #1:总时间

  3. 3

    功能二:TTL 过期

  4. 4

    特性 #3:最少跳跃次数

  5. 5

    功能四:最大路由器数量

  6. 6

    功能 #5:更新VLAN ID

  7. 7

    特性 #6:传输错误

  8. 8

    功能七:通过网络分割文件

  9. 9

    功能 #8:最大时钟偏移

  10. 10

    功能 #9:更新配置

  11. 11

    特性 #10:最小变异

  12. 12

    特性 #11:加权指数退避

  13. 13

    功能 #12:峰值信号强度

  14. 14

    我们学到了什么?

  15. 15

    DIY:通知所有员工所需的时间

  16. 16

    DIY:二叉树中所有与目标节点距离为 K 的节点

  17. 17

    DIY:跳跃游戏 II

  18. 18

    DIY:矩阵中的最长递增路径

  19. 19

    DIY:洪水填充

  20. 20

    DIY:验证回文字符串 II

  21. 21

    DIY:划分标签

  22. 22

    DIY:节点与其祖先之间的最大差值

  23. 23

    DIY:腐烂的橘子

  24. 24

    DIY:最长子数组,其绝对差小于等于限制

  25. 25

    自定义:两数相加

  26. 26

    自定义:两数相加 II

  27. 27

    动手实践:寻找峰值元素

网络安全
  1. 1

    网络安全项目描述

  2. 2

    功能 #1:验证数据包结构

  3. 3

    功能二:验证消息完整性

  4. 4

    功能三:查找字典

  5. 5

    功能四:解码消息的多种方法

  6. 6

    特性 #5:符合条件的候选人

  7. 7

    我们学到了什么?

  8. 8

    DIY:UTF-8 校验

  9. 9

    DIY:验证外星字典

  10. 10

    DIY:外星人字典

  11. 11

    DIY:解码方法

  12. 12

    DIY:找到 K 个最接近的元素

操作系统
  1. 1

    操作系统项目描述

  2. 2

    功能一:分配空间

  3. 3

    功能二:恢复进程

  4. 4

    特性三:调度进程

  5. 5

    功能四:压缩文件

  6. 6

    功能五:恢复文件

  7. 7

    功能六:文件管理系统

  8. 8

    功能 #7:序列化和反序列化文件系统

  9. 9

    特性 #8:压缩文件 II

  10. 10

    功能 #9:文件搜索

  11. 11

    功能 #10:解码消息

  12. 12

    功能 #11:目录迭代器

  13. 13

    特性 #12:优先级验证

  14. 14

    功能 #13:反转命令

  15. 15

    功能 #14:释放进程锁

  16. 16

    特性 #15:按优先级重建队列

  17. 17

    我们学到了什么?

  18. 18

    DIY:和为 K 的子数组

  19. 19

    动手实践:有序数组中的缺失元素

  20. 20

    DIY:课程安排

  21. 21

    DIY:课程表 II

  22. 22

    DIY:序列重构

  23. 23

    DIY:连接词

  24. 24

    DIY:最小移除以使括号有效

  25. 25

    DIY:设计添加和搜索单词的数据结构

  26. 26

    DIY:序列化和反序列化 N 叉树

  27. 27

    DIY:字符串压缩

  28. 28

    DIY:正则表达式匹配

  29. 29

    DIY:通配符匹配

  30. 30

    自定义:24点游戏

  31. 31

    DIY:扁平化嵌套列表迭代器

  32. 32

    动手实践:青蛙跳

  33. 33

    DIY:根据身高重建队列

  34. 34

    DIY:反转字符串中的单词

  35. 35

    自定义:已排序数组中的单一元素

语言编译器
  1. 1

    语言编译器项目描述

  2. 2

    功能 #1:删除注释

  3. 3

    功能二:计算算术表达式

  4. 4

    特性三:循环展开

  5. 5

    特性 #4:通过替换进行优化

  6. 6

    功能五:编译步骤失败

  7. 7

    特性 #6:最常见标记

  8. 8

    特性 #7:移动设备的幂运算

  9. 9

    功能 #8:省电模式下的除法

  10. 10

    功能 #9:验证程序括号

  11. 11

    我们学到了什么?

  12. 12

    自定义:统计注释中的某个单词出现次数

  13. 13

    DIY:简易计算器

  14. 14

    DIY:解码字符串

  15. 15

    DIY:在字符串中查找并替换

  16. 16

    动手实践:第一个错误版本

  17. 17

    DIY:嵌套数组权重求和

  18. 18

    DIY:出现次数最多的单词

  19. 19

    自定义:计算 x 的 n 次方

  20. 20

    DIY:两数相除

  21. 21

    DIY:有效的括号

  22. 22

    DIY:有效括号字符串

Boggle
  1. 1

    Boggle 项目描述 Boggle 是一款经典的单词拼写游戏,玩家需要在由随机字母组成的方格网格中寻找尽可能多的合法单词。游戏的目标是通过连接相邻的字母(包括水平、垂直和对角线方向)来形成有效的英文单词。 本项目旨在实现一个 Boggle 游戏的完整版本,包含以下核心功能: - 随机生成一个 4x4 的字母网格(可扩展为其他尺寸)。 - 提供一个内置的英文单词词典,用于验证输入的单词是否合法。 - 允许用户通过点击或拖动方式选择字母,构建单词。 - 实时检查所选单词是否存在于词典中,并给出反馈。 - 记录并显示已找到的单词列表,避免重复提交。 - 统计得分:根据单词长度计算分数(例如,3 字单词得 1 分,4 字得 2 分,5 字得 3 分,6 字及以上得 4 分)。 - 支持重置游戏、重新生成新网格、查看当前游戏状态等功能。 技术要求: - 使用 Python 或 JavaScript 等编程语言实现。 - 可以使用图形界面库(如 Tkinter、Pygame、React 等)构建用户界面。 - 采用深度优先搜索(DFS)算法在网格中查找所有可能的单词路径。 - 优化词典查询性能,建议使用前缀树(Trie)结构存储单词。 扩展功能(可选): - 添加计时器,限制每局游戏时间(如 3 分钟)。 - 实现 AI 自动解题功能,展示最优解。 - 支持多人模式或排行榜功能。 - 提供不同难度级别(如 4x4、5x5、6x6 网格)。 该项目适合练习字符串处理、递归与回溯算法、数据结构设计以及图形界面开发等技能。

  2. 2

    功能一:在宝格棋盘中搜索单个单词

  3. 3

    功能二:在宝格棋盘中搜索最多的单词数量

  4. 4

    我们学到了什么?

  5. 5

    DIY:单词搜索 I

  6. 6

    DIY:单词搜索 II

拼字游戏 2.0
  1. 1

    拼字游戏项目描述

  2. 2

    功能一:最少移动次数

  3. 3

    特性 #2:可能的结果

  4. 4

    我们学到了什么?

  5. 5

    DIY:单词接龙 I

  6. 6

    DIY:单词接龙 II

游戏
  1. 1

    游戏项目描述

  2. 2

    功能一:顺子手牌

  3. 3

    功能二:从卡牌中获得的最大分数

  4. 4

    功能三:气球爆破

  5. 5

    我们学到了什么?

  6. 6

    DIY:将数组划分为 K 个连续数字的集合

  7. 7

    DIY:从数组的任一端获取最大和

  8. 8

    DIY:移除字符串中的所有相邻重复字符

  9. 9

    DIY:删除字符串中的所有相邻重复项 II

股票
  1. 1

    股票项目描述

  2. 2

    功能1:验证价格

  3. 3

    特性 #2:结算期

  4. 4

    特性 #3:目标达成

  5. 5

    功能四:里程碑达成

  6. 6

    功能五:顶级券商

  7. 7

    功能六:分配交易

  8. 8

    功能 #7:处理交易

  9. 9

    特性 #8:查找区间

  10. 10

    我们学到了什么?

  11. 11

    DIY:有效数字

  12. 12

    DIY:任务调度器

  13. 13

    DIY:将数组拆分为连续子序列

  14. 14

    自定义:在二维矩阵中搜索

  15. 15

    自定义:前 K 个高频元素

  16. 16

    自定义:每 k 个一组反转链表

  17. 17

    DIY:反转链表 II

  18. 18

    DIY:字符串转整数(atoi)

  19. 19

    DIY:每日温度

计算生物学
  1. 1

    计算生物学项目描述

  2. 2

    特性 #1:突变DNA

  3. 3

    功能二:病毒检测

  4. 4

    功能三:定位蛋白质

  5. 5

    功能四:识别蛋白质

  6. 6

    特性 #5:变异病毒

  7. 7

    功能六:识别物种

  8. 8

    功能七:检测蛋白质

  9. 9

    特性 #8:DNA样本之间的相似性度量

  10. 10

    特性 #9:第 K 个缺失的基因

  11. 11

    我们学到了什么?

  12. 12

    DIY:字符串转换为另一个字符串

  13. 13

    DIY:最多包含 K 个不同字符的最长子串

  14. 14

    DIY:最长回文子串

  15. 15

    DIY:验证回文

  16. 16

    动手实践:下一个排列

  17. 17

    动手实践:无重复字符的最长子串

  18. 18

    DIY:回文排列

  19. 19

    DIY:回文子串

  20. 20

    DIY:编辑距离

  21. 21

    DIY:第K个缺失的正整数

移动运营商(AT&T)
  1. 1

    项目描述:移动运营商

  2. 2

    功能一:确定位置

  3. 3

    特性 #2:低覆盖率区域

  4. 4

    功能三:启动老式系统

  5. 5

    功能四:查询峰值用户

  6. 6

    特性 #5:最密集部署

  7. 7

    功能六:最大用户数

  8. 8

    特性 #7:最大连续区域

  9. 9

    功能 #8:最大信号强度

  10. 10

    我们学到了什么?

  11. 11

    自定义:搜索二维矩阵 II

  12. 12

    DIY:柱状图中最大的矩形

  13. 13

    DIY:最大矩形

  14. 14

    DIY:打开锁

  15. 15

    DIY:二维区域和检索 — 不可变

  16. 16

    DIY:最小面积矩形

  17. 17

    DIY:滑动窗口最大值

  18. 18

    DIY:岛屿的最大面积

  19. 19

    DIY:最大连续1的个数 III

  20. 20

    DIY:最短桥

推特
  1. 1

    项目描述:推特(Twitter)

  2. 2

    功能 #1:计算总点赞数

  3. 3

    功能二:合并推文至推特动态

  4. 4

    功能三:识别互动高峰期

  5. 5

    功能四:将用户分为两组

  6. 6

    功能五:绘制热门推文的全球分布图

  7. 7

    功能 #6:推文流量预测器

  8. 8

    功能七:热门话题标签

  9. 9

    我们学到了什么?

  10. 10

    DIY:二进制加法

  11. 11

    DIY:字符串相乘

  12. 12

    动手实践:合并已排序的数组

  13. 13

    自定义:三个不重叠数组的最大和

  14. 14

    动手实践:图是否为二分图?

  15. 15

    DIY:天际线问题

  16. 16

    DIY:从数据流中计算移动平均值

  17. 17

    动手实践:查找系统中的重复文件

树
  1. 1

    翻转二叉树

  2. 2

    翻转等价二叉树

  3. 3

    二叉树中的最大路径和

  4. 4

    二叉树的锯齿形层序遍历

  5. 5

    二叉树的右视图

  6. 6

    二叉树的垂直遍历

  7. 7

    二叉树的边界

  8. 8

    将二叉树展开为链表

杂项
  1. 1

    最小骑士移动

  2. 2

    稀疏矩阵乘法

  3. 3

    设计一个内存文件系统

  4. 4

    螺旋矩阵

  5. 5

    设计井字棋

  6. 6

    迷宫

  7. 7

    复原IP地址

  8. 8

    重新安排行程

  9. 9

    文本对齐

  10. 10

    加油站

  11. 11

    强密码检查器

  12. 12

    数独求解器

  13. 13

    太平洋大西洋水流

  14. 14

    时钟上两根指针之间的夹角

结论
  1. 1

    接下来该去哪里?

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)