不同公司,考察的知识点范围不同,相应的面试难度也不同。
国内:字节跳动、美团、拼多多等(天价包频出,工作强度较大)
国外:Snowflake 、Google 、Facebook(活多钱多)
这类公司的 bar 较高,所以必须要刷难题。算法考察范围很广,所以要以刷中等题( 70%)为主,辅以部分难题( 30%)。特别喜欢考察动态规划( DP )和红黑树( Red-black Tree ),线段树( Segment Tree )。
这些题目,可以在LintCode上根据算法和数据结构的 tag 来刷,提高效率。
国内:阿里、腾讯、百度、京东等(工作强度大,但薪资也高)
国外:Amazon 、Microsoft 、Apple 等(薪资中上游)
这类公司刷中等题为主就够了,重点考察快速排序( Quick Sort )、双指针( Two Pointers )、深度优先搜索( DFS )。
国内:海康威视、搜狗、爱奇艺等
国外:Roblox 、Uber 、Snapchat等
这类公司刷中等题就够了,算法面试考察范围很窄,把Binary Tree, LinkedList, String, Array 这些基本数据结构相关的题掌握即可。
引用一下我在讲座《 FB 面试官揭秘算法面试速成技巧 - 怎样做到 Bug Free 和刷 100 题等于别人刷 300 题》中分享的面试算法知识点及考察情况:
这是一门真正以算法面试为导向的课程,自 2014 年起已开班 6 年,除了带大家巩固算法面试中的 57 个核心考点,关于算法面试中常考知识点的具体考察情况、优秀的Coding Quality,面试中如何与面试官沟通,如何套用算法模板我都会提及,感兴趣的朋友可以去**免费体验**一下~
此外,你心仪的岗位不同,算法面试难度也不同,相应要刷的题目数量也不同。
总的来说,越后端的岗位越难,越前端的越简单。
二分法:
硬币摆放] 查找最大因子 地图跳跃 山形数组的顶峰坐标 拆分子数组
DFS:
绘制填充 停在原地的方案数 喧闹和富有 旅行计划 连接词
动态规划:
最长上升连续子序列 推多米诺 单词拆分 供应场 书籍复印
哈希表:
最长回文串 找到映射序列 重排字符串 k 距分隔 森林中的兔子 基础计算器
递归:
二叉树的后序遍历 列表扁平化 用递归打印数字 字符串解码 最大子串
此外,刷题不是刷过了就可以,还要注重代码质量。**拥有好的代码质量,会让面试官在心里为你默默加分。**如果你的代码质量很差,面试官会在心里为你默默扣分。而最终是否导致 Hire / No Hire,就是一个量变引起质变的问题。
拥有好的代码质量,还能够让你的代码少出 BUG 。你以为只需要细心就可以不出 BUG,但是通过子函数化、避免全局变量等手段可以让你出 BUG 的概率大大降低。
好的代码质量包括:
①代码到底写完没有 ②代码风格好不好(可读性、变量名 /函数名命名、空格与空行的正确使用) ③异常检测 ④Bug Free
很多人会问:刷题刷到什么程度去面试才够?我认为,要根据你的意向岗位,意向公司的算法难度而定。对于马上要参与面试的同学,可以把下表标红的知识点重点刷一遍,突击上岸。
回到这个问题,就算你真的把LintCode刷通了,你也未必能找到工作。
因为技术岗除了面算法题,还有可能会考:
系统设计 System Design / Architechture Design
面向对象设计 Objected Oriented Design
行为面试 Behavior Question
简历面试 Experience Interview
总之,程序员的面试不是三言两语就能讲清楚的。只有通过不断学习和巩固,把面试的方方面面都掌握,才有机会拿到心仪的 offer 。
加油!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.