算法面试: 数据结构和算法

近几个月,有了充裕的时间学习和练习算法面试。 开了个博客记录C++ Leetcode进展:https://robinali34.github.io/blog_leetcode/

是时候写一写小结了。

  1. 算法面试考核什么?
    • 数据结构的熟练度: C++ STL + 数据结构
    • 算法: 算法熟练度,分类掌握,熟悉对应模板,抽象具体问题->算法选择->基于runtime的筛选->解法实现
    • 有效沟通: 面试同时是筛选这个求职者能不能处,能不能有效沟通,把模糊的需求细化和准确高效的实现
    • 软件工程基础: 比如代码整洁度,快速纠错,合规的代码结构(https://google.github.io/styleguide/cppguide.html)
  2. 如何准备算法面试
    • 迭代学习: 面试是多轮的迭代, 从简单+基础的内容入手, 多轮练习, 不求一蹴而就。 每一轮新的学习,会遇到新的a-ha灵机一动的时刻,前一轮的难点逐步的拿下, 当前环节的难点细节记下来,待第二天或者下一轮再去尝试, 会有惊喜
    • 数据结构:理论学习+多练 任何一本C++数据结构的书都可,先了解有哪些数据结构,再结合练习去回顾和加深理解
    • 算法: 理论学习+Leetcode 从简单题入手, 入门级课程开始,然后多轮迭代练习。 按分类和模板+随机题 同步刷题。 分类+模板加深理论学习的熟练度, 随机题练解題套路(步骤)和熟练度
    • 有效沟通: 多练,找人mock(记录反馈)
    • 软件工程基础: 查漏补缺,记录练习/面试准备中找到的不足+针对性练习
  3. 算法面试的易错点:
    • 量>质: 我遇到的第一个坑就是单纯追求Leetcode刷题的数目, 第二次遇到同样的题依然不会,非常消耗积极性和自信
    • 不练模板: 每个数据结构都有它的常用API, 每种算法都有针对不同问题组的多个模板。 融会贯通模板是快速有效的解题的基础
    • 没有时间敏感度: 不同面试有完全不同的严格的时间要求, 应当针对性规划解题的时间,多长时间读题,多久分析和选择算法,多久代码实现,多久差错和测试, 都应该了熟于心
    • 没有适合自己的规划: 全职准备算法面试不代表每天8小时纯刷题,应该按照自己的需求安排学习&复习的时间; 兼职准备不代表三天打鱼俩天晒网,定一个最低要求(譬如每日一题)
  4. 算法面试的准备安排:
    • 先分类,然后针对性的去练习
    • 列表, 按照自己的舒适度去练习, 可以跳过熟悉的内容,遇到不理解的部分可以暂时放下 找找视频教学 再入手
    • 多轮的准备: 软件设计本质上也是多轮迭代,从基本功能实现开始,在新的版本中添加新的内容,逐步完善才能成为一个优质多功能的好软件。 面试也是一样的道理,从基础入门,先了解什么是数据结构什么是算法,看看视频+教程,再加入多轮不同难度的练习。 注意别给自己定超出能力的目标,别陷入焦虑陷进,甚至厌学。 适当的修改当前的目标,学习和练习都应当是轻松愉快的过程。
    • 清醒的定位:面试是充分的准备+概率性回报, 不要以面试过不过来定义自己的成败。 学习总是有回报的,和上周的自己比较,有提高就是成功。 如果面试内容只是简单题,那么掌握基础数据结构+简单算法就足够,如果是高难度题,那么就对基础+熟练度+综合实力+运气 都有要求
  5. 准备的相关资料
    • 数据结构和算法的公开课程: 优先选名校,中英文都有很好的免费课程在B站和油管都有不错的选择
    • 力扣中文:
      • 学习计划: https://leetcode.cn/studyplan/
      • Leetbook: https://leetcode.cn/leetbook/
    • Leetcode explore: https://leetcode.com/explore/
    • 针对题目的解法: 公开视频,官方题解, AI解答(如Chatgpt, Deepseek)
    • 针对刷题的分类和建议: 前人的分享,如:
      • Leetcode 讨论:
        • https://leetcode.com/discuss/post/7454294/happy-new-year-2026-monotonic-stack-topo-3v8m/
        • https://leetcode.com/discuss/post/1383740/microsoft-online-assessment-part-ii-till-kuq8/
        • https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/876061/yi-ge-mo-ban-miao-sha-10dao-zhong-deng-n-sb0x/
        • 灵茶山艾府滑动窗口与双指针
      • C++相关网站:
        • https://www.cppreference.com/
        • https://google.github.io/styleguide/cppguide.html