Go Toolchain GOROOT, GOPATH, процесс установки модулей и сборки программ, кросс-компиляция, форматирование кода и линтеры 1 https://habr.com/ru/companies/otus/articles/782218/   https://habr.com/ru/articles/457970/     https://habr.com/ru/articles/249545/
Элементарные типы данных: элементарные типы, понятие "zero value", константы и указатели, строки, руны и массивы байт, стандартные функции для работы со строками и Unicode, преобразование и присвоение типов, указатели, передача аргументов по ссылке и по значению.
Массивы, слайсы, мапы, интерфейсы
Стуктуры процесс определения структур; инкапсуляция полей структуры; определение методов структуры; вложенные и анонимные структуры;
Работа с ошибками, паниками
Знание основ языка: область видимости переменных, управляющие конструкции, пространства имён.
Работа с вводом/выводом тип Buffer, стандартные интерфейсы: Reader, Scanner, Writer, Closer; блочные устройства, Seeker; форматированные ввод и вывод: fmt 1 https://habr.com/ru/articles/306914/
Понимание основ работы с ОС (работа с файлами, сетью).
Продвинутый Go
Внутреннее устройство каналов
Понимание работы сборщика мусора 1 https://habr.com/ru/companies/avito/articles/753244/   https://www.youtube.com/watch?v=ZZJBu2o-NBU
Понимание работы памяти 1 https://medium.com/@ali.can/memory-optimization-in-go-23a56544ccc0 https://habr.com/ru/companies/vk/articles/776766/
Опыт работы с библиотеками и фреймворками, такими как Gin, Echo. 1 https://medium.com/cuddle-ai/building-microservice-using-golang-echo-framework-ff10ba06d508 https://echo.labstack.com/docs/category/guide
Профилирование, написание бенчмарков 1 https://habr.com/ru/companies/badoo/articles/301990/   https://www.youtube.com/watch?v=sNjvpHUHMh8   https://medium.com/nuances-of-programming/бенчмарки-в-golang-тестируем-производительность-кода-c65a22b2e715
Примитивы синзронизации: мьютексы, семафоры, условные переменные 1 https://medium.com/german-gorelkin/synchronization-primitives-go-8857747d9660  https://medium.com/@anandpillai/synchronization-in-go-using-concurrency-primitives-a-case-study-535bb2a71c13
Concurency patterns 1 https://www.oreilly.com/library/view/concurrency-in-go/9781491941294/ch04.html
Рефлексия использование пакета reflect; плюсы и минусы рефлексии; reflect.Type и reflect.Value; примеры использования рефлексии; пакет unsafe и тип unsafe.Pointer.
Контекст и низкоуровневые сетевые протоколы контекст в Go (пакет context); сравнение протоколов TCP и UDP; стандартные типы net.Dialer и net.Conn; возможные сетевые проблемы и их отладка; обеспечение сетевых таймаутов.
Память и сборка мусора структура памяти в Linux процессе; особенности памяти программы на Go; выделение и освобождение памяти на стеке и куче; понятие "escape analysis"; механизм сборки мусора в Go. 1 https://habr.com/ru/articles/497994  https://hemantra.medium.com/linux-memory-management-all-you-need-to-know-d1dbdda8b386
Параллельное программирование
Основы: Как происходит исполнение кода: регистры, стек Единицы исполнения кода: процесс, поток, корутина Многозадачность: кооперативная, вытесняющая Конкурентсное/паралелльное исполнение кода
Операционные системы: Прерывания, context switching, виртуальная память, адресное пространство процесса Сегменты процесса: stack, heap, text, data/bss 1
Атомики: Load, Store, CAS, атомики с указателями 1 https://habr.com/ru/articles/744822/
Проблемы параллельного программирования Data race, Dead lock, Live lock, Starvation 1 https://medium.com/german-gorelkin/deadlocks-livelocks-starvation-ccd22d06f3ae
Паттерны: worker pool, scheduler, batcher
Барьеры памяти: write, read, acquire, release 1 https://www.youtube.com/watch?v=YHIYT_jPR7Q
Алгоритмы синхронизации
Базовая архитектура компьютера
Иерархия памяти
Разрядность процессора
Разрядность шины
Тестирование
Понимание основных принципов тестирования кода. 1
Написание и запуск базовых модульных тестов.Работа с простыми тестовыми фреймворками. 1
Разработка более сложных модульных тестов с использованием мок-объектов и фикстур. 1
Использование статического анализа кода для обнаружения потенциальных проблем. Знание основных принципов интеграционного тестирования. 1
Использование техник тестирования, таких как тестирование производительности, нагрузочное тестирование и функциональное тестирование API. Знание практик непрерывной интеграции и непрерывного тестирования. 1
Алгоритмы и структуры данных 1
Понимание широко используемых структур данных (список, мап, дерево) 1
Умение самому написать простую реализацию алгоритмов. Понимание оценки сложности алгоритмов и памяти 1
Знание оснонвых алгоритмических паттернов: Two pointers, sliding window, k-top, fast and slow pointers 1
Теория кэширования
Внутреннее кэширование 1 ?
Внешнее кэширование 1
Алгоритмы вытеснения 1
Инвалидация кеша 1
Способы измерения эфективности кеша 1
Чистый код
Принципы ООП 1
SOLID, GRASP, GoF 1
CQRS, DDD 1
GIT
Git: revert, reset, умение работать через терминал
Опыт работы с git variables, их подстановкой в проект, понимание gitlab-ci.yml.
Сетевые протоколы
HTTP. Методы, заголовки, REST
TCP/IP и DNS.
SSH.
Технологический стек
Основы синтаксиса SQL, понимание JOIN-ов.
Знание JSON API.
Опыт работы с JWT/Bearer Token, хешированием. 1
Опыт работы с Redis 1
Уверенный пользователь Unix/Linux.
Kafka. 1 https://www.youtube.com/watch?v=-AZOi3kP9Js
Архитектура
Надежность, масштабируемость 1
Балансировка нагрузки 1
REST, gRPC, GraphQL 1
Мониторинг 1
Распределенное хранение данных 1
Паттерны и приемы проектирования 1
Понимание выставленных требований и написание кода в соответствии со спецификацией. Умение выявлять функциональные и не функциональные требования
Код-ревью 1
Опыт работы с highload, умение быстро найти пути оптимизации действующих процессов.
Опыт проектирования микросервисной архитектуры.
Опыт создания эффективной архитектуры backend приложения с нуля.
Soft Skills
Опыт прямого общения с партнёрами. Командная работа с представителями партнёров. Умение корректно и оперативно подготовить перечень вопросов и уточнений. Умение корректно предоставить необходимую информацию партнёру.
Понимание и объяснение мыслей, дизайна, идей, специфику - в точно выраженной форме.
Опыт прямого общения с заказчиком/клиентом. Умение составит план встречи и корректно выстроить диалог.
Управление командой разработчиков от 2-3 человек. 1
Проведение обучающих семинаров, докладов. 1
Проведение презентации технических решений и программных продуктов. 1
Deploy
Знание Docker, Docker Swarm, Kubernetes 1 https://habr.com/ru/articles/589415/
Уверенное знание Docker, опыт написания Dockerfile. 1 https://habr.com/ru/articles/253877/