Библиотека Go для собеса | вопросы с собеседований
6.86K subscribers
247 photos
9 videos
1 file
537 links
Вопросы с собеседований по Go и ответы на них.

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

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

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

Наши каналы: https://t.iss.one/proglibrary/9197
Download Telegram
Почему изоляция транзакции Serializable снижает производительность и когда его стоит применять

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот!

Кто нужен?
Senior ML-Engineer с опытом работы более 6 месяцев в FAANG компаниях. Требование: разработать кросс-платформенное приложение-трекер зарплат с AI-распознаванием вакансий по резюме.


Но если вы пока джун — я бы предложил:

- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях
- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL

🔗 Старт 9 сентября
🥱32
Что такое алгоритм Round Robin и где он применяется

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

Каждый процесс получает фиксированное время (квант времени), после чего он возвращается в конец очереди, если он не завершил выполнение.

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3👍1
Иногда реально ощущение, что нас держат в Матрице.

Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.

Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.

Кто готов вырваться из симуляции и ворваться в сезон найма?

👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно

👉 Забронируй место сейчас
Как вам вопросы прошедшей недели

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

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥4🥱3
Как зависит производительность алгоритма Round Robin от величины кванта времени

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Что произойдёт при попытке присвоить значение переменной, если она уже была объявлена ранее с использованием оператора :=

Попытка использовать := для переменной, которая уже была объявлена в текущей области видимости, приведёт к ошибке компиляции.

a := 5
a := 10 // Ошибка компиляции: переменная 'a' уже объявлена


Для повторного присваивания значений переменной нужно использовать просто = без :=, если переменная была уже объявлена.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что такое Starvation в многозадачной системе

Starvation (голодание) — это состояние в многозадачной системе, когда один или несколько процессов или горутин не могут получить доступ к необходимым ресурсам из-за того, что другие процессы имеют более высокий приоритет или постоянно захватывают эти ресурсы.

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

Примеры:

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

• Если несколько горутин постоянно захватывают мьютекс или каналы, а другие горутины не могут их освободить, это может привести к голоданию. Например, одна горутина может блокировать доступ к общим данным, в то время как другие горутины пытаются захватить этот ресурс, но не могут этого сделать.

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

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

Пример с использованием unsafe:
package main

import (
"fmt"
"reflect"
"unsafe"
)

func main() {
s := "hello"
strHeader := (*reflect.StringHeader)(unsafe.Pointer(&s))
ptr := unsafe.Pointer(strHeader.Data)
for i := 0; i < len(s); i++ {
b := *(*byte)(unsafe.Pointer(uintptr(ptr) + uintptr(i)))
fmt.Printf("Byte %d: %c, address = %p\n", i, b, unsafe.Pointer(uintptr(ptr)+uintptr(i)))
}
}


🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
2👏1
Что такое волшебное (магическое) число

Волшебное число — это число, которое захардкожено в программе и не имеет комментариев к его использованию.

Пример:
// Плохой вариант с волшебным числом
if statusCode == 200 {
// Выполняем код
}

// Хороший вариант с именованной константой
const OK = 200
if statusCode == OK {
// Выполняем код
}


🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5
Объясните разницу между безопасным доступом к байтам строки через срез и использованием unsafe

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

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Что такое Escape-последовательность

Escape-последовательности обычно начинаются с символа обратной косой черты (\)специальные символы, управляющие символы или символы, имеющие особое значение.

Примеры:
\n — символ новой строки (Line Feed, LF)
\t — символ табуляции (Tab)
\\ — обратная косая черта
\' — одинарная кавычка
\" — двойная кавычка
\r — возврат каретки (Carriage Return, CR)
\b — удаление предыдущего символа (backspace)
\f — сивол перехода на новую страницу (Form Feed)
\u или \U — Unicode символ (например, \u0041 — для 'A')


🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Как вам вопросы прошедшей недели

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

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4🥱4😢2
Что будет, если использовать пакет из _ импорта?

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

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

Однако сам пакет всё равно будет выполнен, и его инициализация произойдёт.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1
Почему структура struct{ int; string } может быть ключом в мапе, а []byte — нет

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

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

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

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔2
Почему nil-интерфейс может вести себя неожиданно при сравнении с nil

В Go nil-интерфейс не содержит ни значения, ни типа. Он представлен внутренне как структура с двумя полями: type и value. Если оба поля равны nil, то интерфейс считается nil.

Однако поведение может быть неожиданным, когда интерфейс содержит указатель на nil-объект, который реализует интерфейс. В этом случае сам интерфейс не равен nil, потому что поле type заполнено, хотя поле value равно nil.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.

Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».

🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.

Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏

👉 Регистрируйтесь через форму на лендинге
⚡️ Бесплатный вебинар — ИИ-агенты: новая фаза развития AI

24 сентября в 19:00 МСК состоится бесплатный вебинар с Максимом Шаланкиным — Data Science Team Lead в финтех-команде MWS, а познакомиться с ним ближе можно в его тг-канале.

Тема:
«ИИ-агенты: новая фаза развития искусственного интеллекта».


На вебинаре разберёмся, почему агенты — это следующий шаг после ChatGPT, чем они отличаются от обычных моделей и как уже приносят бизнесу ROI до 80%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского.

Подробности рассказываем в гс выше — включай, чтобы не пропустить.
Почему модули пришли на смену GOPATH

Главная проблема GOPATH заключалась в отсутствии контроля версий зависимостей.При использовании GOPATH система собирала проект из тех пакетов, которые уже находились на локальной машине.

Из-за этого разные разработчики могли получать различные версии зависимостей при сборке одного и того же проекта.

Go модули решили эту проблему, введя строгое версионирование. Они фиксируют точные версии всех зависимостей и используют файл go.sum для проверки их целостности.

Благодаря этому любой разработчик получает идентичный набор зависимостей при клонировании проекта.

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