首页 > 非科班算法 面试总结 数据结构 & 算法&概率 & 机器学习
头像
苏学算法
编辑于 2021-07-27 19:38
+ 关注

非科班算法 面试总结 数据结构 & 算法&概率 & 机器学习

特别说明:

  • 笔者为21届非科班硕士,拿到阿里、字节、美团等15+ 单位的算法岗,过程之艰辛只有自己知晓/(ㄒoㄒ)/~~。本文为面试过程总结的高频题,特此回馈牛客学弟学妹。
  • 刚刚入职字节杭州推荐算法岗,与阿里和腾讯的实习体验相比,极佳。欢迎学弟学妹私戳咨询。
我的内推码: KNT8GE6


================================= 分割线 ====================================

十大经典排序算法

在这里插入图片描述

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

零、其他

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

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

1
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. 集成学习 Bagging Boosting
  18. 孤立森林(缺点)
  19. RF、GBDT、XGBoost 面试笔记
  20. 20道XGBoost面试题
  21. 标准化和归一化 超全详解
  22. 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 机器学习算法工程师 一面

全部评论

(3) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐