uz
Feedback
Библиотека Go для собеса | вопросы с собеседований

Библиотека Go для собеса | вопросы с собеседований

Kanalga Telegram’da o‘tish

Вопросы с собеседований по Go и ответы на них. Покажем, как запустить своего ии-агента: https://clc.to/tvpmD По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

Ko'proq ko'rsatish
7 428
Obunachilar
-324 soatlar
-167 kunlar
+930 kunlar
Postlar arxiv
🔎 Собес сам себя не пройдет Ты готов к собеседованию? А если проверю? Залетай к нам и забирай курсы со скидкой 40%. Только д
🔎 Собес сам себя не пройдет Ты готов к собеседованию? А если проверю? Залетай к нам и забирай курсы со скидкой 40%. Только до конца октября можно узнать много нового и отточить навыки. 🎯 Забирай курсы: 🐍 python для разработчиков; 🧮 алгоритмы и структуры данных; 📝 архитектуры и шаблоны проектирования; 🧩 основы IT для новичков. ⚡Не упусти скидку и получи долгожданный оффер!

Зачем нужна функция runtime.Version() и для чего её используют runtime.Version() возвращает версию Go, которой скомпилирована программа. Используется для: • Диагностики — когда нужно понять, какой версией собран бинарник в продакшене • Логирования — записываем версию Go при старте приложения для отладки • Health-check эндпоинтов — отдаём информацию о версии в /health или /version • Условной логики — редко, но иногда нужно обойти баги конкретных версий компилятора • Валидации окружения — проверяем, что приложение собрано требуемой версией Go Айтишники всегда развиваются. В этом отлично помогают наши курсы. Обязательно чекните — до конца октября ряд курсов со скидкой. 🐸 Библиотека Go для собеса

🔥Обсуждаем все, что волнует Go-сообщество: 1 ноября Яндекс проведет митап для разработчиков по Go Помимо выступлений спикеров — нетворк и обсуждение свежих релизов, инструментов, новых подходов и архитектурных решений. В докладной части: СТО Яндекс Игр Степан Пестерников расскажет, как они используют KV-хранилища и кеши. Старший разработчик Яндекс Маркета Александр Никитин покажет, как с помощью Debug Tree разобраться, как работает сложная многопоточная кодовая база. Разработчик бэкенда Плюса и Финтеха Игорь Панасюк разберет новый garbage collector в Go 1.25, и расскажет, какое влияние он окажет на ваши сервисы. Отдельно на круглых столах офлайн-участники смогут обсудить использование AI-инструментов, highload, нетипичное применение Golang и другие актуальные для go-разработки темы. Для тех, кто не сможет быть очно, трансляция будет доступна онлайн и в записи. 💥 Регистрируемся здесь.

Как вам вопросы прошедшей недели Оцените их по шкале 🔥,❤️,👍,😢, 🥱, где 🔥 — это супер, а 🥱 — это скучно. Также приветствуется фидбек в комментах. 🐸 Библиотека Go для собеса

Почему time.After для таймаутов может привести к утечке памяти Когда вы вызываете time.After, внутри создаётся таймер. Этот таймер будет жить и занимать память до самого срабатывания — даже если он вам больше не нужен. Типичный код с утечкой:
for {
    select {
    case msg := <-messages:
        process(msg)
    case <-time.After(5 * time.Second):
        // проверяем что-то каждые 5 секунд
    }
}
На первый взгляд всё хорошо. Но на каждой итерации цикла создаётся новый таймер. Если сообщения приходят часто, таймеры не успевают сработать и просто накапливаются в памяти. Правильное решение Используйте time.NewTimer — он даёт контроль над таймером:
timer := time.NewTimer(5 * time.Second)
defer timer.Stop()

for {
    select {
    case msg := <-messages:
        process(msg)
        timer.Reset(5 * time.Second)
    case <-timer.C:
        // проверка по таймауту
        timer.Reset(5 * time.Second)
    }
}
Теперь таймер один — вы его переиспользуете. После обработки сообщения сбрасываете через Reset, и он снова начинает отсчёт. Не нужно? Вызываете Stop, и память освобождается сразу. Если таймаут разовый и вы точно знаете, что он сработает — time.After подходит:
select {
case result := <-doWork():
    return result
case <-time.After(10 * time.Second):
    return errors.New("timeout")
}
🐸 Библиотека Go для собеса

🧠 Курс «Математика для Data Science» Математика лежит под капотом не только алгоритмов, но и всего, что мы создаём — от сист
🧠 Курс «Математика для Data Science» Математика лежит под капотом не только алгоритмов, но и всего, что мы создаём — от систем рекомендаций до маршрутизации такси. Но главное, математика понятна, если объяснить её на языке разработки. 📘 Курс «Математика для Data Science»: — от основ до реальных задач из собесов; — линейная алгебра, статистика, теория вероятностей; — визуализации, практика и живые уроки; — поддержка менторов и комьюнити в чате. ⚡ Сегодня последний день, чтобы получить подарок: курс по базовой математике! 🗓️ Старт курса → 6 ноября 👉 Записаться на курс

Чем отличаются методы Time.Sub() и Time.Add() в пакете time Time.Sub() — метод вычисляет разницу между двумя моментами времени.
start := time.Now()
time.Sleep(2 * time.Second)
end := time.Now()

duration := end.Sub(start) // ≈ 2 секунды
fmt.Println(duration) // 2.001234567s
Time.Add() — метод добавляет или вычитает при отрицательном значении длительность к/от момента времени и возвращает новое время.
now := time.Now()
tomorrow := now.Add(24 * time.Hour)
yesterday := now.Add(-24 * time.Hour)

fmt.Println("Завтра:", tomorrow)
fmt.Println("Вчера:", yesterday)
🐸 Библиотека Go для собеса

🧠 Математика — движок всего, что мы пишем Без неё не было бы сортировок, шифрования, графов и даже того самого if с вероятно
🧠 Математика — движок всего, что мы пишем Без неё не было бы сортировок, шифрования, графов и даже того самого if с вероятностью успеха в A/B-тесте. Но главное, математика понятна, если объяснить её на языке разработки. 📘 Курс «Математика для Data Science»: — от основ до реальных задач из собесов; — линейная алгебра, статистика, теория вероятностей; — визуализации, практика и живые уроки; — поддержка менторов и комьюнити в чате. 🎓 За 2 месяца вы перестанете просто использовать библиотеки и начнёте понимать, как они работают. 🗓️ Старт → 6 ноября 👉 Записаться на курс

Как проверить тип переменной в рантайме Самый универсальный способ — использовать встроенный пакет reflect. Он позволяет получить информацию о типе любой переменной. Метод TypeOf() возвращает объект Type, который содержит полную информацию о типе: имя, размер, методы и другие характеристики:
func main() {
    var x interface{} = 42
    var y interface{} = "привет"
    var z interface{} = []int{1, 2, 3}
    
    fmt.Println(reflect.TypeOf(x))  // int
    fmt.Println(reflect.TypeOf(y))  // string
    fmt.Println(reflect.TypeOf(z))  // []int
}
Когда вы работаете с интерфейсами и хотите проверить конкретный тип, используйте type assertion:
func processValue(val interface{}) {
    if str, ok := val.(string); ok {
        fmt.Printf("Это строка: %s\n", str)
    } else if num, ok := val.(int); ok {
        fmt.Printf("Это число: %d\n", num)
    } else {
        fmt.Println("Неизвестный тип")
    }
}
Когда нужно обработать несколько типов, type switch читается намного проще:
func describe(i interface{}) {
    switch v := i.(type) {
    case int:
        fmt.Printf("Целое число: %d\n", v)
    case string:
        fmt.Printf("Строка длиной %d символов\n", len(v))
    case []int:
        fmt.Printf("Срез из %d элементов\n", len(v))
    case bool:
        fmt.Printf("Булево значение: %v\n", v)
    default:
        fmt.Printf("Неизвестный тип: %T\n", v)
    }
}
Для быстрой отладки можно использовать форматированный вывод:
var data interface{} = map[string]int{"ключ": 100}
fmt.Printf("Тип переменной: %T\n", data)  // map[string]int
Когда использовать каждый способ reflect.TypeOf() — когда нужна детальная информация о типе или вы работаете с неизвестными структурами данных. Учитывайте, что рефлексия замедляет выполнение. Type assertion — для проверки одного-двух конкретных типов. Самый производительный вариант. Type switch — когда нужно обработать несколько известных типов. Код получается чище и понятнее цепочки if-else. %T в fmt — только для отладки и логирования. 🐸 Библиотека Go для собеса

Как работает автоматическая помощь -h или --help При вызове программы с флагом -h пакет flag автоматически выводит список всех объявленных флагов с их описанием и значением по умолчанию. Это не требует дополнительного кода для справки. 🐸 Библиотека Go для собеса

💥 Математика, которая не «для галочки» Разработали курс «Математика для Data Science» специально для вас — чтобы закрыть все
💥 Математика, которая не «для галочки» Разработали курс «Математика для Data Science» специально для вас — чтобы закрыть все пробелы в математике и уверенно пройти любое собеседование на позицию Data Scientist. 🧠 За 2 месяца ты разберёшь: ➡️ линейную алгебру — работа с векторами и матрицами, их разложения, собственные значения и обратные матрицы; ➡️ мат. анализ — пределы, производные, экстремумы, применение градиентного спуска; ➡️ теорию вероятностей и статистику — случайные величины, распределения, статистические гипотезы, A/B-тесты; ➡️ математику в ML и аналитике — как использовать всё это в алгоритмах, логистической регрессии, методах ближайших соседей, байесовских подходах. 📚 Формат: 10 вебинаров, 3 практических проекта, тесты и чат с менторами. 🔥 При оплате до 19 октября получите курс по базовой математике в подарок. 🔗 Записаться на курс

Как с помощью append сложить массивы Чтобы объединить два слайса с помощью append, нужно использовать оператор распаковки — три точки. Но тут есть важный нюанс — если у первого слайса достаточно capacity, то append может переиспользовать его базовый массив, и это может привести к неожиданному поведению. Поэтому, если нужно сохранить оригинальный слайс без изменений, лучше создать новый пустой слайс и добавить в него сначала элементы первого, потом второго. 🐸 Библиотека Go для собеса

😨 Даже опытные Go-разработчики часто обходят стороной sync.Cond — это слишком «темная лошадка», не так ли? Но именно она мож
😨 Даже опытные Go-разработчики часто обходят стороной sync.Cond — это слишком «темная лошадка», не так ли? Но именно она может стать вашим самым точным инструментом для управления конкурентностью, если знать, как использовать её правильно. 📗 На открытом уроке вы разберёте механику этого примитива синхронизации, поймёте, чем он отличается от каналов и мьютексов, и увидите реальные примеры, где без него не обойтись. ❗️ После вебинара вы перестанете «бояться» sync.Cond, научитесь применять его для оптимизации кода и получите новые инструменты для решения задач конкурентности. Открытый вебинар проходет 📆 20 октября в 20:00 МСК. 👉 Регистрируйтесь и разберитесь, что скрывает Golang: https://clc.to/1orDKA Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🔥 Новый курс «Математика для Data Science» Записывайтесь до 19.10 и получите бонус-курс «Школьная математика» для быстрого о
🔥 Новый курс «Математика для Data Science» Записывайтесь до 19.10 и получите бонус-курс «Школьная математика» для быстрого освежения знаний! 🚀 🧠 Эксперты-спикеры на курсе: ▫️ Диана Миронидис — преподаватель ВШЭ, автор Яндекс Практикума; ▫️ Ксения Кондаурова — преподаватель Центрального Университета (Т-Банк); ▫️ Маргарита Бурова — академический руководитель программ Wildberries & Russ. 👉🏻 Не упустите шанс улучшить свои навыки

Можно ли определить пользовательские типы флагов Да, для этого нужно реализовать интерфейс flag.Value с двумя методами:
type Value interface {
    String() string
    Set(string) error
}
После этого пользовательский тип можно зарегистрировать через flag.Var.
type MyFlag struct{}
func (m *MyFlag) String() string { return "" }
func (m *MyFlag) Set(value string) error { fmt.Println("Set value:", value); return nil }

var my MyFlag
flag.Var(&my, "myflag", "custom flag")
flag.Parse()
🐸 Библиотека Go для собеса

😵‍💫 Устал от бесконечной подготовки к собесам? Тогда залетай к нам, есть задачка попроще. Пройди в нашем боте мини-тест по
😵‍💫 Устал от бесконечной подготовки к собесам? Тогда залетай к нам, есть задачка попроще. Пройди в нашем боте мини-тест по математике и узнай, готов ли ты к Data Science или стоит что-то подтянуть. 📱 Перейти в бота

🔍Тестовое собеседование с Go-разработчиком из VK уже завтра 16 октября(уже завтра!) в 19:00 по мск приходи онлайн на открыто
🔍Тестовое собеседование с Go-разработчиком из VK уже завтра 16 октября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика. Как это будет: 📂 Владислав Кирпичов, Go-разработчик в VK, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Владислав будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Владиславу Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир @shortcut_sh_bot Реклама. О рекламодателе.

Как получить неразобранные аргументы после парсинга флагов После вызова flag.Parse() все оставшиеся аргументы (которые не являются флагами) можно получить через flag.Args().
flag.Parse()
fmt.Println("Remaining args:", flag.Args())
🐸 Библиотека Go для собеса

💡 Задача с собесеседования Недавно в одном известном всем банке кандидату была предложена задача: Есть клиент, который за ме
💡 Задача с собесеседования Недавно в одном известном всем банке кандидату была предложена задача:
Есть клиент, который за месяц делает 1000 транзакций. Нужно посчитать вероятность того, что среди них окажется хотя бы одна дублирующаяся сумма, если каждая сумма округляется до 2 знаков после запятой.
Вероятности, распределения, матожидание, градиенты — всё это может всплыть на интервью, и даже в продовых задачах. 🎓 Proglib запускает экспресс-курс «Математика для Data Science» — для тех, кто хочет закрыть эти пробелы и понять математику быстро, качественно и без боли. 🔍 На курсе вас ждет: — линейная алгебра, анализ, теория вероятности и статистика; — градиенты, матрицы и экстремумы функций; — математики и алгоритмы машинного обучения; — много практики. 📅 Старт: 6 ноября ⏰ Формат: 10 вебинаров и 3 практических проекта 💬 Поддержка: менторы + Telegram-чат 💰 Стоимость: 37 000 ₽ (есть рассрочка) 🔗 Узнать больше и записаться

Как вам вопросы прошедшей недели Оцените их по шкале 🔥,❤️,👍,😢, 🥱, где 🔥 — это супер, а 🥱 — это скучно. Также приветствуется фидбек в комментах. 🐸 Библиотека Go для собеса