Библиотека Go для собеса | вопросы с собеседований
Ir al canal en Telegram
Вопросы с собеседований по Go и ответы на них. Покажем, как запустить своего ии-агента: https://clc.to/tvpmD По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
Mostrar más7 429
Suscriptores
+224 horas
-87 días
+730 días
Archivo de publicaciones
🎄 Начни 2025-й с апгрейдом навыков,
которые откроют двери в мир IT!
Ты можешь собрать свой персональный план обучения с помощью нашего новогоднего конструктора. Это шанс не просто начать год с полезных знаний, но и сделать инвестицию в своё будущее, которая окупится многократно.
🔗 Собери свой план и начни путь в IT
Почему это выгодно?
📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.
💾 Бессрочный доступ — все материалы всегда под рукой, чтобы учиться в своём темпе.
💸 Знания, которые окупятся — навыки, востребованные в любой точке мира.
Какие навыки ты можешь прокачать?
💡 Математика для Data Science + Алгоритмы и структуры данных
— Подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.
💡 Алгоритмы и структуры данных + ML
— Улучшай своё алгоритмическое мышление и изучай базовые методы машинного обучения, чтобы создавать интеллектуальные приложения.
💡 Frontend Basic + Базовые модели ML
— Построй свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.
💡 Архитектуры и шаблоны проектирования + Математика для Data Science
— Развивай аналитическое мышление и учись проектировать устойчивые системы.
💡 Алгоритмы и структуры данных + Frontend Basic
— Получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.
Не упусти шанс сделать шаг в будущее! Новый год — это время обновлений, и твоя карьера может стать одним из них.
🔗 Составь свой IT-маршрут сейчас или выбери курс по новогодней скидке
❓Что такое GOGC?
GOGC (Garbage Collection Goal) — это переменная окружения или настройка, управляющая частотой работы сборщика мусора в Go. GOGC определяет процентный прирост памяти, который допускается перед запуском очередного цикла GC.
Значение GOGC:
➖100 (по умолчанию): GC запускается, когда используемая память увеличивается на 100% по сравнению с памятью, оставшейся после последнего цикла GC.
➖0: отключает автоматическую сборку мусора.
➖<100: увеличивает частоту работы GC (более агрессивная сборка).
➖>100: снижает частоту работы GC (редкие сборки).
❓Чем отличается память в куче от памяти в стеке?
Память в стеке:
➖ Используется для хранения данных с коротким временем жизни (локальные переменные функции).
➖ Быстро выделяется и освобождается, поскольку происходит по принципу LIFO (Last-In-First-Out).
➖ Управляется автоматически при выходе из области видимости функции.
➖ Ограничена по размеру.
Память в куче:
➖ Используется для объектов, срок жизни которых не определён заранее.
➖ Выделение и освобождение сложнее и медленнее, так как управляется сборщиком мусора (GC).
➖ Не ограничена жёсткими рамками, зависит от доступной оперативной памяти.
➖ Подходит для глобальных и длительно живущих объектов.
❓ Можно ли модифицировать map внутри цикла range? Почему?
Нет, модифицировать map во время итерации через range в Go нельзя, так как это может привести к панике (runtime panic). В документации языка указано, что параллельное изменение карты во время итерации не допускается, поскольку внутренняя структура map в Go не поддерживает такие операции.
Причина заключается в том, что изменение map во время итерации может нарушить внутреннюю структуру данных, вызывая неконсистентность или некорректное поведение.
❓Как проверить, пуст ли интерфейс (interface{})?
Интерфейс (interface{}) в Go считается пустым, только если его значение и тип равны nil. Для точной проверки можно использовать reflect.ValueOf(i).IsZero(), чтобы учесть случаи с nil-значением, но заданным типом.
📎 Подробнее можно почитать здесь
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❓Что произойдет, если в defer использовать анонимную функцию, изменяющую внешнюю переменную?
Изменения произойдут в момент выполнения отложенной функции (а не в момент ее определения)
🗺 Привычка "срезать углы" при ходьбе – это интуитивное применение алгоритмов?
Так работает жадный алгоритм: вы выбираете наиболее выгодный шаг в каждый момент времени, чтобы минимизировать общий путь. То же самое применяют разработчики, создавая маршруты для такси или доставок.
С нашим курсом «Алгоритмы и структуры данных» вы научитесь решать любые сложные задачи так же эффективно.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/014fe6d8
🎨 Новый канал для вдохновения — UX in GIF
Мы запустили свежий канал, где делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь в одном месте.
📌 Чем полезен канал?
→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.
👉 Подписывайтесь и вдохновляйтесь: UX in GIF
❓ В каких случаях деление на ноль в языке Go не приводит к панике (panic), и какой результат возвращается в этих случаях?
Деление на ноль в Go не приводит к панике в случаях, когда используются числа с плавающей запятой (float64). В зависимости от знака делимого, результат будет:
❗Положительное число делится на ноль: результатом будет положительная бесконечность (+Inf).
❗Отрицательное число делится на ноль: результатом будет отрицательная бесконечность (-Inf).
❗Ноль делится на ноль: результатом будет «not-a-number» (NaN).
❓ Может ли одна горутина заблокировать мьютекс, а другая его разблокировать?
Мьютексы в Go не отслеживают, какая конкретно горутина вызвала Lock или Unlock. Это означает, что мьютекс может быть заблокирован одной горутиной и разблокирован другой. Такое поведение допускается на уровне реализации, чтобы мьютексы были максимально простыми и эффективными.
Однако это крайне не рекомендуется, так как приводит к сложностям в управлении состоянием мьютекса и повышает риск возникновения ошибок.
❓ Что такое «магическая дата» в Go?
«Магическая дата» в Go — это фиксированная дата и время: 2006-01-02 15:04:05, выбранная для демонстрации форматов даты и времени. Она служит эталоном для указания шаблонов при работе с функциями форматирования и парсинга времени.
❓ Почему выбрана именно эта дата?
Go использует числовую комбинацию, отражающую порядок элементов даты и времени:
2006 — год, состоящий из 4 цифр.
01 — месяц.
02 — день.
15 — часы в 24-часовом формате.
04 — минуты.
05 — секунды.
Из этой даты получается набор цифр — 1,2,3,4,5,6
Как работает iota в случае переопределения значений❓
const (
A = iota // 0
B = «Hello» // Переопределение строки
C = iota // 2 (счёт продолжается)
D = 100 // Явное значение
E = iota // 4
)
Когда в блоке const происходит явное переопределение значений, поведение iota остаётся последовательным, но его значение продолжает увеличиваться на каждой строке, независимо от того, используется ли iota явно или задаются другие значения вручную.
❓ Что такое iota и как он работает в Go?
iota — это встроенный идентификатор, используемый для генерации последовательных числовых значений внутри блока const. Он начинается с 0 и увеличивается на 1 с каждой строкой
🤨 Как сравнить два слайса в Go?
В Go для сравнения двух слайсов нужно вручную или с помощью готовых решений проверить их содержимое, так как оператор == не поддерживает сравнение слайсов
1️⃣ Через циклы
func slicesEqual(a, b []int) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
2️⃣ Библиотека reflect
import "reflect"
func slicesEqual(a, b []int) bool {
return reflect.DeepEqual(a, b)
}
3️⃣Использование cmp из google/go-cmp
Для более сложных сравнений, например, со структурой или кастомными правилами:
import (
"fmt"
"github.com/google/go-cmp/cmp"
)
func main() {
slice1 := []int{1, 2, 3}
slice2 := []int{1, 2, 3}
fmt.Println(cmp.Equal(slice1, slice2)) // true
}
4️⃣Сравнение через сериализацию (для сложных данных)
import (
"encoding/json"
"log"
)
func slicesEqualJSON(a, b []int) bool {
aJSON, _ := json.Marshal(a)
bJSON, _ := json.Marshal(b)
return string(aJSON) == string(bJSON)
}🌟 Хочешь писать код, который решает конкурентные задачи без багов? Начни с каналов в Go. Разберём устройство и применение на практике.
🗓 Открытый урок уже 25 декабря! Не упусти шанс наконец-то сделать свой код лучше.
🔍 Освоишь лучшие практики и научишься избегать ошибок, которые разрушают продуктивность приложений.
👨💻 Вебинар для Golang-разработчиков — и новичков, и практиков. Регистрируйся, если не хочешь стоять на месте: https://clck.ru/3FJCGG
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❓ Почему в Go функции всегда возвращают error, даже если оно равно nil?
В Go функции всегда возвращают error, чтобы обеспечить явную обработку ошибок. Даже если error == nil, его наличие заставляет разработчика проверить результат выполнения. Это делает код предсказуемым, читабельным и снижает вероятность игнорирования ошибок, сохраняя простоту интерфейса и гибкость дизайна функций.
❓ Что делает функция io.TeeReader? Приведите примеры использования
Функция io.TeeReader из пакета io создаёт Reader, который выполняет двойную работу:
1️⃣ Читает данные из исходного io.Reader.
2️⃣ Одновременно записывает эти данные в заданный io.Writer.
Иными словами, она «разветвляет» поток данных: каждый байт, который читается, также записывается в другой поток, указанный через io.Writer.
❓ Где может быть полезен io.TeeReader?
Логирование данных:
Когда нужно сохранять или анализировать данные, одновременно читая их.
Например, записывать HTTP-запросы или ответы в лог, не прерывая основной процесс обработки.
Параллельная обработка данных:
Когда нужно передать данные для анализа или трансформации в другой поток, сохраняя их доступными для основного потребителя.
Создание копий данных:
Например, при загрузке файла вы можете сохранить копию на диск и одновременно передать её в сетевой поток.
Диагностика и отладка:
Можно использовать TeeReader для перехвата и анализа данных в реальном времени.
Новый год — время для новых начинаний!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
❓ Как работать с временно неиспользуемыми переменными?
Если переменная временно не используется, её можно явно игнорировать с помощью _ (пустого идентификатора). Это указывает на то, что разработчик осознанно отказывается от значения.
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
