Golang вопросы собеседований
13.5K subscribers
625 photos
3 videos
1 file
432 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
加入频道
👣 Эта статья описывает применение фаззинга (fuzz testing) для тестирования HTTP-сервисов, написанных на Go!

💡 Фаззинг — это метод, при котором в функции отправляются случайные данные для выявления неожиданных ошибок. Автор показывает, как настроить фазз-тесты для HTTP-обработчиков с использованием стандартных пакетов testing и httptest, что помогает обнаружить сложные баги, возникающие из-за некорректных данных, и повысить надежность и безопасность кода

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Сколько горутин можно создать в Go? Ответ на этот вопрос не так прост, как кажется!

💡 Горутины в Go – это легкие потоки выполнения, которые позволяют создавать высококонкурентные приложения. Теоретически, ограничений на их количество нет. Однако на практике существует ряд факторов, которые влияют на максимальное число горутин, которые вы можете запустить в вашем приложении.

🔍 Факторы, ограничивающие количество горутин:

🌟 Память: Каждая горутина занимает некоторое количество памяти для своего стека. При создании большого количества горутин это может привести к исчерпанию оперативной памяти.

🌟 ЦП: Планировщик Go распределяет горутины по доступным процессорным ядрам. Если горутин слишком много, то планировщик будет тратить больше времени на переключение между ними, что может снизить производительность.

🌟 GOMAXPROCS: Эта переменная окружения ограничивает количество потоков ОС, которые могут одновременно выполнять горутины.

❗️ Практические рекомендации:

🌟 Используйте пулы горутин: Это позволяет ограничить максимальное количество одновременно выполняющихся горутин.

🌟 Мониторьте количество горутин: Функция runtime.NumGoroutine() позволяет отслеживать количество активных горутин в вашем приложении.

🌟 Настраивайте GOMAXPROCS: Подбирайте оптимальное значение для вашей конкретной задачи и аппаратного обеспечения.

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Zog — это библиотека для Go, предназначенная для декларативной валидации данных, вдохновленная Zod (из TypeScript).

🌟 Библиотека позволяет разработчикам определять схемы данных и выполнять строгую проверку типов, минимизируя ошибки на этапе разработки. В библиотеке можно задавать типы и правила проверки, чтобы легко определять и поддерживать структуру данных в приложениях Go.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Интеграция Golang с Kafka и Uber ZapLog!

💡 Эта статья содержит полный пример интеграции Kafkaс Golangсервисом, который включает в себя обработку каналов ошибок и успехов, а также ведение журнала с помощью Uber’s Zap(популярно для высокопроизводительного структурированного ведения журнала JSON, часто используется в производстве). Пример включает конфигурацию, логику повторов, метаданные, и ведение логов, при этом минимизируя потерю сообщений с помощью лучших практик Kafka!

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Хотите научиться эффективно использовать каналы в Go?

📅 12 ноября в 20:00 МСК приглашаем вас на открытый вебинар!  👉 ссылка для записи

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

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

👨‍💻 Вебинар предназначен для разработчиков, работающих с Go, которые хотят оптимизировать свой код и лучше понять, как использовать каналы для управления потоками.

📌 Регистрируйтесь на вебинар сейчас и получите скидку на большое обучение «Golang Developer. Professional»: ссылка

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
👣 sqlseeder — инструмент на Go для генерации SQL-запросов INSERT из данных в форматах JSON и Excel. Он поддерживает отношения «один ко многим» и «многие ко многим» между таблицами и позволяет настраивать разделители для удобной обработки данных. Пользователи могут генерировать SQL-запросы, используя JSON- или Excel-данные, и применять шаблоны Go для гибкой настройки SQL-выхода.

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Distributed tracing в Go

Представьте, что у вас есть цепочка сервисов, которые взаимодействуют друг с другом.
И, например, запрос от одного к другому длится очень долго. Как быстро найти проблему?

Здесь поможет distributed tracing. Вы сможете визуализировать полный путь запроса через все системы, что ускорит поиск проблемы.

Об инструментах трейсинга в Go, их плюсах и минусах рассказал Константин Гвенцадзе, разработчик из отдела развития услуг 1С в @selectelcareers 🦖

А еще он подготовил для вас репозиторий с инструкциями и командами, чтобы вы могли потестить и выбрать для себя подходящий инструмент!

Кстати, в Selectel сейчас открыто несколько интересных вакансий в Backend-разработку на Golang — заглядывайте посмотреть 😉

Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqwWKz2a
👣 pipeline — это библиотека на Go для создания гибких и эффективных конвейеров обработки данных!

🌟 Библиотека поддерживает разные виды этапов (FIFO, фиксированные и динамические пулы рабочих, широковещательные этапы) и позволяет настраивать сложные рабочие процессы обработки данных. Возможности включают поддержку параллельной обработки, обработку ошибок и отмену через контекст.

🖥 Github

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Golang gRPC с перехватчиком аутентификации, потоковой передачей и шлюзом на практике!

💡 Эта статья объясняет, как реализовать gRPC-сервис на Go с поддержкой аутентификации, потоковой передачи данных и интеграции через HTTP Gateway. Автор рассматривает использование interceptor для внедрения JWT-аутентификации и поясняет, как настроить сервер для двусторонней потоковой передачи данных. Приведены примеры кода, чтобы упростить создание производительных и безопасных API.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Golang
🔥 free-for-dev — полезный репозиторий, который содержит список бесплатных инструментов и сервисов для разработчиков!

⭐️ В нем представлены ресурсы для облачных платформ, CI/CD, API, аналитики, мониторинга, безопасности и других категорий, необходимых для создания и поддержки проектов. Этот список полезен для поиска бесплатных решений на разных этапах разработки и эксплуатации приложений!

🖥 GitHub

@devopsitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️Выбор правильного архитектурного шаблона имеет решающее значение для создания масштабируемых, поддерживаемых и высокопроизводительных приложений.

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

💬 𝟭. 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗵𝗶𝗰 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲
Это самый простой и традиционный подход, при котором все компоненты связаны между собой в единой кодовой базе. Монолитная архитектура проста и идеально подходит для небольших приложений, не требующих обширной масштабируемости. Однако по мере роста систем ее масштабирование, тестирование и поддержка могут стать сложными. Идеально подходит для стартапов или небольших команд, ищущих быструю разработку.

💬 𝟮. 𝗠𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲
Любимый вариант для больших сложных приложений, которым требуется масштабируемость и гибкость. Здесь приложение разделено на независимо развертываемые сервисы, каждый из которых обрабатывает определенные бизнес-функции. Микросервисы позволяют командам использовать различные технологические стеки и масштабировать сервисы независимо. Этот шаблон популярен в приложениях с высоким трафиком и организациях, которым нужна свобода для независимого развертывания функций.

💬 𝟯. 𝗖𝗼𝗻𝘁𝗿𝗼𝗹𝗹𝗲𝗿-𝗪𝗼𝗿𝗸𝗲𝗿 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲
Этот шаблон разделяет задачи на контроллеры и рабочие. Контроллер управляет взаимодействиями с пользователем, в то время как рабочие выполняют фоновые задачи, такие как обработка данных, создавая систему, которая является высокомасштабируемой и эффективной. Идеально подходит для приложений, которым необходимо выполнять интенсивные фоновые задания, такие как обработка заказов, аналитика в реальном времени или уведомления.

💬 𝟰. 𝗠𝗼𝗱𝗲𝗹-𝗩𝗶𝗲𝘄-𝗖𝗼𝗻𝘁𝗿𝗼𝗹𝗹𝗲𝗿 (𝗠𝗩𝗖)
Классический шаблон, обычно используемый в веб-приложениях, MVC разделяет логику приложения (модель), пользовательский интерфейс (представление) и взаимодействие (контроллер). Такое разделение задач упрощает поддержку и обновление определенных частей, не затрагивая всю систему. MVC является популярным выбором для приложений, которым требуются пользовательские интерфейсы, особенно в сферах электронной коммерции и управления контентом.

💬 𝟱. 𝗘𝘃𝗲𝗻𝘁-𝗗𝗿𝗶𝘃𝗲𝗻 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲
Идеально подходит для систем, которым необходимо реагировать на определенные действия или события, такие как щелчки пользователя, обновления базы данных или показания датчиков. В этом шаблоне компоненты реагируют на события асинхронно, что делает его масштабируемым и слабосвязанным. Архитектура, управляемая событиями, отлично подходит для приложений со сложными рабочими процессами или асинхронными потребностями в обработке, такими как IoT, аналитика в реальном времени и системы уведомлений клиентов.

💬 𝟲. 𝗟𝗮𝘆𝗲𝗿𝗲𝗱 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲
Организует приложение по слоям (Презентация, Бизнес, Доступ к данным и Инфраструктура) для создания четкого разделения интересов. Каждый слой отвечает за определенный аспект, делая систему более обслуживаемой и тестируемой. Многоуровневый подход часто используется в корпоративных приложениях и идеально подходит для создания четкой стандартизированной структуры во всей системе.

📂 Сохраняем

#doc #web #cheatsheet

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 Наглядное сравнение производительности нескольких языков программирования при выполнении 1 млрд итераций в цикле!

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM