Golang задачи с собеседований
4.58K subscribers
491 photos
6 videos
12 files
257 links
Задачи, тесты и теоретические вопросы по Go. Так же по gin, grpc, горутинах, архитектуре api и http стэку.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
Задача: Имеется определенное количество монет разных номиналов. Необходимо выдать сдачу или вернуть nil, если это невозможно.

Жадный алгоритм:

1. Начинаем с самой крупной доступной монеты.
2. Берем максимальное количество этой монеты.
3. Переходим к следующей меньшей монете.
4. Повторяем процесс, пока сдача не будет полностью выдана.

Реализацию можно увидеть на картинке. 🔼
Вам нужно выгрузить несколько строк из базы данных, какой метод будете исполльзовать?
Anonymous Poll
58%
Query()
25%
QueryRow()
11%
Exec()
2%
Prepare()
2%
ProgLib()
8%
Узнать ответ
Влияет ли паника в одной горутине на другие горутины?
Anonymous Poll
54%
Да
37%
Нет
11%
Узнать ответ
В какой версии Go была внедрена Swiss Table для реализации map?
Anonymous Poll
3%
1.19
2%
1.20
4%
1.21
3%
1.22
6%
1.23
64%
1.24
22%
Узнать ответ
Что покажет этот код?

👻 — Пять пятёрок, каждая на новой строке
🌚 — Построчно числа от 0 до 4
⚡️ — Числа от 0 до 4 в случайном порядке
👾 — Я просто хочу узнать ответ

🐸Библиотека задач по Go
Воспроизводится ошибка 404 при нескольких автомиграциях, где ошибка? gin


package db

import (
"awesomeGin/models"
"log"

"gorm.io/driver/postgres"
"gorm.io/gorm"
)

func Init(url string) *gorm.DB {
db, err := gorm.Open(postgres.Open(url), &gorm.Config{})
DisableForeignKeyConstraintWhenMigrating: true ,

if err != nil {
log.Fatalln(err)
}

db.AutoMigrate(&models.Book{})
db.AutoMigrate(&models.Game{})
return db
}
Какой результат даст этот код?

👻 — 1 2 3 0 0
🌚 — 1 2 3 и паника
⚡️ — 1 2 3
👾 — Хочу узнать ответ

🐸 Библиотека задач по Go
Каково назначение CGO_ENABLED=0?

👻 — Включает использование CGo, позволяя коду на Go обращаться к C-функциям.
🌚 — Уменьшает производительность Go-кода, поскольку CGo работает быстрее.
⚡️ — Отключает CGo, создавая полностью независимый бинарный файл.
🎉 — Требует, чтобы все зависимости были написаны на чистом Go.
👾 — Узнать ответ

🐸Библиотека задач по Go
✏️ Создайте ограничитель запросов (Rate Limiter)

Задача:

• Необходимо разработать ограничитель запросов, который будет ограничивать количество запросов от одного клиента не более 5 раз в секунду.

• Запросы, которые превышают установленный лимит, должны быть заблокированы.

Решение в картинках ⬆️

🐸Библиотека задач по Go
Какой пакет необходим для разработки исполняемого приложения на Go?

Библиотека задач по Go.
Какой идентификатор можно использовать из другого пакета?

👻 — func calculateSum(a, b int) int {}
🌚 — func CalculateSum(a, b int) int {}
⚡️ — private func CalculateSum(a, b int) int {}
🎉 — func (s *Sum) calculate() int {}

🐸Библиотека задач по Go
Что проверяет функция errors.Is(err, ErrNotFound)?

👻 — Она определяет, является ли err экземпляром ErrNotFound, включая обёрнутые ошибки.
🌚 — Она проверяет, совпадает ли err с переменной ErrNotFound.
⚡️ — Она всегда возвращает false, так как функции errors.Is() не существует.
🎉 — Это устаревший метод, теперь используется сравнение err == ErrNotFound.

🐸 Библиотека задач по Go
Можно ли передавать канал в функцию как аргумент?

— Да, можно передать в функции.
— Нет, каналы нельзя передавать в функции.
— Да, но только если канал объявлен как chan int.

Библиотека задач по Go.