# Список вопросов

1. [**Базовые вопросы по golang**](https://folko.gitbook.io/goland/voprosy-sobesedovaniya/bazovye-voprosy-po-golang)
   1. Характеристики golang
   2. Какие технологические преимущества экосистемы Go вы можете назвать?
   3. Чем вам нравится golang
   4. Статическая или динамическая типизация? строготипизирован или нет
   5. Что вас огорчает в системе типов Go?
   6. Почему на Go практически не пишут расширений для других языков и динамических библиотек?
   7. Go - императивный или декларативный? А в чем разница?
   8. Что значит "A little copying is better than a little dependency"?  Какие заповеди Роба Пайка вам известны?
   9. Что такое type-switch?
   10. Как сообщить компилятору, что наш тип реализует интерфейс?
   11. Как вы применяете пакеты internal?
   12. можно ли использовать один и тот же буфер \[]byte в нескольких горутинах?
   13. **Почему иногда говорят, что в Go nil имеет тип?**
   14. Как получить переменную, которая не-nil, но nil?

2. **ООП**
   1. Какого типа?
   2. Что такое интерфейс
   3. Какие средства обобщенного программирования есть в Go?
   4. Как соблюдать SOLID при программировании на Go?
   5. Почему встраивание - не наследование?
   6. Где следует поместить описание интерфейса и почему?
   7. Ваш любимый способ делать dependency injection?
   8.

3. **Структуры данных**

   1. Массив
      1. Как устроен
      2. Как работает append?
      3. как сделать из слайса массив?

   2. slice
      1. Внутреннее устройство
      2. Основные ошибки использования
      3. какое у slice zero value? какие операции над ним возможны?

   3. Map
      1. Как устроен
      2. Каков порядок перебора map?
      3. какая функция используется для хеширования в map?
      4. Что может быть ключем в map?

   4. Канал
      1. Назначение
      2. Внутреннее устройство
      3. Буферизация
      4. Закрытие
         1. Что будет, если писать в закрытый канал?
         2. Что будет, если читать из закрытого канала?
         3. Как закрывать канал со стороны читателя?
         4. Зачем может потребоваться схема “много писателей - один читатель”?

   5. Как вы отсортируете массив структур по алфавиту по полю Name?

   6. Удалить дубликаты из массива без переаллокации - можно ли?

   7. что лучше - список или массив?

   8. как вы реализуете разреженный массив на go?

4. **Горутины.**

   1. Почему легковесны
   2. Как устроены
   3. Могут ли прерываться при длительной обработке
   4. Что такое thread pool, какого он размера и зачем он нужен?
   5. Что происходит, когда вы отправляете данные из горутины в сетевое соединение?

5. **Примитивы синхронизации**
   1\.

6. **Планировщик**

   1. Какого типа многозадачность
   2. Как устроен планировщик
   3. Какие функции выполняет

7. **GC**
   1. как устроен

8. **Алгоритмы**

   1. Concurrency
      1. Mutex и RWMutex
         1. В чем разница?
         2. Что будет, если попытаться взять RLock и следом WLock?
   2. Сериализация/десериализация
   3. Коммуникация
   4. Что такое lock-free структуры данных, и есть ли в go такие?
   5. Как вы реализуете LRU cache на go?

9. **Паттерны проектирования на golang**
