Golang Backend | YeaHub – Telegram
Golang Backend | YeaHub
856 subscribers
260 photos
21 videos
1 file
401 links
Теория, подготовка к интервью и курсы для Golang разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #interface #slice #map

🤔 Middle Golang Backend-разработчик в Digital Spirit.

Техническое собеседование. Лето 2024. Опыт в резюме: 3 года. Вилка 200к+. Аутсорс. Были вопросы про текущее место работы, большая теоретическая часть, секция лайвкодинга.

💬 Вопросы:

- Как ООП реализовано в Go?

- Что будет, если попытаться писать в закрытом канале?

- Что такое транзакции в PostgreSQL?

- Что такое индекс в базе данных?

- Что такое type switch в Go?

👉 Все вопросы из этого собеседования (34)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_хуки
🤔 Из чего состоят “хуки” в Git?

💬 Кратко:

Хуки в Git — это скрипты, которые выполняются автоматически при определённых действиях в репозитории, таких как коммиты, слияния или пуши. Они находятся в директории .git/hooks и могут быть настроены для выполнения различных задач.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#documentation #http
📚 Все про HTTP

Тут собрано всё, что нужно знать про самый популярный протокол интернета

✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3

Перейти к материалу

👉 База вопросов 👉 Новости
🔥1
#Собес #set #map #struct
🤔 Есть ли в Go тип Set?



💬 Кратко:

В Go нет встроенного типа Set, но можно легко реализовать множество с помощью map[T]struct{}. Такой подход эффективен и компактен.

 

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1👍1
Оптимизация работы с памятью в Go: практические техники

Эффективное управление памятью критически важно для производительности Go-приложений. Вот ключевые подходы.

Снижение аллокаций

Основной источник аллокаций — создание объектов в куче. Используйте stack allocation где возможно: локальные переменные, небольшие структуры.

Преаллокация слайсов и мап через make с указанием capacity уменьшает количество переаллокаций при росте.

sync.Pool для переиспользования объектов, которые дорого создавать. Эффективно для временных буферов, структур парсинга, encoder/decoder.

Профилирование памяти

Используйте pprof для анализа аллокаций. heap profile показывает распределения в куче, allocs — общее количество аллокаций.

Flame graphs помогают визуализировать цепочки вызовов, создающих аллокации. Ищите горячие пути с большим количеством распределений.

Оптимизация структур данных

Выравнивание полей структур уменьшает размер памяти и повышает производительность. Используйте fieldalignment для автоматической оптимизации.

Рассмотрите использование массивов вместо слайсов для небольших фиксированных коллекций. Массивы выделяются на стеке.

Для строковых операций используйте strings.Builder вместо конкатенации через +. Это минимизирует аллокации.

GC тонкой настройки

Переменная GOGC контролирует агрессивность сборщика мусора. Увеличение значения уменьшает частность GC, но увеличивает потребление памяти.

Для latency-sensitive приложений рассмотрите использование GOGC=off с ручным управлением памятью через debug.FreeOSMemory.

Паттерны кодирования

При работе с JSON избегайте частого создания encoder/decoder. Используйте пул или создавайте один экземпляр.

Для бинарных протоколов используйте заранее аллоцированные буферы и реиспользуйте их через sync.Pool.

Мониторинг в продакшене

Отслеживайте показатели runtime.MemStats: HeapAlloc, StackInuse, NumGC, PauseTotalNs.

Настройте алерты на рост потребления памяти и увеличение пауз GC.

Оптимизация памяти — баланс между производительностью, сложностью кода и временем разработки. Начинайте с профилирования, оптимизируйте только горячие участки, измеряйте эффект после каждой оптимизации.
👍2🔥1
#Собес #golang #profiling #pprof

🤔 Middle+ Golang Backend-разработчик в «Яндекс»

Техническое собеседование. Осень 2025. Вилка 290к+.
Проект: аналитическая платформа и система событийной обработки для сервисов Яндекса.
Опыт в резюме — 3.5 года.

💬 Вопросы:

- Что делает sync.Cond и в каких случаях его предпочтительнее использовать вместо каналов?

- В чём отличие runtime.Goexit() от os.Exit() и когда их применяют?

- Когда использовать context.WithTimeout, а когда context.WithDeadline?

- Что такое transactional outbox и зачем он нужен?

- Как работает планировщик горутин (роль GOMAXPROCS, зависимость от ядер ОС)?

👉 Все вопросы из этого собеседования (13)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1🔥1🤯1
#Собес #ipv6 #docker #daemon
🤔 Поддерживает ли Docker IPV6?

💬 Кратко:

Да, Docker поддерживает IPv6, но только на Linux-серверах. Чтобы включить поддержку IPv6, необходимо настроить Docker daemon, изменив параметр ipv6 в конфигурационном файле /etc/docker/daemon.json.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#repository #все
📚 Awesome Go

Репозиторий посвящён инструментам и библиотекам для языка программирования Go (Golang). В нём собраны различные решения, сгруппированные по категориям

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #timeout #http_client #request_deadline
🤔 Зачем нужны таймауты HTTP-запроса?



💬 Кратко:

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

 

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Backend и Frontend: эффективное взаимодействие

Современная веб-разработка требует четкого взаимодействия между backend на Go и frontend на JavaScript/TypeScript.

API дизайн

RESTful API остается стандартом для большинства проектов. Используйте семантичные HTTP методы: GET для чтения, POST для создания, PUT/PATCH для обновления, DELETE для удаления.

Определяйте четкие контракты через OpenAPI/Swagger спецификации. Генерируйте типы для TypeScript из этих спецификаций, обеспечивая типобезопасность на обеих сторонах.

gRPC-web позволяет использовать gRPC протокол непосредственно из браузера. Подходит для сложных сервисов с большим количеством методов.

Формат данных

JSON — стандарт для REST API. Используйте правильные статус-коды и структурированные сообщения об ошибках.

Для бинарных данных используйте Protocol Buffers или MessagePack. Они эффективнее JSON по размеру и скорости парсинга.

WebSockets для реального времени: уведомления, чаты, live-обновления. В Go используйте gorilla/websocket или стандартный net/http.

Аутентификация и авторизация

JWT токены для stateless аутентификации. Храните в localStorage или HttpOnly cookies.

CORS настройки критически важны. На backend явно указывайте разрешенные origin, методы и заголовки.

Сессии через cookies с защитой от CSRF. Используйте secure, httpOnly флаги для защиты.

Оптимизация производительности

Сжатие ответов (gzip, brotli). На Go используйте middleware для автоматического сжатия.

Кэширование статических ресурсов. Устанавливайте Cache-Control заголовки для CSS, JS, изображений.

Пагинация и ограничение данных. Не возвращайте полные коллекции, используйте limit/offset или курсоры.

Инструменты разработки

Swagger UI или ReDoc для документации API. Автоматически генерируйте из аннотаций Go кода.

Моки API для фронтенд-разработчиков. Используйте инструменты вроде prism для создания mock-сервера из OpenAPI спецификации.

Общие репозитории для прототипов и контрактов. Храните .proto файлы и OpenAPI спецификации в отдельных пакетах.

Обработка ошибок

Единый формат ошибок для всех API. Включайте код ошибки, сообщение и дополнительные данные.

Глобальная обработка ошибок на фронтенде. Перехватывайте HTTP ошибки и показывайте пользователю понятные сообщения.

Валидация данных на обеих сторонах. Дублируйте базовые проверки на фронтенде для UX, но всегда проверяйте на бекенде для безопасности.

DevOps аспекты

Единая система логирования. Используйте correlation ID для отслеживания запроса через весь стек.

Мониторинг производительности API. Отслеживайте время ответа, частоту ошибок, использование ресурсов.

Canary релизы и feature flags. Постепенное развертывание изменений API с возможностью отката.

Эффективное взаимодействие backend и frontend — это не только техническая интеграция, но и организационные процессы: общее понимание требований, синхронизация релизов, совместное решение проблем.
👍1
#Собес #golang #rest #redis

🤔 Middle Golang Developer в компанию Sisoft

Техническое собеседование. Лето 2024. Вилка: 200к+. Опыт в резюме: 3+ года. Много говорили о базах данных, REST и т.д.

💬 Вопросы:

- Как обеспечить безопасность данных при передаче через API (HTTPS, шифрование, JWT)?

- Какие альтернативные технологии клиент-серверного взаимодействия вы знаете (gRPC, GraphQL)?

- Чем сокеты отличаются от брокеров сообщений (например, Kafka)?

- Что такое сокеты?

- Чем SQL отличается от NoSQL? Когда выбрать каждое решение?

👉 Все вопросы из этого собеседования (13)

📣 Хочешь больше собесов?
Подпишись на наш главный канал