首页 » 软件开发 » 9 大技巧拯救你的编程面试(算法面试复杂度编程技巧)

9 大技巧拯救你的编程面试(算法面试复杂度编程技巧)

萌界大人物 2024-07-25 04:12:38 0

扫一扫用手机浏览

文章目录 [+]

作者 | Daily Coding Problem

译者 | 苏本如,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

9 大技巧拯救你的编程面试(算法面试复杂度编程技巧) 软件开发
(图片来自网络侵删)

以下为译文:

关于编程面试中遇到的困难和算法问题,我们已经讨论了很多,但是首先在面试环境中让自己保持舒适本身就是一种技巧。

除了提出正确的解决方案之外,在每次编程面试中,你还需要做一些额外的事情。

要求澄清问题。

运行你的算法并用测试用例进行验证。

主动提供算法的时间复杂度和空间复杂度信息。

很多时候,应聘者会立即全神贯注于编写代码,而忽略了做上面的一件或多件事情,这会对他们的面试结果产生负面影响。
面试官肯定会发掘出应聘者编写正确算法的能力,但他们也会基于沟通能力和验证能力等其他技能来评估应聘者。

要求澄清问题

在开始编写代码之前,一个好的应聘者总是会问清楚面试官提出的问题。
这有三个主要目的:

它缩小了问题的范围。
例如,也许你会问面试官,“这个数组中的所有整数都是正的吗?”。
如果答案是肯定的,那么你就不必考虑整个负整数空间,这可能使问题更容易解决。

它向面试官表明你正在积极考虑边缘案例。
面试是为了证明你有能力进行批判性和周密的思考,同样也是为了证明你的原始编码能力。

它允许你和面试官就问题的理解达成一致。
因为有些时候,我给了应聘者一个问题,他们提出的解决方案却稍有偏差。
所以在开始之前,确保你和面试官对你要解决的问题的理解一致。

验证算法

在面试过程中,仅仅在黑板上写好代码并称之为“完成”是不够的。
一个高质量的应聘者总是会用边缘案例和例子逐步检查他们的算法以找出任何错误。
这是几乎每个面试官都希望看到的关键步骤。

在验证算法时,尽可能周密。
下面是一些提示:

在算法的每个步骤,写出存储在任何数据结构或变量中的内容。

如果执行for-或while循环,请确保运行算法直到完成,以捕获任何“off-by-one”错误或终止错误。

选择non-trivial的测试用例。
可能是该算法适用于特定的输入集,但不适用于更复杂的输入集。
尝试提出破坏算法的测试用例。

理想情况下,你写的算法没有任何缺陷,但现实中更可能发生的是,你会发现一些小错误。
通过修改算法来修复这些错误,并再次运行几个测试用例,将能很好地反映出你的代码调试能力。

提供算法的时间复杂度和空间复杂度

几乎每个面试官都会关心算法的时间复杂度和空间复杂度。
主动提供这些信息,而不是等待他们询问,可以向面试官表明你熟悉这些概念,并且可以轻松计算这些信息。

需要牢记的一些事情:

当开始考虑一个问题时,试着想想绝对的最好和最坏情形时的复杂度是什么。
例如,要在未排序的列表中查找某个元素,我们知道必须至少查看列表中的每个元素一次,所以这个算法的复杂度至少是O(n)。

试着用“压力测试”测算一下你的算法的复杂度,尤其是当它依赖于两个或更多的变量时。
例如,如果你的算法执行次数是O(nk):如果k非常小会发生什么?当k接近n时会发生什么?有时,你会发现一个算法对于特定的n和k值是最优的,另一个算法对于不同的n和k值是最优的。

对于内存限制,如果你确实需要跟踪数据结构中的所有值,请尝试解释。
此外,还要认识到一个事实,即不同编码语言中的某些函数可能会使用额外的内存。
一个很好的例子是在Python中进行列表切片,这会创建一个新的列表(可能会产生另一个O(n)内存使用)。

编码面试是很困难的,精通算法和编码问题并不能保证总是能够通过面试。
幸运的是,有了这三个技巧,你可以更好地了解如何进行编程面试。
祝你好运!

你正在面试编程工作吗,还是只是喜欢有趣的编程问题?查看我们的时事通讯-Daily Coding Problem,你就能每天在你的收件箱中收到一个关于编程的问题。

原文: https://www.dailycodingproblem.com/blog/tips-to-ace-your-coding-interview/

本文为CSDN翻译,转载请注明来源出处。

【End】

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0