软件工程师面试软件工程师面试学习指南

2025-05-26

软件工程师面试软件工程师面试学习指南

作者:Ben Rogojan

软件工程面试和其他技术面试一样,需要充分的准备。为了确保你能应对算法、数据结构、设计、优化等一系列接连不断的面试问题,你需要涵盖许多主题,而且主题还在不断增加。

因此,我在上一轮面试中创建了一个清单,其中涵盖了许多热门话题。

为了帮助您跟踪进度,我们编制了一份包含以下相同问题的综合清单;您可以在此处找到该清单

用经典曲目热身

  1. 嘶嘶声
  2. 560. 子数组和等于 K
  3. 数组:左旋转
  4. 字符串:制作字谜
  5. 第 N 个斐波那契数列

你做得怎么样?花点时间根据这些经典问题给自己打分。我们在面试过程中经常会被问到这些问题——通常是在面试初期作为淘汰式的问题。它们通常与算法和数据结构关系不大,但仍然需要你对循环和数组有很好的理解(没错,数组也是一种数据结构)。

算法和数据结构

预习题

在学习数据结构和算法的视频内容之前,不妨先尝试一下下面这些问题,看看你能不能答对。这能帮助你了解应该关注哪些方面。

  1. 985. 查询后偶数之和
  2. 657. 机器人回归原点
  3. 961. 2N 数组中的 N 个重复元素
  4. 110. 平衡二叉树
  5. 3. 最长无重复字符子字符串
  6. 19. 从列表末尾删除第 N 个节点
  7. 23. 合并 k 个排序列表
  8. 31. 下一个排列

算法和数据结构视频

数据结构

  1. 数据结构与算法 #1 --- 什么是数据结构?  --- 视频
  2. 多维度 --- 视频
  3. 动态数组--- 视频
  4. 调整数组大小 --- 视频
  5. 数据结构:链表 --- 视频
  6. 核心链表与数组 --- 视频
  7. 指针的指针--- 视频
  8. 数据结构:树--- 视频
  9. 数据结构:堆--- 视频
  10. 数据结构:哈希表--- 视频
  11. 电话簿问题 ---视频
  12. 数据结构:堆栈和队列--- 视频
  13. 使用堆栈后进先出 ---视频
  14. 数据结构:计算机科学速成课程#14 --- 视频
  15. 数据结构:Trie --- 视频

算法

  1. 算法:图搜索、DFS 和 BFS --- 视频
  2. BFS(广度优先搜索)和DFS(深度优先搜索)  ---视频
  3. 算法:二分查找 --- 视频
  4. 二叉搜索树回顾 --- 视频
  5. Python 面试算法--- 视频
  6. 算法:递归 --- 视频
  7. 算法:冒泡排序 --- 视频
  8. 算法:归并排序 --- 视频
  9. 算法:快速排序 ---视频

大 O 符号

  1. 大 O 符号和时间复杂度简介(数据结构和算法 #7)  --- 视频
  2. 哈佛 CS50 --- 渐近符号 --- 视频
  3. 算法复杂性分析的简单介绍 ---帖子
  4. 备忘单 ---帖子

动态规划

  1. 动态规划(像程序员一样思考)---视频
  2. 算法:记忆化和动态规划 --- 视频
  3. 6.006 :动态规划 I:斐波那契数列、最短路径 --- 视频
  4. 6.006:动态规划 II:文本对齐、二十一点 --- 视频
  5. 动态规划---帖子

字符串操作

  1. 编码面试问答:最长连续字符 --- 视频
  2. Sedgewick --- 子串搜索 --- 视频

面试问题演练

  1. Google Coding 面试 --- 通用价值树问题 --- 视频
  2. Google 编码面试问题和答案#1:第一个重复出现的角色 --- 视频
  3. 在二叉搜索树中查找最小和最大元素 --- 视频
  4. 查找二叉树的高度 --- 视频
  5. 检查二叉树是否为二叉搜索树 --- 视频
  6. 什么是尾递归?它为什么这么糟糕?  --- 视频

学习后的问题

现在您已经学习了一段时间,并观看了一些视频,让我们尝试更多的问题吧!

  1. 越大越好
  2. 6. 锯齿形转换
  3. 7. 反转整数
  4. 40. 组合和 II
  5. 43. 字符串相乘
  6. 拉里的阵列
  7. 短回文
  8. 65. 有效号码
  9. 越大越好
  10. 完全计数排序
  11. 莉莉的家​​庭作业
  12. 普通儿童
  13. 459. 重复子串模式
  14. 27. 删除元素
  15. 450. 删除二叉搜索树中的节点
  16. 659. 将数组拆分为连续子序列
  17. 有界最大值的子数组数量
  18. 组合和 IV
  19. 买卖股票的最佳时机(冷却时间)
  20. 最长重复字符替换
  21. 成对交换节点
  22. 二叉树右侧视图
  23. 扁平嵌套列表迭代器
  24. 二叉树层次遍历
  25. 二叉搜索树迭代器
  26. 最大链长
  27. 将链表拆分成几部分

操作编程问题

有些公司不会问你算法题。他们可能更侧重于实现和操作问题。这些问题通常比较小众,涉及实际问题,例如循环遍历数据和执行某种任务。这类问题通常不需要太多练习,因为它们更侧重于掌握数组和 HashMap 等基本概念,并跟踪你对它们的操作。

  1. 袋鼠问题
  2. 打破纪录
  3. 查找字符串迭代器
  4. 不知道!
  5. 程序员的日子
  6. 排行榜
  7. 词序
  8. 夏洛克与广场
  9. 均衡阵列
  10. 苹果和橘子
  11. 更多运营风格问题

系统设计视频

系统设计问题至关重要,它能证明你不仅仅是一名程序员。作为一名工程师,你需要具备全局思维。某些服务应该放在哪里,你需要什么样的服务器,如何管理流量等等。所有这些问题都表明你具备软件设计能力,而不仅仅是照搬别人教你的代码。

  1. 停车场系统 ---视频
  2. Whats App  --- 视频
  3. Uber 设计 ---视频
  4. Instagram  --- 视频
  5. Tinder 服务 --- 视频

操作系统

操作系统相关的问题相对少见,但对线程、调度、内存等概念有扎实的理解总是有益的,哪怕只是基础的理解。如果被问到进程和线程的区别而不知道答案,那就太尴尬了。

  1. 常见的操作系统面试问题
  2. 什么是翻译后备缓冲区?
  3. 为什么循环算法可以避免优先级反转问题?
  4. 中断与系统调用---文件系统中的“inode”是什么?
  5. 操作系统面试题及答案 --- 第一部分
  6. 什么是内核 --- Gary 解释
  7. 循环算法教程(CPU调度)
  8. LRU 缓存的魔力(Google Dev 的 100 天)  --- 视频
  9. MIT 6.004 L15:记忆层次结构 --- 视频
  10. 中断 ---视频
  11. 调度 ---视频

线程

  1. 用户级线程与内核级线程
  2. 进程和线程简介 --- 视频
  3. 进程和线程之间的区别 --- 佐治亚理工学院 --- 高级操作系统 --- 视频
  4. 分叉和多线程之间的区别

面向对象

与操作系统类似,并非每次面试都会问你面向对象编程的问题,但你永远不知道。你需要确保记住计算机162课程的基础知识。

  1. Java编程教程---49---继承 ---视频
  2. Java编程教程---55---多态性介绍 ---视频
  3. Java 编程教程 --- 58 --- 抽象类和具体类 --- 视频
  4. Java 编程教程 --- 57 --- 覆盖规则 --- 视频
  5. Java 编程教程 --- 59 --- 保存对象的类
  6. 面向对象编程 --- 视频

设计模式

如果你像我们一样,可能没有学过各种设计模式。所以,了解它们的工作原理以及为什么要使用它们是很有好处的。有些面试问题可以很简单,比如“为什么要使用工厂类?”

  1. 工厂设计模式 --- 视频
  2. 观察者设计模式 ---视频
  3. 适配器设计模式 ---视频
  4. 外观设计模式 ---视频
  5. 责任链设计模式 ---视频
  6. 解释器设计模式 ---视频
  7. 单例设计模式教程 --- 视频
  8. 第 6 章(第 1 部分)--- 模式(视频)  ---​​ 视频
  9. 《深入浅出设计模式》  ---视频

SQL

这是最后一部分。很多人可能不会被问到那么多 SQL 问题。不过,我一直认为把它放在口袋里总是好的。

SQL --- 问题

  1. 262. 旅行和用户
  2. 601. 体育场人流
  3. 185. 部门薪资排名前三的人员
  4. 626. 交换座位
  5. Hackerrank报告
  6. 177. 第 N 高薪
  7. 对称对
  8. 职业安置
  9. 奥利凡德的库存

SQL --- 视频

  1. IQ15:6 个 SQL 查询面试问题 --- 视频
  2. 了解 ROW_NUMBER 和分析函数 --- 视频
  3. 解析函数的高级实现 --- 视频
  4. 解析函数的高级实现(第二部分)  ---视频
  5. Wise Owl SQL 视频 --- 视频

SQL 后问题

  1. 二叉树节点
  2. 气象观测站 18
  3. 挑战打印素数
  4. 595. 大国
  5. 626. 交换座位
  6. SQL 面试问题:3 个技术筛选练习(针对数据分析师)

面试可能会很艰难,因为你可能会感觉自己毫无进展。这份学习指南能帮你追踪进度,更好地了解自己的表现!

祝你好运!

此外,如果您想阅读/观看更多精彩的帖子或视频:
在 SaturnCloud 上使用 Jupyter Notebook 连接到 Big Query 第 2 部分

作为数据科学家您应该阅读的三本书
Hadoop 与关系数据库
算法如何变得不道德和有偏见
如何改进数据驱动策略
如何开发健壮算法
数据科学家必须具备的 4 项技能
SQL 最佳实践 - 设计 ETL 视频

文章来源:https://dev.to/seattledataguy/the-interview-study-guide-for-software-engineers-764
PREV
设计百万美元仪表盘的技巧
NEXT
Docker、Kubernetes 和 Helm