Skip to content

编码面试的数学备忘单

原文:https://www.techinterviewhandbook.org/algorithms/math/

简介

数学是计算机科学的基础,每个程序员和计算机科学家都需要有基本的数学知识。幸运的是,出于编写面试代码的目的,通常不会涉及太多的数学知识,但是了解一些基本的数学技巧是有帮助的,因为你可能会被要求执行数学运算。

面试时要注意的事情

  • 如果代码涉及除法或模运算,记得检查除法或模 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 用于编码演示。 结账→



回到顶部