| Элементарные типы данных: элементарные типы, понятие "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/ |