Библиотека Go для собеса | вопросы с собеседований
6.84K subscribers
219 photos
6 videos
1 file
397 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

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

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

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

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

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

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

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

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


🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3👾21👍1
Как передавать множество результатов функции

В Go можно возвращать несколько значений из функции напрямую — это одна из встроенных возможностей языка.

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

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

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

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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48🌚24🤔2😢1👾1
Какие варианты циклов есть в 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
🥱11👍10
Что такое cookiejar в Go и для чего он используется

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

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

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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🔥 Конкурс: 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
👍81
Что из себя представляет паттерн Strangler Fig

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Для чего используется пакет expvar

Пакет expvar используется для экспорта переменных в формате JSON по HTTP, что позволяет отслеживать внутреннее состояние приложения — например, количество запросов, ошибки, статистику по памяти и другие метрики.

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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔7👍5🔥2😢1
Что выведет %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
🥱9👍5
Чем отличаются 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
👍114
Что выводит %#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
👍15
Что будет, если в пакете net/http зарегистрировано два маршрута и они соответствуют одному запросу

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

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