Вопросы интервью на Python [закрыто]

25

Я собираюсь взять интервью в течение двух недель для стажировки, которая будет включать программирование на Python.

Может кто-нибудь предложить, какие возможные области я должен полировать? Я ищу часто задаваемые вопросы в интервью для открытий Python. Помимо того, что я уже больше года говорю на этом языке, я не могу понять, что они могут спросить меня.

Как и в случае интервью на C или C ++, существует множество вопросов, начиная от перестановки строк и заканчивая построением связанных списков, но для интервью на Python я ничего не понимаю.

Личный опыт и / или предложения приветствуются.


источник
Если это стажировка, и вы уже год программируете на Python, думаю, с вами все будет в порядке. Та сказала, я думаю, что общая природа вопросов для Python будет такой же, как те, что вы упомянули для c ++.
Роберт Харви
Роберт, программирование без какого-либо контроля и руководства - вот что меня беспокоит. Может быть, мне не хватает в некоторых областях.
1
Если это стажировка, почему у вас не будет руководства? Это само определение стажировки. Тем не менее, стажеры, где я работаю, не получают уроки программирования, но они получают четкие рабочие инструкции и ожидания. Как стажер, они должны ожидать, что вы будете учиться на работе, и что работа займет немного больше времени, чем если бы это сделал кто-то со стажем.
Роберт Харви
Вы совершаете распространенную ошибку, которую делают многие, приходя из школы - собеседование - это не тест, это больше похоже на первое свидание. Хороший интервьюер не сломит ваши яйца, пытаясь выяснить, знаете ли вы темные углы языка, а скорее попытается установить, вообще, знаете ли вы его на самом деле. Хороший интервьюер сосредоточится на общих знаниях программирования, навыках решения проблем, навыках межличностного общения и опыте. Если кто-то начинает спрашивать о том, как Python интернирует строки, это означает, что он потерян и не знает, как брать интервью.
Шон МакSomething

Ответы:

8

Вот несколько простых:

  1. Что такое Python-декораторы и как бы вы их использовали?
  2. Как вы отлаживаете свой код Python?
  3. Как бы вы настроили много проектов, где каждый использует разные версии Python и сторонние библиотеки?
  4. Соблюдаете ли вы PEP8 при написании кода?
Тьерри Лам
источник
7

Как насчет чего-либо, связанного с пониманием списка Python ? Для меня это было одним из главных преимуществ C ++ после того, как я прочитал о них в Dive into Python .

Msgstr "Написать список понимания, который строит список четных чисел от 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)).
Чинмай Канчи
@ Циклоп, звучит так, как будто тебе нужно пройти собеседование для собственной работы в INNOTECH.
Работа
5
@Chinmay Kanchi Хотя я не думаю, что это был бы хороший вопрос для интервью, большинство знакомств с расширенными функциями делают самые простые вещи, которые они могут (чтобы не запутать читателя). Хотя есть более простое решение для этой конкретной проблемы, цель не состояла в том, чтобы ответить на эту конкретную проблему. Цель состояла в том, чтобы использовать понимание списка (это очень эффективный и заметный способ оптимизировать вещи в Python).
Йтернберг
6

Является ли Python передачей по ссылке или передачей по значению - это тоже очень хороший вопрос.

исмаил
источник
1
Отличным
@ Ismail - Извините, но почему это хороший вопрос?
Теодор
7
@Cervo: Если я правильно понимаю, Python передается по значению так же, как C #, Java, Scheme и т. Д. Передаются по значению ... единственный язык передачи по ссылке, который я видел, это VB6, где все по ссылке, если не указано иное. Тот факт, что вы можете мутировать объекты, никак не делает его проходным по ссылке, и тот факт, что вы можете иметь неизменяемые объекты, не означает, что они также передаются по значению ... так сказать " ответ ни» это совершенно неправильно . Мне очень жаль кандидата, чей интервьюер считает, что ответ «ни один» ...
Мердад
1
@Cervo: к вашему сведению, даже более 100 проголосовавших ответов в вашей ссылке противостоят вашему аргументу: в нем четко сказано, что «параметры передаются по значению».
Мердад
11
Я считаю, что правильный ответ: «Параметры - это ссылки, которые передаются по значению».
user16764
6

Вопросы, которые мне задавали:

  • Опишите два метода метапрограммирования на Python.
  • Что такое GIL?
  • Почему важен GIL?
  • Почему существует альтернативная реализация Python под названием Unladen Swallow ?
  • Django, Pylons или Zope? Защити свою позицию.
Скудный Роджер
источник
5

У меня нет такого опыта, но вот некоторые предположения:

  1. (Im) Изменчивость
  2. Функции первого класса / классы
  3. Затворы

Это кое-что, что должен знать программист на Python, иначе вы можете также нанять программиста на C на эту должность.

Кугель
источник
3

Я бы пошел по списку в этом ответе . Попытайтесь обновить то, что вы знаете, следуя этому списку, насколько это возможно. Не волнуйтесь, если вы не можете сделать это до самого конца.

Бенджамин Банье
источник
2

Помимо других ссылок люди предоставили. Я также рекомендую скрытые возможности Python . На всякий случай, если они задают тебе несколько каверзных вопросов.

grokus
источник
2

Каков ваш смысл, будут ли они пытаться проверить, знаете ли вы Python, можете ли вы добиться успеха на Python или проверить, умеете ли вы программировать (на Python)?

Это очень разные вещи.

Если они хотят, чтобы вы показали, что вы знаете Python, они могут заставить вас делать такие вещи, как создание генератора, а затем делать это без использования yield. Объясните, как работают классы. Объясните порядок разрешения метода C3. И так далее.

Если они хотят, чтобы вы показали, что вы можете сделать что-то в Python, вам нужно уметь работать с базовыми структурами данных и иметь список библиотек, к которым вы бы обращались для выполнения различных задач. Таким образом, вы должны быть в курсе словари, наборы, массивы. Точно так же вам нужно знать о таких вещах, как BeautifulSoupсинтаксический анализ HTML, уметь говорить о фреймворке, который можно использовать для веб-разработки и т. Д. Вам не обязательно нужно знать, как правильно использовать эти вещи, но вы должны знать, где иди, как узнать больше и быть в состоянии использовать их, как только интервьюер дал вам то, что задокументировано.

Если они хотят, чтобы вы показали, что вы можете программировать (на Python), вам нужно знать основные структуры данных и знать свои алгоритмы. Это намного ближе к вопросам C / C ++, которые вам будут задавать, за исключением того, что вы должны будете использовать собственные структуры данных там, где это облегчает вашу жизнь.

Чтобы быть в безопасности, вы должны в какой-то степени подготовиться ко всем трем. Например, прочитайте http://docs.python.org/tutorial/ и сделайте несколько заметок для себя. Надеюсь, вы уже знаете, как программировать. А затем попробуйте несколько случайных задач и заставьте себя использовать библиотеки, которые вы, возможно, пропустили. Так, например, читайте некоторые CSV, программно извлекайте информацию из веб-страницы, создавайте небольшой веб-сайт с фреймворком и т. Д.

btilly
источник