Python面试问题[关闭]


25

我将在两周内面试一次涉及Python编程的实习。

谁能建议我应该抛光哪些区域?我在面试中寻找Python开口方面的常见问题。除了我已经使用该语言已有一年多的事实之外,我没有意识到他们会问我什么。

像进行C或C ++面试一样,有很多问题,从字符串反转到建立链接列表,但对于Python面试,我一无所知。

欢迎个人经验和/或建议。


如果是实习生,并且您已经使用Python编程了一年,那么我认为您会没事的。他说,我认为针对Python的问题的一般性质与您针对c ++所提到的问题相同。
罗伯特·哈维

罗伯特,没有任何监督和指导的编程使我感到困扰。也许我在某些方面缺乏。

1
如果是实习生,为什么没有指导?那就是实习的定义。也就是说,我工作的实习生没有编程课程,但是他们确实得到明确的工作指导和期望。作为实习生,他们应该期望您会从工作中学到东西,并且工作将比有经验的人花费更长的时间。
罗伯特·哈维

您正在犯一个很多人失学的普遍错误-面试不是考验,更像是初次约会。一位优秀的面试官不会费劲地试图找出您是否了解某种语言的黑暗角落,而通常会尝试确定您是否真正了解该语言。一个好的面试官将专注于一般的编程知识,解决问题的能力,人际交往能力和经验。如果有人开始询问Python实习生字符串的细节,则意味着它们迷路了,不知道如何面试。
肖恩·麦克索明

Answers:


8

以下是一些简单的方法:

  1. 什么是Python装饰器,您将如何使用它们?
  2. 您如何调试Python代码?
  3. 您将如何设置许多项目,每个项目都使用不同版本的Python和第三方库?
  4. 您在编写代码时是否遵循PEP8?

7

涉及Python 列表推导的内容如何?对我而言,这些是我在Dive into Python中了解到它们之后在C ++上的最大卖点之一。

“编写一个列表理解,以建立从1到10(含10)(含1和10)(含)的偶数列表。”
答案是这样的(请注意范围值可避免出现击剑错误):

foo = [x for x in range(1, 11) if (x % 2) == 0]
print foo
[2, 4, 6, 8, 10]

因此,如果您了解Dive into Python中列出的所有概念,那将涵盖大多数重要功能。


13
这是不可思议的。在Python 2.x中,您只需这样做,range(2,11,2)而在Python 3.x中,list(range(2,11,2))
Chinmay Kanchi 2010年

@Cyclops,听起来您需要为自己在INNOTECH的工作面试。
工作

5
@Chinmay Kanchi虽然我认为这不是一个很好的面试问题,但是大多数高级功能的介绍都做了他们可以做的最简单的事情(以免引起读者的困惑)。尽管有一个针对此特定问题的更简单的解决方案,但重点并不是要解决此特定问题。关键是要使用列表理解(这是非常有效的并且是在Python中优化事物的一种显着方式)。
jsternberg 2011年

6

Python是通过引用传递还是通过值传递也是一个很好的问题。


1
一个很好的跟进问题是要问他们如何展示它以及为什么如此重要
mcotton 2010年

@Ismail-对不起,为什么这是一个好问题?
Theodor

7
@Cervo:如果我理解正确,Python就是按值传递,就像C#,Java,Scheme等是按值传递... 我所见的唯一的按引用语言是VB6,除非另有说明,否则所有内容均为按引用传递。您可以更改对象的事实不会以任何方式使其通过引用传递,而您可以拥有不可变的对象的事实也并不意味着它们也可以通过值传递...所以说“答案是“都不是”完全错误的。我为这位面试官认为答案不是“两个”的候选人感到非常遗憾……
Mehrdad

1
@Cervo:仅供参考,即使您链接中的100个投票以上的答案也与您的论点相反:它清楚地表明“参数是通过值传递的”。
Mehrdad

11
我相信正确的答案是:“参数是按值传递的引用。”
user16764 2011年

6

我被问到的问题:

  • 描述Python中的两种元编程方法。
  • 什么是GIL?
  • 为什么GIL重要?
  • 为什么会有Python的另一种实现称为Unladen Swallow
  • Django,Pylons还是Zope?保卫你的位置。

5

我没有这种经验,但是这里有一些猜测:

  1. (Im)可变性
  2. 头等舱功能/舱位
  3. 关闭

那是python程序员应该知道的一些东西,否则您最好雇用C程序员。




2

您的感觉是什么,他们会尝试测试您是否了解Python,看看您是否可以用Python完成工作,还是测试您是否可以编程(使用Python)?

那是完全不同的事情。

如果他们想让您证明自己了解Python,则可能会强迫您执行诸如创建生成器之类的操作,然后不使用进行操作yield。解释类的工作方式。解释C3方法的解析顺序。等等。

如果他们想让您证明可以使用Python完成工作,则需要具备基本的数据结构能力,并具有要用于各种任务的库列表。因此,您需要熟悉字典,集合和数组。同样,您需要了解诸如BeautifulSoup解析HTML之类的事情,能够谈论可用于Web开发的框架等。您不一定需要了解如何很好地使用这些内容,但是您应该知道在哪里使用。一旦面试官给了你有记录的东西,就可以找到更多的方法,并能够实际使用它们。

如果他们想让您证明您可以编程(使用Python),则需要了解基本数据结构和算法。这与您将要问到的C / C ++问题非常接近,不同之处在于,您将被期望使用本机数据结构,从而使生活变得轻松。

为了安全起见,您应该在某种程度上为这三个方面做好准备。例如,通读http://docs.python.org/tutorial/并给自己做一些笔记。希望您已经知道如何编程。然后尝试一些随机任务,并强迫自己使用您可能错过的库。因此,例如,读取一些CSV,以编程方式从网页中提取信息,使用框架构建小型网站等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.