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

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

@golang_interview

@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
Subscribers
15.1K
Photos
866
Videos
21
Links
647

Showing posts older than #1554 · Back to latest

Older Posts 19 shown
Post #1553 3.8K
🧠 Алгоритм Флойда знают многие 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-разработчики вообще не слышали.
  • ❤ 16
  • 🤔 5
  • 👍 3
  • 🥰 1
Post #1552 3.78K
🐳 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/
  • 🔥 9
  • 👍 2
  • 🥰 1
Post #1551 4.9K
⚡️ Одна из недооценённых сильных сторон 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) выглядит простенько.

Но под капотом там очень серьёзная инженерия.
  • ❤ 11
  • 🔥 7
  • 👍 4
Post #1550 4.28K
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.
  • ❤ 6
  • 🔥 5
  • 👍 2
Post #1549 11.5K
IRIS - open-source автодополнение на Go, которое рисует меню подсказок прямо внутри TTY.

Инструмент индексирует историю команд и aliases, после чего предлагает подходящие команды в реальном времени. Работает на Linux и macOS, включая SSH, Tmux и обычные виртуальные терминалы.

Внутри - один нативный Go-бинарник:

https://github.com/versenilvis/iris
  • 👍 16
  • 🔥 6
  • ❤ 3
Post #1548 4.17K
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
  • 🔥 3
  • ❤ 2
  • 👍 1
Post #1547 3.67K
Каждый год в середине лета мы с друзьями собираемся на E-CODE. Ещё относительно молодая конфа Ozon Tech стала уже своего рода легендой. Не удивительно: хардовость официальной части здесь не уступает громкости афтерпати.

На E-CODE 2026 нас по части бэкэнда ждут:

• Runtime Async с его + и –
• трассировка с eBPF
• ускорение на SIMD
• построение кастомной real-time системы видеоаналитики
• сравнительный анализ алгоритмов сборки мусора

Фишка этого года — брейнринг разработчиков и ИИ. Эксперты разберут сложные кейсы и сравнят свои подходы с тем, что предложит машина. Победителя выберет зал.

Регистрируйтесь сейчас, чтобы услышать это всё вживую: https://ecode.ozon.tech/

12 и 13 сентября, Москва. До встречи на E-CODE!
  • ❤ 2
  • 🤩 2
  • 🔥 1
Post #1546 4.36K
В 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 функции вы реально используете чаще всего?
  • ❤ 12
  • 👍 7
  • 🔥 5
  • 😁 1
Post #1545 4.23K
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
  • 👍 4
  • 🔥 3
  • 🥰 3
  • ❤‍🔥 1
Post #1544 3.1K
🔥 Хочешь быстрее расти в 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

Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.

Пока кто-то листает шум, ты будешь видеть инструменты, задачи и идеи, которые помогают расти в профессии.
  • ❤ 2
  • 👍 2
  • 🔥 1
Post #1543 3.31K
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
  • 🔥 3
  • ❤ 2
  • 🥱 2
Post #1542 3.81K
Кто-то разобрал Claude Code почти до винтика

learn-coding-agent - репозиторий для тех, кто хочет понять, как устроены современные coding agents не на уровне промо-страниц, а на уровне архитектуры.

Автор собрал разбор Claude Code по публичным источникам: цикл агента, систему инструментов, разрешения, работу с контекстом, сессии, подпроцессы, MCP, удалённые настройки, телеметрию и скрытые флаги.

Получился не “гайд по использованию”, а карта внутренней логики CLI-агента: как он принимает решение, когда просит разрешение, как вызывает инструменты, как хранит историю и как расширяется через внешние интеграции.

https://github.com/justxor/Claudecourse/
  • 👍 10
  • 🔥 3
  • ❤ 2
Post #1541 3.96K
🔌 k8s-d2 - быстрый способ превратить Kubernetes-кластер в понятную схему

Когда кластер растёт, kubectl get pods уже не помогает понять архитектуру. Видно ресурсы, но не видно систему.

k8s-d2 решает это через диаграммы как код. Инструмент читает топологию Kubernetes-кластера и генерирует D2-файлы: пространства имён, workloads, сервисы, ingress и связи между ними.

Удобно для ревью архитектуры, онбординга, документации и поиска странных зависимостей в кластере.

Особенно полезно в командах, где Kubernetes уже живёт давно, а актуальная схема существует только в голове одного DevOps-а, который “сейчас в отпуске, но вроде всё помнит”.

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

https://github.com/vieitesss/k8s-d2
  • 👍 7
  • ❤ 2
  • 🔥 2
Post #1540 3.43K
🔍Тестовое собеседование с Go Senior с опытом работы в Яндексе, EPAM и Uzum в этот четверг

16 июля(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.

Как это будет:
📂 Маруф Караев, Senior в европйской компании, ex-Uzum, ex-Яндекс, ex-EPAM будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Маруф будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Маруфу

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир →
@shortcut_go_bot

Реклама.
О рекламодателе.
  • ❤ 2
  • 👍 1
Post #1539 3.53K
Любопытная идея: протоколы, которые легко блокируются напрямую, можно сделать гораздо живучее, если запускать их не «голыми», а внутри отдельного туннеля.

Пример - catwire, кастомная виртуальная сеть на Go.

В этом кейсе через неё пробрасывают обычный VLESS без дополнительной маскировки и шифрования на стороне самого VLESS.

Фокус в том, что снаружи виден уже не прикладной протокол, а транспорт виртуальной сети.

Получается простой паттерн:

* VLESS живёт внутри приватного слоя
* внешний трафик идёт через catwire
* туннель берёт на себя сетевую обвязку
* блокировать сам прикладной протокол становится сложнее

Это хороший пример того, что устойчивость часто строится не вокруг одного «волшебного протокола», а вокруг правильной архитектуры: виртуальная сеть сверху, нужные сервисы внутри.

https://github.com/nktauserum/catwire
  • 🔥 12
  • 👍 4
  • ❤ 1
Post #1537 4.1K
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/
  • 🔥 29
  • ❤‍🔥 1
  • 🥰 1
Post #1536 11.1K
Limen — модульная auth-библиотека для Go с подходом plugin-first.

Ядро даёт базовые интерфейсы, сессии и security primitives, а каждый способ аутентификации поставляется как отдельный Go-модуль.

То есть в проект можно импортировать только то, что реально нужно, без лишнего балласта.

Хороший подход для Go-сервисов, где auth хочется собирать как конструктор: минимальное ядро, отдельные провайдеры и меньше зависимостей в проде.

GitHub: https://github.com/thecodearcher/limen

#golang
  • ❤ 8
  • 🔥 3
  • 👍 2
Post #1535 4.26K
🐷 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
  • 👍 9
  • ❤ 4
  • 🥰 1
Post #1533 5.08K
👣 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
  • ❤ 4
  • 🔥 2
  • 👍 1
  • 🥴 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →