Golang вопросы собеседований
14.1K subscribers
703 photos
8 videos
1 file
497 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
👣 Go совет

Встраивайте файлы прямо в Go-код с помощью пакета embed и директивы //go:embed.

Это работает как для отдельных файлов, так и для целых директорий:


import _ "embed"

//go:embed config.json
var config []byte

//go:embed version.txt
var version string

//go:embed templates/*
var templates embed.FS


📌 Удобно для:

- конфигов
- файлов с версией
- HTML-шаблонов
- любых статических ресурсов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3111🔥7
📊 SlimToolkit — инструмент для оптимизации Docker-образов

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

Инструмент помимо уменьшения размера, автоматически генерирует Seccomp и AppArmor профили для повышения безопасности. Поддерживает образы на Node.js, Python, Ruby, Java, Go и других стеках.

🤖 GitHub

@golang_interview
👍54🔥4
Эволюция гофера 🐹

@golang_interview
😁40🔥8🥰3🤣3
Команда Ozon Tech готовит мощнейший трек по бэкенду в рамках своей конференции E-CODE 💙

И это только одна из причин, почему стоит быть там 13-14 сентября. А ещё: качественный нетворк, 1х1 с топовыми IT-экспертами и HR, эксклюзивный мерч и интерактивы, вечеринки с участием НТР, Заточки, ILWT и Нейромонаха Феофана.

Успейте зарегистрироваться. Это обязательно
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱7👍1
🧪 Миф о стеке и куче в Go

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

Стек горутин выделяется средой выполнения из памяти, управляемой кучей, поэтому он может находиться как выше, так и ниже адресов переменных кучи. Более того, стек горутин способен динамически перемещаться и увеличиваться по мере роста программы, что полностью разрушает иллюзию фиксированного расположения
👍152🔥2
🚀 Zig показывает мощь метапрограммирования на компайм-тайме

Смотрите, как можно вызвать разные методы у разных структур, используя одно универсальное определение функции:


const std = @import("std");

const T = struct {
fn name() []const u8 {
return "foo";
}

fn foo() void {
std.debug.print("T.foo\n", .{});
}
};

const S = struct {
fn name() []const u8 {
return "bar";
}

fn bar() void {
std.debug.print("S.bar\n", .{});
}
};

fn f(Type: type) void {
@field(Type, Type.name())();
}

pub fn main() !void {
f(T); // <=> T.foo()
f(S); // <=> S.bar()
}
6❤‍🔥4🔥1
👉Прокачайте знания Go на практическом онлайн-курсе

За 7 уроков вы научитесь писать простые сервисы и использовать Go в некоторых рабочих задачах — например, тестировать с его помощью Kubernetes и запускать fuzzing-тесты.

А еще — получите подборку материалов для большего погружения в тему.

Переходите в Академию Selectel и начните обучение:
https://slc.tl/xkhjw

Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwTELHY
🖥 pgroll — это инструмент командной строки на Go с открытым исходным кодом, предназначенный для безопасной и обратимой миграции схем в PostgreSQL!

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

🌟 pgroll использует подход «расширить/сузить» (expand/contract), создавая виртуальные схемы на основе представлений поверх физических таблиц. Этот метод позволяет миграциям быть безопасными и минимизирует риски, такие как блокировки базы данных или прерывание работы приложений.

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

🔐 Лицензия: Apache-2.0

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍7🔥4
Forwarded from Golang
👣 Go теперь по-умолчанию "знает", сколько CPU ему действительно доступно внутри контейнера

В релизе Go 1.25 представлена важная улучшенная логика работы GOMAXPROCS в контейнеризованных средах — например, в Kubernetes.

Как это работает:
- Раньше по умолчанию GOMAXPROCS устанавливался равным числу логических CPU на хосте.
- Теперь на Linux runtime автоматически учитывает CPU limits, заданные для контейнера. Если лимит меньше числа логических ядер — GOMAXPROCS устаналивается на уровне лимита.
- Более того, runtime периодически обновляет GOMAXPROCS, если меняются доступные CPU или ограничения, без необходимости внешнего вмешательства.

Почему это важно:
Ранее разработчикам приходилось использовать внешние решения вроде uber-go/automaxprocs, чтобы вручную синхронизировать GOMAXPROCS с лимитами контейнера. Теперь runtime делает это автоматически и точнее:
- Внутри контейнера Go не будет пытаться использовать все ядра хоста
- Уменьшаются лишние горутины, контекстные переключения и нагрузка на GC

Кратко: начиная с Go 1.25, GOMAXPROCS адаптируется под реальные CPU-ресурсы контейнера — без дополнительных усилий.

📌 Подробности

@golang_google

#golang #Kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥117
С этим вашим Kubernetes отладка превратилась в квест на выживание!

Часами гребёшься в логах, метрики пляшут как попало, а деплой через Helmfile — вообще отдельный вид искусства.

Чтобы K8s помогал, а не топил в рутине, нужно понять, как он работает под капотом. Иначе — вечные страдания 🥲

➡️ Приходи на курс «Kubernetes для разработчиков» от Слёрма.

Там ты:
Научишься нормально дебажить свои приложения прямо в Кубе
Разберёшься с логами и метриками
Подружишься с Helm’ом
Наконец заведёшь CI/CD как надо

То есть получишь скиллы, чтобы работать с K8s в кайф.

Старт — 8 сентября
⚡️ Запрыгивай на борт курса «Kubernetes для разработчиков» пока есть места!

Реклама ООО «Слёрм» ИНН 3652901451
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3🔥2
🛡️ JWT для Go: безопасная работа с JSON Web Tokens

Библиотека для работы с JSON Web Tokens (JWT) на Go, поддерживающая создание, верификацию и парсинг токенов. Обеспечивает безопасность и совместимость с предыдущими версиями, включая поддержку различных алгоритмов подписи.

🚀 Основные моменты:
- Поддержка HMAC, RSA, RSA-PSS и ECDSA.
- Совместимость с RFC 7519.
- Легкость в добавлении собственных методов подписи.
- Активная поддержка и обновления.

📌 GitHub

#go
👍6🔥21
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
🔥116👍3🤔2
🛠 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()
})
13👍8🔥4