Питання на співбесіді з Python
Автор: Aaron Cao · Оновлено
Очікуйте три рівні: механіку мови, як-от мутабельність, генератори та декоратори; поведінку під час виконання, як-от GIL; і прикладне програмування зі структурами даних. Більшість відмов трапляються через поверхові пояснення чому, а не через неправильний синтаксис.
Питання, що постійно повертаються
Опрацювання списку з двохсот питань з Python здається продуктивним, але рідко змінює результат співбесіди. Цей розділ звужує коло до жменьки питань, що повторюються і на телефонних скринінгах, і на технічних раундах, та показує, що містить сильна відповідь. Невелика кількість особливостей мови несе більшість сигналу.
- Мутабельні аргументи за замовчуванням. Чому
def f(x=[])накопичує значення між викликами? Значення за замовчуванням обчислюються один раз, коли функція визначається, а не при кожному виклику. - Генератори проти списків. Коли
yieldкращий за побудову списку? Коли послідовність велика, або коли ви можете припинити читання раніше. - Декоратори. Що насправді повертає декоратор і чому обгортці потрібен
functools.wraps? - GIL. Чому потоки, прив'язані до CPU, не масштабуються в CPython, і до чого ви вдаєтеся натомість?
- Поверхова копія проти глибокої. Що ламається, коли вкладена структура копіюється за допомогою slice?
- Ідентичність проти рівності. Чому перевірка
isна маленьких цілих числах у shell дає оманливий результат.
Що відрізняє тих, хто пройшов, від тих, хто ні
Двоє кандидатів можуть дати те саме правильне визначення GIL, і лише один із них проходить далі. Різниця зазвичай у другому реченні.
Backend-інженера, який проходив співбесіду на посаду рівня L5 у великого постачальника публічної хмари, запитали, чому їхній сервіс сповільнювався під навантаженням. Він назвав GIL, а потім продовжив: найгарячішим шляхом був парсинг JSON, тож потоки виявилися неправильним інструментом, а перенесення цього етапу в пул процесів відновило пропускну здатність. Назвати обмеження принесло часткові бали. Пов'язати його з рішенням виграло раунд.
Будуйте кожну відповідь у три такти: що робить функція, чому вона існує і коли ви б її уникали. Третій такт — той, який більшість кандидатів пропускають, і саме він показує розсудливість. Інші сторінки про раунди з кодування, поведінкові та про проєктування систем згруповані під типами співбесід.
Як готуватися, не заучуючи напам'ять
Читати відповідь і промовляти відповідь — різні навички, і перевіряється лише одна з них. Репетируйте вголос, на час, тими самими словами, які ви використали б під час дзвінка.
- Запишіть свою відповідь на кожне питання, що повторюється, у трьох реченнях, а потім промовте її, не підглядаючи.
- Оберіть дві функції, якими користуєтеся щодня, і підготуйте чесне обмеження для кожної. Уміння критикувати власні інструменти читається як досвід.
- Принесіть одну реальну історію налагодження, де поведінка Python вас здивувала і ви з'ясували чому.
- Практикуйте прикладну частину окремо: словники, множини, сортування з key function та робота зі рядками покривають значну частку скринінгів.
Якщо хочете провести хронометрований раунд проти AI-інтерв'юера перед справжнім, це є на сторінці mock interview.
Де живий асистент доречний, а де ні
SubcueAI — це нативний десктопний застосунок для macOS і Windows. Він захоплює обидві сторони розмови, транскрибує в реальному часі та показує каркас відповіді на плаваючому оверлеї, який залишається локально на вашому пристрої, тож не приєднується до зустрічі як учасник чи бот. Для раунду з Python корисний результат — це підказка структури, а не готова відповідь: деталі мають бути вашими, бо наступне питання буде про код, який ви щойно описали.
Чесні межі важливіші за можливості. Якщо ви ділитеся екраном, усе, що на цьому екрані, стає видимим. Якщо раунд проходить на платформі оцінювання з проктерингом, або на пристрої, керованому компанією, асистент виходить за межі області застосування. Налаштування та дозволи описані на сторінці tutorial.