ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Чек-лист самопроверки
- Что такое Go и для каких задач он предназначен?
- Кто создал язык Go и когда он был представлен?
- Какие ключевые принципы легли в основу дизайна Go?
- Как происходит компиляция Go-программы?
- Что такое GOPATH и чем он отличается от Go Modules?
- Как инициализировать модуль в Go?
- Как добавить внешнюю зависимость в проект?
- Какие есть примитивные типы данных в Go?
- В чём разница между
int, int32, int64?
- Как объявляются переменные (
var, :=)?
- Что такое нулевые значения в Go?
- Как работают константы и
iota?
- Какие есть составные типы (
array, slice, map, struct)?
- В чём разница между массивом и срезом?
- Как создать и изменить срез?
- Что такое ёмкость (
cap) и длина (len) среза?
- Как работают карты (
map) и как их инициализировать?
- Что такое структуры (
struct) и как к ним обращаться?
- Можно ли определять методы у структур?
- Поддерживает ли Go наследование? Если нет, то как достигается повторное использование кода?
- Что такое встраивание (
embedding) и как оно работает?
- Как работают указатели в Go и чем они отличаются от C++?
- Что такое интерфейсы в Go и как они реализуются?
- Может ли тип реализовывать интерфейс неявно?
- Что такое пустой интерфейс (
interface{}) и когда его стоит использовать?
- Как работают функции: параметры, возвращаемые значения, именованные результаты?
- Может ли функция возвращать несколько значений?
- Как обрабатываются ошибки в Go?
- Что такое
error и как создавать пользовательские ошибки?
- Что такое
defer и в каком порядке выполняются отложенные вызовы?
- Как работают паника (
panic) и восстановление (recover)?
- Что такое горутины и как их запускать?
- Что такое каналы (
channel) и какие виды бывают (буферизованные/небуферизованные)?
- Как закрыть канал и как проверить, закрыт ли он?
- Что такое
select и как он используется с каналами?
- Как избежать состояния гонки при работе с общими данными?
- Какие примитивы синхронизации есть в пакете
sync (Mutex, WaitGroup, Once)?
- Что такое пакет и как организована структура проекта?
- Как писать unit-тесты в Go?
- Как запустить тесты и получить покрытие кода?
- Что такое примеры (
Example-функции) и как они используются?
- Как работает маршрутизация HTTP-запросов во встроенном пакете
net/http?
- Как запустить HTTP-сервер?
- Как обрабатывать JSON в Go (
encoding/json)?
- Как сериализовать и десериализовать структуры?
- Как работают теги в структурах (
json:"name")?
- Что такое контекст (
context.Context) и зачем он нужен?
- Как передавать отмену операции или таймаут через контекст?
- Как кросскомпилировать Go-приложение под другую ОС или архитектуру?
- Какие инструменты входят в стандартный toolchain (
go build, go run, go mod, go test, gofmt)?