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

笔者为非科班硕士

拿到阿里、字节、美团等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
强👍
点赞 回复 分享
发布于 2021-11-27 18:15
爱了爱了
点赞 回复 分享
发布于 2021-11-26 17:37
《论机械🐶如何硬卷算法岗》https://mp.weixin.qq.com/s/PPi8BXi-AtKcAhi4ugcqjQ
点赞 回复 分享
发布于 2021-09-15 09:14

相关推荐

09-17 20:12
门头沟学院 C++
40min无自我介绍和反问1. udp怎么实现可靠传输(quic,不了解)2. 怎么设计一个 rpc 框架,应用层怎么设计(只说了序列化反序列化啥的)3. 追问protobuf序列化原理(不会,查了下发现之前其实有看过)4. brpc和grpc差异(实习组里用的brpc,不会)5. 了解分片和分段吗(tcp mss 分片,ip mtu 分片)6. ipv6 和 ipv4 的分片有什么差异(不会)7. cpp 有什么类似内存对齐的优化(答了一点,不太满意)8. 突然问到ai,mcp知道吗,和function call 区别(不太会)9. cpp 性能工具10. 多线程和多进程要考虑什么(我就答了并发控制,共享资源,就沉默了)场景题:(1)对ip限流,比如1s 限制请求 10 次,代码实现思路(一开始说redis被毙了)我就说用类似流动窗口的队列,为每个ip分配一个队列反驳说ip很多呢,内存不是挤爆了,我找补了一下,那就类似令牌桶为每个ip分配一个值,每秒恢复这个值为10,面试官说下一题吧(2)怎么设计一个ip黑名单,形式可能是区间,比如[1.1.1.1-1.1.2/24],会有CIDR格式的ip,反正是混着用的,怎么用一个通用的结构保存。一开始说哈希表,但是连续的不好表示,说trie树也不知道怎么实现,面试官看出我不会,就说做个手撕吧统计字符串出现次数前k大(力扣692),写了15min多,面试官看了一眼说好,那就这样,第一次遇到反问和自我介绍都没有的面试。感觉鹅还是太难了
深夜焦虑难以入眠:我很少评价哪个面经难的,这个有点难
查看13道真题和解析
点赞 评论 收藏
分享
09-12 12:30
已编辑
南京大学 Java
云证之后就是漫长的等待teg今年没有意向直接泡池子泡到开奖,有点怕会不会直接泡死了,被排序的日子究竟什么时候是个头啊8.25 云架平存储团队 一面当时这个部门捞了一万个人面试😂我的面试都排在一周之后了1. 自我介绍2. 实习3. rpc怎么决定将请求发往哪一台机器4. 一致性哈希的使用场景5. 手撕5.1 复原ip地址。一些边界条件没考虑到,磕磕绊绊做出来了5.2 原创题,很大的日志文件,每行有id 时间戳 操作(登陆or登出),文件很大不能全部读入内存。要求计算同一时间的最大在线人数6. 你实习用到了s3,说下为什么要用7. 假如微信发消息要过滤屏蔽词,如何设计(ac自动机,这题pass了)8. 设计一个纯内存型KV缓存,要求线程安全,并且有持久化策略(这里和面试官battle了好久,主要聚焦于持久化策略如何保证数据不丢失,追问了好多)虽说一些地方比较磕绊但总体上还是全答出来了。面完大概过了一两天收到了面试体验反馈邮件,小一周后挂复活赛9.3 混元机平 一面1. 自我介绍2. 面试官介绍了下业务3. 几乎全程问字节实习,讲了项目架构和业务流程,针对一些细节做了追问4. 手撕:LRU和课程表II,出完题面试官就干别的去了,大概40分钟之后回来,简单问了问写的咋样就反问然后结束了当天晚上官网流程变复试9.8 混元机平 二面面试给我约到了晚上九点,而且邮件上显示的面试时间只有半个小时。面之前一直在怀疑是不是kpi面1. 没有自我介绍,面试官介绍业务2. 手上有offer吗(说字节意向,然后明显看到面试官虎躯一震😂)3. 问了下为什么字节和美团两段实习都这么短4. 字节实习主要做了哪些事情,你主要负责哪些部分5. 你们的做的workflow,和agent有什么区别6. 技术上怎么解决问题的?高并发怎么解决?7. 手撕:两个线程不断的把随机字符串放入公共队列,第三个线程依次取出并打印前面聊的挺好的,但是手撕部分面试官只给了大概十五分钟左右时间,写的时候犯了低级错误自己还没意识到,导致运行不起来面试官不等了,最后确认了下我的意向base面试就结束了,无反问,整场面试只有40min左右面完之后觉得凉凉了,结果第二天早上官网流程状态变成hr面(?????)9.12 混元机平 hr面1. 经历前两轮的面试,对团队和业务有了解吗2. 我们的方向和你的规划相吻合吗3. 自我介绍4. 对毕业之后期望从事的工作方向怎么考虑5. 找工作看重哪些因素6. 根据你的过往经历,有哪些突破困难达成目标的工作或项目7. 根据你的过往经历,有哪些努力了但结果不尽人意的工作或项目8. 成长压力最大的阶段是在什么时期9. 你熟悉的人如何评价你?10. 有没有直系亲属在tx工作?11. 有哪些其它offer面完一个半小时后转录用评估不知道为什么只有两轮技术面。不过混元的面试能感觉到面试官对我自身的关注度是比较高的,前面聊的都挺合得来,不像云架平存储的面试那样大部分都对着题库出题。可惜部分手撕环节出了问题,虽然给过了不知道会不会导致排序靠后
求个offerrrr...:我腾讯也是这个部门
查看27道真题和解析
点赞 评论 收藏
分享
评论
27
298
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务