5.2 KiB
Вопросы от Данила Подольского на позицию 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. Для этого сначала конвертируем массив в слайс.
slice := array[:]