Logo
☆☆☆☆☆
0.0
Beginner
21h

用 Kotlin 解码编码面试:真实世界示例

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

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

WHAT YOU'LL LEARN

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

Content

24 Lessons • 0 Quizzes • 0 Challenges

✨入门指南
  1. 1

    课程概述

  2. 2

    谁应该参加此课程?

Netflix
  1. 1

    项目描述:Netflix

  2. 2

    功能一:分组相似标题

  3. 3

    功能 #2:获取热门电影

  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

    DIY:分组字母异位词

  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

    功能五:标记词

  7. 7

    功能六:合并相似消息

  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

    DIY:分组移位字符串

  20. 20

    DIY:分巧克力

  21. 21

    DIY:最小窗口子串

  22. 22

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

搜索引擎
  1. 1

    搜索引擎项目描述

  2. 2

    功能 #1:存储和获取单词

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

    功能六:重新排序搜索结果

  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

    DIY:除自身外数组所有元素的乘积

  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

    功能六:寻找两组连续日期

  8. 8

    功能 #7:最长繁忙时段

  9. 9

    我们学到了什么?

  10. 10

    DIY:查找区间集合

  11. 11

    DIY:合并区间

  12. 12

    DIY:我的日历

  13. 13

    DIY:插入区间

  14. 14

    DIY:区间列表交集

  15. 15

    DIY:员工空闲时间

  16. 16

    动手实践:寻找两个不重叠的子数组,每个子数组的和都等于目标值

  17. 17

    DIY:最长连续序列

股票爬虫
  1. 1

    股票爬虫项目描述

  2. 2

    特性1:遍历DOM树

  3. 3

    特性 #2:查找股票数据

  4. 4

    特性 #3:遍历 DOM 树 II

  5. 5

    特性 #4:最大利润

  6. 6

    我们学到了什么?

  7. 7

    DIY:二叉树层序遍历

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

    动手实践:最大子数组

  13. 13

    DIY:最佳买卖股票时机

UBER
  1. 1

    项目描述:Uber

  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

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

  12. 12

    DIY:接雨水

  13. 13

    DIY:评估除法

  14. 14

    DIY:整数转英文单词

  15. 15

    DIY:按权重随机选择

  16. 16

    自定义:二叉树的直径

  17. 17

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

  18. 18

    DIY:最小路径和

亚马逊
  1. 1

    项目描述(亚马逊)

  2. 2

    功能一:推荐免运费商品

  3. 3

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

  4. 4

    功能三:产品升级销售

  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

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

  15. 15

    功能 #14:查找相似产品

  16. 16

    我们学到了什么?

  17. 17

    自定义:两数之和

  18. 18

    动手实践:三数之和

  19. 19

    DIY:最接近的三数之和

  20. 20

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

  21. 21

    DIY:在 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 个字符(多次调用)

  32. 32

    DIY:墙壁与门

  33. 33

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

  34. 34

    DIY:两个数组的交集

Zoom
  1. 1

    项目描述:Zoom

  2. 2

    功能一:显示会议等候室

  3. 3

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

  4. 4

    功能三:会议活动

  5. 5

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

  6. 6

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

  7. 7

    我们学到了什么?

  8. 8

    DIY:二叉搜索树迭代器

  9. 9

    自定义:序列化和反序列化二叉树

  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

    功能五:更新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

    自定义:二叉树中距离为 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

    功能五:符合条件的候选人

  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

    特性 #3:循环展开

  5. 5

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

  6. 6

    特性 #5:编译步骤失败

  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

    自定义:两数相除

  21. 21

    DIY:有效的括号

  22. 22

    DIY:有效括号字符串

Boggle
  1. 1

    Boggle 项目描述 Boggle 是一款经典的单词拼写游戏,玩家需要在由随机字母组成的 4x4 方格中寻找尽可能多的合法单词。游戏的目标是通过相邻的字母(包括水平、垂直和对角线方向)连接形成有效的英文单词。 本项目旨在实现一个 Boggle 游戏的完整版本,包含以下核心功能: - 随机生成一个 4x4 的字母网格。 - 提供一个词典(如标准英语词汇表),用于验证输入的单词是否合法。 - 实现搜索算法,从每个格子出发,探索所有可能的路径,找出所有有效的单词。 - 支持用户输入单词进行验证,并统计得分(根据单词长度计算)。 - 显示找到的所有有效单词及其得分。 - 可选功能:支持不同大小的网格(如 3x3 或 5x5)、计时模式、多人对战等。 技术要求: - 使用 Python 或其他编程语言实现。 - 使用深度优先搜索(DFS)或回溯算法来遍历网格中的所有可能路径。 - 优化搜索过程,避免重复访问同一格子。 - 使用 Trie 数据结构加速单词前缀匹配,提高查找效率。 项目目标: 开发一个可运行的 Boggle 游戏程序,具备良好的用户交互界面(命令行或图形界面),能够准确识别并输出所有合法单词,同时提供清晰的得分反馈。

  2. 2

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

  3. 3

    功能二:找出棋盘中能构成的所有单词

  4. 4

    我们学到了什么?

  5. 5

    DIY:单词搜索 I

  6. 6

    DIY:单词搜索 II

拼字游戏 2.0
  1. 1

    项目描述:拼字游戏(Scrabble) 开发一个基于文本的拼字游戏,支持两名玩家轮流进行游戏。游戏的核心规则包括: - 玩家从随机抽取7个字母瓷砖组成手牌。 - 每轮玩家需在棋盘上放置一个有效的单词,该单词必须与已存在的单词相连,并且符合英语词典中的合法词汇。 - 棋盘为15×15的网格,包含特殊奖励格子(如双字母分、三字母分、双单词分、三单词分等),用于计算得分。 - 游戏开始时,系统随机决定先手玩家。 - 每次出牌后,玩家从字母池中补充新的字母,保持手牌数量为7个。 - 系统会验证所提交的单词是否有效,若无效则视为违规并扣分或失去回合。 - 当字母池耗尽且双方均无法出牌时,游戏结束。最终得分最高的玩家获胜。 技术实现要求: - 使用面向对象编程设计类结构,例如:Game、Player、Board、Tile、Dictionary 等。 - 实现单词验证功能,通过调用外部词典文件或内置词典进行匹配。 - 提供清晰的用户界面,显示当前棋盘、玩家手牌、得分和轮到谁操作。 - 支持命令行输入,允许玩家输入单词及位置(如“CAT R3C4 H”表示在第3行第4列横向放置单词“CAT”)。 - 可选功能:记录游戏历史、支持AI玩家、图形化界面(GUI)版本。 目标:构建一个完整、可运行的拼字游戏,具备基本规则、逻辑校验和良好的用户体验。

  2. 2

    特性 #1:最少移动次数

  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

    功能一:验证价格

  3. 3

    特性 #2:结算期

  4. 4

    特性三:目标达成

  5. 5

    功能 #4:里程碑达成

  6. 6

    功能五:顶级经纪商

  7. 7

    功能六:分配交易

  8. 8

    功能七:处理交易

  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

    特性五:变异病毒

  7. 7

    功能6:识别物种

  8. 8

    功能七:检测蛋白质

  9. 9

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

  10. 10

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

  11. 11

    我们学到了什么?

  12. 12

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

  13. 13

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

  14. 14

    自定义:最长回文子串

  15. 15

    DIY:验证回文串

  16. 16

    动手实践:下一个排列

  17. 17

    DIY:无重复字符的最长子串

  18. 18

    DIY:回文排列

  19. 19

    DIY:回文子串

  20. 20

    DIY:编辑距离

  21. 21

    动手实践:第K个缺失的正整数

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

    项目描述:移动运营商

  2. 2

    功能一:确定位置

  3. 3

    特性 #2:低覆盖率区域

  4. 4

    功能三:升级站点

  5. 5

    功能四:查询峰值用户

  6. 6

    特性 #5:最大连续区域

  7. 7

    功能6:最密集部署

  8. 8

    功能 #7:最大用户数

  9. 9

    功能 #8:最大信号强度

  10. 10

    我们学到了什么?

  11. 11

    DIY:搜索二维矩阵 II

  12. 12

    动手实践:柱状图中的最大矩形

  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:最短桥

Twitter
  1. 1

    项目描述:推特(Twitter)

  2. 2

    功能 #1:添加点赞

  3. 3

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

  4. 4

    功能三:识别互动高峰期

  5. 5

    功能四:将用户分为两组

  6. 6

    功能五:绘制热门推文的全局轮廓(concept)

  7. 7

    功能 #6: incoming Tweets 预测器

  8. 8

    功能七:热门话题标签

  9. 9

    我们学到了什么?

  10. 10

    DIY:二进制加法

  11. 11

    DIY:字符串相乘

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

    DIY:天际线问题

  16. 16

    自定义:从数据流中计算移动平均值

  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)