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

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

Ir al canal en Telegram

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

Mostrar más
7 451
Suscriptores
+524 horas
+137 días
-1530 días
Archivo de publicaciones
Как bytes.FieldsFunc обрабатывает последовательности разделителей Метод bytes.FieldsFunc рассматривает последовательности разделителей как одно место разбиения. То есть, если между двумя разделителями нет других символов, метод не создаст пустой подмассив между ними. Это поведение позволяет эффективно разделять строки, игнорируя лишние разделители. Пример кода:
package main

import (
    "bytes"
    "fmt"
)

func main() {
    input := []byte("apple,,orange,,banana")
    result := bytes.FieldsFunc(input, func(c rune) bool {
        return c == ',' // Разделяем по запятым
    })
    fmt.Println(result) // [[97 112 112 108 101] [] [111 114 97 110 103 101] [] [98 97 110 97]]
}
🐸 Библиотека Go для собеса

Раньше: многоэтапные собеседования и тестовые Сейчас: возможность получить оффер за один день! Сбер зовёт Go-разработчиков на One Day Offer — он пройдёт 21 июня в онлайн-формате. Команда ищет будущих коллег в рекламную платформу SberAds сразу в несколько продуктов: — Медийная реклама — Performance Ads — Инструменты разработки — RTS Регистрируйтесь на One Day Offer и будьте готовы к карьерным изменениям и работой над действительно масштабными задачами!

❗️ Фидбек по прошедшей неделе Оцените их по шкале 🔥,❤️,👍,😢, 🥱, где 🔥 — это супер, а 🥱 — это скучно. Также приветствуются комментарии под постом. 🐸 Библиотека Go для собеса

Как работает iota и зачем он нужен при объявлении констант iota — это встроенная константа в Go, которая используется для создания последовательных значений в блоках констант. Каждый раз, когда iota используется в новой строке внутри блока const, его значение автоматически увеличивается на 1. Это позволяет генерировать последовательности значений для констант без необходимости вручную указывать их. Например, в первой строке в блоке const iota будет равно 0, во второй — 1, в третьей — 2 и так далее. iota особенно полезен при объявлении наборов констант, таких как флаги, индексы или статус-коды, где важно, чтобы значения шли подряд. 🐸 Библиотека Go для собеса

Можно ли использовать константы в switch Да,в Go используют константы в выражениях switch. Это возможно, потому что константы имеют фиксированные значения, известные на этапе компиляции. Поскольку switch в Go работает с конкретными значениями, константы могут быть использованы в case выражениях без проблем, улучшая читаемость и предсказуемость кода. 🐸 Библиотека Go для собеса

😱 Завтра цена на курс «AI-агенты для DS» вырастет Пока вы думаете — другие уже покупают. Что вы теряете, откладывая решение? Как минимум — 10 000 рублей, именно столько вы переплатите завтра. Как максимум — шанс войти в топ-1% дата-сайентистов, которые умеют строить AI-агенты. 🎓 Чему вы научитесь на курсе: — адаптировать LLM под разные предметные области и данные — собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества — строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой Решение за вами. 👉 Купить курс по старой цене

Зачем нужен метод bytes.Trim в Go Метод bytes.Trim в Go удаляет все начальные и конечные байты, которые входят в заданный набор символов, называемый cutset. Он работает с срезами байтов и возвращает новый срез, в котором удалены все символы из cutset с начала и конца исходного среза. Этот метод не изменяет сам исходный срез. Если в cutset указано несколько символов, метод удалит все символы, входящие в этот набор, с границ строки. 🐸 Библиотека Go для собеса

❗️ Пример для предыдущего вопроса У нас есть структура ServerConfig. Она хранит все настройки сервера: хост, порт, флаг использования TLS и таймаут. В функции NewServer мы принимаем срез функций типа Option, который позволяет нам гибко настраивать сервер. Каждая опция — это просто функция. Причём она не меняет сервер напрямую, а принимает на вход его конфигурацию и меняет только нужное поле.
import "fmt"

// Конфигурация структуры
type ServerConfig struct {
  Host    string
  Port    int
  UseTLS  bool
  Timeout int
}

// Тип функции, которая изменяет настройки конфигурации
type Option func(*ServerConfig)

// Новый сервер с конфигурацией по умолчанию
func NewServer(options ...Option) *ServerConfig {
  // Настройки по умолчанию
  config := &ServerConfig{
    Host:    "localhost",
    Port:    8080,
    UseTLS:  false,
    Timeout: 30,
  }

  // Применение всех переданных опций
  for _, option := range options {
    option(config)
  }

  return config
}

// Опция для изменения хоста
func WithHost(host string) Option {
  return func(c *ServerConfig) {
    c.Host = host
  }
}

// Опция для изменения порта
func WithPort(port int) Option {
  return func(c *ServerConfig) {
    c.Port = port
  }
}

// Опция для включения TLS
func WithTLS(enable bool) Option {
  return func(c *ServerConfig) {
    c.UseTLS = enable
  }
}

// Опция для изменения таймаута
func WithTimeout(timeout int) Option {
  return func(c *ServerConfig) {
    c.Timeout = timeout
  }
}

func main() {
  // Создаем сервер с настройками по умолчанию
  server := NewServer()

  // Печатаем настройки сервера
  fmt.Printf("Default server config: %+v\n", server)

  // Создаем сервер с измененными настройками
  customServer := NewServer(
    WithHost("example.com"),
    WithPort(9090),
    WithTLS(true),
    WithTimeout(60),
  )

  // Печатаем новые настройки сервера
  fmt.Printf("Custom server config: %+v\n", customServer)
}

Зачем может понадобиться паттерн функциональных опций Функциональные опции позволяют гибко конфигурировать объект, не перегружая конструктор множеством параметров. Вместо длинной сигнатуры New() с десятком аргументов — часть параметров выносится в функции-опции. Это упрощает читаемость, делает код масштабируемым и помогает не раскрывать внутренние поля структуры. Особенно полезно, когда появляются новые настройки — не нужно менять сигнатуру, достаточно добавить новую опцию. 🐸 Библиотека Go для собеса

Какие инструменты для фаззинг-тестирования поддерживает Go Go предоставляет встроенную поддержку фаззинг-тестирования с версии Go 1.18. Для этого в Go используется пакет testing, который теперь включает в себя поддержку фаззинга через встроенную функцию Fuzz 🐸 Библиотека Go для собеса

VK Weekend Offer: отправьте заявку, пройдите интервью и получите офер! 28–29 июня VK проведёт Weekend Offer для бэкендеров с
VK Weekend Offer: отправьте заявку, пройдите интервью и получите офер! 28–29 июня VK проведёт Weekend Offer для бэкендеров с опытом от трёх лет. Участников со знанием Java, Go, Python или C++ ждут технические собеседования, знакомство с продуктами и, если всё сложится, офер уже в конце выходных. Ребята много лет создают облачные решения, системы рекомендаций и поисковые движки — всё с миллионами пользователей в проде — и сейчас ищут новых коллег. Поэтому оставляйте заявку до 25 июня, чтобы попасть в команду за выходные! Подробности — на сайте.

😡 А вас тоже бесят облачные сервисы? Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить прав
😡 А вас тоже бесят облачные сервисы? Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить правила игры? Мы готовим нечто особенное в мире облачных технологий, но сначала хотим услышать правду от тех, кто реально работает с облаками каждый день. ❓Что мы хотим узнать: — Для чего вы реально используете облако? — Чего катастрофически не хватает прямо сейчас? — Что бесит больше всего? (можно материться) — Как выбираете провайдера — по цене или по любви? — и тому подобное По результатам опроса мы подготовим исследование без маркетингового мусора и вы узнаете, как обстоят дела у коллег. ⚡️Время на опрос: меньше, чем на кофе-брейк. Жмите → https://clc.to/nboYDA

😡 А вас тоже бесят облачные сервисы? Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить прав
😡 А вас тоже бесят облачные сервисы? Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить правила игры? Мы готовим нечто особенное в мире облачных технологий, но сначала хотим услышать правду от тех, кто реально работает с облаками каждый день. ❓Что мы хотим узнать: — Для чего вы реально используете облако? — Чего катастрофически не хватает прямо сейчас? — Что бесит больше всего? (можно материться) — Как выбираете провайдера — по цене или по любви? — и тому подобное По результатам опроса мы подготовим исследование без маркетингового мусора и вы узнаете, как обстоят дела у коллег. ⚡️Время на опрос: меньше, чем на кофе-брейк. Жмите → https://clc.to/nboYDA

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

❗️ Фидбек по прошедшей неделе Оцените их по шкале 🔥,❤️,👍,😢, 🥱, где 🔥 — это супер, а 🥱 — это скучно. Также приветствуются комментарии под постом. 🐸 Библиотека Go для собеса

❗Вакансии «Библиотеки программиста» Привет! Мы ищем контент-менеджеров, которые будут вести наши телеграм-каналы о разработке
Вакансии «Библиотеки программиста» Привет! Мы ищем контент-менеджеров, которые будут вести наши телеграм-каналы о разработке. 👾 Требования: — знать принципы залетающего контента — разбираться в темах, связанных с разработкой Большим плюсом будет навык программирования на каких-либо языках. ✨ Условия: — удаленка — частичная занятость — сдельная оплата в зависимости от количества задач 🔥 Оставляйте отклик, и мы свяжемся с вами: https://forms.gle/o4BZnsQ526JoqsCq9

Где UDP будет предпочтительнее, чем TCP UDP предпочтительнее в приложениях, где важна скорость и минимальная задержка, а потеря некоторых данных не критична. — Видеоконференции и стриминг — где задержка важнее, чем потеря отдельных пакетов. — Онлайн-игры — где важно быстрое обновление состояния игры, а потеря пакетов не всегда влияет на игровой процесс. — VoIP (голосовые вызовы по интернету) — где важно минимизировать задержку в передаче голоса, даже если часть данных потеряется. 🐸 Библиотека Go для собеса

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

🥴 Средний разработчик меняет работу каждые 1,5 года И это не потому, что мы такие непостоянные. Просто рынок показывает свое
🥴 Средний разработчик меняет работу каждые 1,5 года И это не потому, что мы такие непостоянные. Просто рынок показывает свое истинное лицо быстрее, чем успевают напечатать визитки. Поэтому мы собираем инсайды от тех, кто находится в окопах digital-трансформации каждый день. От джуниоров, которые только въезжают в профессию, до сеньоров, повидавших всякого. 😳 О чем говорим откровенно: — Job-hopping и что за этим стоит — Red flags, которые мгновенно убивают мотивацию — Реальные источники вакансий (не те, что рекламируют) — Боль от общения с рекрутерами — Сколько этапов отбора — норма, а сколько — издевательство Когда мы объединим опыт сотен IT-специалистов, получится настоящая карта того, как устроена индустрия. Не по версии HR-отделов, а по версии тех, кто пишет код, тестирует продукты и двигает технологии вперед. 🚀 Участвовать в исследовании → https://clc.to/9aaXVg

Какие типы указателей есть в Go 1. Указатель на тип (*T). Это самый общий тип указателя. Он указывает на значение определенного типа. Например, *int указывает на значение типа int, а *string — на строку. 2. Указатель на массив. Указатели могут быть использованы для работы с массивами. Важно помнить, что при передаче массива в функцию по значению, копируется сам массив, а не ссылка на него. Чтобы избежать копирования, можно использовать указатель на массив. 3. Указатель на срез. Срезы в Go являются динамическими и указывают на массив, поэтому можно работать с ними через указатели. Указатель может быть nil, что означает отсутствие ссылки на значение. 4. Указатель на структуру. В Go структуры могут быть переданы в функции как указатели, чтобы избежать копирования структуры. 5. Указатели на интерфейсы. В Go интерфейсы тоже могут быть указателями, что позволяет работать с интерфейсами, сохраняя возможность изменять данные. 6. Нулевой указатель: Указатели могут быть nil. Это полезно для инициализации указателей, когда они ещё не указывают на какую-либо память. В Go указатели не могут быть арифметическими (например, нельзя просто прибавлять числа к указателю, как в C). Работа с указателями в Go безопасна благодаря сборщику мусора, который управляет памятью. 🐸 Библиотека Go для собеса