Библиотека Go для собеса | вопросы с собеседований
Відкрити в Telegram
Вопросы с собеседований по Go и ответы на них. Учиться у нас: clc.to/iEeaZw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
Показати більше7 451
Підписники
+524 години
+137 днів
-1530 день
Архів дописів
❓ Что делает _ — импорт?
В Go _-импорт используется для подключения пакета только ради выполнения его побочных эффектов (например, функций init()) без дальнейшего использования самого пакета в коде.
Таким образом, компилятор не будет требовать обращения к пакетным функциям или переменным, но все действия в init() будут выполнены. Этот подход часто используется для регистрации драйверов, плагинов или настройки глобальных зависимостей.
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
❓Что происходит, если между пакетами есть циклические зависимости?
Циклические зависимости возникают, когда два или более пакета зависят друг от друга напрямую или косвенно. Например, пакет A импортирует пакет B, а пакет B импортирует обратно пакет A.
Циклические зависимости недопустимы в Go. Компилятор обнаружит их и выдаст ошибку. Это сделано для упрощения структуры кода и предотвращения сложных проблем с порядком инициализации.
❓ Как slice устроен под капотом?
В Go slice — это структура данных, представляющая собой динамически изменяемый массив. Slice строится на основе массива, но в отличие от массива, его размер может изменяться в процессе работы программы. Под капотом slice включает три основных компонента:
Указатель (pointer):
Это указатель на первый элемент массива, на основе которого создаётся slice. Это может быть любой внутренний массив или часть массива.
Длина (length):
Длина slice определяет количество элементов, доступных для работы в slice. Эта длина может изменяться в процессе добавления или удаления элементов.
Ёмкость (capacity):
Ёмкость slice — это максимальное количество элементов, которые могут быть размещены в текущем выделенном массиве без перераспределения памяти.
Когда slice расширяется (например, при добавлении новых элементов), если ёмкость превышена, Go автоматически увеличивает ёмкость, выделяя новый массив и копируя туда элементы старого массива.
💾 CDC vs Outbox: как решить проблему двойной записи в распределенной системе
В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.
Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.
Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.
🔗 Читать статью
🔗 Зеркало
❓Что такое defer в Go и какие варианты использования существуют?
defer в Go — это ключевое слово, которое используется для отложенного выполнения функции. Функция, указанная в defer, будет выполнена непосредственно перед тем, как функция, содержащая defer, завершит свое выполнение
Как его можно использовать?
🎯 defer часто используется для освобождения ресурсов, таких как закрытие файлов, соединений с базой данных или освобождение памяти.
🎯 defer полезен для выполнения кода, который должен быть выполнен независимо от того, произошла ли ошибка в функции или нет.
❓ Почему использование uintptr может быть опасным?
❗ Потеря информации о типе: преобразование указателя в uintptr теряет информацию о типе, что может привести к ошибкам при неправильном доступе к памяти, если указатель используется с другим типом данных.
❗ Сборщик мусора: go использует сборщик мусора, который не отслеживает указатели, преобразованные в uintptr. Это может привести к ошибкам, если память была освобождена или перемещена.
❗ Низкоуровневый доступ: uintptr представляет собой «сырой» адрес памяти, что делает операции с ним небезопасными, так как компилятор не может проверять правильность обращения к памяти.
❗Гонки данных: в многозадачных приложениях использование uintptr может привести к гонкам данных, поскольку не обеспечивается синхронизация или безопасность типов.
⚡️Самые полезные каналы по Go в одной папке
В ней:
➖канал для подготовки к собеседованиям
➖интересные задачи
➖основной канал (этот)
➖книги по Go
➖лучшие вакансии из сферы
➖и наш чат, в котором можно общаться и задавать вопросы
Добавляйте 👉 тык сюда
Подготовься к собеседованию на позицию Data Scientist!
Профессия Data Scientist становится все более востребованной, и компании ищут специалистов, способных превращать данные в ценные инсайты. Но как успешно пройти техническое собеседование?
Мы собрали 10 типичных задач, которые могут встретиться на собеседовании, и эффективные подходы к их решению:
1. Внешнее и тензорное произведение
2. One-hot кодировка
3. Мониторинг осадков
4. Симуляция бросков кубиков в «Монополии»
5. Бурение скважин для добычи золота
6. Вычисление свертки
7. Бэктестинг торговой стратегии
8. Прогноз оттока клиентов с помощью логистической регрессии
9. Обнаружение спама с использованием дерева решений
10. Предсказание цен на квартиры с помощью линейной регрессии
Чтобы начать решать задачи, достаточно ответить на четыре простых вопроса по этой ссылке и получить доступ к вводным занятиям курса Математика для Data Science и 10 задачам.
❓ Что такое uintptr, когда его следует использовать?
uintptr — это тип в Go, который представляет собой целое число, используемое для хранения значений указателей как чисел, то есть для представления адресов памяти в виде целых чисел. Он позволяет выполнять низкоуровневые операции с указателями, такие как арифметика указателей или преобразование указателя в числовое значение и обратно
Когда следует использовать uintptr:
🛠️ Низкоуровневые операции: uintptr используется, когда необходимо работать с указателями на уровне адресов, например, для выполнения арифметики указателей (сдвиг по памяти) или для взаимодействия с C-библиотеками через cgo, где указатели часто обрабатываются как целые числа.
🛠️ Преобразование указателя в целое число: иногда необходимо преобразовать указатель в целочисленное значение (например, для передачи в системные вызовы или манипуляции с памятью). В таких случаях uintptr может быть полезен для хранения числового представления указателя.
🛠️ Взаимодействие с аппаратным обеспечением: в некоторых случаях работы с аппаратным обеспечением или низкоуровневыми системами можно использовать uintptr для работы с памятью напрямую.
❓ Как контексты используются для отмены операций в многозадачных приложениях?
Контексты в Go предоставляют механизм для отмены операций в многозадачных приложениях за счет передачи сигнала отмены через объект context.Context. Это особенно полезно в сценариях, где горутины выполняют связанные задачи, такие как обработка HTTP-запросов или долгие вычисления.
Принцип работы:
1. Создаётся контекст с функцией отмены (context.WithCancel или context.WithTimeout).
2. Все горутины получают этот контекст и периодически проверяют ctx.Done().
3. Когда вызвана отмена (например, через cancel()), канал ctx.Done() закрывается.
4. Каждая горутина обрабатывает сигнал отмены, например, освобождая ресурсы и завершая выполнение.
Save the date: 21 декабря проводим Я.Субботник по Golang
Будем слушать доклады ведущих разработчиков Яндекса из Игр, Екома и Райдтеха и Поиска. Готовьте вопросы на Q&A-сессию!
Обсудим внедрение Golang, перформанс-бенчмаркинг и реализацию сервисов через стейтмашины. А ещё посмотрим на текущие проекты Яндекса в опенсорсе. После займёмся нетворкингом: будем общаться, отдыхать и пробовать разное вкусное.
Приходите в Москве или подключайтесь онлайн!
Зарегистрироваться
Repost from Библиотека Go-разработчика | Golang
🗃️ Анатомия SQL-запроса: как работают запросы к базе данных
❓ Как разработчику эффективно работать с базами данных?
Один из ключевых навыков — понимание, как именно выполняются SQL-запросы. В этой статье разобраны все этапы работы запросов с базой данных: от парсинга до оптимизации.
Это поможет не только улучшить производительность приложений, но и избежать частых ошибок при взаимодействии с БД.
📎 Погружаемся в анатомию SQL-запросов по ссылке!
❓ В чем разница между context.Background() и context.TODO()?
context.Background() используется для создания базового контекста, который не имеет родительского контекста. Он подходит для корневых вызовов в программе, например, в функции main().
context.TODO() применяется, когда контекст должен быть задан, но решение о его правильности или необходимости еще не принято. Это временный контекст, который можно позже заменить на более специфичный, когда появится необходимая информация.
❓ Как в Go можно реализовать работу с объединёнными типами, если язык не поддерживает их напрямую?
В Go для реализации работы с объединёнными типами используется пустой интерфейс (interface{}), который может хранить значения любого типа. Для извлечения значения используется type assertion. Пример на скриншоте.
Здесь переменная x может быть любым типом, и с помощью type assertion проверяется, является ли она строкой.
❓ Поддерживает ли Go объединённые типы?
Go не поддерживает объединённые типы напрямую, как это делают другие языки (например, TypeScript или Rust). В Go переменные всегда имеют фиксированный тип. Однако, с помощью интерфейсов и пустого интерфейса (interface{}), можно реализовать функциональность, схожую с объединёнными типами.
❓ Расскажите о механизме select в Go и как он работает с каналами при параллельной обработке данных?
Механизм select в Go — это примитив синхронизации для работы с каналами.
При использовании select:
⚙️ Блокируется выполнение потока
⚙️ Ожидается готовность одного из каналов
⚙️ При готовности нескольких каналов выбор происходит случайно
Ключевые особенности:
🛠️ Позволяет синхронизировать параллельные процессы
🛠️ Предотвращает взаимные блокировки
🛠️ Обеспечивает недетерминированный выбор канала
Применяется для эффективного управления конкурентностью в Go.
❓ В следующем коде происходит паника. Объясните, что именно вызывает её
ch := make(chan int, 1)
ch <- 42
close(ch)
ch <- 23
В Go запись в закрытый канал вызывает панику. Чтобы избежать этой ошибки, нужно убедиться, что мы не пытаемся записывать в канал после его закрытия.❓ Что такое пакет unsafe в Go? Для чего его используют?
Пакет unsafe в Go предоставляет функции, которые позволяют обрабатывать память и данные с низким уровнем доступа, минуя некоторые ограничения безопасности языка Go. Он предоставляет инструменты для работы с памятью и типами данных, которые обычным способом в Go нельзя напрямую манипулировать.
Это пакет используется в случаях, когда нужно провести оптимизацию или взаимодействовать с системными библиотеками, где стандартные средства языка не обеспечивают необходимой гибкости.
Repost from Библиотека Go-разработчика | Golang
📈 Кадровый голод в IT: почему компании готовы платить на 13% больше
Несмотря на экономическую нестабильность и сокращения в некоторых секторах, компании готовы платить рекордные зарплаты, чтобы привлечь и удержать талантливых специалистов. В статье, по ссылке ниже, мы разбираемся, почему в IT наблюдается дефицит кадров, какие навыки сейчас востребованы, и как работодатели борются за внимание лучших профессионалов, предлагая условия, о которых еще недавно можно было только мечтать.
Если вам интересно, как кадровый рынок в IT адаптируется к новым вызовам, и что это значит для вас как для разработчика или работодателя, читайте дальше!
📎 Читать статью
