公司不同,面试难度不同
第一梯队(超级独角兽或工作强度较小的大厂):
国内:字节跳动、美团、拼多多等(天价包频出,工作强度较大)
国外:Snowflake 、Google 、Facebook(活多钱多)
这类公司的 bar 较高,所以必须要刷难题。算法考察范围很广,所以要以刷中等题( 70%)为主,辅以部分难题( 30%)。特别喜欢考察动态规划( DP )和红黑树( Red-black Tree ),线段树( Segment Tree )。
第二梯队(其他大厂)
国内:阿里、腾讯、百度、京东等(工作强度大,但薪资也高)
国外:Amazon 、Microsoft 、Apple 等(薪资中上游)
这类公司刷中等题为主就够了,重点考察快速排序( Quick Sort )、双指针( Two Pointers )、深度优先搜索( DFS )。
第三梯队(其他中小厂)
国内:海康威视、搜狗、爱奇艺等
国外:Roblox 、Uber 、Snapchat等
这类公司刷中等题就够了,算法面试考察范围很窄,把Binary Tree, LinkedList, String, Array 这些基本数据结构相关的题掌握即可。
岗位不同,算法面试难度不同
此外,你心仪的岗位不同,算法面试难度也不同,相应要刷的题目数量也不同。
总的来说,越后端的岗位越难,越前端的越简单。
- Data Scientist / Data Analyst / Data Engineer 超简单
- Web Frontend Engineer / Mobile Engineer 简单
- Software Development Engineer / Product Engineer 中等
- Infrastructure Engineer / Software Reliability Engineer 难
- Machine Learning Engineer 超难
这里分享我整理的面试高频算法题:
二分法:
硬币摆放] 查找最大因子 地图跳跃 山形数组的顶峰坐标 拆分子数组
DFS:
绘制填充 停在原地的方案数 喧闹和富有 旅行计划 连接词
动态规划:
最长上升连续子序列 推多米诺 单词拆分 供应场 书籍复印
哈希表:
最长回文串 找到映射序列 重排字符串 k 距分隔 森林中的兔子 基础计算器
递归:
二叉树的后序遍历 列表扁平化 用递归打印数字 字符串解码 最大子串
此外,刷题不是刷过了就可以,还要注重代码质量。拥有好的代码质量,会让面试官在心里为你默默加分。如果你的代码质量很差,面试官会在心里为你默默扣分。而最终是否导致 Hire / No Hire,就是一个量变引起质变的问题。
拥有好的代码质量,还能够让你的代码少出 BUG 。你以为只需要细心就可以不出 BUG,但是通过子函数化、避免全局变量等手段可以让你出 BUG 的概率大大降低。
好的代码质量包括:
①代码到底写完没有 ②代码风格好不好(可读性、变量名 /函数名命名、空格与空行的正确使用) ③异常检测 ④Bug Free
面试,不止考算法
回到这个问题,就算你真的把LintCode刷通了,你也未必能找到工作。
因为技术岗除了面算法题,还有可能会考:
- 系统设计 System Design / Architechture Design
- 面向对象设计 Objected Oriented Design
- 行为面试 Behavior Question
- 简历面试 Experience Interview
总之,程序员的面试不是三言两语就能讲清楚的。只有通过不断学习和巩固,把面试的方方面面都掌握,才有机会拿到心仪的 offer 。
加油!