Перш ніж почати своє кар’єрне зростання у сфері IT за напрямом Python, потрібно пройти доволі складний для початківця етап — працевлаштування.
Практичного досвіду роботи в компанії ще немає, тому головна увага приділяється теоретичним знанням. Але після навчання в голові міститься настільки багато нової інформації, що важко самостійно зрозуміти — яка саме знадобиться під час інтерв’ю.
Крім того, рекрутери цікавляться не тільки теоретичними та практичними знаннями, а й особистими якостями кандидатів, їх вмінням швидко відповідати на складні запитання та “не губитися”.
Щоб ви почувалися впевнено та комфортно під час працевлаштування, а найголовніше — отримали бажану вакансію, фахівці A-Level підготували для вас перелік найпоширеніших запитань для співбесід на позицію Junior Python Developer. Тож давайте попрактикуємось та перевіримо себе!
Уявіть, що ви вже на інтерв’ю — спробуйте відповісти на всі запитання!
Знайомство з кандидатом
- Розкажіть про себе.
- Чому програмування?
- З якими завданнями хотілося б працювати?
- В якому напрямі хотіли б розвиватись?
- Чому саме Python?
- Чи готові ви вивчати суміжні технології (JS, HTML/CSS, SQL, NoSQL, Angular/React/Vue, DevOps, Numpy, Pandas, Scrapy тощо — залежно від компанії)?
Досвід роботи
- Чи вмієте ви працювати у команді?
- Чи знайомі ви з поняттями Waterfall, Kanban, Agile (Scrum)?
- Що таке спринт?
- Навіщо потрібні Product Owner та Scram master?
- Що таке git flow?
- Чи знаєте ви щось про deployment?
- Чи є у вас досвід роботи з хмарними серверами?
Теорія
Базові знання:
- Розкажіть про типи даних. Наведіть приклад, де в коді важливо знати про види типів даних.
- Що спільного у словника та множини?
- Які види типізації ви знаєте?
- Як працює типізація в Python? Чи є декларація типів даних обов’язковою?
- Як можна передати у функцію випадкову (заздалегідь не задану) кількість аргументів?
- Які види сортувань ви знаєте? Назвіть їх плюси та мінуси.
- Як можна отримати дані зі словника? І якщо є більше одного способу, то розкажіть, чим вони відрізняються?
- Які ви знаєте типи даних зі стандартної бібліотеки (ті, що необхідно імпортувати)?
- Як встановити значення за замовчуванням для параметра функції?
- Що поверне функція, якщо не вказати в ній return?
- Чи може бути більше одного return у функції?
- Що таке PEP8? Чи можна його порушувати?
- Які ключові слова використовуються для імпорту?
- Що таке булева алгебра?
- Чим відрізняється == від is?
Більш просунута база:
- Що таке декоратор?
- Як працює обробка винятків?
- Що таке протокол ітерації?
- Чим відрізняється ітератор від генератора?
- Розкажіть про принцип роботи map, zip, lambda, filter.
- У чому різниця між синхронним та асинхронним підходом?
- Як працює yield?
Базові знання “із зірочкою”
- Що таке GIL?
- Для чого потрібні ключові слова asinc, await?
- Як працює збирач сміття?
- Наведіть приклади генераторів у Python.
- Чим багатопотоковість відрізняється від багатопроцесорності?
Об’єктно орієнтоване програмування:
- Що таке клас та об’єкт?
- Інкапсуляція: що це/ де застосовується/ які існують модифікатори доступу/ на що вони впливають?
- Поліморфізм: що це/ де ми можемо наочно побачити поліморфізм у коді?
- Спадкування: що це/ навіщо треба?
- Множинне наслідування: що це/ навіщо треба/ що таке MRO?
- Що таке mixin?
- Абстракція: що це/ навіщо треба?
- Парадигми ОВП (запитання 2-7, лише більш стисло).
- Що таке Magic (Dunder) методи? Наведіть кілька прикладів.
- Що таке атрибут та метод?
- Навіщо потрібний self?
- Хто такі property, staticmethod, classmethod?
- Що таке super? Як він працює?
- Чи можна написати свій декоратор, використовуючи тільки класи? Якщо так, то як це зробити?
Проектування:
- Що таке патерн?
- Які бувають види патернів?
- Що таке DRY/KISS?
- Розкажіть про SOLID у всіх подробицях.
- Що таке синглтон?
- Що таке фабрика?
Додаткове запитання, яке часто можна почути під час співбесіди:
1) Що таке метаклас? І до чого тут type?
Бази даних
SQL:
1) Що таке SQL?
2) Чому такі бази називають реляційними?
3) Які бувають види зв’язків?
4) Що таке нормалізація? Опишіть перші 3 нормальні форми. Скільки їх буває?
5) Що таке рекурсивний запит?
6) Які бувають види joins?
7) Що таке транзакція?
8) Що таке ACID?
9) Які бувають рівні ізоляції транзакції?
NoSQL:
1) Що таке NoSQL?
2) Коли краще застосовувати SQL, а коли NoSQL?
3) Які бувають види NoSQL? Наведіть хоча б один приклад кожного виду.
4) Чи застосується ACID до NoSQL?
5) Назвіть сфери застосування Redis.
GIT:
1) Що таке гілка?
2) Що таке коміт?
3) Що таке pull request?
4) Навіщо потрібні команди pull та push
5) Як працює cherry-pick?
Front-end:
1) Навіщо потрібні HTML/CSS/JS?
2) Що таке замикання?
3) Яка типізація у JS?
4) Яка типізація у TS?
5) Які фреймворки для Front-end ви знаєте?
Django:
1) Що таке фреймворк?
2) Що таке MVC та MVT?
3) Які бувають види моделей?
4) Навіщо потрібні параметри null та blank?
5) Що таке ORM?
6) Як продати soft delete?
7) Що таке менеджер моделі?
8) Навіщо потрібний related_name?
9) Чи можемо ми контролювати проміжну таблицю для M2M зв’язку? Якщо так, то як?
10) Навіщо потрібний bulk_create?
11) Що таке міграція?
12) Що таке data міграція?
13) Що корисного може зберігатися у request?
14) Що таке CBV?
15) Чим відрізняється instance і queryset?
16) Чи може спроба отримати дані з бази через ORM викликати винятки? Якщо так, то які?
17) Що таке валідація?
18) Як ми можемо отримати дані клієнта?
19) Що таке форма?
20) Що таке сесія? Як нею скористатися?
21) Що таке кеш? Як ним користуватися?
22) Що таке Middleware? Навіщо це треба та як ми можемо цим скористатися?
23) Що таке manage command? Чи можемо ми створити свою?
24) Що таке template tag?
25) Що таке DjangoTemplates? Чи можемо ми використати щось інше для цієї ж мети?
Загальні запитання
1) Що таке cookie?
2) Що таке HTTP? Чим він відрізняється від HTTPS?
3) Що таке авторизація? З яких етапів вона складається?
4) Як працює авторизація у базовому Django?
5) Які бувають HTTP методи?
6) Що таке ідемпотентність?
7) Які бувають коди стану HTTP? Навіщо вони потрібні?
8) Які ще протоколи бувають, окрім HTTP?
9) У чому відмінність монолітної архітектури від мікросервісної?
10) Що таке API?
11) Що таке CI/CD?
12) Хто такий DevOps?
REST/ Django REST Framework:
1) Що таке REST? Навіщо він потрібний?
2) Що таке JSON та XML?
3) Що таке серіалізація?
4) Як у DRF працюють права доступу?
5) Що таке базова авторизація та авторизація за токеном?
Celery:
1) Що таке celery?
2) Чи є celery синхронною чи асинхронною технологією?
3) З яких частин складається celery?
4) Що може бути брокером для celery?
5) Для чого використовується celery?
6) Що таке механізм підпису?
Web sockets:
1) Що таке web sockets? Навіщо вони потрібні? Наведіть приклад, де їх використовують.
2) Який протокол використовують sockets?
3) Чи існує бібліотека для використання sockets з Django?
Deployment:
1) Що таке Linux?
2) Що потрібно для розгортання програми Django?
3) Хто такі gunicorn, daphne, uvicorn, hypercorn?
4) Що таке nginx та apache?
Тестування
1) Які види тестування ви знаєте?
2) Чим відрізняються unit tests від integration tests?
3) Навіщо для тестування потрібні фабрики?
4) Хто такий Faker?
5) Що таке Mock?
Практичні завдання
У більшості випадків це завдання з кодом, тому їх важко описати словами. Але ми наведемо кілька прикладів, щоб ви мали змогу потренуватися.
Завдання 1
На вхід йде словник, у якого всі ключі та значення — це унікальні хешовані типи даних. Напишіть код, який поміняє місцями ключі та значення.
Завдання 2
a = 200
b = 200
print(a is b)
a = 300
b = 300
print(a is b)
Що виведе цей код?
Завдання 3
Вам надається csv файл. Напишіть код, який зможе зчитати файл і записати вміст у зручний для вас тип даних.
Завдання 3.1
Проведіть валідацію рядків. Якщо є не валідні — видайте відповідне повідомлення і пропустіть цей рядок. Використовуйте самописний виняток.
Завдання 4
Напишіть свій декоратор.
Завдання 4.1
Напишіть свій декоратор із параметрами
Завдання 5
Замовник хоче, щоб на його сайті клієнти були зобов’язані додавати в профіль кредитну картку. А якщо у користувача не прив’язана карта, щоб будь-яка його дія переводила його на сторінку додавання картки. Як ви діятимете?
Чудова робота! Навіть, якщо на якісь запитання відповісти не вдалося — тепер ви бачите прогалини у своїх знаннях та ще маєте час їх закрити!
А для студентів A-Level за напрямом Python наша школа пропонує: додаткові безкоштовні заняття з проходження співбесід та написання резюме, допомогу рекрутингового відділу у пошуку вакансій та підтримку під час адаптації на новому місці роботи!
Бажаємо всіх успішного інтерв’ю та подальшого професійного розвитку!