Golang вопросы собеседований
14.5K subscribers
707 photos
9 videos
1 file
499 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
Download Telegram
Forwarded from Golang
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 LeetSolv — инструмент для тренировки алгоритмов прямо в терминале

LeetSolv — это консольная утилита, написанная нп Go для подготовки к собеседованиям по алгоритмам и структурам данных.

Инструмент помогает повторять задачи по умному расписанию (алгоритм SM-2) и не забывать то, что уже решал.

Что умеет:
- Лёгкий CLI без лишних зависимостей (написан на Go).
- Планирует повторения задач с учётом:
- насколько хорошо ты знаешь задачу,
- насколько она важна,
- насколько сложно её понять.
- Автоматически выставляет приоритеты: что решать сначала, что можно отложить.
- Полный набор команд: добавить, удалить, редактировать задачи, откатить изменения.
- Все данные хранятся только у тебя локально.
- Два режима работы:
- интерактивный (вопрос-ответ в терминале),
- командный (`add`, list, search и т.п.).

📦 Установка:

curl -fsSL https://raw.githubusercontent.com/eannchen/leetsolv/main/install.sh | bash


📌 Github: https://github.com/eannchen/leetsolv
🔥127👍3🤔1
🛠 Go совет: как правильно использовать sync.WaitGroup

Частая ошибка — вызывать wg.Add() внутри горутины.

Такой код может не сработать правильно: горутина может стартовать позже, чем основной поток дойдёт до Wait().

Чем нам поможет новая версия Go 1.25:
- go vet теперь автоматически ловит эту ошибку.
- Появился удобный метод WaitGroup.Go, который сам делает Add и Done.

Пример:

var wg sync.WaitGroup

// Неправильно
go func() {
wg.Add(1) // Add вызывается слишком поздно
defer wg.Done()
work()
}()

// Правильно
wg.Add(1) // Add вызываем до запуска
go func() {
defer wg.Done()
work()
}()

// Go 1.25
wg.Go(func() {
work()
})
17👍13🔥5
Митап для Go-разработчиков от МТС
11 сентября | 19:00
Офлайн в Москве | Онлайн

О чем поговорим:
🔹LLM для конкурентного Go кода;
🔹WaitGroup Pitfalls;
🔹Эффективное использование sync.Map в Go;
🔹Разработка Cloud Controller Manager: интеграция Kubernetes с облаком MWS.

Воркшоп, доклады и нетворкинг на баскетбольной арене.
Присоединяйся! Для участия зарегистрируйся по ссылке.
👍2
👣 gjson — библиотека для работы с JSON-данными в Go!

💡 Она позволяет легко и эффективно извлекать значения из JSON-структур с использованием простого и быстрого синтаксиса.

🔍 Основные особенности gjson:

🌟 Быстрое извлечение данных: Gjson использует оптимизированные алгоритмы для поиска данных в JSON, что делает её значительно быстрее по сравнению с другими библиотеками, особенно при работе с большими JSON-файлами.

🌟 Простота использования: API библиотеки очень простое, и для извлечения значения из JSON-строки достаточно одного вызова функции.
Поддержка сложных структур: Gjson позволяет работать с вложенными объектами и массивами в JSON-данных.

🌟 Низкие затраты на память: Она также минимизирует использование памяти, что делает её подходящей для работы в условиях ограниченных ресурсов.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳53🔥2🕊1
Or-channel паттерн в Go — мощный приём для работы с конкурентностью.

Он позволяет объединять несколько done-каналов в один общий.
Как только закрывается любой из входных каналов — автоматически закрывается и новый канал.

Такой подход даёт единый сигнал для завершения или отмены операции.

#golang
🔥18🥴13👍75
🔥 Успех в IT = скорость + знания + окружение

Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!

AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy

Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
🥴1🐳1🤣1
🛠 Go tip: как правильно использовать sync.Pool

sync.Pool — это потокобезопасный пул временных объектов в Go. Он помогает переиспользовать объекты, снижая аллокации и нагрузку на GC. Отлично подходит для буферов и временных структур.

Важные моменты:
- GC может очистить пул — он не вечное хранилище.
- Объекты нужно сбрасывать перед возвратом, иначе вернутся «грязные» данные.
- Для больших или сильно разных по размеру объектов может привести к перерасходу памяти.

Рекомендации:
- Использовать только для короткоживущих и предсказуемых объектов.
- Сбрасывать или обнулять состояние перед Put.
- Профилировать приложение (`pprof`, `MemStats`) и смотреть эффект.

📌 Пример:

var bufPool = sync.Pool{
New: func() interface{} {
return make([]byte, 1024) // создаём буфер 1КБ
},
}

func process() {
buf := bufPool.Get().([]byte)
defer bufPool.Put(buf[:0]) // сброс длины перед возвратом
// работа с buf...
}


👉 Подробнее
👍41🔥1
Media is too big
VIEW IN TELEGRAM
🔥 Самые сложные вопросы для интервью в Google — как готовиться и что отвечать

🔤 Что чаще спрашивают
- Алгоритмы и структуры данных
- «Найдите k-й элемент в отсортированных массивах без слияния»
- «Минимальное окно подстроки с набором символов»
- «Пути с минимальной стоимостью в графе с ловушками/порталами»
- Системный дизайн (Senior+)
- «Спроектируйте сокращатель ссылок с 10 млрд кликов/день»
- «Реал-тайм чат с end-to-end доставкой и поиском по истории»
- «Видео-платформа: загрузка, хранение, CDN, рекомендации»
- Конкурентность и распределённые системы
- «Счётчик с глобальной монотонностью на шардированном кластере»
- «Идемпотентная очередь задач при ретраях и дедупликации»
- Поведенческие (бар-рейзер)
- «Расскажите про провал и чему вы научились»
- «Как вы влияли без формальных полномочий»

📌 Как решать задачи с кодом (шаблон)
1) Уточните ограничения и формат ввода/вывода.
2) Проговорите наивное решение → оценка O(...) по времени/памяти.
3) Предложите улучшение (двойной указатель, heap, prefix, DP, BFS/DFS, binary search on answer).
4) Кодируйте чисто: небольшие функции, проверки краёв, именование.
5) Прогоны тестов: пустой ввод, дубликаты, большие размеры, Unicode и т. п.
6) Завершите: сложность, варианты оптимизации, trade-offs.

🛠 **Системный дизайн — скелет ответа**
- Требования: функциональные/нефункциональные (RPS, латентность, доступность).
- API/схемы данных → оценка объёмов (QPS, storage, рост).
- Высокоуровневая архитектура: клиент, API-шлюз, сервисы, БД, кэш, очередь, CDN.
- Горячие пути: чтение/запись, кэширование, индексирование, консистентность.
- Масштабирование: шардинг, репликация, партиционирование, backpressure.
- Надёжность: ретраи, идемпотентность, дедупликация, алерты, SLO/SLI.
- Трейд-оффы и поэтапный rollout.

☠️ Типичные ловушки
- Пишете код сразу, не уточнив ограничения.
- Нет тестов на крайние случаи.
- Перескакиваете в микро-детали дизайна, не зафиксировав требования.
- Не называете trade-offs и метрики успеха.

🔖 Мини-шпаргалка по инструментам
- Два указателя — подстроки/окна/парные суммы.
- Heap/priority queue — k-наилучших элементов/поток слияния.
- Prefix/Suffix/Hash — подсчёты и проверки за O(1) на запрос.
- DP — оптимизация по состояниям (категории: линейная, на подмасках, по интервалам).
- Graph — BFS (минимум шагов), Dijkstra/0-1 BFS (взвешенные), Topo sort (DAG).
- «Binary search по ответу» — задачи вида «можно/нельзя при X».

⚡️ Как готовиться эффективно (4 шага)
1) Разделите тренировки: 60% кодинг, 25% дизайн, 15% поведенческие.
2) Решайте задачники по темам и фиксируйте паттерн решения (а не только код).
3) Мок-интервью: таймер 30–45 минут, проговаривайте мысли вслух.
4) Соберите портфель историй по STAR: конфликт, лидерство, фейл, влияние на метрики.

Удачи на интервью!

👉 Полное видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍53🥱1
🚀 Ошибки с sync.WaitGroup в Go и что нового в Go 1.25

В статье “Avoiding Common sync.WaitGroup Mistakes in Go” Джон Калхаун разбирает, как Go 1.25 помогает избежать частых ошибок при использовании sync.WaitGroup.

### 🔹 Ошибка: wg.Add внутри горутины
Часто встречающийся неправильный код:


for i := 0; i < 5; i++ {
go func() {
wg.Add(1)
defer wg.Done()
// работа…
}()
}
wg.Wait()


Проблема: wg.Add(1) вызывается уже внутри горутины. Она может не успеть выполниться до wg.Wait(), из-за чего программа зависает или ведёт себя некорректно.

В Go 1.25 go vet теперь предупреждает:
“WaitGroup.Add called from inside new goroutine”

Правильный вариант:

for i := 0; i < 5; i++ {
wg.Add(1)
go func() {
defer wg.Done()
// работа…
}()
}
wg.Wait()


🔹 Новый метод wg.Go()

Go 1.25 добавил удобный метод Go, который сам вызывает Add и Done:


for i := 0; i < 5; i++ {
wg.Go(func() {
// работа…
})
}
wg.Wait()


Этот код эквивалентен такому:


wg.Add(1)
go func() {
defer wg.Done()
f()
}()


Итог

- go vet теперь ловит ошибки, когда wg.Add вызывается внутри горутины.

- Новый метод wg.Go(...) упрощает код и снижает риск ошибок.

Подробнее: https://www.calhoun.io/avoiding-common-sync-waitgroup-mistakes/
19👍7👏6🎉3🥰1