机械硬卷算法 面试总结 数据结构&算法&概率&机器学习

笔者为非科班硕士

拿到阿里、字节、美团等15+ 单位的算法岗

过程之艰辛只有自己知晓/(ㄒoㄒ)/~~。本文为面试过程总结的高频题,特此回馈牛客学弟学妹。

欢迎关注我的公众号 苏学算法

图片说明

十大经典排序算法

在这里插入图片描述

其中 ⭐ 个数表示出现频率高低

零、其他

  1. 牛客多行多案例输入输出(依图科技)
  2. 牛客网输入输出 Python
  3. Python读写 txt
  4. Python以一定的概率生成某个数
  5. Python 中列表( List )中的 del,remove,和 pop 等的用法和区别

笔试有要求输出位数时,采用不要用 round(),而应该用:

print("%.6f"%ans)  # 保留 6 位小数

一、 排序算法 & 查找 & top k

  1. Python手写十大经典排序算法

  2. 快速排序

  3. 堆排序

  4. 【剑指 Offer】 40. 最小的k个数

  5. 【LeetCode】215. 数组中的第K个最大元素(高频!字节面试题)&变形(数组是单峰) ⭐⭐⭐⭐⭐⭐

  6. 【LeetCode】347. 前 K 个高频元素 ⭐

  7. 【leetCode】704. 二分查找 ⭐⭐

    二、二叉树

  8. 【LeetCode】二叉树 创建 & 各种遍历 大汇总(秒杀前序、中序、后序、层序 )递归 & 迭代 ⭐⭐⭐⭐⭐

  9. 【LeetCode】105. 从前序与中序遍历序列构造二叉树 ⭐⭐⭐

  10. 【LeetCode】98. 验证二叉搜索树

  11. 【剑指offer】33. 二叉搜索树的后序遍历序列

  12. 【LeetCode】958. 二叉树的完全性检验

  13. 【leetCode】222. 完全二叉树的节点个数

  14. 【LeetCode】572. 另一个树的子树

  15. 【LeetCode】104. 二叉树的最大深度 ⭐⭐⭐

  16. 【LeetCode】124. 二叉树中的最大路径和(困难) ⭐⭐⭐⭐

  17. 【LeetCode】543. 二叉树的直径(任意两节点间最大长度) ⭐⭐⭐⭐⭐

  18. 【LeetCode】110. 平衡二叉树 ⭐⭐⭐⭐

  19. 【LeetCode】297. 二叉树的序列化与反序列化 ⭐⭐⭐

  20. 【LeetCode】226.翻转二叉树 (同 : 剑指 Offer 27. 二叉树的镜像 ) ⭐⭐⭐⭐⭐

  21. 【LeetCode】235. 二叉搜索树的最近公共祖先

  22. 【LeetCode】236. 二叉树的最近公共祖先 ⭐⭐⭐⭐(普通二叉树,不一定是二叉搜索树)

  23. 【LeetCode】103. 二叉树的锯齿形层次遍历 ⭐

  24. 【LeetCode】814. 二叉树剪枝

  25. 【LeetCode】199. 二叉树的右视图 ⭐⭐⭐⭐

  26. 【LeetCode】112. 路径总和 ⭐⭐⭐(二叉树是否存在和为 target的路径) & 113. 路径总和 II ⭐⭐(找到所有满足的路径)& 437. 路径总和 III

  27. 【LeetCode】101. 对称二叉树

  28. 【剑指offer】剑指 Offer 54. 二叉搜索树的第k大节点

三、链表

  1. 手写链表常规操作(创建、插入、删除)
  2. 【LeetCode】141 环形链表 I, ⭐⭐⭐ 142. 环形链表 II(双指针 中学追及问题) ⭐
  3. 【LeetCode 】160. 相交链表 ⭐⭐⭐⭐
  4. 【LeetCode 】234. 回文链表 ⭐⭐
  5. 【LeetCode 】876. 链表的中间结点 ⭐
  6. 【LeetCode 】19. 删除链表的倒数第N个节点
  7. 【剑指offer】22. 链表中倒数第 k 个节点
  8. 【LeetCode】206. 反转链表 & 92.反转链表 II(反转 m 到 n 的链表)⭐⭐⭐⭐⭐⭐
  9. 【LeetCode】83. 删除排序链表中的重复元素(保留或者不保留) ⭐⭐⭐⭐
  10. 【LeetCode】2. 两数相加 ⭐⭐⭐⭐(链表逆序存储 & 445. 两数相加 II(链表正序: 栈)
  11. 【LeetCode】21. 合并两个有序链表(简单) ⭐⭐⭐⭐
  12. 【LeetCode】23. 合并K个排序链表(困难)⭐⭐
  13. 【LeetCode】25. K 个一组翻转链表 ⭐⭐⭐⭐⭐⭐
  14. 【leetCode】86. 分隔链表
  15. 【LeetCode】148. 排序链表
  16. 【LeetCode】143. 重排链表
  17. 【LeetCode】328. 奇偶链表

四、数 & 数组 & 矩形 & 指针

  1. 【LeetCode】84. 柱状图中最大的矩形(单调栈)

  2. 【LeetCode】85. 最大矩形(hard)

  3. 【LeetCode】33. 搜索旋转排序数组(查找目标值) ⭐⭐⭐ & 189. 旋转数组 (将数组中的元素向右移动 k 个位置) & 48. 旋转图像⭐⭐

  4. 【剑指 Offer】 29. 顺时针打印矩阵 (与 54. 螺旋矩阵 相同)⭐⭐⭐

  5. 【LeetCode】4. 寻找两个正序数组的中位数 & 两个有序数组找第 k 大⭐

  6. 【LeetCode】41. 缺失的第一个正数 ⭐⭐

  7. 【leetCode】15. 三数之和 = 0(排序 + 双指针)⭐⭐⭐⭐ & 1.两数之和 = target ⭐⭐⭐⭐

  8. 【LeetCode】16.最接近目标和的三数之和

  9. 【LeetCode】88. 合并两个有序数组 ⭐⭐⭐⭐⭐

  10. 【LeetCode】7. 整数反转 ⭐

  11. 【LeetCode】11.盛最多水的容器(数组+双指针)

  12. 【LeetCode】42. 接雨水

  13. 【LeetCode】26.删除排序数组中的重复项目(数组+双指针)⭐

  14. 【LeetCode】287.寻找重复数

  15. 【LeetCode】166. 分数到小数 ⭐

  16. 【LeetCode】842. 将数组拆分成斐波那契序列(回溯)

  17. 【LeetCode】56. 合并区间 ⭐⭐⭐⭐

  18. 【leetCode】21. 调整数组顺序使奇数位于偶数前面(双指针)

  19. 【LeetCode】74. 搜索二维矩阵 & 240. 搜索二维矩阵 II

  20. 【剑指offer】43. 1~n整数中1出现的次数

  21. 【LeetCode】69. x 的平方根

  22. 【剑指offer】39. 数组中出现次数超过一半的数字

  23. 【LeetCode】162. 寻找峰值

  24. 【LeetCode】311. 稀疏矩阵的乘法

  25. 【LeetCode】263.丑数 & 264. 丑数 II

  26. 【leetCode】31. 下一个排列

  27. 【LeetCode】498. 对角线遍历 & 1424. 对角线遍历 II

  28. 【LeetCode】209. 长度最小的子数组 & 862. 和至少为 K 的最短子数组

  29. 【LeetCode】239. 滑动窗口最大值

五、DFS、BFS、栈、队列、回溯

  1. 【LeetCode】200. 岛屿数量 ⭐⭐⭐& 695.岛屿最大面积

  2. 寻找迷宫中的最短路径

  3. 【LeetCode】155. 最小栈 (使用辅助栈)⭐& 面试题 03.05. 栈排序 ⭐⭐(手写 push、pop )

  4. 【剑指offer】09. 用两个栈实现队列 ⭐⭐⭐

  5. 【LeetCode】232. 用栈实现队列

  6. 【LeetCode】46.全排列(回溯算法)⭐

  7. 【LeetCode】78. 子集 & 90. 子集 II

  8. 【LeetCode】39. 组合总和 & 40. 组合总数 II & 216. 组合总和 III & 1~n 这n个数组合成 m

  9. 【LeetCode】17. 电话号码的字母组合

  10. 最短路径算法之Dijkstra算法

六、动态规划 & 子序 & 子串

  1. 【LeetCode】509. 斐波那契数 & 【剑指offer 10-II】青蛙跳台阶 ⭐

  2. 背包问题详解

  3. 【LeetCode】 300. 最长上升子序列 ⭐

  4. 【leetCode】128. 最长连续序列(hard)

  5. 【LeetCode】1143. 最长公共子序列 ⭐⭐

  6. 最长的公共连续子串

  7. 【LeetCode】72. 编辑距离 & n次最短编辑距离 & 每种编辑次数⭐

  8. 【LeetCode 】213. 打家劫舍II

  9. 【LeetCode 】416. 分割等和子集(使得两个子集的元素和相等)

  10. 【LeetCode 】494. 目标和 ( + 和 - 操作得到 target)

  11. LeetCode 】279. 完全平方数(最少的完全平方数之和等于 n)

  12. 【LeetCode】62. 不同路径(动态规划)⭐⭐

  13. LeetCode】63. 不同路径 II(有障碍物时)(动态规划)

  14. 【LeetCode】121. 买卖股票的最佳时机 ⭐⭐⭐

  15. 【LeetCode】53.最大子序和 & 【剑指offer】42. 连续子数组的最大和 ⭐⭐

  16. 【LeetCode】673.最长递增子序列的个数(可不连续)& 674. 最长递增子序列的长度

  17. 【LeetCode】322. 零钱兑换 & 518. 零钱兑换 II ⭐⭐

  18. 【LeetCode】39. 组合总和 & 40. 组合总数 II & 1~n 这n个数组合成 m

  19. 【LeetCode】5. 最长回文子串

  20. 【LeetCode】516. 最长回文子序列 (动态规划)

  21. 【LeetCode】1312. 让字符串成为回文串的最少插入次数

  22. 【LeetCode】125. 验证回文串

  23. 【LeetCode】680. 验证回文字符串(删除一个变成回文串) Ⅱ &变形 (删除一个字符成为回文串)

  24. 【LeetCode】263.丑数 & 264. 丑数 II

  25. 【LeetCode】 买卖股票的最佳时机 I ~ IV

  26. 【LeetCode】32. 最长有效括号

  27. 【面试题】一个环,有n个点, 问从0点出发,经过k步回到原点有多少种方法

七、字符串

  1. No. 1143 【LintCode 最长AB子串 O(N)复杂度 解法】
  2. 【LeetCode】3. 无重复字符的最长子串 ⭐⭐⭐⭐
  3. 【LeetCode】394. 字符串解码 ⭐⭐
  4. 【LeetCode】8. 字符串转换整数 (atoi)
  5. 读取两个文件的字符数组,并求其交集
  6. 【LeetCode】344. 反转字符串
  7. 【LeetCode】415. 字符串相加
  8. 删除最小字母(第四范式算法一面)
  9. 【LeetCode】58. 最后一个单词的长度

九、位运算 & CPU逻辑 & 括号 & 进制 & 正则式 等

  1. 【LeetCode】231. 2的幂 ——判断一个数是不是2的整数次幂
  2. 【LeetCode】136. 只出现一次的数字(异或运算秒杀)& 137. 只出现一次的数字 II⭐⭐
  3. 【剑指 Offer】 15. 二进制中1的个数
  4. 【LeetCode】636. 函数的独占时间
  5. 【LeetCode】146. LRU缓存机制 ⭐⭐⭐
  6. 【LeetCode】460. LFU缓存
  7. 【LeetCode】20. 有效的括号
  8. 【LeetCode】32. 最长有效括号
  9. 【LeetCode】93. 复原IP地址

    八、游戏规则类(麻将、其他等)

  10. 【面试】麻将胡牌【字节跳动、递归】
  11. 【剑指offer】61. 扑克牌中的顺子

九、Python 语言

  1. 装饰器
  2. Python中错误和异常处理
  3. Python读写 txt
  4. Python @property 与 @staticmethod 装饰器的介绍与使用
  5. Python 的深拷贝和浅拷贝
  6. 创建二维数组 以及 python中[0 ]* n与[0 for _ in range(n)]的区别与联系

十、概率题 & 开放题 & 智力题

  1. 极大似然估计(Maximum Likelihood Estimation)
  2. 概率p输出1,概率1-p输出0,等概率输出0和1 & rand7()构造rand10() 系列变形(新浪、字节面试题)
  3. 数据集{X, Y} 猜测 y和x之间存在函数关系 y = a e^(wx) + E, E~N(0, σ)请设计一个算法拟合出 a,w
  4. 投骰子连续两次是 6就停止,求投掷的次数的期望 & 系列变形
  5. 【概率】甲乙射击比赛,单局甲胜率0.6,3局2胜和5局3胜两种赛制甲如何选择?无限多局,甲获胜概率?
  6. 面试常问智力题
  7. 【LeetCode】458. 可怜的小猪(试毒药)
  8. 【LeetCode】1227. 飞机座位分配概率
  9. A有 n+1 个硬币,B有 n 个硬币,A比B得到更多的正面朝上的概率是多少?
  10. 牛客汇总智力题 40 道

    十一、Tensorflow

  11. Tensorflow 实现最简单 CNN 示例
  12. Tensorflow卷积实现原理+手写python代码实现卷积

十二、计算机基础、C++

  1. 进程和线程的深入理解
  2. C++ 多态与虚函数

十三、强化学习

  1. 马尔科夫决策过程(MDP)
  2. 时序差分离线控制算法Q-Learning
  3. 时序差分在线控制算法SARSA
  4. 深度确定性策略梯度(DDPG 公式推导)
  5. 莫凡 DDPG
  6. 李宏毅 Proximal Policy Optimization (PPO)原理
  7. 莫凡 代码 Policy Gradients (Tensorflow)
  8. Imitation Learning
  9. DeepMimic

十四、CNN 细节

  1. 卷积实现原理
  2. 反卷积
  3. Depthwise卷积与Pointwise卷积
  4. 卷积基本计算公式,padding
  5. pooling层的作用

    十五、结合项目(逻辑回归、SVM、FFT等)

  6. 【超详细公式推导】关于交叉熵损失函数(Cross-entropy)和 平方损失(MSE)的区别
  7. LR 和 SVM 联系与区别和联系 &核函数的使用
  8. 逻辑回归 LR 详细推导
  9. 傅里叶变换公式及其推导【超详细!】
  10. LSTM 为什么能够解决梯度消失问题
  11. 手推 梯度消失和梯度爆炸问题
  12. 防止过拟合
  13. Dropout原理
  14. 激活函数总结
  15. 机器学习中的优化方法
  16. 深度学习中的优化算法总结 Optimizer
  17. 深度学习中的优化算法总结 Optimizer2
  18. 深度学习中的优化算法总结 Optimizer3
  19. 深度学习中的优化算法总结 Optimizer4
  20. [深度学习中的优化算法总结 Optimizer5
  21. 集成学习 Bagging Boosting
  22. 孤立森林(缺点)
  23. RF、GBDT、XGBoost 面试笔记
  24. 20道XGBoost面试题
  25. 标准化和归一化 超全详解
  26. Batch Normalization 超详细解读 ⭐⭐⭐⭐⭐
    在这里插入图片描述

十五、面经

  1. 【面经】作业帮 2021 届提前批一面
  2. 【面经】百度 feed 推荐 一面 提前批面试手撕代码题
  3. 字节跳动面试题,给定数据集,已知函数关系,拟合参数
  4. 2021届华为提前批面试记录
  5. 【面经】百度 feed 推荐算法二面
  6. 【面经】小米未来星提前批一面
  7. 【面经】OPPO 机器学习一面
  8. 【面经】触宝算法工程师一面
  9. 【面经】好未来面试一面
  10. 【面经】百度语音一面
  11. 【面经】美团算法一面
  12. 【面经】好未来二面面经
  13. 【面经】寒武纪算法一面
  14. 【面经】京东搜索广告算法一面
  15. 【面经】字节跳动 Data 算法一面、二面
  16. [【面经】腾讯技术2面+HR+ GM面]
  17. [【面经】百度语音部门 3 技术 + 经理面]
  18. 【面经】字节跳动 Data 算法三面
  19. 【面经】360算法一面
  20. 【面经】第四范式机器学习算法 一面
  21. [【面经】深信服机器学习二面]
  22. 【面经】美团机器学习算法一面
  23. 【面经】美团机器学习算法二面
  24. 【面经】腾讯 AiLab 机器学习算法工程师 一面

楼主本硕学的都是机械专业,完全自学转算法,有幸获得了15+ 算法offer,目前在字节跳动 Data 做推荐算法,这是我最近刚开始做的公众号。
图片说明

后续会持续更新刷题笔记、大厂面经、常考的算法原理 以及 推荐算法领域的前沿论文,当然也会分享一些生活记录,欢迎关注我的公众号 「苏学算法」呀!😊 😊 😊

#2022秋招##学习路径#
全部评论
985硕,各种大厂实习经历,老转行了😂
1 回复 分享
发布于 2021-10-05 21:53
《论机械🐶如何硬卷算法岗》https://mp.weixin.qq.com/s/PPi8BXi-AtKcAhi4ugcqjQ
点赞 回复 分享
发布于 2021-09-15 09:14
爱了爱了
点赞 回复 分享
发布于 2021-11-26 17:37
强👍
点赞 回复 分享
发布于 2021-11-27 18:15

相关推荐

点赞 评论 收藏
分享
评论
27
297
分享
牛客网
牛客企业服务