5 заданий с собеседования на позицию Junior Golang-разработчика
Разбор нескольких заданий и вопросов, которые могут задать на собеседовании на позицию Junior Golang Developer
25К открытий27К показов
Тимофей Житков
старший преподаватель в <a href="https://inordic.ru/">Nordic IT School</a> и Senior Full Stack Developer в агентстве недвижимости
Недавно в нашей IT-школе мы запустили новый курс «Golang-разработчик», который полностью готовит специалистов к позиции Junior.
И поэтому отвечаем на самый популярный вопрос: «что должен уметь начинающий Go-разработчик?».
В основном это работа с JSON API и базами данных. Для этого необходимо иметь представление о срезах, структурах… ну и, конечно, какой Go разработчик без горутин? Здесь представлены некоторые ключевые вопросы, которые необходимо знать на собеседовании на позицию go-разработчика.
Готовы? Тогда GO!!!
Как устроен слайс и чем он отличается от массива?
Срезы (slice) в отличие от массивов могут менять свою длину. То есть можно добавлять новые элементы, или удалять уже существующие.
Также в Go имеется оператор среза :
, который позволяет создавать новый срез и содержит указанную последовательность от и до:
Что такое горутины и зачем они нужны?
Горутина (goroutine) — это функция, которая выполняется асинхронно. Чтобы запустить горутину нужно лишь написать что-то вроде этого:
Весит одна горутина около 4кб. Так что, если у вас 4ГБ оперативной памяти, то можно одновременно запустить немало горутин ?
Они нужны, если нам параллельно требуется сделать несколько действий. Например, ваш скрипт должен опросить множество сторонних сервисов и поработать с ответом. А что делать, если некоторые из сервисов долго отвечают? Как говорится, семеро одного не ждут! Каждому по горутине, и тогда не придется ждать «отстающих».
Какие есть способы достать данные из JSON?
Тут можно либо демаршализовать (Unmarshal) JSON и разлить его данные в объект с фиксированной структурой. Либо можно залить данные в пустой интерфейс.
Для всего этого используется json.Unmarshal()
Расскажите об ООП в Golang
Формально оно в Go есть, но не совсем в том виде, в каком оно есть в PHP или Java.
В Go мы создаем структуры (читайте «классы») с определенными полями (свойствами), и далее создаем «экземпляры» этих структур. Методы описываются отдельно, а не внутри структур.
Если в функции есть return, обязательно ли она вернет то, что указано в return?
Мы привыкли, что обычно, если код внутри функции добрался до return
, то на выходе мы получим то, что стоит после return
. Но в Go есть интересная особенность: если есть именованный выходной параметр (параметры), то функция вернет последнее его значение, несмотря на то, что написано в return
.
Функция вернет в итоге: 95 и 27.
Вот и все. Желаем успехов на собеседовании!
25К открытий27К показов