+ docker/docker-compose + REST + GRPC + SQL DB:
1.1) Простой проектик с парой, тройкой микросервисами, любая SQL DB, оформить на github с нормальной документацией.
1.1.1) Внешние запросы по REST, запросы между сервисами по GRPC.
1.1.2) БД и сервисы надо уметь поднимать в докер-контейнерах.
1.1.3) Вся конфигурация приложения из 2-3 микросервисов должна быть в docker-compose.
1.2) Зависимости должны быть закрыты за интерфейсами.
1.3) Тесты. Для начального уровня просто хороших юнит тестов с моками-заивисимостей будет достаточно.
2) Теория Go:
2.1) слайсы. внутреннее устройство, поведение при вызове append в различных кейсах
2.2) мапы. внутреннее устройство, ее потоконебезопасность, эвакуация
2.3) многопоточка.
2.3.1) какой тип многопоточки в Go. чем горутины от тредов отличаются
2.3.2) уметь синхронизировать горутины с помощью каналов. уметь написать воркер-пул
2.3.3) мьютексы - что это, зачем, когда используется
2.3.4) атомики - потыкать. понимать, где их можно использовать
2.4) сборщик мусора - почитать, как работает. почитать о том, когда предположительно память на хип аллоцируется, когда на стек.
2.5) планировщик - понимать модель MPG (вот отличное видео: https://www.youtube.com/watch?v=rloqQY9CT8I)
2.6) интерфейсы, их внутрянка. что такое дак-тайпинг. что такое встраивание. как приватность/публичность достигается.
3) Общая насмотренность.
3.1) Базы данных. Что такое индексы, зачем нужны, какие бывают, как связь много ко многим сделать. Какие бывают базы данных кроме SQL. Что такое ACID, что такое CAP-теорема.
3.2) Почитать про то, что такое Observability (просто минимально почитать, не углубляться).
3.2.1) Как собираются и отображаются метрики (оыбчно это Prometheus + Grafana)
3.2.2) Как собираются и отображаются логи. Зачем нужны логи (обычно это ELK)
3.2.2) Что такое трейсинг запросов и зачем он нужен.
3.3) Что такое брокеры сообщений, зачем нужны, когда используются (просто поверхностно ознакомиться).
4) Алгоритмы и структуры данных.
4.1) Можно смело идти по этому LeetCode треку: https://leetcode.com/explore/featured/card/the-leetcode-beginners-guide/
4.2) Уметь определять сложность по времени и по памяти.
4.3) Из структур данных понимать по минимуму: массивы, динамические массивы, мапы, бинарный поиск, связные списки
5) Перед откликами просмотреть типичные задачки на собеседованиях. Посмотреть 2-3 ролика mock-собесов в ютубе, сделать выводы, проанализировать, доучить, что не знаешь.
6) Не стесняться много откликаться и проходить собесы до победного :) Это не менее важный пункт, чем первые пять :)
P.S. вся инфа про те аспекты, что написаны выше, есть в свободном доступе
@Raodao1 вот этот список больше похож на мастхев
Спасибо, заскринил)
Ахаха, бля, я думал так в конце написано что-то вроде: "Ну и надо быть сыном миллионера, который вложит бабки в свой первый стартап"
Обсуждают сегодня