Как стать программистом python

Мануал для джуна. Python Developer: вопросы на собеседовании, практические задания и советы для начинающих

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

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

Александр Ковтунов, Python Software engineer компании Ajax Systems, который также проводит собеседования для junior- и middle-специалистов, рассказал о профессии Python Developer и дал советы, как начинающим присоединиться к профессии.

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

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

Александр Ковтунов, Python Software engineer компании Ajax Systems, который также проводит собеседования для junior- и middle-специалистов, рассказал о профессии Python Developer и дал советы, как начинающим присоединиться к профессии.

Кто такой Python Developer

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

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

Путь разработчика

Александр Ковтунов в профессии около 3 лет. По его словам, сталкивался со сложностями, потому что в первый год работу найти очень сложно

«Стандартный ответ: „Решили двигаться дальше с более опытным кандидатом“. Иногда казалось, что рекрутеров где-то учат этой фразе», — вспоминает разработчик.

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

Как выбирают кандидатов

Junior Python Developer отбирают по двум основным критериям: знание Python и умение думать.

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

«Это в принципе нормально — чего-то не знать. Но, конечно, минимальная техническая подготовка необходима», — отмечает Александр.

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

Основные вопросы на собеседовании

Протоколы

1. Что такое http протокол? Из чего состоит http request? Что такое headers? Что такое статус кода в http responce? Что такое способ?

2. Модель OSI. Что такое? Какие уровни бывают? Какой протокол лучше подойдет для видео tcp или udp?

Базы данных

3. Что такое SQL? Как расшифровывается? Что такое DBMS? Назовите известные вам DBMS?

4. Что такое реляционная модель? Что такое row? Что такое таблица? Что такое атрибут (в контексте SQL-БД)?

5. Отношения: many-to-many, many-to-one, one-to-one (что такое foreign key?)

6. Queries: SELECT, INSERT, JOIN, INDEXES

7. Что такое No-SQL базы данных? Чем они отличаются от SQL? В чем преимущество или недостаток того или иного?

Python Core

8. Data Types, mutable/immutable

9. Сроки. Распарсить массив разделенных запятыми. Отформатировать данные по какому-либо критерию (f-string, format). Найти данные в ленте.

10. Что такое dictionary? Какой объект может быть ключом диктата? Как реализовать такой объект своими руками?

11. Может ли дикт храниться в тупле? Может ли тупл быть ключом диктата? Может ли лист храниться в тупле? А если может ли его изменять?

12. Что такое хеширование? Зачем используется? Приведите примеры.

13. Что такое компрехеншен в Python? Какие структуры можно сделать с его помощью?

14. Что такое контекстные менеджеры? Зачем нужны? Какие способы создания кастомного контекстного менеджера?

15. Что такое slices в Python? Что такое индекс? Какой объект можно обрезать?

16. Что такое декоратор? Как написать свой? Как сделать, чтобы он принимал аргументы?

17. Что такое итератор? Что такое итерабельный объект? Какая между ними разница? Что такое next? Как реализовать итератор?

Как и терабельный объект?

18. Что такое генератор? Чем отличается от итератора? Какие способы написания генератора? Что такое yield? Чем отличается от return?

Что такое send? Throw? Как написать нескончаемый генератор?

19. Как обрабатывать ошибки в Python?

20. Что такое lamda функции? Напишите такую функцию для фильтрации данных в дикте.

21. Области видимости. Сколько существует? Как расшифровать LEGB? Global и nonlocal? Приведите прил.

22. Как работают способы map? Filter? Enumerate?

23. Что такое ООП? Для чего используют ооп? Что такое class в ооп (не в Python, а в принципе)? Какова его базовая характеристика (стейты+поведение)? Что такое сущность?

Каковы принципы ООП?

24. Что такое гетеры, сеттеры? Зачем их используют? Как можно в Python написать геттер или сеттер? Что такое property?

25. В чем разница staticmethod и classmethod? Для каких задач используют тот или иной?

26. Что такое отвлеченный класс? Что такое отвлеченные методы? Что такое интерфейс? Зачем строят интерфейсы в программировании?

27. Для чего нужна функция dir ()? Что такое dict? Как отличаются dict у родительского класса и класса отпрыска? От чего же это зависит?

28. Что такое переменная класса? Как изменятся экземпляры, если ее изменить?

29. Какие магические методы? Зачем нужен метод init? Чем отличается от new?

30. Как переопределить арифметические операции?

31. Как работает множественное наследование? Какой Python ищет имплементацию методов?

Практические задачи

1. Данный дикт

Надо поменять ключ значение местами

2. Даны два массива

Надо сделать чтобы значения, а были ключами, а значения b — значениями дикта

Как я стал Python-разработчиком за 10 месяцев

До того момента, как я захотел стать Пайтон-программистом, я около 8 лет работал инженером в небольшой компании по производству кабельной продукции. Затем я получил повышение и стал руководить отделом и… перестал получать удовольствие от работы. Очень много волокиты с документами, проведение бесполезных собраний – всё это стало всё сильнее меня угнетать, так как я очень любил свою прежнюю должность инженера.

Так вышло, что по чистой случайности увидел бесплатный интенсив по Python-разработке, записался и прошёл несколько уроков. Я настолько увлёкся этой темой, что каждый день после работы бежал домой, садился за комп и решал простенькие задачки на Питоне. Как я узнал позже, этот язык один из самых простых в освоении, на практике так и не было, подтверждаю. Например, Java или C++ имеют более сложный синтаксис, это даже видно по официальной документации.

Я задумался, а не переквалифицироваться ли мне в Python-разработчики. Поглядел вакансии на hh.ru, отметил про себя, что чаще всего компаниям нужны специалисты с опытом работы от 1 года, но и было много предложений стажировок. Решил посвятить ближайшие 8-10 месяцев изучению Python’у, уж очень мне хотелось сменить свою работа. Тем более, что у меня есть способности к математике ещё со школы.

Итак, с чего я начал? Решил начать обучение с бесплатных материалов. Стал искать полезные ссылки, нашёл несколько полезных статей:

    — много интересной информации, включая большое количество ссылок на обучающие материалы; на stackoverflow.com — подборка разных ссылок для новичков и опытных программистов;
  • Дорожная карта по изучению Python на github.com.

Изучив статьи и отобрав понравившиеся мне материалы, я стал проходить бесплатные курсы на Stepik:

    — «Поколение Python»: курс для начинающих; — Курс для будущих Python-разработчиков.

Через месяц освоил курсы посерьёзней:

    — «Поколение Python»: курс для продвинутых; — Многопоточность и многопроцессорность Python;
    — Регулярные выражения в Python.

Параллельно читал книги «Укус Питона» и «Изучаем Python» М. Лутца. Книги обязательны к прочтению!

Разумеется, найти время было сложно, у меня 2 маленьких ребёнка, которые не бывает очень шумят, поэтому пришлось перебраться в маленькую комнату, чтобы сосредотачиваться на учёбе. Учился по 4-5 часов в день, ложился далеко за полночь, включая выходные и праздники. У меня была цель – получить начальные навыки, чтобы устроиться стажёром или джуном.

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

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

Кроме Python’а дополнительно мне пришлось изучать дополнительные инструменты – все те, которые работодатели указывали в вакансиях. Вот что я изучал параллельно с изучением Python:

Linux. OS для программистов:

    — Развивающий курс по Линуксу; “Linux для начинающих”.

Docker. Крутая штука, помогает запустить приложение на любой OS:

    — Профессиональный курс по Docker; по Docker для начинающих;
    по Docker.

Ansible. Система управления конфигурациями:

    — Ansible для начинающих + практический опыт; — Docker для начинающих + практический опыт;
    по Ansible на русском языке.

Kubernetes. Сложная штука для контейнеров, изучил только основы:

    — курс «Kubernetes для пользователей»;
  • Хорошие видеоуроки по Kubernetes.

SQL – язык для баз данных:

    — Образовательный курс “Основы баз данных”; — Классный интерактивный учебник по SQL.

Django – фреймворк для веб-разработки:

    — интересный курс «SPA сайт на Django Rest Framework и NuxtJS»; от selfedu по Django 3.

Flask — легковесный веб-фреймворк на Python для создания веб-приложений:

    — Основы Web-фреймворка Flask; по Flask с нуля.

REST API — код, который позволяет двум приложениям обмениваться данными с сервера:

    — Курс профессиональной подготовки по API; по разработке API с нуля; на Хабре по основам в REST API.

Ещё я завёл профиль на https://github.com/, у любого программиста так должно быть размещено портфолио, куда я выкладывал свои небольшие проекты, которые мне удавалось делать во время обучения. Вот скрин профиля, после 7 месяцев разработки:

Через 7 месяцев интенсивной учёбы я составил резюме и опубликовал его на паре сайтов (hh.ru и superjob.ru). Затем я стал откликаться на вакансии, причём не только на позицию джуниора, но и миддла. За первую неделю я получил 50 отказов: некоторые работодатели сразу писали, что я им не подхожу, другие давали тестовые задания, с которыми я плохо справлялся. Но я не отчаивался, так как всё это полезный опыт, а рано или поздно я работу всё равно найду. У меня не было в портфолио реальных проектов, поэтому я стал брать за бесценок заказы на фрилансе, чтобы прокачать своё портфолио. Вот как выглядят задания, которые публикуют исполнители на Кворке:

В течение 2 месяцев мне удалось сделать 2 хороших проекта по веб-разработке, и я стал опять усиленно заниматься поиском работы. Спустя неделю со мной связался работодатель и дал сложное тестовое задание (по API), на выполнение дал мне 12 часов. Я сделал всё , что смог и отправил результаты. Был уверен, что провалил задания, но через 5 дней мне прислали оффер. Как оказалось, я выполнил эти задания лучше других кандидатов, хотя и не совсем правильно, поэтому взяли в штат именно меня. Возможно мне просто повезло, но я всегда знал, что я смогу найти работу.

На начальном этапе меня взяли стажёром, на 3 месяца, дали наставника. С прежней работы уволился. На протяжении 3 месяцев я учился ещё интенсивнее, мало спал, информации было очень много, было очень тяжело. Но затем стало полегче, усвоил то, что нужно было в стеке компании и меня перевели на должность джуна.

Что я понял в работе программиста – что учиться нужно всегда, независимо джун ты или сеньор. Профессия такая, что нужно всё время быть на волне. Что по зарплате? Получаю 80 000 рублей на руки, это на 20 тыс. меньше, чем на прежней работе. Я остался очень доволен, думаю, через 2-3 года будут тянуться к позиции мидла, а там и зарплата совсем другая.

Сейчас я работаю в крупной компании по разработке сайтов, у меня отличный коллектив и каждый день у меня встречается интересные задачи, над которыми я могу залипнуть на много часов. Скажу честно, несмотря на мой возраст (мне 39 лет) мне ни разу не отказали, сославшись именно на это. Только в одной из компаний меня сразу предупредили, что средний возраст разработчиков в компании 20-25 лет и будет ли мне комфортно работать среди молодёжи. На этот вопрос я ответил утвердительно, но в итоге туда устраиваться я не стал, но не по этой причине.

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

Моя цель – это вырасти до позиции Middle и получать от 120 000 р. и больше.

Мои советы для тех, кто хочет освоить новую профессию, желательно к ним прислушаться:

  • Посидите и подумайте, чем именно хотите заниматься по-настоящему. Уделите этому хотя бы полчаса своего времени, прислушайтесь к душе.
  • Напишите план обучения. Сложные темы разбейте на более мелкие. Напишите, сколько времени у вас уйдёт на обучение и умножьте эту цифру на 2. На практике вам понадобится больше времени на обучение.
  • Чтобы не потерять мотивацию, выделите определённые часы для занятий, например по выходным с 16:00 до 22:00 или в будни после 20:00. Ставьте себе жёсткие сроки, без этого обучение может затянуться надолго.
  • При поиске работы не нужно бояться отказов. Нужно лишь понять, почему вам отказывают и нарабатывать практику.

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

На этом всё, будут вопросы — пишите в комментариях. Всем удачи в начинаниях!

Источник: www.kak-zarabotat-v-internete.ru

Как ребенку стать Python-программистом?

Питон — это язык общего назначения, который имеет широкий спектр применения. Но еще Python популярен благодаря минимализму и читаемости, например, одна фраза может быть написана всего в одной строке кода. Наша команда школы программирования для детей “Пиксель” специально для вас сделала подборку, чтобы изучение Python для ребенка стало интересным и увлекательным! Ниже вы увидите темы подборок, которые помогут в изучении этого языка программирования.

Игры

Empire of Code

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

Второе окошко описывает задание и объясняет, как правильно написать код, чтобы усилить разные аспекты игрового процесса. Не беспокойтесь, нас не заставят придумывать искусственный интеллект или решать сложные математические задачи с нуля. Эта стратегия подойдет и новичкам: в игре даются понятные подсказки, они помогут пройти задание.
Empire of Code — это неплохая возможность изучить язык программирования, развлекаясь в захватывающей стратегии.

CodeCombat

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

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

Книги

К. Ричардсон.
Программируем с Minecraft: Создай свой мир с помощью Python

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

К. Вордерман и др.
Программирование на Python: Иллюстрированное руководство для детей

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

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

Видеоуроки

Конечно же, у школы программирования для детей “Пиксель” есть множество бесплатных уроков, в особенности по Python. Например, в этом уроке дети могут благодаря игре Minecraft научиться программированию на Python. В этом видеоуроке дети познакомятся с понятием искусственного интеллекта, смогут создать бота, который будет следовать за ними в игре.

Следующий курс “Программирование на Python для детей” рассчитан на возраст от 10 до 14 лет. Курс также подходит как для новичков, так и для продвинутых пользователей, состоит из модулей, в модуле 12 занятий по 90 минут. Дети создадут с помощью Python свои интересные проекты, например: викторину, квест, калькулятор с графической оболочкой и свой проект.

Школа Пиксель

2021-12-16 12:53 Программирование для детей Python для детей

Источник: clubpixel.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Заработок в интернете или как начать работать дома