2022年跳槽总结,仅供参考
一、算法题考察方式
- 单独机试
- 面试时在线手撕
-
- 写一道
- 写多道(笔者遇到要写5道的公司,累呀)
- codereview形式(仅一家公司遇到,很新颖,值得推广)
注意:
1、难度基本等同于leetcode mid左右,很少出现easy或hard难度的。
2、对开发要求较高的团队会机试+面试手撕
3、除了算法题外,建议也准备下设计模式、多线程、sql类题型
4、大数据开发岗相对后台开发而言,算法题相对轻松一些。
二、准备技巧
磨刀不误砍柴工,刷题才是硬道理!
笔者从一开始白板编程手足无措,到现在中等难度题型游刃有余,踩过不少坑也积攒了一些技巧。
阶段一:代码随想录
面对leetcode上近两千道题目,从何刷起?
这里我首先推荐大家先看下carl大佬的刷题教程,旨在帮助大家少走弯路,循序渐进学算法。
【优势】
- 典题目高频面试题,约200+道,有直达leetcode的链接
- 刷题顺序排好了,按照顺序一道一道刷就可以。数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构
- C++、Java、Python、Go、JavaScript等等多语言版本
- 关键知识有视频教学,如双指针、回溯算法。配合视频学习效果更加。
阶段二:剑指offer系列
- 不建议买《剑指offer系列书》,直接leetcode搞起
- 时间有限的情况下,建议刷更经典的《剑指offer第二版》,《剑指offer(专项突击)》稍微偏一点。
剑指 Offer(第 2 版) - 力扣(LeetCode)
总共75道题,排除数学题、奇技淫巧类题,大概有60道题是值得刷2遍的。
阶段三:对应企业高频题
需要开通leetcode会员
如图按出题指数排序即可。每个月只需几十元可以刷到更可能碰到的题型。
三、高频题型(部分)
1、回溯
划重点,必考! 复制如下标题至leetcode即可
- 93. 复原 IP 地址
- 78. 子集
- 90. 子集 II
- 46. 全排列
- 112. 路径总和
- 17. 电话号码的字母组合
进阶回溯:
- 岛屿数量
- 按图找最近的路径
- 332.重新安排行程
- 1036. 逃离大迷宫
- 剑指 Offer 13. 机器人的运动范围
- 473. 火柴拼正方形
我的题解 【回溯2道经典题】岛屿数量 & 按图找最近的路径_pierre94的博客-CSDN博客
为什么回溯面试手撕代码中经常出现?
- 代码量适中,一般十几分钟左右。
- 难度适中,既需要使用固定模板,又需要综合其他的技巧
- 算法考察维度多,一般能看出面试者代码编写基本功、回溯思想、递归理解、LinkedList使用、Set使用等多个维度
- 题目变种多,可以将原题玩出花样
- 验证方便,不需要构造复杂的二叉树、链表。
2、双指针、滑动窗口
划重点,必考! 复制如下标题至leetcode即可
- 三数之和
- 209. 长度最小的子数组
- 反转链表
- 24. 两两交换链表中的节点 (进阶:k个一组翻转链表)
- 剑指 Offer 11. 旋转数组的最小数字
- 19. 删除链表的倒数第 N 个结点
- 面试题 02.07. 链表相交
3、栈、队列、优先队列
- 232.用栈实现队列
- 剑指 Offer 31. 栈的压入、弹出序列
- 347.前 K 个高频元素
- 剑指 Offer 41. 数据流中的中位数
4、二叉树系列
现在考察较少了,因为现场面试不容易构造大量的二叉树案例进行验证。
- 236. 二叉树的最近公共祖先
- 剑指 Offer 55 - I. 二叉树的深度
- 剑指 Offer 28. 对称的二叉树
- 剑指 Offer 27. 二叉树的镜像
5、排序
- 快排
- 冒泡
- 归并排序
6、其他
- 210. 课程表 II 拓扑排序
- LRU
- 42. 接雨水
- 56. 合并区间
四、总结
看刷题群同学的讨论,刷题多少和面试效果做如下总结。
是指能在白板写出代码,经典题目至少刷过2遍
- 1000+:面试几乎是小case,如乱军丛中取敌将首级
- 500~600:能通过绝大多数面试的手撕代码环节
- 300~400:能通过绝大多数中等难度的算法题
- 200~300:能通过绝大多数中等难度原题或轻微变种题 (至少要达到这个环节再面试)
- 200以下:比较看缘分了