Golang вопросы собеседований
13.5K subscribers
633 photos
4 videos
1 file
436 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
加入频道
👣 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
👣 Maroto — это библиотека на языке Go для генерации PDF-документов, вдохновленная библиотекой Bootstrap для веб-разработки. Maroto ориентирована на разработчиков, которым необходимо создавать PDF-файлы в Go-приложениях с помощью высокоуровневого интерфейса, позволяющего работать с компонентами и макетами, такими как колонки, строки и контейнеры, по аналогии с подходом Bootstrap к сеточной структуре.

🔍 Основные возможности Maroto:

🌟 Генерация макетов PDF: Maroto предоставляет гибкие и простые в использовании методы для работы с колонками и строками, что позволяет быстро задавать структуру документа.

🌟 Добавление таблиц, текста и изображений: библиотека поддерживает встраивание текста, таблиц, изображений и QR-кодов, а также позволяет настраивать шрифты, размеры текста и стили.

🌟 Автоматическое управление размерами: Maroto автоматически обрабатывает размещение и размер элементов, избегая наложений и обеспечивая аккуратный вид конечного документа.

🌟 Интуитивно понятный API: благодаря высокоуровневому API, можно минимизировать ручное управление параметрами, создавая PDF-документы с минимальным количеством кода.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Создание высокопроизводительной полнотекстовой поисковой системы на Go!

💡 Этот блог проведет вас через создание полнотекстовой поисковой системы с использованием Go, уделяя особое внимание таким передовым концепциям, как потоковая передача данных, многопоточность и эффективные структуры индексации. Вы увидите, как обрабатывать и искать большие наборы данных — в частности, рефераты Википедии — с эффективным использованием памяти. Следуя этому руководству, вы получите представление об использовании модели параллелизма Go и ее пригодности для высокопроизводительных приложений!

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

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Создание приложения с помощью Go и React!

🌟 В этой статье рассматриваются шаги по интеграции API на Go с фронтендом на React, настройка маршрутизации, работа с данными и управление состоянием.

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

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Задача: 395. Самая длинная подстрока, содержащая не менее K повторяющихся символов

В этой задаче Вам необходимо найти самую длинную подстроку строки \(s\), такую что каждая буква в ней встречается не менее \(k\) раз.

Если такой подстроки нет, вернуть 0.

Пример:

Вход: s = "aaabb", k = 3
Выход: 3

Объяснение: Самая длинная подходящая подстрока – "aaa", так как буква 'a' повторяется три раза.
### Описание алгоритма:

1. Генерация подстрок: Генерируем все возможные подстроки строки \(s\). Для каждой подстроки будем отслеживать частоту появления символов при помощи массива countMap.

2. Проверка валидности: Метод isValid проверяет, что каждый символ в текущей подстроке появляется хотя бы \(k\) раз. Это делается через проверку значений в массиве countMap. Если все символы удовлетворяют условию, то подстрока считается допустимой.

3. Обновление результата: Отслеживаем максимальную длину допустимых подстрок. Когда находим новую подходящую подстроку большей длины, обновляем результат. В итоге возвращаем длину самой длинной найденной подстроки.
Ответ:



package main

import (
"fmt"
)

func longestSubstring(s string, k int) int {
if len(s) == 0 || k > len(s) {
return 0
}
n := len(s)
result := 0

for start := 0; start < n; start++ {
countMap := make([]int, 26)
for end := start; end < n; end++ {
countMap[s[end]-'a']++
if isValid(countMap, k) {
if end-start+1 > result {
result = end - start + 1
}
}
}
}
return result
}
func isValid(countMap []int, k int) bool {
countLetters, countAtLeastK := 0, 0
for _, count := range countMap {
if count > 0 {
countLetters++
}
if count >= k {
countAtLeastK++
}
}
return countLetters == countAtLeastK
}

func main() {
fmt.Println(longestSubstring("aaabb", 3)) // Output: 3
fmt.Println(longestSubstring("ababbc", 2)) // Output: 5
}


@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Как развернуть Go-приложения с помощью Docker — пошаговое руководство для начинающих!

💡 Docker — это платформа контейнеризации, которая упрощает упаковку, распространение и развертывание приложений. Вы можете использовать преимущества Go и Docker для повышения эффективности, переносимости и безопасности своих приложений.

🌟 Этот урок направлен на то, чтобы научить вас, как создавать и развертывать приложения Go с помощью Docker. Вы научитесь создавать RESTful API с пакетами Gorilla Mux и GORM, которые вы будете контейнеризировать и развертывать.

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

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