公司不同,面试难度不同

不同公司,考察的知识点范围不同,相应的面试难度也不同。

第一梯队(超级独角兽或工作强度较小的大厂)

国内:字节跳动、美团、拼多多等(天价包频出,工作强度较大)
国外: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刷通了,你也未必能找到工作。
因为技术岗除了面算法题,还有可能会考:

总之,程序员的面试不是三言两语就能讲清楚的。只有通过不断学习和巩固,把面试的方方面面都掌握,才有机会拿到心仪的 offer 。
加油!