|
1 | | -Харды на питониста-разраба (обязательный минимум для резюме) |
| 1 | +Общие топики для подготовки к собеседованию на python-backend |
2 | 2 | --- |
3 | | -- Python: asyncio, FastApi, SQLAlchemy, Pytest |
4 | | -- Databases: PostgreSQL, NoSQL (на выбор, но лучше ClickHouse) |
5 | | -- Infra: Kubernetes, Docker, GCP (или AWS или яндекс.облако), Gitlab CI (или Github Actions) |
6 | 3 |
|
7 | | -Харды на питониста-разраба (опциональные для резюме) |
8 | | ---- |
9 | | -- Python: Django, Django ORM, DRF, Starlette, Selenium |
10 | | -- Infra: Helm, Grafana, Splunk |
11 | | - |
12 | | - |
13 | | -Как работать с топиками ниже |
14 | | ---- |
| 4 | +## Как работать с топиками ниже |
15 | 5 | - открываете бесплатную версию ChatGPT |
16 | 6 | - задаёте контекст промтом вида "я готовлюсь к собеседованию на python разработчика. У меня есть список тем для подготовки, я буду тебе их присылать. Отвечай на них краткой brief-выжимкой" |
17 | 7 | - каждый топик ниже отправляете в чат и читаете выжимку. Если непонятно - просите раскрыть более полно |
18 | 8 | - как правило все указанные темы он брифает без глюков (это не какие-то специфические малоизвестные особенности). Но если чувствуете что что-то не то - записываете в блокнотик и когда блокнот накопится - шлёте вопросы ментору. |
19 | 9 |
|
20 | 10 |
|
21 | | -Общие топики для собеседования бекенд-питониста |
22 | | ---- |
23 | | - |
24 | 11 | ## Что нового в Python за последние годы (~3.8+) |
25 | | - |
26 | 12 | - Эволюция языка -> читаемость, производительность, типизация |
27 | 13 | - Почему старый код может выглядеть иначе |
28 | 14 | - Какие изменения реально влияют на ежедневную работу |
|
59 | 45 | - [nonlocal, global](https://realpython.com/python-closure/) |
60 | 46 |
|
61 | 47 | ```python |
62 | | -funcs = [] |
63 | | -for i in range(3): |
64 | | - funcs.append(lambda: i) |
| 48 | +funcs = [ |
| 49 | + lambda: i |
| 50 | + for i in range(3) |
| 51 | +] |
| 52 | +for f in funcs: |
| 53 | + print(f()) |
65 | 54 | ``` |
66 | 55 | - Почему все функции вернут одно и то же? |
67 | 56 |
|
@@ -170,6 +159,9 @@ for i in range(3): |
170 | 159 | - OLTP vs OLAP |
171 | 160 | - SQL vs NoSQL |
172 | 161 | - Почему не всё в PostgreSQL? |
| 162 | +- ACID + уровни изоляции транзакций |
| 163 | +- нормализация vs денормализация |
| 164 | +- N+1 проблема |
173 | 165 |
|
174 | 166 |
|
175 | 167 | ## Как делал миграции |
@@ -232,7 +224,7 @@ for i in range(3): |
232 | 224 | ## Линтеры — конкретика и причины выбора |
233 | 225 | - Linters != форматирование |
234 | 226 | - Автоматизация code review |
235 | | -- Python stack (типовой senior-набор): ruff — быстрый all-in-one, black — форматирование, mypy — типы, bandit — security, vulture - stale code, WPS (harder than ruff) |
| 227 | +- Python stack (типовой senior-набор): ruff — быстрый all-in-one, black — форматирование, mypy — типы, bandit — security, vulture - stale code, WPS (суровей чем ruff) |
236 | 228 |
|
237 | 229 |
|
238 | 230 | ## [Dockerfile: Один RUN или много](https://docs.docker.com/build/concepts/dockerfile/) |
@@ -294,4 +286,11 @@ for i in range(3): |
294 | 286 | ## Terraform |
295 | 287 | - Зачем нужен |
296 | 288 | - Что такое Terraform state и что будет, если его потерять? |
297 | | -- Чем Terraform отличается от Helm по ответственности? |
| 289 | +- Чем Terraform отличается от Helm по ответственности? |
| 290 | + |
| 291 | +## Работа с сетью |
| 292 | +- HTTP: методы, коды, идемпотентность |
| 293 | +- REST vs RPC |
| 294 | +- как работает TCP (в общих чертах) |
| 295 | +- keep-alive, timeouts |
| 296 | + |
0 commit comments