## Вопросы от Данила Подольского на позицию Senior Golang Backend Developer в компанию Evrone
### Go — императивный или декларативный? А в чем разница?
В основном Императивный.
Разница в подходе:
- императивный - как сделать (прямо пошагово);
- декларативный - что сделать (итоговый результат).
### Что такое type switch?
Сравнение типов переменной, а не ее значений.
### Как сообщить компилятору, что наш тип реализует интерфейс?
Если наш тип реализует все методы интерфейса, значит он реализует этот интерфейс.
### Как работает append?
Если capacity исходного массива достаточно, он используется повторно. В противном случае выделяется новый базовый массив достаточной длины и данные копируются
### Какое у slice zero value? Какие операции над ним возможны?
Zero value у slice == nil
Возможные операции: len, cap, append.
### Как устроен тип map?
Map в Go это хэш таблица, позволяющая хранить пары ключ-значение и обладающая следующими функциями: маппинг, вставка, удаление, поиск. Map in Go не упорядоченная. Место поиска определяется рандомно. Когда мы пытаемся получить значение из мапы, а его там нет, получаем «нулевое значение типа», что в случае числа 0. Map — ссылочный тип и мало объявить переменную, надо ее проинициализировать.
### Каков порядок перебора map?
Случайным образом.
### Что будет, если читать из закрытого канала?
Вернется нулевое значение.
### Что будет, если писать в закрытый канал?
Произойдет вызов panic.
### Как вы отсортируете массив структур по алфавиту по полю Name?
С помощью функции sort.SliceStable. Для этого сначала конвертируем массив в слайс.
```go
slice := array[:]
```
### Что такое сериализация? Зачем она нужна?
### Сколько времени в минутах займет у вас написание процедуры обращения односвязного списка?
### Где следует поместить описание интерфейса: в пакете с реализацией или в пакете, где этот интерфейс используется? Почему?
### Предположим, ваша функция должна возвращать детализированные Recoverable и Fatal ошибки. Как это реализовано в пакете net? Как это надо делать в современном Go?
### Главный недостаток стандартного логгера?
### Есть ли для Go хороший orm? Ответ обоснуйте.
### Какой у вас любимый линтер?
### Можно ли использовать один и тот же буфер []byte в нескольких горутинах?
### Какие типы мьютексов предоставляет stdlib?
### Что такое lock-free структуры данных, и есть ли в Go такие?
### Способы поиска проблем производительности на проде?
### Стандартный набор метрик prometheus в Go -программе?
### Как встроить стандартный профайлер в свое приложение?
### Overhead от стандартного профайлера?
### Почему встраивание — не наследование?
### Какие средства обобщенного программирования есть в Go?
### Какие технологические преимущества языка Go вы можете назвать?
### Какие технологические недостатки языка Go вы можете назвать?