uz
Feedback
Библиотека Go для собеса | вопросы с собеседований

Библиотека Go для собеса | вопросы с собеседований

Kanalga Telegram’da o‘tish

Вопросы с собеседований по Go и ответы на них. Покажем, как запустить своего ии-агента: https://clc.to/tvpmD По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

Ko'proq ko'rsatish
7 426
Obunachilar
+224 soatlar
-87 kunlar
+730 kunlar
Postlar arxiv
💬 Для чего предназначена переменная окружения GOEXPERIMENT? Она позволяет включать экспериментальные функции и возможности в компиляторе, runtime или стандартной библиотеке Go. Эти функции обычно находятся в процессе разработки или тестирования и могут не быть включены в финальный релиз, но доступны для тестирования разработчиками. 📌 Например, Go 1.23 добавляет экспериментальную функцию: generic type aliases. Активировать ее можно с помощью добавления переменной окружения GOEXPERIMENT=aliastypeparams.

type G[A any, B ~bool, C comparable] = struct {
  a A
  b B
  c C
}

🤔 Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам 🗓 22 августа в прямом эфире разберем как
🤔 Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам 🗓 22 августа в прямом эфире разберем как математика применяется в разных отраслях бизнеса. И какие математические навыки необходимы для успешной работы в каждой из них. Приглашенный спикер: Павел Запольский – Senior Quantitative Researcher at Exness и Co-founder GrowLytics. Запустивший более 10 проектов по машинному обучению и анализу данных для ведущих компаний. 😮 На вебинаре узнаете: 🔵 Математика в бизнесе: Чем отличаются разные сферы друг от друга. Почему стоит понимать специфику сферы 🔵 ML и продуктовое IT: Чем различается математическая сложность от индустрии к индустрии. Какие к ним необходимы уровни подготовки 🔵 Баевская математика в GameDev. Баевская математика как альтернатива AB тестированию. Как математические методы применяются в разработке игр 🔵 Finance: Что такое количественные финансы и математическое моделирование. Обсудим текущие индустриальные тренды в отрасли 🔵 Backtest: Как знания математики делают ваши активы более надежными 🔵 На практике подробно разберем два математических кейса по GameDev и Backtest. ➡️ Зарегистрироваться: https://proglib.io/w/cd799396

💬 Чем версия Go отличается от Go toolchain? Версия Go — это номер версии языка программирования Go, который указывает на конкретный релиз языка и его стандартной библиотеки. Версия Go определяет синтаксис языка, доступные стандартные библиотеки, и базовые инструменты, входящие в комплект поставки языка. Go Toolchain — это набор инструментов, предоставляемый с Go, который включает в себя компилятор (go build), менеджер пакетов (go mod), инструмент тестирования (go test), анализатор кода (go vet) и другие утилиты, необходимые для разработки, сборки и отладки Go программ. Go toolchain обновляется с каждым новым релизом Go, и его версия соответствует версии языка Go.

Самые полезные каналы для программистов в одной подборке! Сохраняйте себе, чтобы не потерять 💾 🔥Для всех Библиотека программиста — новости, статьи, досуг, фундаментальные темы Книги для программистов 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 запрещена на территории РФ

💬 Для чего можно использовать тег структуры json:"-" в Go? Данный тег можно использовать для того, чтобы игнорировать поле с
💬 Для чего можно использовать тег структуры json:"-" в Go? Данный тег можно использовать для того, чтобы игнорировать поле структуры при сериализации в JSON (маршализации). Это означает, что данное поле не будет включено в итоговый JSON-объект при его создании. Простой пример представлен выше.

💬 Какую функцию Go можно использовать для обработки сигналов операционной системы с использованием контекста? Пакет signal и
💬 Какую функцию Go можно использовать для обработки сигналов операционной системы с использованием контекста? Пакет signal имеет функцию NotifyContext, которую можно использовать для обработки сигналов ОС в Go с использованием контекста. На скриншоте представлен простой пример.

Открытое собеседование на Gо-разработчика в этот четверг 15 августа(уже в этот четверг!) в 19:00 по мск приходи онлайн на Отк
Открытое собеседование на Gо-разработчика в этот четверг 15 августа(уже в этот четверг!) в 19:00 по мск приходи онлайн на Открытое собеседование от Эйч Навыков. Как это будет: 1. Даниил Динько, старший разработчик в Ozon, позадает реальные вопросы и задачи разработчику-добровольцу 2. Потом Даня даст подробную обратную связь — объяснит, зачем задавал тот или иной вопрос, как лучше на него ответить или решить задачу 3. В конце можно будет задать любой вопрос Даня Что узнаешь на Открытом собеседовании: - Чего ждут от кандидатов на мидл-позиции в Gо-разработке - Какие вопросы задают на интервью и зачем - Как подготовиться к собесу, чтобы получить заветный оффер Это бесплатно? Бесплатно Просто зарегистрируйся на открытое собеседование в нашем боте @skills_mentee_bot Реклама: ООО “Эйч Карьера” erid: LjN8KLCvM

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

💬 Какой основной юзкейс функции TryLock? В Go 1.18 была введена новая функция TryLock для мьютексов (sync.Mutex и sync.RWMutex), которая позволяет попытаться захватить блокировку в неблокирующем режиме. Это означает, что если блокировка уже занята, функция просто вернет значение false, вместо того чтобы ждать освобождения блокировки. Она может быть полезна в ситуациях, когда требуется неблокирующая попытка захватить ресурс. Например, если очередь может быть очищена любой горутиной и не нужно очищать ее несколько раз подряд, первая горутина, которая захватит блокировку, выполнит эту задачу, а остальные могут продолжить работу.

💬 В каких режимах может работать мьютекс в Go? Мьютекс может работать в одном из двух режимов: нормальный и starvation. В нормальном режиме горутины, ожидающие мьютекса, организованы в очередь по принципу FIFO. Однако, когда горутина пробуждается и пытается захватить мьютекс, она не получает управление сразу. Вместо этого она вынуждена конкурировать с новыми горутинами, которые также хотят захватить мьютекс в этот момент. Эта конкуренция складывается не в пользу ожидающей горутины, так как новые горутины могут быстро попытаться захватить мьютекс, в то время как горутина из очереди еще только пробуждается. 📌 Пример сценария в нормальном режиме: допустим, горутина, которая только что проснулась, часто проигрывает эту гонку новым претендентам и снова попадает в начало очереди. Если горутине не везет, она может каждый раз просыпаться именно тогда, когда приходит новая горутина, что приводит к тому, что она никогда не захватывает мьютекс. Именно для таких случаев предусмотрен переход мьютекса в режим starvation. Режим starvation включается, если горутина не может захватить мьютекс более 1 миллисекунды. Этот режим гарантирует, что ожидающие горутины получат справедливый шанс на захват мьютекса. В режиме starvation, когда горутина освобождает мьютекс, управление передается непосредственно горутине, которая находится в начале очереди. Это означает, что никакой конкуренции и гонки с новыми горутинами нет — они просто присоединяются к концу очереди. 📌 Пример сценария в режиме starvation: мьютекс последовательно предоставляет доступ горутинам G1, G2 и так далее. Каждая ожидающая горутина получает управление и проверяет два условия: является ли она последней горутиной в очереди; ожидала ли она менее одной миллисекунды. Если выполняется хотя бы одно из этих условий, мьютекс переключается обратно в нормальный режим. Такое поведение мьютекса в Go помогает сбалансировать конкурентный доступ к общим ресурсам, обеспечивая справедливость и предотвращая бесконечное ожидание горутин в очереди. 👉 Подробнее

💬 Какими свойствами должны обладать ключи в map'е? Ключи должны поддерживать операции сравнения == и != (comparable). Это необходимо, чтобы Go мог эффективно выполнять операции поиска, вставки и удаления элементов из мапы.

🐘🔮 Иллюзия согласованности в PostgreSQL: как избежать неприятных сюрпризов Несмотря на то, что PostgreSQL обеспечивает стро
🐘🔮 Иллюзия согласованности в PostgreSQL: как избежать неприятных сюрпризов Несмотря на то, что PostgreSQL обеспечивает строгую согласованность данных благодаря использованию многоверсионного параллельного контроля (MVCC), порядок выполнения транзакций может быть неожиданным для клиента. Это может привести к ситуации, когда записи появляются в неправильном порядке. Рассказываем, как и почему это происходит, и что делать для минимизации подобных проблем. Читать статью

💬 Как эффективно удалять смежные элементы среза, сохраняя порядок элементов? Предположим: 1. Задействованный срез обозначен как s, и его тип — []E, где E — тип элементов среза. 2. Мы хотим удалить элементы в s[from:to], где from <= to. 📌 Способы удаления элементов: 1️⃣
s = s[:from + copy(s[from:], s[to:])]
2️⃣
s = append(s[:from], s[to:]...)
3️⃣ С использованием пакета slices:
import "slices"
s = slices.Delete(s, from, to)
Если используется Go toolchain 1.21, то после вызова функции slices.Delete мы должны самостоятельно очистить освобожденные элементы. Начиная с Go 1.22, функция slices.Delete автоматически очищает освобожденные элементы.

💬 Как эффективно удалять смежные элементы среза, сохраняя порядок элементов? Предположим: 1. Задействованный срез обозначен как s, и его тип — []E, где E — тип элементов среза. 2. Мы хотим удалить элементы в s[from:to], где from <= to. 📌 Способы удаления элементов: 1️⃣
s = s[:from + copy(s[from:], s[to:])]
2️⃣ к эффективно удалять смежные элементы сре 3️⃣ С использованием пакета slices: менты среза, сохраняя порядок элементов? Предположим: 1 Если используется Go toolchain 1.21, то после вызова функции slices.Delete мы должны самостоятельно очистить освобожденные элементы. Начиная с Go 1.22, функция slices.Delete автоматически очищает освобожденные элементы.

🌐 9 основных паттернов для проектирования распределенных систем В этой статье мы рассмотрим 9 основных паттернов и области и
🌐 9 основных паттернов для проектирования распределенных систем В этой статье мы рассмотрим 9 основных паттернов и области их применения, что поможет вам в проектировании высоконагруженных приложений. Читать статью

💬 Какие типы оператора defer существуют в Go? 📌 До Go 1.13: heap-allocated defer До версии Go 1.13 все объекты defer выделя
💬 Какие типы оператора defer существуют в Go? 📌 До Go 1.13: heap-allocated defer До версии Go 1.13 все объекты defer выделялись в куче. Это могло приводить к снижению производительности из-за затрат на выделение памяти в куче. 📌 Go 1.13: stack-allocated defer С версии Go 1.13 была введена возможность выделения объектов defer в стеке. Это позволило улучшить производительность за счет уменьшения затрат на выделение памяти. 📌 Go 1.13+: open-coded defer Также с версии Go 1.13 была введена оптимизация для встраивания defer в конец функции и перед каждым оператором return. Это значительно улучшило производительность, но применимо только в ограниченных кейсах, например, когда количество defer-операторов невелико (не более 8) и нет динамических конструкций, таких как циклы. 📌 Go 1.22: heap-allocated defer в циклах В Go 1.22, если defer используется внутри цикла, он по-прежнему выделяется в куче, поскольку количество объектов defer может динамически меняться во время выполнения. 👉 Подробнее

🍇 18 основных паттернов микросервисной архитектуры Рассказываем о паттернах, которые представляют собой набор проверенных ре
🍇 18 основных паттернов микросервисной архитектуры Рассказываем о паттернах, которые представляют собой набор проверенных решений типичных проблем и задач в микросервисной архитектуре. Их правильное применение может значительно улучшить масштабируемость и надежность системы. Читать статью

💬 Назовите основные функции и механизмы, которые могут остановить или приостановить выполнение текущей горутины в Go. 1. time.Sleep(d time.Duration): приостанавливает горутину на указанный период времени. 2. runtime.Gosched(): уступает выполнение другим горутинам, временно приостанавливая текущую. 3. runtime.Goexit(): немедленно завершает текущую горутину, выполняя все отложенные вызовы. 4. Блокировка в канале: горутина приостанавливается, ожидая отправки или получения данных через канал. 5. sync.Mutex: горутина блокируется при вызове Lock(), ожидая освобождения мьютекса. 6. context.Context: приостанавливает горутину, слушающую канал Done(), когда контекст отменяется.

💬 Как создать байтовый срез на Go, не обнуляя его байтовые элементы? До версии Go 1.21 этого добиться было невозможно, даже небезопасными способами. Начиная с Go 1.21, реализация strings.Builder.Grow вызывает внутреннюю функцию bytealg.MakeNoZero вместо встроенной функции make, которую вызывала старая реализация. В большинстве случаев встроенная функция make обнуляет элементы результирующего среза, поэтому она часто сравнительно медленнее. С реализацией версии 1.21+ у нас появилась возможность создавать байтовые срезы без инициализации их элементов нулем (хотя для достижения этой функциональности требуется использование функций unsafe)

import (
 "strings"
 "unsafe"
)

func MakeDirtyByteSlice(n int) []byte {
 var b strings.Builder
 b.Grow(n)
 var p = unsafe.StringData(b.String())
 return unsafe.Slice(p, n)
}