что нужно знать джуниору python

100+ вопросов по Python для Junior, Middle и Senior

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 30 сентября 2020 года. Оригинальная версия на украинском языке доступна по ссылке.

Редакция DOU пообщалась с разработчиками, которые проводят технические собеседования Python-специалистов для различных уровней, и собрала примерный список вопросов к кандидатам. Конечно, он не является исчерпывающим, однако содержит типичные вопросы.

Вопросы для Junior

От джуниоров требуют знать и уметь применять базовые структуры данных и модули, простейшие запросы к базам данных, знать простейшие команды системы контроля версий и тому подобное.

Общее по Computer Science и Web Development:

1. Что такое инженерия и процесс разработки в целом?

2. Какие знаете принципы программирования?

3. Чем отличаются процедурная и объектов-ориентированная парадигмы программирования?

4. Какие основные принципы ООП (наследование, инкапсуляция, полиморфизм)?

5. Что такое множественное наследование?

6. Какие есть шесть этапов разработки продукта в Software Development lifecycle и какая разница между Agile и Kanban?

7. Какие есть методы HTTP-запросов и какая между ними разница?

8. Как выглядят HTTP-request / response?

9. Что такое авторизация и как она работает?

10. Что такое cookies?

11. Что такое веб уязвимость?

12. Какие знаете классические базы данных?

13. Как читать спецификацию в конкретном языке (например, PEP8 в Python)?

14. Как происходит взаимодействие клиента и сервера?

15. Какие есть подходы к проектированию API?

16. Как использовать паттерны программирования?

17. Что такое Acceptance Testing и зачем его используют?

18. Что такое модульные и интеграционные тесты, API-тесты?

19. Как писать unit-тесты?

20. Какие есть best practices в написании автотестов?

21. Какие базовые команды системы контроля версий?

22. Как использовать Git?

23. В чем разница между хешированием и шифрованием?

Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Базовый, Python Углублённый, Основы работы с Git.

Python:

25. Какие есть меняющиеся и постоянные типы данных?

26. Что такое область видимости переменных?

27. Что такое introspection?

28. Разница между is и ==?

29. Разница между __init __ () и __new __ ()?

30. В чем разница между потоками и процессами?

31. Какие есть виды импорта?

32. Что такое класс, итератор, генератор?

33. Что такое метакласс, переменная цикла?

34. В чем разница между итераторами и генераторами?

35. В чем разница между staticmethod и classmethod?

36. Как работают декораторы, контекстные менеджеры?

37. Как работают dict comprehension, list comprehension и set comprehension?

38. Можно ли использовать несколько декораторов для одной функции?

39. Можно ли создать декоратор из класса?

40. Какие есть основные популярные пакеты (requests, pytest, etc)?

41. Что такое lambda-функции?

42. Что означает *args, **kwargs и как они используются?

43. Что такое exceptions, ?

44. Что такое PEP (Python Enhancement Proposal), какие из них знаете (PEP 8, PEP 484)?

45. Напишите hello-world сервис, используя один из фреймворков.

46. Какие есть типы данных и какая разница между list и tuple, зачем они?

47. Как использовать встроенные коллекции (list, set, dictionary)?

48. В чем заключается сложность доступа к элементам dict?

49. Как создается объект в Python, для чего __new__, зачем __init__?

Тема связана со специальностями:

50. Что знаете из модуля collections, какими еще built-in модулями пользовались?

51. Что такое шаблонизатор и как в нем выполнять базовые операции (объединять участки шаблона, выводить дату, выводить данные с серверной стороны)?

52. Как Python работает с HTTP-сервером?

53. Что происходит, когда создается виртуальная среда?

Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Стартовый (урок 2, урок 4-8), Python Базовый (урок 1, урок 6, урок 7, урок 9), Python Углублённый (урок 1, урок 4).

Базы данных:

54. Какие есть базовые методы работы с SQL- базой данных в Python?

55. Что такое SQL-транзакция?

56. Как сделать выборку из SQL-базы с простой агрегацией?

57. Как выглядит запрос, который выполняет JOIN между таблицами и к самим себе?

58. Как отправлять запросы в SQL-базу данных без ORM?

Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.

Алгоритмы:

59. Что такое алгоритмы (например, Big-O notation)?

60. Какие есть базовые алгоритмы сортировки?

61. Что такое Bubble Sort и как это работает?

62. Что такое линейная сложность сортировки?

Вопросы для Middle

Если джуниору все надо подсказывать и помогать, то мидл может самостоятельно взять что-то новое и быстро его изучить и понять. У него накоплено достаточно знаний и опыта, чтобы быстро овладевать новым. Он может прийти и обсудить с опытным разработчиком, проконсультироваться, но окончательных решений не принимает.

Обычно у мидлов спрашивают:

63. Ориентируетесь ли в *nix, можете ли написать скрипты/автоматизацию для себя и коллег?

64. Что такое многопоточность?

65. Что такое архитектура веб сервисов?

66. Как работает современное нагруженное веб приложение (нарисовать и обсудить примерную архитектуру, например, Twitter или Instagram)?

67. Что нужно для сайта / сервиса среднего размера (redis \ celery \ кэш \ логирование \ метрики)?

68. Как написать, задеплоить и поддерживать (микро) сервис?

69. Как масштабировать API?

70. Як проводить Code review?

71. Что такое абстрактная фабрика, как ее реализовать и зачем ее применяют?

72. Что такое цикломатическая сложность?

Python:

73. Async Python: как работает, зачем, что под капотом?

74. Сравнить асинхронные web-фреймворки.

75. Что такое модель памяти Python?

76. Что такое SQLAlchemy (Core и ORM частей) и какие есть альтернативы?

77. Принципы работы и механизм Garbage collection, reference counting?

78. Как работает thread locals?

79. Что такое _slots_?

80. Как передаются аргументы функций в Python (by value or reference)?

81. Что такое type annotation?

82. Для чего используют нижние подчеркивания в именах классов?

83. Статические анализаторы: Flake8, Pylint, Radon.

Ответы на некоторые из этих вопросов вы можете найти в видео курсе Python Углублённый (урок 3).

Базы данных:

84. Разница между SQL и NoSQL?

85. Как оптимизировать SQL-запросы?

86. Какие есть уровни изоляции транзакций?

87. Какие есть виды индексов?

88. Точечные вопросы по выбору БД, движков БД?

89. Front-end: есть ли опыт работы с «современным» JS (Babel, Webpack, TS, ES)?

90. DevOps: работали ли с Docker-контейнерами, объяснить основные термины K8s (кластер, pod, node, deployment, service), что такое Kibana?

91. Алгоритмы: что такое временная сложность алгоритма (time complexity)?

92. Углубленные знания Linux: как зайти на внешний сервер, работать с пакетами, настроить среду и выполнять операции?

93. Специфично для Data Science: как работать с пакетами для обработки и визуализации данных (NumPy, Pandas и другие)?

Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.

Вопросы для Senior

На собеседованиях с Senior`ами обычно мало говорят о теоретической стороне технологии, больше обсуждают конкретный опыт разработчика. Поэтому формализованных вопросов здесь нет. Однако, примером могут быть:

94. Что такое @property?

95. Каким образом можно запустить код на Python параллельно?

96. Как работать с stdlib?

97. Какие задачи решали с помощью метаклассов?

98. Что такое дескрипторы?

99. Знания других языков, кроме Python (опыт).

Видео курсы по схожей тематике:

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

Python 3.8.6 Базовый

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

Python 3.8.6 Стартовый

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

100. Какие технологические особенности реализации распределенных систем?

101. Какие есть низкоуровневые особенности языков и фреймворков?

102. Способы и методы управления памятью.

Бонус. Практические задания

1. Спроектировать клон Instagram. Это сервис, который понятен практически любому кандидату, даже если у него нет аккаунта. На высоком уровне он очень прост: картинки, описания, комментарии. Поэтому что-то минимальное сможет описать и джуниор. Если кандидат претендует на высшие позиции, можно бесконечно копать вглубь, касаясь API, тротлинга запросов, защиты от фрода, построения фидов пользователя и тому подобное.

2. Дано рекурсивное определение чисел Фибоначчи, надо написать функцию, которая реализует это определение.

3. Есть база данных из трех таблиц — стандартная many-to-many схема. Нужно написать запрос, который объединяет три таблицы и возвращает определенный результат.

4. Даем ТЗ какого-то полезного микросервиса (сокращалка url-ов, поиск дубликатов картинок, поиск тегов в текстах) или функции (rate limiter). Просим кандидата рассказать, как бы он его реализовал. Это дает возможность узнать, что привык использовать специалист, насколько глубоко он знает и понимает различные технологии.

5. Написать какой-то несложный декоратор (выводит аргументы функции на экран или, например, измеряет сколько времени выполнялась функция).

6. Junior`у можно предложить реализовать задачу FizzBuzz test.

7. Для Middle+ я люблю давать несложные задачки на рекурсию. Например, есть вложенный список чисел и нужно что-то на нем посчитать (скажем, найти максимум). Также, можно предложить написать аналог deepcopy для конкретной структуры данных (tree, graph).

9. Игра «у юзера что-то не работает». На примере спроектированной системы собеседователь придумывает ошибку с «дикими симптомами», которую очень сложно понять, воспроизвести. Но нужно быстро решить проблему.

10. Задание, которое демонстрирует знание и понимание list и dict comprehensions.

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

Создание социальной сети с помощью Python

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

Знакомство с Python

То есть, на входе все функции имеют одинаковые данные, на выходе выдают одинаковый результат. Но из-за того, что внутри операции выполняются в разном порядке, время выполнения будет отличаться. Здесь нужно разбираться в алгоритмах и понимать, что происходит с твоими данными в процессе. Эту задачу может решить Junior, а может не решить и Middle. Казалось бы, такая мелочь, но когда мы работаем с большим количеством данных, важно, чтобы код был оптимизирован и программа выполнялась максимально быстро.

12. Простые задачи на статистику или логику. Например, определить угол между стрелками часов, которые показывают 8:40.

Источник

Python для Веба: что нужно знать джуниору, чтобы работать и развиваться

Мы сделали сокращенную расшифровку с главными мыслями из Python Junior Podcast: в нем мы обсудили, с чего начинать и куда податься начинающему разработчику на Python. В последнее время у нас много контента для миддлов и сеньоров, но этот выпуск — точно для джунов.

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

Почему Python хорош для веб-разработки

Валентин Домбровский: Почему именно Python подходит для веб-разработки? Почему не PHP или JavaScript, например?

Григорий Петров: Так ведь выбора особо нет. Несмотря на то что в современном Вебе можно фактически без бэкенда — чисто на фронтенд-технологиях, на JavaScript — собрать себе single page application или progressive web application, все равно это слишком сложно, плохо индексируется и требует крутых разработчиков.

Если мы хотим сделать сайт или сервис, мы используем комбинированный подход: у нас какой-то бэкенд осуществляет логику и создает веб-страницы и какой-то фронтенд рисует эти веб-страницы в браузере. И когда нам надо быстро это все на чем-то собрать, то выбора особо нет.

Давайте рассмотрим возможные варианты.

Давайте опустим Ruby, Haskell, Erlang и другие нишевые штуки, и у нас остается… Python. Язык с консистентным синтаксисом, единообразной стандартной библиотекой, лучшей документацией, популярными легкими фреймворками, мегапопулярным комбайном Django.

Получается, что, несмотря на широчайший выбор, если у нас обычные, не топовые разработчики, мы обычный бизнес, который хочет делать обычные сайты, у нас нет отдела разработки на 50 человек, то мы берем Python.

Какие знания нужны для входа в профессию

Злата Обуховская: Я считаю, что один фреймворк нужно знать хорошо — и знать, какие еще бывают и когда они используются. Где Tornado, где Django, где Flask, где aiohttp и так далее.
Пригодится знать, что есть такая штука, как протоколы. В частности, знание протокола http — центральное для построения веб-приложений.

Еще нужно хотя бы приблизительно представлять себе, как в веб-проектах устроен фронтенд: что есть HTML, CSS, JS.

Алексей Штырняев: И знать, где лежит документация. Это самое главное.

Григорий Петров: Тут мы ступаем на очень зыбкую почву. Если нам не повезло и мы начали как-то серьезно изучать современный фронтенд, то он будет примерно раз в 10 сложнее, чем бэкенд на Python. Начинающему разработчику нужно ограничить свой фокус так, чтобы начать изучать HTML, но чтобы не провалиться во все эти div, span, float, как там все выравнивается и выстраивается.

Алексей Штырняев: Нужен базовый курс по Bootstrap. И основы HTML.

В первый год не стоит углубляться в JS-фреймворки (если вы фокусируетесь на бэкенде). В базовом курсе по Bootstrap уже есть готовые модули: хочешь слайдер — делай слайдер, хочешь плавающее меню — сделай плавающее меню.

Злата Обуховская: Думаю, что за изучением фронтенда можно погрузиться, в частности, в то, как вообще статика отдается веб-приложениям. Так разработчик плавно переходит к тому, чтобы начать узнавать, как в принципе устроена архитектура веб-приложений и как они живут на продакшене.

Григорий Петров: Да, порекомендую сразу на тот случай, если вы выбрали Python в качестве языка бэкенд разработки и, например, Django в качестве фреймворка: у Django есть документация в Django Book, она реально клевая, в ней все то, о чем сказала Злата, она и правда хороша для начинающего.

Алексей Штырняев: Еще для быстрого старта подойдет какой-нибудь Django Girls, если цель — изучить именно Django. Это такой туториал, где за один день можно пройти по верхам, понять основы и то, на что способен фреймворк.

Валентин Домбровский: Готовясь к записи подкаста, мы составили список того, что нужно программисту на Python для веб-разработки, чем и резюмируем ранее сказанное.

Что входит в базис для веб-разработки на Python

Нужны ли джуниору алгоритмы

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

Григорий Петров: Я хочу подлить масла в огонь. Вот откуда вообще берется наша тяга к алгоритмам?

У нас сейчас нет фундаментального образования по алгоритмам, у нас не умеют обучать программистов, нет технической базы.

Это пытаются делать, но тут у нас история Хогвартса: мы не можем сделать школу волшебников, пока у нас нет ни одного волшебника. Поэтому что делать университету, в который приходят и просят: «Начните обучать программистов», а программистов у них нет, потому что все работают в Mail.ru, Rambler и «Яндексе», им там хорошо?

В университете смотрят и говорят:
— О’кей, программирование. Давайте найдем какую-то смежную область знаний и пригласим специалистов оттуда. Давайте пригласим журналистов, которые умеют писать текст, инженеров-электриков, которые умеют делать электрические схемы, и математиков, которые умеют в алгоритмы.

В итоге получается, что это настолько же целесообразно, как обучать строителя физике элементарных частиц лишь потому, что кирпич и цемент состоят из элементарных частиц.

При этом про сам цемент и кирпич не рассказывают, потому что физик, который пытается обучить строителя, дома строить не умеет. В итоге получаем строителя, который в состоянии прекрасно расписать, как «работает цемент», но ни разу его не видел и делать из него ничего не умеет.

Алгоритмы и структуры данных — это очень хорошо, но это очень маленькая прикладная область. Они остро нужны, например, если ты пишешь игровой движок, компилятор, сетевой протокол.

Большинство программистов решают бизнес-задачи, где не нужны алгоритмы и структуры данных.

Там самая сложная математика — это два раза сложить, а потом разделить. Там нужны совсем другие знания. Для решения бизнес-задач требуются в основном прикладные, а не фундаментальные знания.

Начинающему разработчику лучше иметь представление о бизнесе и о том, как правильно и быстро собирать из готовых блоков нужные конструкции, как их отлаживать, как делать так, чтобы они не разваливались, знать, почему они разваливаются, что происходит, когда меняются требования и программа начинает «оседать на фундаменте», как дом после дождя.
Вот эти прикладные штуки и понимание того, как писать софт. Ему надо знать, что кроме отладчика у него есть набор инструментов, который покажет, где именно программа тормозит.

Валентин Домбровский: Мне такое сравнение пришло на ум: это перевод с языка бизнеса на язык, на котором можно общаться с компьютером. То есть программист — эдакий специфический лингвист.

Григорий Петров: Бизнесу нужен писатель, а не лингвист. Писателю не нужно знать, почему тысячу лет назад это слово трансформировалось вот в то. Ему надо уметь применять эти слова.

Что нужно, чтобы найти первую работу разработчиком

Если вы приходите в какую-то компанию, вас возьмут не за то, что вы знаете Django, JSON и немного алгоритмов. Вас, скорее всего, возьмут за те скиллы, которые здесь и сейчас нужны этой компании.

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

Григорий Петров: Когда мы в VoxImplant искали нескольких джунов, наш технический директор сформулировал базовое требование так: человек должен уметь решать задачи. Понятно, что джун это будет делать не всегда эффективно, не лучшим способом и не всегда правильно, но в идеале ты ставишь человеку задачу, он напрягается и решает ее. Это тот скилл, который в первую очередь ищут работодатели.

Злата Обуховская: Люди, которые ищут работу, переходя из других областей, имеют с точки зрения бизнеса некоторое преимущество, потому что уже прошли какой-то путь и умеют решать задачи быстро. Это soft skills, я бы это назвала даже трудовой культурой. Зачастую у выпускников вузов эта трудовая культура еще не наработана.

Но мне бы хотелось все-таки попытаться дать какой-то рецепт начинающим.

Первые шаги для начинающего разработчика

Злата Обуховская: Первое — это все-таки какой-то свой проект, потому что в резюме нужно что-то написать, показать минимальное портфолио. Круче, когда эти проекты сделаны не для себя, а на фрилансе — для кого-то.

После первых проектов уже можно делать резюме и рассылать его во все компании, где есть джуновские позиции. Собеседования дадут понимание того, что нужно компаниям. Рано или поздно вас кто-нибудь возьмет, хотя бы в маленькую компанию. Впоследствии этот опыт работы даст вам возможность попасть в компанию побольше и поинтереснее.

Валентин Домбровский: Кстати, мы на курсах готовим учеников к тому, чтобы у них появился свой проект за 10 недель обучения. Плюс тренируем навык командной разработки. Это как раз те soft skills, о которых говорила Злата.

Алексей Штырняев: По опыту скажу, что первую работу можно искать очень долго. Когда вы ищете месяц-два — это нормально. Если вы подаете резюме во все компании, ходите на собеседования, на третий месяц вы обязательно что-то найдете.

Валентин Домбровский: Можно пилить свои проекты или брать простые проекты на фрилансе и параллельно заниматься рассылкой резюме.

Какие перспективы есть у Python-разработчика

Злата Обуховская: Python-разработчик может пойти куда угодно. Можно пойти в тестирование, продолжить развиваться до senior-архитектора. Или даже в менеджмент. Технические менеджеры бывают разные, и можно дорасти до топ-менеджмента. Можно развиваться в data science, DevOps, пойти в автотесты или machine learning.

Валентин Домбровский: В общем вариантов масса, возможностей тоже, в том числе наши курсы. Знаний на входе нужно не так много, но желательно потом охватить более широкий спектр, потому что чем больше вы сможете, тем лучше для вас.

Это лишь часть выпуска Python Junior. Полную версию эпизода можно послушать.

Источник

Что работодатели ждут от Junior Python-разработчика

яндексPython — один из самых популярных языков программирования. В рейтинге Stack Overflow 2020 года он занимает третье место. Его легко освоить, а на рынке нет дефицита вакансий. По запросу «Python-разработчик» HeadHunter предлагает 3340 вакансий за месяц. Python используют при создании веб-приложений, в машинном обучении и Data Science. Анастасия Новикова, автор курса «Python-разработчик» в Яндекс.Практикуме, делится опытом прохождения интервью на позицию Python-разработчика и рассказывает, что работодатели обычно ждут от начинающих специалистов.

что нужно знать джуниору python. Смотреть фото что нужно знать джуниору python. Смотреть картинку что нужно знать джуниору python. Картинка про что нужно знать джуниору python. Фото что нужно знать джуниору python

автор курса «Python-разработчик» в Яндекс.Практикуме

Какое нужно образование?

Обычно резюме на Junior Python-разработчика подают выпускники или студенты последних курсов технических и математических специальностей. Профильное дополнительное образование, пройденные курсы на Stepik, Coursera или других платформах станут плюсом к основному образованию. Если вы хотите работать в Data Science, то бонусом будут магистерская степень или аспирантура, наличие публикаций и выступления на конференциях.

Работодатели иногда готовы брать на junior-позицию кандидатов без соответствующего высшего образования. Для таких соискателей, как правило, проводят дополнительные испытания, внимательнее относятся к тестовому заданию и учебным проектам в портфолио.

Как проверяют опыт работы?

Обычно опыт работы для начинающих специалистов не обязателен. Но на некоторые вакансии ищут кандидатов с опытом от полугода — года или соискателей, которые прошли стажировку. Если вы нигде не работали, приготовьтесь рассказать про законченные учебные и личные проекты. Личными проектами также интересуются, чтобы проверить заинтересованность кандидата в профессии и его стремление к развитию.

Завершённые проекты можно опубликовать, например, в личном профиле на GitHub или создать сайт-портфолио. На собеседовании вы сможете рассказать, какая перед вами стояла задача, какие технологии вы выбрали и почему. Дополнительные проекты помогут не только прокачать навыки, но и выделиться среди других кандидатов.

Какие soft skills пригодятся в первую очередь?

Помните сериал «Кремниевая долина» и его главного героя Ричарда Хендрикса, CEO «Пегого Дудочника»? Он был отличным программистом, но ему явно не хватало умения общаться с людьми, работать в команде и руководить сотрудниками. На практике одного умения решать поставленные задачи с помощью технических навыков бывает недостаточно, успешность кандидата зависит также от его социальных качеств.

Ответственность, стремление к профессиональному росту, умение управлять рабочим временем и работать в команде — это базовые soft skills, которые нужны практически на любой должности в ИТ-сфере.

От junior разработчика дополнительно ждут умение быстро осваивать новый материал, вникать в суть задач, понимать требования и быть готовым к рутинным задачам. На собеседованиях junior-специалистов могут спросить: «Как вы относитесь к рутинным задачам?» — потому что их работа часто включает монотонные процессы, не всегда творческая. Работодатель не хочет вас напугать — скорее хочет убедиться в том, что вам не станет скучно на этой позиции через несколько месяцев и вы не захотите уйти. Ответ на такой вопрос можно сформулировать так: «Сейчас подобные задачи для меня — возможность получить опыт, на них я смогу отработать свои навыки, чтобы в будущем браться за более сложную работу».

На собеседовании также могут спросить, почему вы хотите работать на этой должности и в этой компании. С помощью этого вопроса работодатель пытается понять, подходит ли соискатель компании, а компания — соискателю. Если вам действительно не интересен проект, то работа в нем вряд ли доставит удовольствие, и вряд ли вы принесете пользу компании.

Изучите перед собеседованием свои будущие задачи, продукты и проекты, с которыми работают в компании, этап развития компании (например, стартап или ИТ-гигант), корпоративную культуру, отзывы сотрудников, местоположение, условия работы. И выберите среди всего то, что вам действительно важно. Это может быть простое «это компания, где я могу полностью реализовать свои компетенции и продолжить карьеру» или «мне кажется, мой опыт отлично подходит под требования» и перечислите ключевые навыки.

Какие технические навыки необходимы?

Основное требование — знание языка программирования Python. Но иногда на позицию Python-разработчика рассматривают специалистов с опытом в других популярных языках (например, C++, Java, Go).

На собеседованиях работодатель может проверить общую ИТ-грамотность, например спросить, как устроен компьютер или как работает интернет. Чаще всего от кандидатов ждут знания алгоритмов и структур данных. В некоторых компаниях есть отдельный этап, или даже несколько этапов отбора, посвященных проверке этого навыка. Про то, зачем разработчику изучать алгоритмы и структуры данных, мы уже писали раньше.

Также на собеседованиях часто спрашивают про опыт работы с базами данных и фреймворками, понимание принципов многопоточного и асинхронного программирования, умение работать в командной строке.

Python-разработчиков также ищут под задачи машинного обучения. Поэтому при отборе на позиции, связанные с Data Science, проверяют знание алгоритмов машинного обучения и умение их применять, опыт участия в соревнованиях на Kaggle или в хакатонах. От соискателей ждут знания математики: теории вероятностей, линейной алгебры и математического анализа.

Что повторить перед собеседованием

Алгоритмы и структуры данных (без привязки к языку программирования). Желательно знать, как устроены массивы, связные списки, хеш-таблицы, множества, бинарные деревья поиска, графы. Какая сложность (в O-нотации) основных операций при работе с ними. Могут также задать вопросы по базовым алгоритмам. Например, попросить рассказать про основные алгоритмы сортировки, бинарный поиск или способы обхода графов.

Изменяемые и неизменяемые типы данных в Python: в чём разница между ними, примеры использования. Часто просят просто перечислить изменяемые и неизменяемые типы данных, которые вы знаете. Могут предложить решить задачу и спросить, какой тип или какую структуру данных вы бы выбрали для её решения и почему.

Генераторы и итераторы: что это такое, для чего они используются, какая между ними разница. Могут, например, попросить написать генератор чётных чисел или чисел Фибоначчи.

GIL: зачем он нужен и как работает. Вопрос на собеседовании может быть такой: «Могут ли в Python одновременно выполняться больше одного потока?» От начинающих специалистов обычно не требуют знаний про GIL, но они могут выгодно выделить вас на фоне других кандидатов.

Как устроен один из популярных фреймворков, например Django или Flask. Хорошо, если вы понимаете его сильные и слабые стороны. Могут попросить спроектировать базу данных для приложения, написать несколько запросов с помощью ORM или на чистом SQL.

Как работает интернет: понимание модели/моделей OSI/TCP IP, основных протоколов. Популярный вопрос из этого раздела: «Что происходит, когда в поисковой строке вбиваешь google.com?»

Утилиты командной строки. Могут попросить рассказать про пять – десять команд, которыми вы чаще всего пользуетесь.

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

Логические и математические задачи: для их решения может понадобиться школьная математика, базовые знания комбинаторики, теории вероятностей, умение работать с числами в разных системах счисления.

Вряд ли на собеседовании вам зададут вопросы из всех этих разделов. От соискателя на позицию младшего разработчика не ждут, что он верно ответит на все вопросы, скорее, будут смотреть, в правильном ли направлении он думает. Но чем более подготовленными вы будете, тем больше у вас шансов получить желаемую работу.

Что почитать начинающему Python-разработчику

«Чистый код: создание, анализ и рефакторинг», Мартин Роберт К. «Грязный» код мешает развитию проекта и компании, потому что требует значительных ресурсов на поддержку. В книге много реальных примеров, которые научат отличать плохой код от хорошего. Она пригодится всем начинающим разработчикам, читается легко. Возможно, не всё получится сразу применить на практике, но когда вы столкнётесь с ситуацией, упомянутой в книге, вам будет легче найти решение.

«Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих», Адитья Бхаргава. Думаете, алгоритмы это сложно? Книга убедит вас в обратном. В ней подробно разбирается каждый алгоритм: будет понятно даже ребёнку. Воспроизвести их на любом языке программирования не составит труда.

«Программируем на Python», Майкл Доусон. Автор книги — опытный разработчик. Он помогает освоить фундаментальные принципы на примере создания простых игр. Так вы получите базовые навыки и сможете пополнить портфолио. Для более продвинутых специалистов книга может показаться скучной, главная аудитория — всё-таки начинающие разработчики.

«Python на практике», Марк Саммерфилд. Знания из книги помогут лучше подготовиться к собеседованиям. Подходит начинающим и опытным программистам. В основе четыре темы: повышение элегантности кода с помощью паттернов проектирования, повышение быстродействия с помощью распараллеливания и компиляции Python-программ (Cython), высокоуровневое сетевое программирование и графика.

«Изучаем Python», «Программируем на Python», «Python. Карманный справочник», Марк Лутц. Это несколько книг известного инструктора по Python. Их лучше читать в оригинале. Они помогают восполнить пробелы в знаниях и разобраться в сложных вещах. В «Карманном справочнике» вы найдёте основные сведения о типах данных и операторах, специальных методах, встроенных функциях, которые пригодятся при работе с Python.

«Python. Книга Рецептов», Дэвид Бизли, Брайан К. Джонс. Пособие для начинающих и опытных разработчиков, которое поможет создавать легкочитаемый, оптимизированный и поддерживаемый код. 15 глав охватывают основные темы Python, каждая глава содержит конкретные «рецепты» с примерами кода, которые вы сможете использовать в своих проектах.

«Алгоритмы: построение и анализ», Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Это справочник и пособие по алгоритмам, которое пригодится и начинающим разработчикам, и сеньорам, и тимлидам. Описания даются на простом языке, главы независимы друг от друга, можно изучать в любом порядке и объёме.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *