Machine Learning Engineer (Ads) Interview Questions

A Guide to Pass the MLE interview.

tutorial
Published

January 27, 2023

先学习基本知识,锻炼抽象思维,把题目抽象成最基本的数据结构和算法并解决。

  1. 最接近的三数之和(lc.16):做过类似的题,但第一时间没反应过来是排序+双指针,往递归和回溯的错误思路想了很久,想了一个O(N^2)的暴力解法还卡了很久没写出来,在面试官老师提示先排序后才想到用双指针写了出来;

  2. 最长回文子串

  3. 浮点数平方根

  4. 删除排序链表中出现大于一次的节点

  5. 给一颗二叉树,求二叉树的子树中符合二叉搜索树结构的子树的权值和。

  6. 二叉树最大路径和

  7. 飞机选座位

  8. 找到第K大的数(快排+优化+堆排序)

  9. 归并排序

  10. 解码方法

  11. 加油站

  12. 有效三角形的个数

  13. 数值的整数次方

  14. x的平方根,保留指定精度

  15. x轴上有几条线段,可能互相有交叉重叠,我们可以创建与y轴平行的线条,如果与创建的y轴平行的线条有交叉,那么x轴上的线段就被消除,问最少需要几条线条才能将x轴上的线条全部消除

  16. 给定一个由0和1组成的矩阵,找出每个元素到最近1的距离

  17. 给你一个数组和一个整数k,从数组中选择两个长度为k的子数组(这两个子数组不允许有交叉),使得这两个子数组的数组和,相加之后最大。要求时间复杂度O(n)

  18. n堆石子围成一排,每堆石子的量a[i]已知每次可以将相邻两堆合并为一堆,将合并后石子的总量记为这次合并的得分。n-1次合并后石子成为一堆,求这n-1次合并的得分之和的最大值

  19. 买卖股票的最佳时机(lc.122)

  20. 手写一个str2num,将一个字符串转化成整数,比如”-2131” -> -2131,撕出来之后加大难度,包含小数点情况转化成浮点数,比如”+002131.00143” -> 2131.00143,“-.9” -> -0.9,后来由于时间缘故和其他原因,没有继续加大难度考虑科学计数和溢出的情况。

  21. 给一个字典,按照val值降序排序怎么操作

  22. 给一个数字n,表示有1…n个数字。问这n个数字能组成多少个二叉搜索树?

  23. 最大子矩阵和

  24. 乘积最大子数组

  25. 用数组实现最大优先队列类

  26. [1,2,3,4,54,56,5] 不能相隔偷,最多能投多少

  27. 括号匹配

  28. 三数之和组合数

  29. 柱状图中最大的矩形

  30. 矩阵,从左上走到右下的不同路径的个数。0可走,1障碍

  31. n次方后的最后三位数

  32. 最大矩形的变体

  33. 单词拼接

  34. 最长上升子序列,要求O(nlogn)复杂度

  35. 二叉树的最大路径

  36. 分糖果

  37. 全组合II

  38. 数字转中文

  39. 按分隔符翻转字符串

  40. 接雨水II

  41. AUC计算

  42. 合并K个石头的最小成本

  43. 一道没见过的背包问题

  44. 拆分整数

  45. 最短路径

  46. 优化矩阵乘法

  47. N皇后

  48. 查找二叉树根节点到叶子的路径和,写了递归之后让剪枝

  49. 剑指 Offer 34: 二叉树中和为某一值的路径

  50. NC35 最小编辑代价

  51. 剑指 Offer 59 - I. 滑动窗口的最大值

  52. LIS最长上升子序列的长度

  53. lc257 二叉树的所有路径

  54. lc64 矩阵最小路径和

  55. 逆时针旋转90度矩阵,O(1)的空间复杂度

  56. 自己实现sqrt函数,结果保留5位小数

  57. 10亿个数,内存只有1M,如何让这10亿个数有序

  58. 二叉树子路径和为k的路径个数

  59. 求和为k的子数组个数

  60. 判断是否存在个数超过数组长度一半的数

  61. leecode 102

  62. in-order traversal

  63. leetcode 42

  64. 给定MxN的矩阵,询问子矩阵的和的最大值

  65. 手写kmeans算法

  66. 二叉树找距离target为k的所有节点,用父节点加bfs解决

  67. 链表的quicksort以及在两个链表中查找和为k的两个节点

  68. 手写lru算法,doublelinked list解决

  69. 两颗bst树各出一个node是否能找到和等于k,可以遍历成数组+双指针解决

  70. 一个list包含多个string,找出这个list里是长串S1的子串,基础版本可以用双指针匹配加遍历解决,时间复杂度更少的可以用桶方法

  71. 迷宫问题,二维矩阵包含多个人,有一个出口e,墙用x表示,可以走的地方用.表示, 多个人同时出发,最少多少步以后所有人可以找到出口。是传统的bfs算法。

  72. bfs的经典问题:8皇后问题

  73. 找到连续递增的最长子串,dp问题。

  74. 岛屿的数量,传统bfs算法

  75. 跳远,每次可以跳一格或者两格。就是简单的dp问题(斐波那契)

  76. 写出sqrt函数,就是二分法。(有意思,兴许还有更好的方法哦)