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

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

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

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

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Библиотека Go для собеса | вопросы с собеседований pinned «👾 AI-агенты — настоящее, о котором все говорят На днях мы анонсировали наш новый курс AI-агенты для DS-специалистов 🎉 Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи! На обучении вы соберете полноценные…»
Как расширяется ёмкость у слайсов

Ёмкость слайса расширяется динамически при добавлении элементов, если текущая длина достигает ёмкости. Обычно, когда нужно увеличить ёмкость, она удваивается — то есть становится примерно в 2 раза больше прежней. Однако этот удвоенный рост действует только до определённого предела (около 256 элементов). После этого Go увеличивает ёмкость не в два раза, а примерно на 1.25 (то есть на четверть от текущей емкости). Такое поведение связано с оптимизацией использования памяти и выравниванием данных.

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

Конкурентность и параллельность — это разные, хотя и связанные понятия:

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

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Последние 2 дня скидки на курс «AI-агенты для DS-специалистов»

Пока большинство дата-сайентистов строят модели и делают аналитику, рынок уже требует специалистов, которые создают автономные системы на базе ИИ-агентов.

Для этого мы подготовили специальный курс и собрали кучу дополнительного контента, который поможет погрузиться в тему еще глубже. Но чтобы получить все плюшки, успевайте до 1 июня.

🎁 Что вы получите при оплате курса до 1 июня:
— Промокод PROGLIBAIна 10 000 ₽ на курс, чтобы изучать AI-агентов еще выгоднее
— Эксклюзивный лонгрид по API и ML от Proglib

💡Что разберем на курсе «AI-агенты для DS-специалистов»:
— Реализацию памяти в цепочках langchain
— Полный пайплайн RAG-системы с оценкой качества
— Основы мультиагентных систем (MAS)
— Протокол MCP и фреймворк FastMCP

Промокод также действует на курсы «Математика для Data Science» и «Алгоритмы и структуры данных».

👉 Успейте до 1 июня: https://clc.to/Cttu7A
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
🚨 Что на самом деле происходит с увольнениями в ИТ

Каждый день в чатах разработчиков появляются сообщения «ищу работу», «команду сократили», «проект закрыли». Но никто не говорит о причинах и масштабах катастрофы. Мы запустили большое исследование, чтобы раскрыть правду!

🎯 Что мы выясним:
→ Реальные причины увольнений
→ Сколько времени нужно на поиск работы
→ Самые безумные истории смены работы

Понимая реальную ситуацию, мы сможем принимать взвешенные решения о карьере и не попасться на удочку HR-сказок.

👉 Пройдите опрос за 3 минуты и помогите всему сообществу: https://clc.to/yJ5krg
Что такое пакет syscall в Go и для чего он используется

Пакет syscall предоставляет низкоуровневые интерфейсы для работы с операционной системой, такими как вызовы системных функций (например, работа с файлами, процессы, сигналы и пр.).

Он позволяет взаимодействовать с операционной системой напрямую без использования специальных библиотек.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем основное отличие между пакетами os и syscall в контексте работы с файлами

Пакет syscall предоставляет низкоуровневый доступ к системным вызовам операционной системы, напрямую взаимодействуя с файловыми дескрипторами и системными функциями.

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

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

Паттерн Медиатор — это способ организовать общение между разными частями программы через одного «посредника».

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

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

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

Помимо поочерёдной обработки ошибок с Go 1.20 можно объединить ошибки в одну. Это позволяет создать агрегированную ошибку с несколькими вложенными ошибками.

Пример:
err = errors.Join(function1(), function2())

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🫣 Устали от HR-сказок про «дружный коллектив» и «печеньки в офисе»?

Давайте честно поговорим о том, что действительно происходит на IT-рынке. Не в розовых презентациях, а в реальной жизни разработчиков, тестировщиков, аналитиков и всех, кто живет кодом.

🧐 Мы проводим исследование, чтобы выяснить:

— Как часто мы прыгаем между компаниями (и почему)
— Какие красные флаги заставляют бежать без оглядки
— Где реально находят работу
— Что бесит в HR больше всего
— Сколько кругов собеседований — это уже перебор

Результаты покажут реальную картину рынка. Без приукрашиваний. Может, компании поймут, что нужно менять, а специалисты — куда двигаться дальше.

😈 Опрос займет 5 минут, но результаты будут работать на всех нас → https://clc.to/9aaXVg
Сколько виртуальной памяти может использовать Go-процесс

Go-процесс может использовать много виртуальной памяти из-за того, как работает аллокатор памяти в Go. Он резервирует большую область виртуальной памяти, создавая арену, с которой процесс Go может выделять память.

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

Для того чтобы увидеть фактически использованную память процессом Go, можно воспользоваться командой top в Unix-системах. В столбцах RES (Linux) или RSIZE (macOS) можно увидеть количество реально выделенной памяти процессу Go.

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

1. Указатель на тип (*T).

Это самый общий тип указателя. Он указывает на значение определенного типа. Например, *int указывает на значение типа int, а *string — на строку.

2. Указатель на массив.

Указатели могут быть использованы для работы с массивами. Важно помнить, что при передаче массива в функцию по значению, копируется сам массив, а не ссылка на него. Чтобы избежать копирования, можно использовать указатель на массив.

3. Указатель на срез.

Срезы в Go являются динамическими и указывают на массив, поэтому можно работать с ними через указатели.
Указатель может быть nil, что означает отсутствие ссылки на значение.

4.
Указатель на структуру.

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

5. Указатели на интерфейсы.

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

6. Нулевой указатель:

Указатели могут быть nil. Это полезно для инициализации указателей, когда они ещё не указывают на какую-либо память.

В Go указатели не могут быть арифметическими (например, нельзя просто прибавлять числа к указателю, как в C).

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🥴 Средний разработчик меняет работу каждые 1,5 года

И это не потому, что мы такие непостоянные. Просто рынок показывает свое истинное лицо быстрее, чем успевают напечатать визитки.

Поэтому мы собираем инсайды от тех, кто находится в окопах digital-трансформации каждый день. От джуниоров, которые только въезжают в профессию, до сеньоров, повидавших всякого.

😳 О чем говорим откровенно:
— Job-hopping и что за этим стоит
— Red flags, которые мгновенно убивают мотивацию
— Реальные источники вакансий (не те, что рекламируют)
— Боль от общения с рекрутерами
— Сколько этапов отбора — норма, а сколько — издевательство

Когда мы объединим опыт сотен IT-специалистов, получится настоящая карта того, как устроена индустрия. Не по версии HR-отделов, а по версии тех, кто пишет код, тестирует продукты и двигает технологии вперед.

🚀 Участвовать в исследовании → https://clc.to/9aaXVg
Чем отличается TCP от UDP

TCP — это надежный протокол с установлением соединения, который гарантирует доставку данных в правильном порядке. Он медленнее из-за проверки целостности и повторной передачи потерянных пакетов.

UDP — это ненадежный протокол без установления соединения. Он быстрее, так как не проверяет доставку и не повторяет потерянные пакеты.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Где UDP будет предпочтительнее, чем TCP

UDP предпочтительнее в приложениях, где важна скорость и минимальная задержка, а потеря некоторых данных не критична.

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

Онлайн-игры — где важно быстрое обновление состояния игры, а потеря пакетов не всегда влияет на игровой процесс.

VoIP (голосовые вызовы по интернету) — где важно минимизировать задержку в передаче голоса, даже если часть данных потеряется.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии «Библиотеки программиста»

Привет! Мы ищем контент-менеджеров, которые будут вести наши телеграм-каналы о разработке.

👾 Требования:
— знать принципы залетающего контента
— разбираться в темах, связанных с разработкой

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

Условия:
— удаленка
— частичная занятость
— сдельная оплата в зависимости от количества задач

🔥 Оставляйте отклик, и мы свяжемся с вами: https://forms.gle/o4BZnsQ526JoqsCq9
❗️ Фидбек по прошедшей неделе

Оцените их по шкале 🔥,❤️,👍,😢, 🥱,
где 🔥 — это супер, а 🥱 — это скучно.

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
Что возвращает метод bytes.SplitN и чем он отличается от bytes.Split

Метод bytes.SplitN возвращает срез подмассивов (срезов байт), которые являются результатом разделения исходного среза байт на части, используя заданный разделитель. Главное отличие от bytes.Split заключается в том, что SplitN ограничивает количество частей, которые будут возвращены. Второй параметр n указывает максимальное количество частей, а если значение n равно 1, метод просто возвращает исходный срез без изменений. Если n больше, чем фактическое количество частей, то метод SplitN вернет все возможные части.

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

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