初学者技巧:解决编程问题
本周,我想重点谈谈面试过程中最重要的环节之一:编程挑战。无论你是在白板上作答,还是通过共享屏幕进行编程,遇到一个不知如何下手的问题都可能让人感到棘手。或许你理解了逻辑和语法,但却不知如何着手;又或许你能轻松地看懂别人的代码,但却过于依赖别人的指导。你最不想看到的就是面对空白屏幕不知所措。
由于常常会感到迷茫,不知道从何入手,所以我决定写一份基本指南,帮助你顺利完成编程挑战。
1. 收到问题
2. 阅读题目。现在再读一遍。
给自己一分钟时间理解题目。如果你没有正确理解问题,就无法作答。一定要提问,以免误解题目要求,浪费时间走错方向。
根据题目的不同,你的问题可能类似于:
- 我将什么参数传递给这个函数?
- 这个函数的作用是什么?最终会返回什么结果?
- 这个数组包含哪些数据类型?
3. 攻击计划
现在是时候在白板上记笔记了。这有助于你梳理问题,寻找可以优化和重构的模式和步骤。在上一步中,你已经确定了函数的用途和参数,现在可以通过在白板旁写伪代码来阐述你的策略,或者直接在代码环境中添加注释。伪代码的目的是帮助你将其转化为代码。你可以在文本编辑器中逐行编写,清晰地概述你的目标。
4. 回答问题
既然你已经问清楚了问题,整理好了方案,也开始编写伪代码,现在就该把它翻译成你选择的语言并进行调试了。在文本编辑器环境下,我发现如果用 JavaScript 编写代码,我会在每行代码后加上 ` console.log()`;如果用 Ruby 编写代码,我会在每行代码后加上`console.log()` ,以便检查代码的值,看看它是否按预期运行。重要的是你要找到解决方案。不要过于追求简单粗暴的解决方法,因为越早实现这个解决方案,你就可以着手进行重构了。
5. 简化
如果你选择了暴力破解法,最好说明你意识到自己提供的是暴力破解或朴素的解决方案,但你会通过 x 和 y 来改进代码,因为 z 的缘故。如果你有时间,这是你通过重构简化和优化代码的好机会。花些时间考虑一下你的解决方案的空间复杂度和时间复杂度,以及它在大规模应用中的运行情况。如果你对大 O 表示法不太熟悉,可以看看我相关的博客文章:
6. 练习,练习,再练习
学习编程是一个循序渐进的过程,提升编程能力、面试技巧以及相信自己的直觉(而不是依赖他人)的唯一途径就是练习。欢迎建设性的批评和反馈,尤其是遇到难题时,一定要重做一遍。如果你有练习伙伴,我强烈建议你们轮流扮演面试官和被面试者的角色,让自己也体验一下被面试的感觉。当你遇到特别棘手的问题,不得不查阅答案时,我发现花时间用测试数据集把算法写出来非常有帮助,这样可以观察算法每一步的运行情况。通过这种方式,你可以深入了解问题,理解它的工作原理,从而记住它,并在下次遇到类似问题时能够轻松解决。
文章来源:https://dev.to/sofiajonsson/beginner-tips-solving-code-problems-55hg


