Skip to content

Latest commit

 

History

History
66 lines (43 loc) · 3.01 KB

为编程面试选择一种语言.MD

File metadata and controls

66 lines (43 loc) · 3.01 KB

重要提示:为编程面试选择一种语言

我想澄清面试的编程语言要求。

我的印象是我需要C ++或Java来进行面试,并且在某些情况下C就足够了。但是我也觉得有必要了解Python,因为它也被广泛使用。

深入了解C ++和Python的另一个原因是,我希望能够从面试到招聘再到第一天就变得高效。

结论:面试时选择一种语言。

就是这样。

在面试语言中寻找什么

使用您喜欢的语言。在我的情况下,这意味着要练习很多,因为PHP不会运行(我与老兄PHP在一起已经有15年了)。

选择面试官会理解的编程语言。见下文。

理想情况下,您对面试官以前使用的语言最满意,但至少应为广大读者所理解。

那么,面试的一些可靠的标准选择是:Java,C / C ++ / C#,Python,Javascript以及Ruby。当公司使用PHP,AS3,Lua,Haskell,Go,LISP / Scheme和类似产品时,道理是一样的。

如果您使用某个语言的非标准功能,可能其他语言不支持(比如:Python列表理解,Ruby功能编程技术,高阶函数),那么最好让面试官者对面试者有所了解,稍稍向他们讲解下这些概念。

...在所有条件都相同的情况下,如果目标公司最习惯使用一种语言,则略微偏向目标公司使用的语言。

C ++

C ++可能令人生畏。无论用它做什么都很麻烦。其中一些来自需要分配并确保值存在于数据结构中,如果不存在,则预填充它们以使访问是可预测的。当您无法确定最终大小时,可以根据需要扩展数据结构。这只是一个例子。Java可能使这变得容易得多,但希望你有C++这方面意识。

Python

当我跳到Python时,我并没有那么慢,而且我可以很快地处理工作。一开始我也是新手,但是使用它学习和练习的速度比C++快得多,因为随着我的学习,处理底层逻辑的时间减少了。但是,Python也有它的弊端,因为数据类型的每个实例都是对象,因此每个变量都是对对象的引用。

JAVA

我当初用C++来代替JAVA学习,是为了接触底层原理,而且我觉得从C++转为JAVA要很容易。但是没想到C++的学习过程是非常痛苦的,我为此付出了代价。(译者语:耗费了大量时间)

推测

我推测面试前会通知你使用哪种变成语言,您将花一些时间来适应新雇主的语言和工具。

我的选择

我将使用Python。它不像C ++那样复杂,但是我只需要先被录用即可。一旦我被录用,如果我的工作是用C++变成,那么你可以打赌我能应对的。这都需要时间和练习。但是现在我必须明智地度过自己的时间。

Python的表现力简洁而强大。当然,我正在处理使Python轻松完成任务的抽象问题,但至少我知道抽象下面包含哪些数据结构,算法和big-O注意事项。

您可以使用Python表示链表,树和所有数据结构。您将使用对象和引用,但仍然可以理解要点。我的方法,如果我需要对指针或内存分配做一些事情,我可以将其用C语言代替。

实践

确保至少有以下操作:

  • 初始化和使用哈希支持的字典和集合
  • 执行队列和堆栈操作(无论使用数组,例如Ruby的pop / shift,还是使用显式标准库实现,例如Java的Stack和支持链表的Queue类)
  • 使用构造函数和属性,静态方法和实例方法定义类,并定义子类和接口
  • (1)无效输入和(2)自定义消息的抛出异常
  • 遍历数组和字典(键和值)-包括在维护索引的同时进行迭代(Ruby的每个都有索引,Python的枚举)
  • 字符串和整数之间的转换
  • 字符串:在索引处获取字符,获取范围,并置
  • 初始化二维数组
  • 算术:模(余数),除(如果第一个操作数是整数,则将结果四舍五入为整数吗?),舍入(上切和下切)
  • (可选)Switch语句
  • (可选)内置语言排序。快速定义比较器以对数组进行排序。
  • (更高级的候选对象)5个标准位操作操作(左/右移位,而不是“或”和“与”或)

有一些常见的问题

  • 您喜欢X语言吗?
  • 您对此不满意吗?
  • 与(您自称知道的另一种语言)相比如何?相似/不同?