选择用于编码面试的编程语言是否重要?答案是肯定的。
大多数公司允许你在任何你想要的编程语言中编写代码 - 我所知道的唯一例外是谷歌,他们只允许候选人从Java、C++、JavaScript或Python中选择一种进行算法编码面试。
然而,你所做的选择可能会比你愿意相信的更影响你的表现 - 这就是为什么在编码面试准备早期就选择一个合适的编程语言并经常使用它很重要 - 在实践中也是如此。
在决定使用哪种编程语言时,有3个要考虑的因素:
- 面试的适用性
- 你对这种语言的熟悉程度
- 异常情况
1. 面试的适用性
有些语言更适合面试 - 更高级的语言如Python或Java提供了标准库函数和数据结构,使你更容易将解决方案转换为代码。
根据我作为面试官的经验,大多数候选人选择Python或Java。其他常见的语言包括JavaScript、Ruby和C++。我绝对避免使用像C或Go这样的低级语言,因为它们缺乏许多标准库函数和数据结构,有些可能需要手动内存管理。
我个人认为,Python是我进行算法编码面试的首选,因为它简洁且拥有大量的函数和数据结构可用。Python还使用一致的API操作不同的数据结构,例如len()
、for ... in ...
和序列(字符串/列表/元组)的切片表示法。获取序列中的最后一个元素是arr[-1]
,反转它很简单arr[::-1]
。在Python中可以用最少的句法实现很多功能。
Java也是一个不错的选择,但需要在代码中不断声明类型意味着额外的键入,这会导致更多的打字,而并没有任何好处(在面试环境中)。当你需要在现场面试时在白板上书写时,这个问题会更加明显。选择或不选择C++的原因与Java类似。最终,Python、Java和C++都是不错的选择。
- 推荐:Python、C++、Java、JavaScript
- 可接受(但如果你已经熟悉其中一种语言,推荐优先考虑):Go、Ruby、PHP、C#、Swift、Kotlin
- 避免:Haskell、Erlang、Perl、C、Matlab
- 你必须疯了:Brainfuck、Assembly
2. 你对这种语言的熟悉程度
大多数情况下,建议使用你非常熟悉的编程语言,而不是为了面试而学习一门新语言。
如果你时间紧张,为了面试而学习一门新语言几乎不是一个好主意。掌握一门语言需要时间,如果你已经花了大部分时间和精力复习/精通算法,几乎没有剩余精力去掌握一门新语言。如果你已经在工作中使用一种主流语言一段时间了,没有时间舒适地熟悉另一种语言,我建议你坚持使用Java而不是从头开始学习Python以备面试。这样做可以避免在工作场合和面试之间切换语言。大多数时候,瓶颈在于思考而不是写作。要习惯一门语言并能够轻松运用它需要一些时间。
学习一门新语言的有效理由:
- 面试需要使用该语言(领域特定角色,如移动开发/前端/数据科学)
- 你没有匆忙开始面试
学习一门新语言的无效理由:
- 你正在面试的公司大量使用该语言,并希望给面试官留下深刻印象/展示你适合这个职位
- 你想展示自己很时尚
请注意,以上内容是根据您提供的Markdown源代码生成的,实际翻译工作应由具备双语能力的专家完成,以确保翻译的准确性和流畅性。