ar
Feedback
Библиотека Go для собеса | вопросы с собеседований

Библиотека Go для собеса | вопросы с собеседований

الذهاب إلى القناة على Telegram

Вопросы с собеседований по Go и ответы на них. Покажем, как запустить своего ии-агента: https://clc.to/tvpmD По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

إظهار المزيد
7 429
المشتركون
+224 ساعات
-87 أيام
+730 أيام
أرشيف المشاركات
❓ Что означает value := myMap[key] без ok-проверки Без ok-проверки Go возвращает zero value для типа значения, если ключ отсутствует.

❓ Чем опасен вызов defer в цикле? Если использовать defer внутри цикла, все отложенные функции будут выполнены только после выхода из цикла, а не по окончанию итерации. Это может привести к утечкам ресурсов или неожиданному поведению.

❓ Когда Go делает inlining? Go-компилятор выполняет inlining только для простых функций. В go build есть встроенные эвристики, которые учитывают: • Размер кода — слишком большие функции не инлайнятся. • Отсутствие сложных конструкций — если внутри есть for, switch, defer, recover() или вызовы • других не-инлайн-функций, inlining не происходит. • Частоту вызова — часто вызываемые короткие функции инлайнятся для оптимизации. Как проверить, была ли функция инлайнена? Запустить компилятор с флагом -gcflags="-m"

❓ Чем json.Marshal отличается от json.MarshalIndent • json.Marshal сериализует данные в компактный JSON без отступов. • json.MarshalIndent добавляет отступы и форматирование, что делает JSON читаемым для людей.

🏗 🔨 Как не сломать продакшен: 8 основных паттернов распределенных систем Разработка распределённых систем сопряжена с множе
🏗 🔨 Как не сломать продакшен: 8 основных паттернов распределенных систем Разработка распределённых систем сопряжена с множеством вызовов: от управления состоянием и взаимодействия сервисов до обработки отказов и масштабирования. Чтобы упростить решение этих задач, инженеры используют проверенные временем архитектурные паттерны. В статье рассматриваются ключевые шаблоны, помогающие строить надёжные и эффективные распределённые системы. ➡️ Читать статью 🐸Библиотека devops'a

❓ Что такое errors.Is и errors.As • errors.Is(err, target) проверяет, является ли err экземпляром target, даже если ошибка была обернута (fmt.Errorf(«%w», err)). Используется для сравнения ошибок по значению. • errors.As(err, &target) проверяет, можно ли привести err к указанному типу (target должен быть указателем). Используется для проверки и извлечения кастомных ошибок (например, структур с дополнительными полями).

❓ Как изменить один символ в строке в Go Так как строки в Go неизменяемы, изменить символ напрямую нельзя. Но можно создать н
❓ Как изменить один символ в строке в Go Так как строки в Go неизменяемы, изменить символ напрямую нельзя. Но можно создать новую строку, например, с помощью преобразования в []rune или []byte.

❓ Как ведёт себя select {} без case Если написать select {} без case, программа зависнет навсегда. Это называют блокирующим select'ом.

🌟 Какие вебинары вам действительно нужны Привет, девопсы! 👋 Мы готовим новые вебинары и хотим сделать их максимально полезными для вас. Это поможет нам не только создавать актуальный контент, но и развивать проект, находя новые точки контактов для вас. Ваши ответы дадут нам понимание, какие темы и форматы действительно важны, а также помогут сделать вебинары интереснее и продуктивнее. Заполнение займет всего пару минут, а нам это очень поможет! Спасибо, что участвуете в нашем развитии! 💙 👉 Пройти опрос

❓ Чем interface{} отличается от any? interface{} — это пустой интерфейс, который может хранить значение любого типа. any — это просто алиас (type any = interface{}), введённый в Go 1.18 для удобочитаемости кода.

❓ Почему нельзя использовать fallthrough в default-блоке switch? Потому что fallthrough позволяет передавать выполнение следующему case, но в default-блоке нет следующего case, поэтому компилятор Go выдаст ошибку.

❓ Что такое fallthrough в Go fallthrough — это ключевое слово, используемое внутри switch, которое позволяет явно передавать управление следующему case, даже если его условие не совпадает. По умолчанию в Go выполнение switch завершается после первого совпавшего case, но если добавить fallthrough, выполнение продолжится с следующим case, без проверки его условия

Всем привет! 👋 В партнерстве со Сбером мы сделали крутой продукт — NeuroRecruiter! Как это облегчит жизнь NeuroRecruiter — A
Всем привет! 👋 В партнерстве со Сбером мы сделали крутой продукт — NeuroRecruiter! Как это облегчит жизнь NeuroRecruiter — AI-рекрутер нового поколения, который поможет тебе пройти собеседование в Сбер без стресса, выявить свои сильные стороны и подготовиться к будущим интервью. Вот что он умеет: 🔹 Поможет выявить твои сильные и слабые стороны для карьерного роста. 🔹 Сразу после AI-интервью даст обратную связь и поможет улучшить твои навыки. 🔹 Подберет лучшие вакансии и команды, которые идеально подходят именно тебе. 🔹 Поможет получить пре-офер без лишнего стресса и переживаний. Почему это круто 🔹 Никакого стресса — собеседования становятся полезным и даже приятным опытом. 🔹 Реальные вопросы на основе твоего резюме, чтобы ты был уверен в своих ответах. 🔹 Лучшие технические вопросы с рынка, чтобы ты был готов к любому интервью. ❗️Кроме того, ты можешь сразу откликнуться на вакансии Сбера, и рекрутеры сами выйдут на связь. >> Попробуй NeuroRecruiter, подготовься к собеседованию и будь на шаг впереди конкурентов! 💪 👉 Узнать больше и начать Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzqwutoFi

Swipe right or swipe left Что делать, если твои мэтчи в жизни не такие точные, как твой код? Спокойно, 14 февраля в 19:00 по
Swipe right or swipe left Что делать, если твои мэтчи в жизни не такие точные, как твой код? Спокойно, 14 февраля в 19:00 по МСК мы разберём, как ML анализирует speed dating и предсказывает match. 📌 Мы возьмем реальные данные со speed dating. 📌 Обучим модель, которая скажет: match или swipe left. 📌 Разберём, какие признаки реально важны (спойлер: работа в IT — не прям гарантия успеха (наши маркетологи подтверждают 😥). 💡 Приходи, если хочешь прокачать свой Python, ML и, возможно, станешь идеальной парой, как самый стильные форсы. 👉 Записаться

Как работает sync.Once под капотом Под капотом sync.Once использует атомарную переменную и мьютекс: 1. При первом вызове once.Do(f) проверяется, выполнена ли уже функция f. 2. Если нет, sync.Once блокирует выполнение других горутин и запускает f(). 3. После завершения выполнения устанавливается флаг, предотвращающий повторные вызовы.

❓ Для чего используется go mod? go mod — это система управления зависимостями в Go, которая позволяет фиксировать версии пакетов, автоматически загружать их и работать без GOPATH При инициализации модуля (go mod init) создается файл go.mod, который хранит информацию о зависимостях, а go.sum содержит контрольные суммы для проверки их целостности. Основные команды: • go get — добавляет/обновляет зависимости. • go mod tidy — удаляет неиспользуемые пакеты. • go mod vendor — создает локальную копию зависимостей.

❓ Что такое BDD-подход? BDD (Behavior-Driven Development) — это методология разработки, основанная на описании поведения системы на понятном языке. В отличие от TDD, BDD фокусируется на сценариях использования (Given-When-Then), делая тесты понятными для всей команды, включая бизнес-аналитиков. В Go для BDD часто используют Ginkgo, который позволяет писать структурированные тесты в стиле «Describe → Context → It». Это улучшает читаемость, облегчает поддержку и помогает согласовать требования между разработчиками и заказчиками.

❓ Как работает пагинация в API? Какие есть подходы? Пагинация в API — это разбиение большого набора данных на отдельные страницы для оптимизации скорости работы и снижения нагрузки на сервер. Вместо отправки всех данных сразу API возвращает ограниченное количество записей на каждый запрос. Подходы: Offset-Limit — задаются параметры offset (смещение) и limit (количество записей). Пример: GET /users?offset=20&limit=10. Недостаток: низкая производительность при больших данных, так как база сканирует записи до нужного смещения. Cursor-based (Keyset Pagination) — вместо смещения используется уникальный идентификатор последней записи (cursor). Пример: GET /users?cursor=abc123&limit=10. Такой метод быстрее, так как использует индексы базы данных. Page-based — клиент указывает номер страницы и размер. Пример: GET /users?page=2&size=10. Недостаток: возможны пропуски или дубли, если данные обновляются между запросами.

❓ Разница между ParseAddr и MustParseAddr из пакета netip ParseAddr возвращает netip.Addr и error, если переданный IP-адрес некорректен. Позволяет безопасно обработать ошибки. MustParseAddr вызывает panic, если адрес неверный. Используется, когда ошибка невозможна

❓ В чем разница между //go:build и // +build // +build — это старая форма условной компиляции, которая использовалась до Go 1.17. Она пишется перед пакетом и требует пустой строки после всех директив //go:build — это новая форма, введенная в Go 1.17. Она улучшает читаемость, так как использует логические выражения: