编码面试的数学备忘单
简介
数学是计算机科学的基础,每个程序员和计算机科学家都需要有基本的数学知识。幸运的是,出于编写面试代码的目的,通常不会涉及太多的数学知识,但是了解一些基本的数学技巧是有帮助的,因为你可能会被要求执行数学运算。
面试时要注意的事情
- 如果代码涉及除法或模运算,记得检查除法或模 0 的情况。
- 如果您使用的是 Java 和 C++之类的类型化语言,请检查并处理溢出/下溢。至少,提及溢出/下溢是可能的,并询问您是否需要处理它。
- 考虑负数和浮点数。这听起来可能是显而易见的,但在面试压力下,许多显而易见的案例都被忽视了。
常用公式
公式 | |
---|---|
检查一个数字是否是偶数 | num % 2 == 0 |
1 到 N 的和 | 1 + 2 + ...+ (N - 1) + N = (N+1) * N/2 |
几何级数的和 | 20+21+22+23+...2 n = 2 n+1 - 1 |
N 的置换 | n!/ (N-K)! |
N 的组合 | n!/ (K! * (N-K)!) |
技巧
一个数的倍数
当一个问题涉及到“一个数是否是 X 的倍数”时,模运算符会很有用。
比较浮动
处理浮点数时,注意舍入误差。考虑使用 epsilon 比较来代替相等检查。例如abs(x - y) <= 1e-6
而不是x == y
。
快速运算符
如果问题要求你实现一个操作符,比如幂、平方根或除法,并希望它比 O(n)快,那么某种形式的加倍(快速取幂)或减半(二分搜索法)通常是可行的方法。例子: Pow(x,n) , Sqrt(x)
拐角情况
- 被 0 除
- 乘以 1
- 负数
- 漂浮物
基本问题
如果你在学习这个话题,这些是需要练习的基本问题。
推荐练习题
这些是在你为题目学习并练习了基本问题后推荐练习的问题。
推荐课程
AlgoMonsterT3】
AlgoMonster 旨在帮助你在最短的时间内通过技术面试。由谷歌工程师开发的 AlgoMonster 使用数据驱动的方法来教你最有用的关键问题模式,并有内容帮助你快速修改基本的数据结构和算法。最重要的是,AlgoMonster 不是基于订阅的——支付一次性费用,就可以获得终身访问。 今天加入七折优惠→
寻找编码面试:编码问题的模式
设计大师的这门课程扩展了推荐练习题中的问题,但从问题模式的角度来进行练习,这是一种我也同意的学习方法,我个人也使用这种方法来更好地编写面试代码。本课程允许你用 Java、Python、C++、JavaScript 来练习选定的问题,并提供这些语言的示例解决方案以及一步一步的可视化。学习和理解模式,而不是背答案! 现在获得终身使用权→
掌握编码面试:数据结构+算法
这本 Udemy 畅销书是评分最高的面试准备课程之一(4.6 星,21.5k 评分,135k 学生),包含了价值 19 个小时的内容。像技术面试手册一样,它超越了编码面试,涵盖了简历,非技术面试,谈判。是一个全包!请注意,JavaScript 用于编码演示。 结账→