Библиотека Go для собеса | вопросы с собеседований
6.8K subscribers
217 photos
5 videos
1 file
371 links
Вопросы с собеседований по Go и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/0b524a15

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость

Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».

Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».

📅 Сроки: с 29 апреля по 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Ждем ваших новостей!
Почему defer функции выполняются в LIFO порядке

Основная причина заключается в том, как работает стек вызовов. Стек — это структура данных, которая работает по принципу последним пришел — первым ушел.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое DRY

Этот принцип подразумевает, что каждый фрагмент знаний должен быть представлен в системе единожды.

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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Как взять ссылку на значение в мапе

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

Пример, который не скомпилируется:
m := map[string]int{"a": 1}
p := &m["a"]


🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📅 Итоги недели — нужна ваша реакция

Были интересные вопросы? Может сложновато или наоборот слишком скучно?

Можно просто:
🔥 — нравится
🌚 — так себе
😢 — скучно

Комментарии тоже приветствуются.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие варианты циклов есть в Go

1. Классический for
for i := 0; i < 10; i++ {
fmt.Println(i)
}


2. Условный for (как while)

i := 0
for i < 10 {
fmt.Println(i)
i++
}


3. Бесконечный цикл
for {
fmt.Println("infinite loop")
break // не забудь выйти
}


4. for range — итерация по коллекции
for index, value := range []string{"a", "b", "c"} {
fmt.Println(index, value)
}


🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое cookiejar в Go и для чего он используется

Библиотека cookiejar предоставляет механизм для управления HTTP-куками. Это часть стандартной библиотеки.

cookiejar позволяет автоматически сохранять и отправлять куки при работе с HTTP-запросами. Куки могут быть получены в ответах сервера и автоматически добавляться в будущие запросы, что позволяет поддерживать состояние между запросами (например, при аутентификации через сессии).

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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.

📅 Сроки: прием новостей до 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Осталась неделя — ждем ваших новостей!
Что такое пакет net/mail в Go и какие задачи он решает

Пакет net/mail используется для создания, парсинга и обработки почтовых сообщений в формате MIME. Он помогает работать с заголовками сообщений, такими как From, To, Subject, и позволяет парсить и формировать MIME-сообщения. Основной функцией пакета является работа с адресами электронной почты и создание сообщений, готовых к отправке через SMTP.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что из себя представляет паттерн Strangler Fig

Название происходит от одноимённого тропического растения, которое растёт вокруг дерева-хозяина, постепенно вытесняя его. По аналогии, новая система «обрастает» старую, заменяя её части одну за другой, пока полностью не вытеснит.

Как это работает:

— Создаётся прокси/фасад перед старой системой.
— Новые функции разрабатываются сразу в новой архитектуре.
— Старые модули постепенно переписываются и переносятся.
— После переноса очередной части — обновляется маршрутизация, чтобы трафик шёл в новую реализацию.
— По завершении — старая система удаляется.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли добиться от быстрой сортировки времени выполнения O(n log n)

Классическая быстрая сортировка выбирает опорный элемент. Если выбор плохой — например, всегда крайний элемент массива — и массив уже отсортирован (или почти), происходит деградация: один подмассив получает почти все элементы, а другой — почти пустой. Это приводит к дереву рекурсии глубиной n, и итоговая сложность становится O(n²).

Если опорный элемент выбирается случайно, то с высокой вероятностью дерево рекурсии будет сбалансированным. Это даёт среднюю сложность O(n log n), даже на почти отсортированных данных.

Выбор опорного элемента как медианы из первого, среднего и последнего элементов. Существенно снижает вероятность деградации при частично отсортированных массивах.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает fmt.Sprintf и чем он отличается от fmt.Printf

fmt.Sprintf форматирует строку и возвращает её как результат, не выводя на экран.

fmt.Printf форматирует строку и сразу выводит её на экран.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🧱 7 архитектурных паттернов, которые должен знать каждый программист

В быстро меняющемся мире разработки от программиста всё чаще требуется не просто писать код, а понимать, как правильно проектировать системы.

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

В статье собрали и разобрали 7 архитектурных паттернов, которые сегодня стоит знать каждому разработчику — будь то разработка микросервисов, проектирование API или работа с распределёнными транзакциями.

➡️ Узнать паттерны

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет %v в fmt.Printf

Выводит значение в читаемой форме без дополнительной информации.

u := User{"Alice", 30}
fmt.Printf("%v\n", u)
// Вывод: {Alice 30}


🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем отличаются compress/gzip и compress/zlib

Они используют один и тот же алгоритм сжатия — DEFLATE, но оборачивают его в разные форматы контейнеров.

compress/gzip реализует стандарт GZIP (RFC 1952), который оборачивает данные в формат с более «тяжёлой» заголовочной частью: туда могут входить имя исходного файла, дата модификации, флаг CRC и другое. Этот формат часто используется при передаче данных в HTTP (например, сжатие HTTP-ответов) и в Unix-среде — с утилитами gzip, gunzip.

compress/zlib реализует формат ZLIB (RFC 1950), но имеет более лёгкую обёртку: минимальный заголовок и контрольную сумму Adler-32 вместо CRC32. Он чаще применяется в бинарных форматах, таких как PNG, PDF, а также в сетевых протоколах.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выводит %#v в fmt.Printf

Показывает значение в виде Go-кода.

fmt.Printf("%#v\n", u)
// Вывод: main.User{Name:"Alice", Age:30}


🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что будет, если в пакете net/http зарегистрировано два маршрута и они соответствуют одному запросу

Если два маршрута пересекаются и оба соответствуют одному запросу, Go выберет первый зарегистрированный маршрут, который соответствует запросу. То есть, при обработке запроса, если два маршрута могут совпасть, Go будет использовать обработчик первого из них.

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выводит %T в fmt.Printf

Выводит тип переменной.

fmt.Printf("%T\n", u)
// Вывод: main.User


🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM