Библиотека Go для собеса | вопросы с собеседований
6.85K subscribers
235 photos
9 videos
1 file
485 links
Вопросы с собеседований по Go и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/0b524a15

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.iss.one/proglibrary/9197
Download Telegram
Как проверить, что контекст был отменён или достиг дедлайна

Каждый контекст, который может быть отменён (WithCancel, WithTimeout, WithDeadline), содержит канал Done(), который закрывается, когда контекст отменяется или истекает дедлайн.

select {
case <-ctx.Done():
fmt.Println("Context cancelled or deadline exceeded:", ctx.Err())
default:
// Продолжаем работу
}


Метод Err() позволяет получить конкретную причину, по которой контекст завершился.

ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()

time.Sleep(2 * time.Second) // превышаем таймаут

if err := ctx.Err(); err != nil {
fmt.Println("Context error:", err) // выведет: DeadlineExceeded
}


🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Какие типы горутин есть в Go

Формально они не делятся на типы, но по применению можно выделить обычные (для асинхронных задач), для параллелизма (с sync.WaitGroup или каналами), для обработки событий (например, в серверах), в пуле воркеров (для управления нагрузкой) и фоновые (для длительных задач).

Их поведение определяется контекстом и механизмами синхронизации, такими как каналы или мьютексы.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Можно ли использовать один контекст для нескольких горутин

Да, один контекст в Go можно использовать в нескольких горутинах одновременно.

Контекст — это immutable-структура: она содержит информацию о дедлайне, таймауте, функции отмены и ключ-значение, и при этом безопасна для параллельного доступа. Это значит, что несколько горутин могут слушать один и тот же контекст и реагировать на его отмену без риска гонок или повреждения данных.

Например, если создать контекст с таймаутом, несколько воркеров могут одновременно подписаться на ctx.Done(). Как только таймаут срабатывает или вызывается cancel(), канал закрывается, и все горутины получают сигнал и корректно завершают работу.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔1
🔥 Сегодня последний день скидки!

На недавнем вебинаре «ИИ-агенты: новая фаза развития AI» мы показали, как агенты уже меняют работу Data Scientists и инженеров.

Что тебя ждёт на курсе:

⚡️ создашь своего ИИ-агента с нуля
⚡️ соберёшь RAG-систему
⚡️ научишься адаптировать LLM под реальные данные бизнеса

До конца этого дня цена на курс 57 000 ₽. Уже завтра будет 69 000 ₽. Успевай записаться (используй промокод datarascals).

🔗 Записаться на курс
Последние часы со скидкой!

Мы уже закрыли вебинар «ИИ-агенты: новая фаза развития AI», но запись всё ещё доступна.

А дальше остаётся только практика. На курсе «ИИ-агенты для DS-специалистов» ты научишься разрабатывать агентов, собирать RAG-системы и адаптировать LLM под бизнес.

Сегодня цена ещё 57.000 ₽ с промокодом datarascals.
Завтра — 69.000 ₽.

👉 Успеть оплатить до полуночи
Как работает исключающее или

XOR (исключающее ИЛИ) — это логическая и побитовая операция, которая возвращает 1, если входные биты различны, и 0, если они одинаковы.

Результат для двух битов:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0


🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍1