Android面试记录:算法

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左右要有思路并编码解决问题太为难人了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值