2024年中旬从熊厂辞职休息了一段时间后,重新面试了一些大型互联网公司,例如:腾讯、快手、字节等。
面试分为 理论 和 实操 两个部分。其中,理论 部分主要根据 简历内容 进行提问【Android 面试记录:两年经验】;实操 部分主要考察 LeetCode 算法。我遇见的面试官普遍偏好考察 链表操作、双指针、滑动窗口 的题。
以下是我面试的过程中,跟着王争先生的课程学习、总结夯实技巧时刷过的一些题目:
一、链表操作
考察的比较频繁,偶尔会修改一下题设继续考察。例如:快手一面时先考察了 反转链表,然后面试官修改了题设,新增 反转指定索引区间的链表元素 的需求,继续考察思路和代码能力。
-
206.反转链表
-
剑指 Offer 25.合并两个排序的链表
-
160.相交链表
-
141.环形链表
-
203.移除链表元素
-
876.链表的中间结点
-
234.回文链表
-
83.删除排序链表中的重复元素
-
328.奇偶链表
-
剑指 Offer 22.链表中倒数第k个节点
-
19.删除链表的倒数第N个结点
-
2.两数相加
二、二分法
偶尔会 结合实际问题 进行考察,主要是利用 二分法的折半 思路解决问题。
-
704.二分查找、374.猜数字大小、367.有效的完全平方数、69.x的平方根
-
744.寻找比目标字母大的最小字母
-
35.搜索插入位置
-
34.在排序数组中查找元素的第一个和最后一个位置
-
33.搜索旋转排序数组
-
153.寻找旋转排序数组中的最小值
-
852.山脉数组的峰顶索引
-
162.寻找峰值
-
74.搜索二维矩阵
-
面试题10.05.稀疏数组搜索
三、哈希表
个人使用的频率比较高,一般是利用 HashMap 或者 HashSet 辅助解决问题。
-
1.两数之和
-
15.三数之和
-
160.相交链表
-
141.环形链表
-
面试题 02.01.移除重复节点
-
面试题 16.02.单词频率
-
面试题 01.02.判定是否互为字符重排
-
剑指 Offer 03.数组中重复的数字
-
242.有效的字母异位词
-
49.字母异位词分组
-
136.只出现一次的数字
-
349.两个数组的交集
-
1122.数组的相对排序
-
面试题 16.21.交换和
-
706.设计哈希映射
-
146.LRU 缓存机制
四、二叉树
层序遍历 考察的频率高一点,面试时被考察过 类似 剑指 Offer 32-111 的之字形打印。偶尔会结合 实际场景考察,主要考察利用 二叉搜索树 的特点解决问题。
题型 1 :二叉树的遍历
-
144.二叉树的前序遍历
-
94.二叉树的中序遍历
-
145.二叉树的后序遍历
-
589.N 又树的前序遍历
-
590.N 又树的后序遍历
题型 2 :二叉树按层遍历
-
剑指 Offer 32-1.从上到下打印二叉树
-
102.二叉树的层序遍历
-
剑指 Offer 32-111.从上到下打印二叉树
-
429.N 又树的层序遍历
-
513.找树左下角的值
题型 3 :二叉树上的递归
-
104.二叉树的最大深度
-
559.N 又树的最大深度
-
剑指 Offer 55-11. 平衡二叉树
-
617.合并二叉树
-
226.翻转二叉树
-
101.对称二叉树
-
98.验证二叉搜索树
题型 4 :二叉查找树
-
剑指 Offer 54.二叉搜索树的第k大节点
-
538.把二叉搜索树转换为累加树
-
面试题 04.06.后继者
题型 5 :LCA最近公共祖先
-
236.二叉树的最近公共祖先
-
剑指 Offer 68-1.二叉搜索树的最近公共祖先
题型 6 :二叉树转单、双、循环链表
-
114.二叉树展开为链表
-
面试题 17.12.BiNode
-
剑指 Offer 36.二叉搜索树与双向链表
-
面试题 04.03.特定深度节点链表
五、回溯法
这类题有一些固定的 思路模板,利用 子集 这类题目画画 树状结构图,会更容易理解上手一点。被考察过 93.复原IP地址。
-
面试题 08.12.八皇后
-
37.解数独
-
17.电话号码的字母组合
-
77.组合
-
78.子集
-
90.子集Ⅱ
-
46.全排列
-
47.全排列
-
39.组合总和
-
40.组合总和
-
216.组合总和
-
131.分割回文串
-
93.复原 IP 地址
六、双指针 与 滑动窗口
这部分题考察的频率很高,面腾讯和字节时都考察过,例如:剑指 Offer 57-1.和为s的连续正数序列。
双指针
-
344.反转字符串
-
面试题 16.24.数对和
-
1.两数之和
-
15.三数之和
-
剑指 Offer 21.调整数组顺序使奇数位于偶数前面
-
75.颜色分类
-
283.移动零已排序未排序指针
-
面试题 16.06.最小差
-
面试题 17.11.单词距离
滑动窗口
-
剑指 Offer 57-1.和为s的连续正数序列
-
剑指 Offer 48.最长不含重复字符的子字符串
-
438.找到字符串中所有字母异位词
-
76.最小覆盖子串
七、排序算法
快手三面时考察过:选择一种自己认为最快的排序算法对两个序列进行排序。
动态规划 考察的频率很低,面字节时被考察过一道简单的DP题:674.最长连续递增序列。这类题目的难度相对较高,需要找出核心的状态转移方程等,个人基本没投入时间刷题掌握。
个人觉得面试算法这块,掌握一些经典题的解法,反复刷刷保持手感应该足够了。遇见困难题解不出来也别太自责,10min左右要有思路并编码解决问题太为难人了。