Golang вопросы собеседований
Статистика@notxxx1 - админ @Golang_google - Golang для разработчиков @itchannels_telegram - 🔥лучшие из ит @golangl - chat @golangtests - golang tests @golang_jobsgo - go chat jobs @ai_machinelearning_big_data - AI @data_analysis_ml РКН: clck.ru/3FmtKd
- Последний пост
- 12:56
- Последнее чтение
- 11:22
- Постов за неделю
- 2
- Всего постов
- 49
- Тип
- открытый
- Язык
- русский
- Категория
- Технологии
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 1 758
- 1/48двое суток
- 2 014
- 1/72трое суток
- 2 172
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
🧠 Алгоритм Флойда знают многие Go-разработчики: два указателя двигаются с разной скоростью и находят цикл в связном списке за `O(n)` времени и `O(1)` памяти. Но есть менее известный алгоритм Брента, который решает ту же задачу и часто делает меньше переходов по Next. Флойд: slow := head fast := head for fast != nil && fast.Next != nil { slow = slow.Next fast = fast.Next.Next if slow == fast { return true } } Брент работает иначе: один указатель движется постоянно, а второй используется как контрольная точка. Размер интервала постепенно удваивается: 1 → 2 → 4 → 8 → 16 power, lam := 1, 1 tortoise := head hare := head.Next for hare != nil && tortoise != hare { if power == lam { tortoise = hare power *= 2 lam = 0 } hare = hare.Next lam++ } Асимптотика та же: O(n) по времени O(1) по памяти Но Брент обычно делает меньше обращений к следующему элементу списка. Если Next вычисляется дорого или данные читаются через сложную структуру, разница уже может быть заметной. Флойда спрашивают на собеседованиях постоянно. Про Брента многие Go-разработчики вообще не слышали.
🐳 Docker полностью переписала слой виртуализации Docker Desktop Новый Docker VMM вышел в public beta для macOS и Windows начиная с Docker Desktop 4.86. Раньше Desktop полагался на сторонний VMM, теперь Docker контролирует весь стек и может оптимизировать его именно под контейнерные нагрузки. Что обещают на практике: более быстрый запуск контейнеров, заметно ускоренный file I/O между host и контейнером, возврат неиспользуемой RAM системе и более стабильную работу на Windows. На Windows Docker отдельно заявляет сочетание изоляции уровня Hyper-V со скоростью, близкой к WSL2. Тот же движок уже используется в Docker Sandboxes, а дальше компания хочет построить единый runtime для ноутбуков, облака, on-prem и AI-агентов. GA планируется на конец октября 2026 года, после чего Docker VMM должен стать движком по умолчанию для новых установок Docker Desktop на Mac, Windows и Linux. https://www.docker.com/blog/docker-vmm-public-beta/
⚡️ Одна из недооценённых сильных сторон Go - криптография в стандартной библиотеке. Хороший пример - SHA-256. Снаружи разработчик видит обычный crypto/sha256, но внутри Go умеет выбирать оптимальную реализацию под конкретный CPU. На arm64 логика примерно такая: if useSHA2 { blockSHA2(dig, p) } else { blockGeneric(dig, p) } Если процессор поддерживает SHA-2 instructions - используется платформенно-оптимизированный код. Если нет - generic fallback. В этом и сила стандартной библиотеки Go: простой API скрывает CPU feature detection, assembly и архитектурные оптимизации. sha256.Sum256(data) выглядит простенько. Но под капотом там очень серьёзная инженерия.
Go-приём: как не получить 99% после округления При независимом округлении процентов итоговая сумма может перестать быть равной 100. 33.3 → 33 33.3 → 33 33.4 → 33 Итого: 99% Для простого интерфейса можно округлить первые значения, а последнему передать остаток: package main import "math" func balancePercentages(values []float64) []int { if len(values) == 0 { return nil } result := make([]int, len(values)) used := 0 for i := 0; i < len(values)-1; i++ { result[i] = int(math.Round(values[i])) used += result[i] } result[len(values)-1] = 100 - used return result } Результат: []int{33, 33, 34} Сумма останется равной 100. Но это быстрый приём, а не универсальный алгоритм: - значения должны быть заранее нормализованы; - вся погрешность достаётся последнему элементу; - результат зависит от порядка; - при некорректных данных последнее значение может стать отрицательным. Для справедливого распределения лучше использовать метод наибольших остатков: округлить всё вниз, а недостающие единицы отдать значениям с крупнейшей дробной частью. Код актуален для современной Go 1.26 и работает без изменений. Функция math.Round доступна начиная с Go 1.10.
IRIS - open-source автодополнение на Go, которое рисует меню подсказок прямо внутри TTY. Инструмент индексирует историю команд и aliases, после чего предлагает подходящие команды в реальном времени. Работает на Linux и macOS, включая SSH, Tmux и обычные виртуальные терминалы. Внутри - один нативный Go-бинарник: https://github.com/versenilvis/iris
https://github.com/inspektor-gadget/inspektor-gadget## Inspektor Gadget: eBPF для отладки Kubernetes и Linux Inspektor Gadget — open-source набор инструментов для диагностики через eBPF. Умеет: - отслеживать процессы, файлы, сеть и syscalls; - связывать kernel-события с pod и контейнерами; - работать через kubectl gadget и CLI ig; - запускать eBPF-гаджеты из OCI images; - экспортировать данные в observability-системы. Пример: kubectl gadget run trace_open:latest Покажет, какие файлы открывают процессы внутри кластера. Полезно для SRE и Kubernetes-инженеров, когда логов и метрик уже недостаточно и нужно посмотреть, что происходит прямо на уровне ядра Linux. https://github.com/inspektor-gadget/inspektor-gadget
Каждый год в середине лета мы с друзьями собираемся на E-CODE. Ещё относительно молодая конфа Ozon Tech стала уже своего рода легендой. Не удивительно: хардовость официальной части здесь не уступает громкости афтерпати. На E-CODE 2026 нас по части бэкэнда ждут: • Runtime Async с его + и – • трассировка с eBPF • ускорение на SIMD • построение кастомной real-time системы видеоаналитики • сравнительный анализ алгоритмов сборки мусора Фишка этого года — брейнринг разработчиков и ИИ. Эксперты разберут сложные кейсы и сравнят свои подходы с тем, что предложит машина. Победителя выберет зал. Регистрируйтесь сейчас, чтобы услышать это всё вживую: https://ecode.ozon.tech/ 12 и 13 сентября, Москва. До встречи на E-CODE!
В Go всего 18 встроенных функций — и половину из них многие почти не трогают С Go 1.21 их стало 18: добавились min, max и clear. Чаще всего в реальном коде крутятся старые рабочие лошадки: * make * append * len * cap * copy * delete * close complex, real, imag нужны далеко не всем. print и println вообще лучше не тащить в нормальный код — для этого есть fmt, log и нормальные инструменты отладки. Самое интересное, что Go держит язык маленьким: встроенных функций мало, но почти каждая решает конкретную базовую задачу. А какие built-in функции вы реально используете чаще всего?
MinLZ научился искать внутри сжатых данных без полного распаковывания В релизе MinLZ v1.2.0 появилась очень полезная фича: поиск byte sequences прямо по сжатому потоку. Обычно, чтобы найти строку в архиве или логе, нужно сначала распаковать всё. MinLZ делает иначе: добавляет небольшой search index по блокам и распаковывает только те блоки, где совпадение вообще возможно. Как это работает: * каждый блок получает маленькую bloom-filter таблицу * при поиске MinLZ быстро проверяет, может ли паттерн быть в блоке * если точно не может — блок пропускается * если может — только тогда блок декодируется и сканируется Индекс можно встроить при сжатии или собрать потом как sidecar-файл, не трогая исходные сжатые данные. Старые MinLZ-ридеры такие chunks просто игнорируют, так что совместимость сохраняется. Самый красивый пример из релиза: поиск строки в 10 GB CockroachDB log, сжатом до 578 MB, занял 0.14 секунды через mz search. Обычный путь через decompression + grep занимал около 5 секунд, а lz4 -dc | grep — около 10 секунд. Но это не магия для всего подряд. MinLZ особенно хорош, когда нужно искать редкие literal byte strings: ID, error codes, request paths, hostnames, JSON keys, hashes. Для regex, fuzzy search, case-insensitive поиска или очень частых паттернов выигрыш может исчезнуть. Доступно как CLI и как Go API. GitHub: https://github.com/minio/minlz/releases/tag/v1.2.0
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку В IT прокачивается тот, кто каждый день видит сильные идеи, новые инструменты, реальные задачи, вакансии и разборы. Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: t.me/DevopsDocker Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_1001_notes Java: t.me/java_library JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: @courses ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд. Пока кто-то листает шум, ты будешь видеть инструменты, задачи и идеи, которые помогают расти в профессии.
Anthropic открыла reference harness для поиска уязвимостей с Claude Anthropic выложила open-source пример того, как можно строить пайплайн для поиска и исправления уязвимостей с помощью Claude. Репозиторий называется Defending Code Reference Harness и уже собрал около 6.5K звёзд на GitHub. Внутри — Claude Code skills для полного security-цикла: * /threat-model * /vuln-scan * /triage * /patch * /customize Сначала модель помогает построить threat model, потом сканирует код, помогает отфильтровать находки, ранжирует риски и предлагает патчи. Отдельно есть автономный harness: он проходит путь recon → find → verify → report → patch и в референсной версии заточен под поиск memory-багов в C/C++ через Docker и ASAN. GitHub: https://github.com/anthropics/defending-code-reference-harness
Кто-то разобрал Claude Code почти до винтика learn-coding-agent - репозиторий для тех, кто хочет понять, как устроены современные coding agents не на уровне промо-страниц, а на уровне архитектуры. Автор собрал разбор Claude Code по публичным источникам: цикл агента, систему инструментов, разрешения, работу с контекстом, сессии, подпроцессы, MCP, удалённые настройки, телеметрию и скрытые флаги. Получился не “гайд по использованию”, а карта внутренней логики CLI-агента: как он принимает решение, когда просит разрешение, как вызывает инструменты, как хранит историю и как расширяется через внешние интеграции. https://github.com/justxor/Claudecourse/
🔌 k8s-d2 - быстрый способ превратить Kubernetes-кластер в понятную схему Когда кластер растёт, kubectl get pods уже не помогает понять архитектуру. Видно ресурсы, но не видно систему. k8s-d2 решает это через диаграммы как код. Инструмент читает топологию Kubernetes-кластера и генерирует D2-файлы: пространства имён, workloads, сервисы, ingress и связи между ними. Удобно для ревью архитектуры, онбординга, документации и поиска странных зависимостей в кластере. Особенно полезно в командах, где Kubernetes уже живёт давно, а актуальная схема существует только в голове одного DevOps-а, который “сейчас в отпуске, но вроде всё помнит”. Запустил, получил диаграмму, положил рядом с документацией или в репозиторий. Архитектура становится не картинкой из прошлого квартала, а артефактом, который можно обновлять вместе с кластером. https://github.com/vieitesss/k8s-d2
🔍Тестовое собеседование с Go Senior с опытом работы в Яндексе, EPAM и Uzum в этот четверг 16 июля(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика. Как это будет: 📂 Маруф Караев, Senior в европйской компании, ex-Uzum, ex-Яндекс, ex-EPAM будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Маруф будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Маруфу Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot Реклама. О рекламодателе.
Любопытная идея: протоколы, которые легко блокируются напрямую, можно сделать гораздо живучее, если запускать их не «голыми», а внутри отдельного туннеля. Пример - catwire, кастомная виртуальная сеть на Go. В этом кейсе через неё пробрасывают обычный VLESS без дополнительной маскировки и шифрования на стороне самого VLESS. Фокус в том, что снаружи виден уже не прикладной протокол, а транспорт виртуальной сети. Получается простой паттерн: * VLESS живёт внутри приватного слоя * внешний трафик идёт через catwire * туннель берёт на себя сетевую обвязку * блокировать сам прикладной протокол становится сложнее Это хороший пример того, что устойчивость часто строится не вокруг одного «волшебного протокола», а вокруг правильной архитектуры: виртуальная сеть сверху, нужные сервисы внутри. https://github.com/nktauserum/catwire
видео или голосовое, без подписи
+1
TypeScript 7.0 переписали на Go Microsoft выкатила один из самых важных апдейтов TypeScript за всю историю проекта. Главное изменение - новый нативный компилятор и tooling на Go. Что это даёт: * full builds быстрее в 8–12 раз * меньше расход памяти * быстрее отклик IDE * параллельная обработка parsing, type-checking и emit * более комфортная работа с большими monorepo Пример из бенчмарков Microsoft: VS Code собирался 125,7 секунды на TypeScript 6.0 и 10,6 секунды на TypeScript 7.0. Это не релиз про новый синтаксис. Это релиз про скорость, масштабирование и нормальную работу TypeScript на больших кодовых базах. https://linuxiac.com/typescript-7-0-rewrites-the-compiler-in-go-for-up-to-12x-faster-builds/
Limen — модульная auth-библиотека для Go с подходом plugin-first. Ядро даёт базовые интерфейсы, сессии и security primitives, а каждый способ аутентификации поставляется как отдельный Go-модуль. То есть в проект можно импортировать только то, что реально нужно, без лишнего балласта. Хороший подход для Go-сервисов, где auth хочется собирать как конструктор: минимальное ядро, отдельные провайдеры и меньше зависимостей в проде. GitHub: https://github.com/thecodearcher/limen #golang
🐷 Pumba: инструмент, который специально ломает контейнеры Pumba нужен для chaos testing на уровне контейнеров. Он работает с Docker, containerd и Podman и помогает проверить, как сервис ведёт себя при реальных сбоях: • контейнер упал • сеть начала лагать • часть пакетов теряется • CPU забит • память под давлением • I/O тормозит Что умеет Pumba: • kill, stop, pause, rm, restart для контейнеров • сетевые задержки через netem delay • потерю пакетов через netem loss и iptables loss • ограничение скорости сети • дублирование и повреждение пакетов • стресс CPU, памяти и I/O через stress-ng • выбор контейнеров по имени, regex, labels или случайно • запуск хаоса по расписанию через --interval Пример: pumba --interval=30s --random kill "re2:^test" https://github.com/alexei-led/pumba
👣 MapStore для Go Локальная map-база поверх файловой системы. По сути, это способ хранить map[string]any на диске, но не руками через хаотичные JSON-файлы, а через нормальный слой с кодеками, событиями и безопасной записью. Что есть: • JSON или кастомные форматы • atomic file writes • optimistic concurrency • directory store с партиционированием • optional encryption через OS keyring • optional full-text search через SQLite FTS5 • pure Go, без cgo, Linux/macOS/Windows go get github.com/flexigpt/mapstore-go https://github.com/flexigpt/mapstore-go