Получи случайную криптовалюту за регистрацию!

Golang вопросы собеседований

Логотип телеграм канала @golang_interview — Golang вопросы собеседований G
Логотип телеграм канала @golang_interview — Golang вопросы собеседований
Адрес канала: @golang_interview
Категории: Технологии
Язык: Русский
Количество подписчиков: 7.19K
Описание канала:

@notxxx1 - админ
@Golang_google - Golang для разработчиков
@itchannels_telegram - 🔥лучшие из ит
@golangl - golang chat
@golangtests - golang tests
@golang_jobsgo - go chat jobs
@ai_machinelearning_big_data - AI
@data_analysis_ml - анализ данных

Рейтинги и Отзывы

2.50

2 отзыва

Оценить канал golang_interview и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

1

3 звезд

0

2 звезд

0

1 звезд

1


Последние сообщения

2022-07-17 11:36:29 Использование sync/atomic в golang для float64

У нас есть канал из которого мы можем читать результаты выполнения задач. Результат задачи содержит флаг показывающий была ли ошибка при выполнении задачи и результат выполнения этой задачи (тип float64). Нужно найти сумму всех результатов и количество ошибок.

Реализация с использованием sync.Mutex
Задачу можно решить с использованием sync.Mutex

Ответ

@golang_interview
1.6K views08:36
Открыть/Комментировать
2022-07-16 13:49:54
Для чего можно использовать пустую структуру - `struct{}`?
Anonymous Quiz
8%
пустую структуру использовать нельзя
65%
чтобы сэкономить память
28%
чтобы использовать динамическое определение типа
373 voters1.2K views10:49
Открыть/Комментировать
2022-07-15 13:22:01
"Какой размер массива выделяется под слайс при его расширении за рамки его емкости?"

Если отвечать на вопрос поверхностно, то можно сказать, что базовый массив расширяется в два раза от нашей capacity.

Отвечая более емко, следует учесть, что при больших значениях расширение будет не в два раза и будет вычисляться по специальной формуле.

Если развернуть ответ полностью, то это будет звучать примерно так:

если требуемая cap больше чем вдвое исходной cap, то новая cap будет равна требуемой;

если это условие не выполнено, а также len текущего слайса меньше 1024, то новая cap будет в два раза больше базовой cap;

если первое и второе условия не выполнены, то емкость будет увеличиваться в цикле на четверть от базовой емкости пока не будет обработано переполнение. Посмотреть эти условия более подробно можно в исходниках go.

@golang_interview
1.4K views10:22
Открыть/Комментировать
2022-07-14 12:32:39
Как определить тип интерфейса?

Ответ
С помощью инструкции type switch можно определить тип интерфейса, указав возможные варианты базового типа его значения.

Код

@golang_interview
1.3K viewsedited  09:32
Открыть/Комментировать
2022-07-13 12:30:53
Что выведет код?

numbers := []*int{}

for _, value := range []int{1, 2, 3, 4, 5} {
numbers = append(numbers, &value)
}

for _, value := range numbers {
fmt.Println(*value)
}

Запустить и посмотреть объяснение

@golang_interview
1.5K views09:30
Открыть/Комментировать
2022-07-13 10:56:19
Каков порядок возврата при использовании несколько функций с defer в рамках одной внешней функции?

Ответ

defer добавляет переданную после него функцию в стэк. При возврате внешней функции, вызываются все, добавленные в стэк вызовы. Поскольку стэк работает по принципу LIFO (last in first out), значения стэка возвращаются в порядке от последнего к первому.

Таким образом функции c deferбудут вызываться в обратной последовательности от их объявления во внешней функции. На этот вопрос любят давать практические задачи.

@golang_interview
1.3K viewsedited  07:56
Открыть/Комментировать
2022-07-13 10:39:37
Как легче всего проверить срез на пустоту?

Создайте программу, проверяющую срез на пустоту. Найдите самое простое решение.

Решение

Легче всего проверить срез на пустоту с помощью встроенной функции len(), которая возвращает длину среза. Если len(slice) == 0, значит срез пуст.

@golang_interview
1.7K views07:39
Открыть/Комментировать
2022-07-12 09:22:51
Merge sort
Реализуйте конкурентное решение merge sort (сортировка слиянием), используя горутины и каналы.


В качестве опорной точки можно взять эту последовательную реализацию:

В начале при сортировке слиянием мы рекурсивно разделяем массив на right и left стороны и на строках 30-34 вызываем MergeSort для обеих сторон.

Теперь нужно сделать так, чтобы Merge(left, right) выполнялась после получения возвращаемых значений от обоих рекурсивных вызовов, то есть и left и right должны обновляться до того, как Merge(left, right) сможет быть выполнена. Для этого на строке 26 мы вводим канал типа bool и отправляем в него true сразу после выполнения left = MergeSort(data[:mid] (строка 32).

Операция <-done блокирует код на строке 35 до инструкции Merge(left,right), чтобы она не продолжилась, пока горутина не завершится. После завершения горутины и получения true в канале done код переходит к инструкции Merge(left, right) на строке 36.

@golang_interview
3.3K viewsedited  06:22
Открыть/Комментировать
2022-07-11 09:46:04
Отформатируйте строку без ее вывода
Найдите самый простой способ отформатировать строку с переменными, не выводя значение.


Ответ

Легче всего это сделать с помощью fmt.Sprintf(), которая возвращает строку, не выводя ее на экран.


@golang_interview
1.6K views06:46
Открыть/Комментировать
2022-07-10 10:05:43
Реализуйте функцию SumOfSquares, получающую целое число c и возвращающую сумму всех квадратов между 1 и c. Вам потребуется использовать инструкции select, горутины и каналы.

Например, ввод 5 приведет к возвращению 55, потому что $1² + 2² + 3² + 4² + 5² = 55$.

Ответ :

Рассмотрим функцию SumOfSquares. Сначала на строке 4 мы объявляем переменную y, после чего переходим к циклу For-Select. В инструкциях select прописано два кейса.

case c <- (y*y): служит для отправки квадрата y по каналу c, который принимается в горутине, созданной в основной рутине.
case <-quit: служит для получения сообщения из основной рутины, которое вернется из функции.

@golang_interview - вопросы собеседованний Golang
1.6K viewsedited  07:05
Открыть/Комментировать