#полезное
😬 Библиотека Go для создания таблиц с форматированным текстом в ASCII, Unicode, Markdown, HTML и раскрашенных терминалах. Отлично подходит для CLI-утилит, логов и веб-приложений.
GitHub: tablewriter
👉 Новости 👉 База вопросов
GitHub: tablewriter
Please open Telegram to view this post
VIEW IN TELEGRAM
Контекст в Go: что нужно знать для собеседования
Контекст — один из фундаментальных типов в Go. Вот ключевые аспекты для понимания.
Почему контекст так важен?
- Стандартизированный способ передачи метаданных
- Управление временем жизни запросов
- Координирование работы горутин
- Обязателен для использования в большинстве библиотек
Основные аспекты контекста:
1. Базовые операции
Создание фонового контекста
Наследование и создание дочерних контекстов
Передача значений между горутинами
Отмена выполнения операций
2. Виды контекстов
Background для корневых операций
TODO для временных решений
WithCancel для ручного управления
WithTimeout и WithDeadline для временных ограничений
WithValue для передачи метаданных
3. Практическое применение
HTTP запросы и серверы
Базы данных и внешние API
Долгие вычисления
Параллельная обработка
4. Распространенные ошибки
Использование контекста для передачи обязательных параметров
Неправильное время жизни контекста
Утечки горутин из-за неотслеживания отмены
Чрезмерное использование WithValue
5. Паттерны использования
Передача контекста как первого аргумента
Прослушивание Done канала
Обработка дедлайнов в цепочке вызовов
Правильное завершение работы
Что практиковать:
- Реализацию HTTP middleware с контекстом
- Создание сервиса с graceful shutdown
- Обработку таймаутов в цепочке вызовов
- Передачу данных через контекст
- Написание тестов для отменяемых операций
Понимание контекста показывает, что вы умеете писать корректный concurrent код. Умение правильно управлять временем жизни операций и координировать горутины — обязательный навык для профессионального Go-разработчика.
Контекст — один из фундаментальных типов в Go. Вот ключевые аспекты для понимания.
Почему контекст так важен?
- Стандартизированный способ передачи метаданных
- Управление временем жизни запросов
- Координирование работы горутин
- Обязателен для использования в большинстве библиотек
Основные аспекты контекста:
1. Базовые операции
Создание фонового контекста
Наследование и создание дочерних контекстов
Передача значений между горутинами
Отмена выполнения операций
2. Виды контекстов
Background для корневых операций
TODO для временных решений
WithCancel для ручного управления
WithTimeout и WithDeadline для временных ограничений
WithValue для передачи метаданных
3. Практическое применение
HTTP запросы и серверы
Базы данных и внешние API
Долгие вычисления
Параллельная обработка
4. Распространенные ошибки
Использование контекста для передачи обязательных параметров
Неправильное время жизни контекста
Утечки горутин из-за неотслеживания отмены
Чрезмерное использование WithValue
5. Паттерны использования
Передача контекста как первого аргумента
Прослушивание Done канала
Обработка дедлайнов в цепочке вызовов
Правильное завершение работы
Что практиковать:
- Реализацию HTTP middleware с контекстом
- Создание сервиса с graceful shutdown
- Обработку таймаутов в цепочке вызовов
- Передачу данных через контекст
- Написание тестов для отменяемых операций
Понимание контекста показывает, что вы умеете писать корректный concurrent код. Умение правильно управлять временем жизни операций и координировать горутины — обязательный навык для профессионального Go-разработчика.
🤔3🔥2❤1👍1
#Собес #golang
🤔 Какие типы данных используются в Go?
💬 Кратко:
Go поддерживает широкий спектр типов данных, включая числовые (целые и с плавающей запятой), строковые, булевы, массивы, срезы, структуры, карты, указатели, интерфейсы и каналы. Это позволяет эффективно решать разнообразные задачи, используя строгую типизацию.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Go поддерживает широкий спектр типов данных, включая числовые (целые и с плавающей запятой), строковые, булевы, массивы, срезы, структуры, карты, указатели, интерфейсы и каналы. Это позволяет эффективно решать разнообразные задачи, используя строгую типизацию.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
#полезное
🤯 Хотели ли вы когда-нибудь одновременно сохранить вывод команды и при этом стримить его в stdout/err текущего процесса в Go?
Для этого идеально подходит утилита
Подробнее о приёме тут
👉 Новости 👉 База вопросов
Для этого идеально подходит утилита
io.MultiWriter()! Очень полезная штука для CLI и системного программирования.Подробнее о приёме тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Техническое собеседование. Лето 2025. Вилка 290к+ Проект: система для операторов связи. Опыт в резюме - 3.5 года. Было много вопросов по: Go, concurrency, Kafka и RabbitMQ, сетевым протоколам, базам данных, профилированию и управлению памятью.
Вопросы:
- Какие сложности бывают при интеграции с Kafka?
- Какие протоколы прикладного уровня вы знаете и использовали?
- Что такое профилирование и как его использовать в Go?
- Как обрабатываются ошибки и паники в Go?
Все вопросы можно посмотреть на нашей платформе
#собес #коллекции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #golang
🤔 Что такое замыкания функций в контексте Go?
💬 Кратко:
Замыкание функции - это функция, которая захватывает и использует переменные из окружающего контекста. Эти функции могут сохранять состояние между вызовами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Замыкание функции - это функция, которая захватывает и использует переменные из окружающего контекста. Эти функции могут сохранять состояние между вызовами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Архитектурный паттерн для централизованной обработки ошибок в хендлерах на Go
Статья предлагает архитектурный паттерн для централизованной обработки ошибок в HTTP-хендлерах на Go: вводится кастомный тип HTTPError и обёртка (middleware), которая перехватывает ошибки, логирует их и унифицированно формирует HTTP-ответы
Читайте здесь
👉 Новости 👉 База вопросов
Статья предлагает архитектурный паттерн для централизованной обработки ошибок в HTTP-хендлерах на Go: вводится кастомный тип HTTPError и обёртка (middleware), которая перехватывает ошибки, логирует их и унифицированно формирует HTTP-ответы
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🥄 Redis 101: взгляд новичка
Вводный обзор того, что такое Redis, почему он так быстр (за счёт работы в памяти, однопоточного исполнения и оптимальных структур данных) и как его можно использовать не только как кэш, но и как базу данных, брокер сообщений и rate-лимитер
https://mrinalxdev.github.io/mrinalxblogs/blogs/redis.html
👉 Новости 👉 База вопросов
Вводный обзор того, что такое Redis, почему он так быстр (за счёт работы в памяти, однопоточного исполнения и оптимальных структур данных) и как его можно использовать не только как кэш, но и как базу данных, брокер сообщений и rate-лимитер
https://mrinalxdev.github.io/mrinalxblogs/blogs/redis.html
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
#Собес #closure #function #scope
🤔 Что такое замыкания функций в контексте Go?
💬 Кратко:
Замыкание функции — это функция, которая захватывает и использует переменные из окружающего контекста. Эти функции могут сохранять состояние между вызовами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое замыкания функций в контексте Go?
💬 Кратко:
Замыкание функции — это функция, которая захватывает и использует переменные из окружающего контекста. Эти функции могут сохранять состояние между вызовами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#видео
🛞 Пошаговый разбор реверс-инжиниринга Golang! Задачу решаем тремя разными подходами: (1) статический анализ в IDA, (2) динамический анализ в дебаггере и (3) патчинг бинарника с переключением на нужный путь выполнения кода
YouTube
👉 Новости 👉 База вопросов
YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Интерфейсы в Go: что нужно знать для собеседования
Интерфейсы — фундаментальная концепция Go. Вот что нужно понимать для успешного собеседования.
Почему интерфейсы важны в Go?
- Обеспечивают полиморфизм без наследования
- Позволяют писать тестируемый код
- Уменьшают связанность компонентов
- Являются основой многих стандартных библиотек
Ключевые аспекты интерфейсов:
1. Базовые принципы
Неявная реализация интерфейсов
Композиция интерфейсов
Пустой interface{} и его применение
Утверждение типа (type assertion)
2. Практическое применение
Dependency Injection
Мокирование в тестах
Плагинная архитектура
Абстракция над различными реализациями
3. Стандартные интерфейсы
io.Reader и io.Writer
error interface
Stringer и fmt.Stringer
sort.Interface
4. Производительность
Динамическая диспетчеризация методов
Использование указателей и значений
Влияние на аллокации памяти
Оптимизации компилятора
5. Паттерны проектирования
Strategy через интерфейсы
Decorator для добавления функциональности
Adapter для совместимости
Factory для создания объектов
Что практиковать:
- Написание кастомных интерфейсов
- Создание моков для тестирования
- Реализация стандартных интерфейсов
- Использование type switches
- Оптимизацию производительности
Выводы:
Понимание интерфейсов показывает, что вы можете проектировать гибкие и поддерживаемые системы. Умение правильно применять интерфейсы отличает опытного Go-разработчика от новичка.
Интерфейсы — фундаментальная концепция Go. Вот что нужно понимать для успешного собеседования.
Почему интерфейсы важны в Go?
- Обеспечивают полиморфизм без наследования
- Позволяют писать тестируемый код
- Уменьшают связанность компонентов
- Являются основой многих стандартных библиотек
Ключевые аспекты интерфейсов:
1. Базовые принципы
Неявная реализация интерфейсов
Композиция интерфейсов
Пустой interface{} и его применение
Утверждение типа (type assertion)
2. Практическое применение
Dependency Injection
Мокирование в тестах
Плагинная архитектура
Абстракция над различными реализациями
3. Стандартные интерфейсы
io.Reader и io.Writer
error interface
Stringer и fmt.Stringer
sort.Interface
4. Производительность
Динамическая диспетчеризация методов
Использование указателей и значений
Влияние на аллокации памяти
Оптимизации компилятора
5. Паттерны проектирования
Strategy через интерфейсы
Decorator для добавления функциональности
Adapter для совместимости
Factory для создания объектов
Что практиковать:
- Написание кастомных интерфейсов
- Создание моков для тестирования
- Реализация стандартных интерфейсов
- Использование type switches
- Оптимизацию производительности
Выводы:
Понимание интерфейсов показывает, что вы можете проектировать гибкие и поддерживаемые системы. Умение правильно применять интерфейсы отличает опытного Go-разработчика от новичка.
❤2👍2🔥1
#Собес #golang
🤔 Опишите шаги тестирования в Golang?
💬 Кратко:
В Go тестирование пакетов осуществляется через файлы, которые заканчиваются на
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
В Go тестирование пакетов осуществляется через файлы, которые заканчиваются на
_test - go, содержащие функции с префиксом Test . Для выполнения тестов используется команда go test . Это помогает автоматизировать процесс проверки корректности работы программ.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😵 Две структуры с одинаковыми полями могут иметь разный размер
Это явление называется «выравнивание» (alignment), концепция, заимствованная из C++, но применимая и в Go.
Посмотрим на пример
У структур A и B одинаковые поля; простая перестановка их порядка делает структуру A вдвое больше. Размер A возрастает до 32 байт, тогда как структура B остаётся меньше - 16 байт.
Подробнее об этом можно прочитать в этой статье:
Struct Optimization — A Small Change
👉 Новости 👉 База вопросов
Это явление называется «выравнивание» (alignment), концепция, заимствованная из C++, но применимая и в Go.
Посмотрим на пример
У структур A и B одинаковые поля; простая перестановка их порядка делает структуру A вдвое больше. Размер A возрастает до 32 байт, тогда как структура B остаётся меньше - 16 байт.
Подробнее об этом можно прочитать в этой статье:
Struct Optimization — A Small Change
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#Собес #for #loop #iteration
🤔 Как в Go реализованы конструкции циклов?
💬 Кратко:
В Go существует только один вид цикла —
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как в Go реализованы конструкции циклов?
💬 Кратко:
В Go существует только один вид цикла —
for. Он может включать три компонента: инициализацию, условие и пост-выражение. Эти части могут быть опущены или использоваться по-разному, что делает цикл гибким и удобным.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #git_push #git_pull
🤔 Что делают команды git push и git pull?
💬 Кратко:
Команда
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что делают команды git push и git pull?
💬 Кратко:
Команда
git push отправляет ваши локальные изменения в удаленный репозиторий. Команда git pull скачивает изменения из удаленного репозитория и объединяет их с вашей локальной версией.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #dto #mapping
🤔 Почему нельзя прокидывать одну и ту же DTO через все слои, и как разделять модели?
💬 Кратко:
DTO служит транспортом для API, доменная модель — для бизнес-логики, модель хранения — для БД. Их цели различны; смешение ведёт к хрупкости. Делайте явный маппинг между слоями.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Почему нельзя прокидывать одну и ту же DTO через все слои, и как разделять модели?
💬 Кратко:
DTO служит транспортом для API, доменная модель — для бизнес-логики, модель хранения — для БД. Их цели различны; смешение ведёт к хрупкости. Делайте явный маппинг между слоями.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
Ошибки в Go: современные подходы
Обработка ошибок в Go эволюционировала с появлением новых возможностей языка. Вот текущие лучшие практики.
Базовые принципы
Ошибки в Go — это значения, реализующие интерфейс error. Стандартный подход предполагает проверку ошибок после каждого вызова функции, который может завершиться неудачей.
Сравнение ошибок
Для проверки типов ошибок используйте errors.Is и errors.As вместо простого сравнения. Эти функции работают с обернутыми ошибками и позволяют проводить проверки по цепочке.
Создание ошибок
Пакет errors предоставляет функции New, Is, As и Unwrap. Для форматирования ошибок используйте fmt.Errorf с %w для сохранения исходной ошибки. Это позволяет создавать цепочки ошибок с сохранением контекста.
Кастомные типы ошибок
Создавайте собственные типы ошибок для передачи дополнительной информации. Реализуйте методы Error() string и Unwrap() error для совместимости со стандартными функциями.
Логирование и обработка
Разделяйте логику обработки ошибок и их логирования. В коде возвращайте ошибки с достаточным контекстом, а в обработчиках верхнего уровня решайте, как их представить пользователю или записать в лог.
Практические рекомендации
Избегайте паники в обычном потоке выполнения. Используйте recover только в особых случаях, например, при обработке внешних библиотек, которые могут паниковать.
Документируйте возможные ошибки в комментариях к функциям. Это помогает другим разработчикам понимать, какие сценарии нужно обрабатывать.
Для сложных приложений рассмотрите использование пакетов для структурированных ошибок, таких как pkg/errors, которые предоставляют дополнительные возможности для трассировки и форматирования.
Помните, что качественная обработка ошибок — это не только про техническую корректность, но и про удобство отладки и понимания кода.
Обработка ошибок в Go эволюционировала с появлением новых возможностей языка. Вот текущие лучшие практики.
Базовые принципы
Ошибки в Go — это значения, реализующие интерфейс error. Стандартный подход предполагает проверку ошибок после каждого вызова функции, который может завершиться неудачей.
Сравнение ошибок
Для проверки типов ошибок используйте errors.Is и errors.As вместо простого сравнения. Эти функции работают с обернутыми ошибками и позволяют проводить проверки по цепочке.
Создание ошибок
Пакет errors предоставляет функции New, Is, As и Unwrap. Для форматирования ошибок используйте fmt.Errorf с %w для сохранения исходной ошибки. Это позволяет создавать цепочки ошибок с сохранением контекста.
Кастомные типы ошибок
Создавайте собственные типы ошибок для передачи дополнительной информации. Реализуйте методы Error() string и Unwrap() error для совместимости со стандартными функциями.
Логирование и обработка
Разделяйте логику обработки ошибок и их логирования. В коде возвращайте ошибки с достаточным контекстом, а в обработчиках верхнего уровня решайте, как их представить пользователю или записать в лог.
Практические рекомендации
Избегайте паники в обычном потоке выполнения. Используйте recover только в особых случаях, например, при обработке внешних библиотек, которые могут паниковать.
Документируйте возможные ошибки в комментариях к функциям. Это помогает другим разработчикам понимать, какие сценарии нужно обрабатывать.
Для сложных приложений рассмотрите использование пакетов для структурированных ошибок, таких как pkg/errors, которые предоставляют дополнительные возможности для трассировки и форматирования.
Помните, что качественная обработка ошибок — это не только про техническую корректность, но и про удобство отладки и понимания кода.
👍5🔥2🤔1
#Собес #golang #metrics #logs
🤔 Middle+ Golang Backend-разработчик в «Альфа»
Техническое собеседование. Осень 2025. Вилка 250к+.
Проект: внутренние сервисы Альфы - без подробностей
Опыт в резюме — 3.5 года. Очень много вопросов по БД
💬 Вопросы:
- Как в Kafka реализовать exactly-once обработку? Какие подводные камни?
- Что такое connection pool в базе данных и зачем он нужен?
- Как реализовать идемпотентность при работе с Kafka?
- Какие сложности бывают при интеграции с Kafka?
- Что такое профилирование и как его использовать в Go?
👉 Все вопросы из этого собеседования (13)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle+ Golang Backend-разработчик в «Альфа»
Техническое собеседование. Осень 2025. Вилка 250к+.
Проект: внутренние сервисы Альфы - без подробностей
Опыт в резюме — 3.5 года. Очень много вопросов по БД
💬 Вопросы:
- Как в Kafka реализовать exactly-once обработку? Какие подводные камни?
- Что такое connection pool в базе данных и зачем он нужен?
- Как реализовать идемпотентность при работе с Kafka?
- Какие сложности бывают при интеграции с Kafka?
- Что такое профилирование и как его использовать в Go?
👉 Все вопросы из этого собеседования (13)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
❤1
#Собес #relation #table #view
🤔 Что такое отношение (relation) в PostgreSQL?
💬 Кратко:
В PostgreSQL отношение — это таблица, которая состоит из строк и столбцов. Каждое отношение представляет собой сущность базы данных, хранящую данные в структурированном виде. Отношения могут быть как обычными таблицами, так и представлениями или индексами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое отношение (relation) в PostgreSQL?
💬 Кратко:
В PostgreSQL отношение — это таблица, которая состоит из строк и столбцов. Каждое отношение представляет собой сущность базы данных, хранящую данные в структурированном виде. Отношения могут быть как обычными таблицами, так и представлениями или индексами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#documentation #библиотеки
📚 Стандартная библиотека Go
Хорошей практикой для Go-разработчиков считается читать стандартную библиотеку языка — там всё очень подробно и классно комментируется. Умеешь читать стандартную библиотеку, значит, понимаешь, как развивался и создавался язык, глубже погружаешься в него и качественнее пишешь свои продукты.
Она огромная, и лучше не читать её полностью, а заглядывать время от времени. Например, не знаешь, как работает та или иная функция, — находишь и читаешь подробное описание.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Стандартная библиотека Go
Хорошей практикой для Go-разработчиков считается читать стандартную библиотеку языка — там всё очень подробно и классно комментируется. Умеешь читать стандартную библиотеку, значит, понимаешь, как развивался и создавался язык, глубже погружаешься в него и качественнее пишешь свои продукты.
Она огромная, и лучше не читать её полностью, а заглядывать время от времени. Например, не знаешь, как работает та или иная функция, — находишь и читаешь подробное описание.
Перейти к материалу
👉 База вопросов 👉 Новости
❤2
Forwarded from YeaHub
Что для вас было бы наиболее полезным?
Anonymous Poll
29%
Парсер навыков по специальностям с HH
30%
Сервис тестов с вариантами ответов
41%
Сервис лайвкодинга (аналог leetcode)
7%
Горячий режим
31%
Полный роадмап по специальностям
23%
Автоотклики на HH
28%
Шаблонизатор резюме
27%
Агрегатор вакансий
❤1