Golang вопросы собеседований
13.7K subscribers
649 photos
5 videos
1 file
459 links
@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
加入频道
Please open Telegram to view this post
VIEW IN TELEGRAM
📝 Как составить резюме, чтобы попасть в Magnificent 7: анализ кейса

Недавно инженер поделился своим резюме, которое помогло ему получить предложение работы от одной из rjvgfybb Magnificent 7 (Apple, Microsoft, Google, Amazon, Meta, Nvidia, Tesla).

Magnificent 7 (в переводе — «Великолепная семёрка») — это современное неофициальное название семи крупнейших и самых влиятельных технологических компаний США, которые лидируют на фондовом рынке, в инновациях и в масштабе бизнеса.

Разберём, что сделало его резюме успешным и чему можно научиться.

📌 Главные выводы из резюме:

1. Фокус на достижениях, а не обязанностях.

Многие кандидаты в резюме просто перечисляют, *что они делали*, например:

- “Разрабатывал API”
- “Поддерживал базу данных”
- “Писал скрипты для автоматизации”

⚠️ Это описывает обязанности, но не показывает ценность или результат работы.

В успешном резюме инженер вместо этого написал, чего он достиг благодаря своей работе:

“Разработал API, который сократил время обработки данных на 30%”
“Оптимизировал запросы к базе данных, уменьшив среднее время ответа с 2 секунд до 0.5 секунд”
“Автоматизировал процесс деплоя, снизив количество ошибок на 15%”

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

💡 Почему это важно?

Big Tech-компании ищут инженеров, которые:

- Умеют оценивать влияние своей работы
- Думают о метриках успеха
- Приносят измеримый результат

Если в резюме нет цифр, улучшений или влияния на процесс — работодатель сам должен это додумывать.
А успешное резюме снимает вопросы и сразу показывает: “Вот что я сделал, вот как я улучшил продукт/процесс/результат.”


2. Лаконичность и компактность.

1 страница
Чёткая структура: “Опыт”, “Навыки”, “Образование”
Без фото, графиков, цветных рамок — чистый текст

3. Цифры везде, где это возможно.

Любое достижение сопровождается конкретной метрикой: улучшение производительности, сокращение времени, рост количества пользователей.
Даже небольшие улучшения указаны численно.

4. Поддержка через проекты с открытым кодом.

Инженер приложил ссылку на GitHub с реальными проектами — это усилило доверие к нему Как с специалисту.

5. Навыки — только релевантные вакансии.

В разделе Skills нет «MS Word» или «PowerPoint».
Только языки, технологии, инструменты, которые нужны для позиции (Python, Kubernetes, CI/CD, etc.).

6. Интерншипы и стажировки — это опыт.

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

---

🎯 Что важно для Big Tech:

Результаты > Задачи.
Цифры.
1 страница.
GitHub/портфолио.
Релевантные навыки.

---

🔥 Совет:

Ваше резюме — это реклама вас как продукта.
Покажите пользу, которую вы можете принести, а не просто список обязанностей.

➡️ Статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🐿️ Gin-Swagger — автоматическая документация для Gin API. Этот инструмент генерирует OpenAPI-спецификацию прямо из аннотаций в коде — достаточно добавить специальные комментарии к обработчикам роутов.

После установки и запуска swag init в проекте появляется папка docs с готовой спецификацией. Достаточно подключить роут /swagger/*any и интерактивная документация будет доступна через браузер. Особенно инструмент будет удобен для проектов, где API часто меняется: документация обновляется автоматически при изменении кода.

🤖 GitHub

@golang_interview
⚙️ Option Pattern в Go: гибкая и читаемая настройка объектов

В статье Leapcell ["Option Pattern in Go: Advanced Parameter Handling"](https://dev.to/leapcell/option-pattern-in-go-advanced-parameter-handling-15hf) рассматривается эффективный способ управления параметрами функций и конструкторов в Go.:contentReference[oaicite:7]{index=7}

## 🧩 Проблема

:contentReference[oaicite:9]{index=9}:contentReference[oaicite:11]{index=11}


func NewServer(addr string, port int, timeout time.Duration, maxConn int, protocol string) *Server {
// ...
}


Недостатки:
- :contentReference[oaicite:13]{index=13}
- :contentReference[oaicite:16]{index=16}
- :contentReference[oaicite:19]{index=19}
- :contentReference[oaicite:22]{index=22}:contentReference[oaicite:24]{index=24}

## 💡 Решение: Option Pattern

:contentReference[oaicite:26]{index=26}:contentReference[oaicite:28]{index=28}


type Server struct {
addr string
port int
timeout time.Duration
maxConn int
protocol string
}

type Option func(*Server)

func WithTimeout(t time.Duration) Option {
return func(s *Server) {
s.timeout = t
}
}

func WithMaxConn(max int) Option {
return func(s *Server) {
s.maxConn = max
}
}



:contentReference[oaicite:30]{index=30}:contentReference[oaicite:32]{index=32}


func NewServer(addr string, opts ...Option) *Server {
s := &Server{
addr: addr,
port: 8080,
timeout: 30 * time.Second,
maxConn: 100,
protocol: "tcp",
}

for _, opt := range opts {
opt(s)
}
return s
}


Использование:


server := NewServer("localhost",
WithTimeout(60*time.Second),
WithMaxConn(500),
)


## 🛠️ Дополнительные возможности

- Валидация параметров:


func WithPort(port int) Option {
return func(s *Server) {
if port < 0 || port > 65535 {
panic("invalid port number")
}
s.port = port
}
}


- Группировка опций:


type NetworkOptions struct {
Protocol string
Timeout time.Duration
}

func WithNetworkOptions(opts NetworkOptions) Option {
return func(s *Server) {
s.protocol = opts.Protocol
s.timeout = opts.Timeout
}
}


Преимущества

- :contentReference[oaicite:34]{index=34}
- :contentReference[oaicite:37]{index=37}
- :contentReference[oaicite:40]{index=40}
- :contentReference[oaicite:43]{index=43}:contentReference[oaicite:45]{index=45}

:contentReference[oaicite:47]{index=47}:contentReference[oaicite:49]{index=49}

📌 Читать
👣 В Go 1.24 есть много поводов для восторга: поддержка постквантовой криптографии, полноценная поддержка псевдонимов для обобщённых типов, а также ряд улучшений производительности в рантайме Go, которые значительно снижают нагрузку на CPU в большинстве приложений.

Узнайте, что нового, что ожидается в будущем и как использовать Go для создания масштабируемых, безопасных и надёжных приложений — в том числе для задач генеративного ИИ.

https://io.google/2025/explore/pa-keynote-17

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Полный гид по GPU-экосистеме — без воды и маркетинга

Если ты путаешься в CUDA, OpenCL, SYCL и HIP — этот гайд от ENCCS расставит всё по полочкам. Это не просто обзор, а чёткое объяснение, как устроен мир GPU-программирования сегодня.

🧠 Что ты узнаешь:

🔹 Как и почему GPU радикально отличается от CPU
🔹 Из чего состоит стек GPU-технологий:
 — CUDA и его аналоги (HIP, SYCL, OpenCL)
 — Директивы: OpenMP, OpenACC
🔹 Какие языки и стандарты поддерживают какую архитектуру
🔹 NVIDIA, AMD, Intel — кто что умеет и чем отличается
🔹 Модели памяти, исполнения, и что влияет на производительность

📌 Гайд подходит для:
• Разработчиков HPC и научных расчётов
• Инженеров ML/AI, желающих копнуть глубже
• Всех, кто хочет разобраться в низкоуровневом GPU-стеке без маркетингового тумана

📖 Читать:
https://enccs.github.io/gpu-programming/2-gpu-ecosystem/

🔥 Один из самых понятных и системных разборов GPU-мира на сегодня.

#GPU #CUDA #OpenCL #HIP #SYCL #HPC #AI #HighPerformanceComputing
📁 doublestar — расширенная поддержка glob-паттернов в Go

Альтернатива стандартному path/filepath.Glob в Go, с поддержкой:

• ** — рекурсивных поддиректорий
• Расширенных классов символов ([[:alpha:]], [[:digit:]])
• Исключающих шаблонов (!(pattern), @(pattern), ?(pattern))
• Более гибких масок в стиле Bash/Zsh

go get github.com/bmatcuk/doublestar/v4

🔧 Использование:


matches, err := doublestar.Glob("**/*.go")


📦 Подходит для написания CLI-инструментов, сборщиков, тулов для анализа кода и всего, где важна гибкость файловых шаблонов.

👉 Если filepath.Glob не хватает — doublestar легко заменяет его, не ломая привычный интерфейс.

github.com/bmatcuk/doublestar
🌀 RLX OS — минималистичная Linux-операционка, написанная на Go, запускаемая из одного файла

Проект — это легковесная, контейнерно-ориентированная Linux-система, которую можно запустить как один исполняемый файл. Идеально подходит для embedded-устройств, безопасных сред и DevOps-экспериментов.

### ⚙️ Основные особенности:

🚀 Монолитный исполняемый образ — всё в одном .efi`- или .iso`-файле
🧱 Immutable by design — неизменяемая, безопасная структура
📦 App Containers — встроенная поддержка запуска приложений как изолированных контейнеров
🌐 Zero-dependency init system — простая и быстрая загрузка
🛡️ Фокус на минимуме, скорости и контроле
💡 Поддержка Live Boot, конфигурации через YAML и кастомных сборок

📦 Отличный выбор для:
• DIY-дистрибутивов
• Специализированных рабочих станций
• Безопасной разработки без зависимости от сторонних пакетов

🔗 Репозиторий

@golang_interview
⚡️ Thunder — минималистичный фреймворк для API на Go

[Thunder](https://github.com/Raezil/Thunder) — это лёгкий и быстрый инструмент для создания API-серверов на Go. Он фокусируется на простоте, читаемости и строгой типизации без лишних абстракций.

🧩 Ключевые особенности:

🧼 Чистая архитектура — без лишнего "магического" кода
💡 Использует Go-дженерики для гибкости и типобезопасности
⚙️ Простое подключение middleware и обработчиков
🧪 Упрощённое тестирование маршрутов
🪶 Низкий порог входа и лёгкая интеграция в существующие проекты


👨‍💻 Пример:


thunder.Get("/ping", func(c thunder.Context) error {
return c.JSON(200, "pong")
})


Всё просто и по-Goшному.


📦 Подходит для:
• Быстрой сборки REST API
• Микросервисов и CLI-инструментов
• Тех, кто хочет full-control без тяжёлых фреймворков

🔗 GitHub
🧮 Парсим `lsblk` и анализируем диски на Go — без зависимостей

Вместо тяжёлых утилит можно легко написать парсер для анализа дисков прямо на Go.
В блоге Rezmoss показано, как создать свой анализатор дисков и разделов, используя lsblk и стандартную библиотеку Go.

🔍 Что делает утилита:
• Запускает lsblk -J и получает JSON
• Парсит структуру блок-устройств и их монтирования
• Выводит дерево разделов, меток и точек монтирования
• Работает без сторонних зависимостей

📦 Используются только:
os/exec для запуска lsblk
encoding/json для разбора вывода
• Стандартные структуры Go для представления дисков

🧠 Полезно для:
• CLI-утилит по управлению хранилищем
• системных тулов в Linux
• кастомных мониторингов и автоконфигурации

🔗 Читай подробнее: rezmoss.com/blog/disk-partition-analyzer-in-go/

#golang #linux #sysadmin #devtools #cli
🔥 7 000+ упражнений на 76 языках программирования

Exercism — бесплатная платформа для прокачки навыков программирования с нуля. Каждый язык — отдельный путь, наполненный практическими задачами.

Главный плюс — обратная связь от опытных менторов. Ответы здесь не быстрые, зато по делу и без токсичности, как это бывает на Stack Overflow.

https://exercism.org/
📦 Nubo — репозиторий формальных доказательств для Dedukti

Если вы работаете с формальными доказательствами и Dedukti — Nubo упрощает жизнь.

🔹 Это централизованный репозиторий библиотек с метаданными: имя, версия, зависимости, синтаксис, флаги.
🔹 Поддерживает загрузку (make download), проверку (make check) и упаковку (make package).
🔹 Работает через Makefile-сборку, автоматически управляя зависимостями и структурами.
🔹 Стандартизирует хранение и верификацию библиотек, пригоден для масштабирования и CI.

👨‍🔬 Полезно для исследователей, разработчиков Dedukti и формальных систем.

🔗 GitHub: https://github.com/nubolang/nubo
Вакансиb для Golang-разработчиков в Otello!

1️⃣ Разрабатываем сервис бронирования, где команда сама отвечает за архитектуру, консистентность данных и деплой.

2️⃣ Максимум ответственности и развитияТы сам проектируешь фичи, принимаешь решения и доводишь их до продакшена. У нас нет бюрократии и долгих согласований — есть автономные команды и возможность проявить лидерские качества.

3️⃣ Технологический стек, который радуетGo, PostgreSQL, Clickhouse, Kafka, Kubernetes, Prometheus, Grafana и многое другое. Пишем гексагональные REST-сервисы, разворачиваемся в четырех датацентрах. Любим архитектурные обсуждения, но технологии для нас — не самоцель, а инструмент.

4️⃣ Процесс, который не бесит. Работаем по Shape Up, поэтому без бесконечных таск-трекеров и бесцельных стендапов. Всегда задаем себе вопрос "Зачем?" и находим лучшие ответы на "Как?".

5️⃣ Классная команда и атмосфера. Мы ценим простые и эффективные решения, любим обсуждать архитектуру и масштабирование, а еще умеем работать динамично и с кайфом.

🔥 Если тебе близко —откликайся!
🚀 Production Go API Template — готовый шаблон для продакшн-бэкенда на Go

Репозиторий trakora/production-go-api-template — это минималистичный и структурированный старт для разработки API‑сервисов на Go, с учётом лучших практик.

📦 Что внутри:
• Чистая архитектура и модульная структура
• Поддержка PostgreSQL, Redis, миграций и хранилищ
• Встроенная обработка ошибок, логгирование, тесты
• JWT-аутентификация, конфигурация через .env
• Готовность к деплою в Docker и CI/CD

💡 Подходит для:
• Быстрого запуска продакшн‑сервисов
• MVP, стартапов, микросервисов
• Разработчиков, которые хотят "не изобретать велосипед"

🔗 GitHub: https://github.com/trakora/production-go-api-template

#golang #backend #api #webdev #goproject #архитектура
Офер в VK для бэкенд-разработчиков — попадите в команду за выходные

28–29 июня пройдёт VK Weekend Offer. Всего за 2 дня вы сможете пройти весь путь от знакомства с командами до приглашения на работу: встретиться с лидами, пройти технические собеседования и получить офер.

Языки программирования — Java, Go, Python, C++. Главное требование — от 3 лет реального опыта в бэкенде.

Читайте подробности на сайте и подавайте заявку до 25 июня!
👣 logporter - простой и легковесный экспортер (альтернатива cAdvisor), для получения метрик из контейнеров Docker, а также количества логируемых сообщений и отображение времени работы для всех контейнеров.

💡 В процессе анализа работы контейнеров, может быть полезно сравнение повышенной нагрузки с количеством логируемых сообщений, при этом, если приложение не является ресурсоемким, количество логов покажет возросшую нагрузку. Это также ускорьте анализ журнала, отображая, в какой момент времени было получено наибольшее количество сообщений из стандартного потока (stdout) и потока ошибок (stderr).

👉 Для проекта будет полезно получить обратную связь по актуальности и настройке текущего Dashboard для Grafana (изменения можно внести самостоятельно через Pull Request). Вы также можете предложить, какие еще кастомные метрики можно было бы реализовать.

🔐 Лицензия: MIT
Please open Telegram to view this post
VIEW IN TELEGRAM