❓Что делает инструмент go vet?
Это инструмент для статического анализа кода в Go, который помогает обнаружить потенциальные ошибки, такие как неправильное использование форматов в fmt.Printf, неиспользуемые переменные или параметры, проблемы с указателями и возможные ошибки, которые могут повлиять на выполнение программы. 
👍14❤3
  ❓Какие стандартные инструменты для сортировки предоставляет пакет sort в Go?
В пакете sort Go предоставляет несколько встроенных функций для сортировки стандартных типов данных. Например, sort.Ints используется для сортировки слайсов целых чисел, sort.Strings — для сортировки строк, а sort.Float64s — для чисел с плавающей запятой.
❓А если требуется сортировка не только чисел и строк, а пользовательских структур? 
Если требуется кастомная сортировка, пакет предлагает интерфейс sort.Interface. Для его использования нужно реализовать три метода: Len, который возвращает длину слайса, Less для определения порядка элементов и Swap для их перестановки. Это позволяет гибко задавать правила сортировки, например, для структур или сложных типов данных. 
❓А если требуется сортировка не только чисел и строк, а пользовательских структур?
👍19
  ❓Массив и срез в Go это одно и то же? Почему?
Нет, массив и срез в Go — это разные структуры. 
Массив: имеет фиксированный размер, который является частью его типа ([5]int), и не может изменяться. 
Срез: это динамическая структура, которая ссылается на базовый массив, поддерживает изменение размера и удобнее для работы с данными. 
🥱29👍6
  Преимущества:
Сценарии, где это полезно:
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍18
  go clean -cache
Это удалит все закэшированные данные, включая кэш для go run, освобождая место на диске.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍20🌚5
  ❓Что такое Escape Analysis?
Escape Analysis (анализ утечки) — это процесс, который компилятор Go использует, чтобы определить, где должны быть размещены переменные: в стеке или в куче. 
⚙️ Если переменная не «выходит» за пределы области видимости функции, компилятор размещает её в стеке. Это быстрее и дешевле, поскольку стек управляется автоматически, и память освобождается при выходе из функции. 
⚙️ Если переменная выходит за пределы области видимости функции, она размещается в куче. Это необходимо, чтобы гарантировать её доступность в других частях программы, но работа с кучей более затратна (например, требуется garbage collector). 
👍17
  ❓ Что конкретно проверяет Escape Analysis?
Go выполняет анализ утечки во время компиляции. Компилятор проверяет, может ли ссылка на переменную: 
✅ Возвращаться из функции. 
✅Использоваться в других goroutines. 
✅Передаваться в функцию, которая сохраняет её для последующего использования. 
Если хотя бы одно из этих условий выполняется, переменная размещается в куче. 
👍9
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍12👾2
  🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
  Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❓Что такое холодный и тёплый кэш?
Холодный кэш — это состояние кэша, когда он только начинает наполняться данными. В этом случае при запросе данных часто приходится обращаться к источнику (например, базе данных), так как кэш ещё не заполнен. 
Тёплый кэш— это состояние, когда кэш уже заполнен часто запрашиваемыми данными, и большинство запросов обрабатываются из кэша, что значительно увеличивает производительность. 
😁3👍1
  Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
👍1
  ❓ Какой порядок перебора элементов в map? 
Порядок перебора элементов в map Go неопределён. Это означает, что при каждом вызове for range элементы могут возвращаться в разном порядке 
❓ Почему так?
Использование хэш-таблицы: 
Внутренне map реализована как хэш-таблица. 
Позиция каждого элемента определяется хэш-значением ключа. Хэш-функция распределяет данные по бакетам, и порядок их расположения не сохраняется. 
Случайный seed:
При запуске программы Go устанавливает случайный seed для хэш-функции. Это означает, что даже для одной и той же структуры данных порядок обхода map может различаться между разными запусками программы. 
❓ Почему так?
Случайный seed:
🙏8🔥4❤3
  ❓Как избежать проблем с устаревшими данными в кэше?
Для предотвращения устаревания данных в кеше можно использовать следующие подходы: 
✅ TTL (Time-To-Live): Устанавливать срок жизни данных, после чего они автоматически удаляются. 
✅ Invalidate on Write: Удалять или обновлять кеш при изменении данных в источнике. 
✅ Background Refresh: Периодически обновлять данные в кеше с помощью фонового процесса. 
✅ Cache Busting: Использовать версионирование ключей кеша, чтобы автоматически использовать актуальные данные. 
👍7
  ❓В какой момент Go устанавливает случайный seed для map?
  Anonymous Quiz
    28%
    При создании каждой новой map
      
    51%
    Один раз при старте программы
      
    15%
    Перед каждой итерацией range
      
    6%
    При каждом доступе к элементу map
      
    ❓Что такое Compare-And-Swap (CAS)?
Это атомарная операция, широко используемая в многопоточном программировании для синхронизации доступа к общим данным без использования блокировок. Она обеспечивает механизм обновления значения переменной только если её текущее значение соответствует ожидаемому. 
👍11❤1
  ❓ Что такое «кеш-пробивка» (cache penetration) и как с этим бороться?
Кеш-пробивка — это ситуация, когда запросы приходят на данные, которых нет в кеше и никогда не будет, например, для несуществующих идентификаторов. Такие запросы всегда попадают в базу данных, перегружая ее. 
❓ Как с этим бороться?
Занесение пустых значений: если данные отсутствуют, сохранять в кеше пустое значение с коротким TTL. 
Блокировка запросов: использовать блокировку (mutex), чтобы один поток обрабатывал запрос, а остальные ждали результат. 
Предварительная фильтрация: проверять валидность запросов до обращения к кешу. 
❓ Как с этим бороться?
🤔6👍2❤1
  ❓Чем отличаются Lock-Free и Wait-Free алгоритмы?
Lock-Free алгоритмы: 
➖Гарантируют, что хотя бы один поток завершит операцию за конечное время. 
➖Возможны случаи, когда некоторые потоки остаются в состоянии постоянных повторных ➖попыток. 
➖Обеспечивают высокий уровень производительности и простоты реализации. 
Wait-Free алгоритмы: 
➖Гарантируют, что каждый поток завершит операцию за конечное время. 
➖Обычно сложнее в реализации и менее производительны из-за необходимости более сложной координации между потоками. 
➖Используются там, где важно обеспечить равноправие (fairness). 
👍5❤1🔥1😢1
  ❓Что такое трэшинг? (В контексте кэширования)
Трэшинг — это состояние, когда кэш постоянно вытесняется новыми данными, из-за чего система вынуждена часто обращаться к основному источнику данных (например, к базе данных). Это приводит к значительному снижению производительности, так как теряется основная цель кэширования — ускорение доступа к часто используемой информации. 
👍16
  ❓Способы борьбы с трэшингом
➖ Увеличение размера кэша: выделить больше памяти для хранения данных.
 ➖ Оптимизация алгоритма замещения: использовать эффективные алгоритмы, такие как:
LRU (Least Recently Used): замещает данные, которые не использовались дольше всего.
LFU (Least Frequently Used): удаляет данные, которые реже всего запрашиваются.
 ➖ Категоризация кэша: разделить данные на сегменты для разных типов запросов, чтобы снизить конкуренцию.
 ➖ Фильтрация данных: исключить из кэша редко запрашиваемую или устаревшую информацию.
 ➖ Многоуровневое кэширование: организовать кэширование на нескольких уровнях:
Локальный кэш (в памяти приложения).
Распределённый кэш (например, Redis, Memcached).
 ➖ Предварительное заполнение кэша: использовать pre-warming для загрузки часто запрашиваемых данных при запуске системы. 
LRU (Least Recently Used): замещает данные, которые не использовались дольше всего.
LFU (Least Frequently Used): удаляет данные, которые реже всего запрашиваются.
Локальный кэш (в памяти приложения).
Распределённый кэш (например, Redis, Memcached).
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍8
  ❓Какие механизмы используются для предотвращения бесконечных повторных попыток (spinlocks) в Lock-Free алгоритмах?
Для предотвращения бесконечных попыток используются: 
➖ Экспоненциальный бэкофф: поток ждёт случайный интервал времени перед следующей попыткой CAS, постепенно увеличивая задержку. Это снижает нагрузку на процессор. 
➖ Адаптивные алгоритмы: используют метрики системы, такие как нагрузка на процессор, чтобы регулировать поведение потоков. 
➖ Алгоритмы с ограничением времени ожидания (timed wait): если после определённого количества попыток CAS не удаётся, поток может прекратить выполнение или использовать fallback-метод. 
➖ Смешанный подход (Hybrid Locking): Использование мьютексов или других методов синхронизации как резервного механизма, если CAS не удаётся. 
❤🔥3👍1
  ❓ Что такое ABA-проблема в контексте Compare and Swap операций?
ABA-проблема — это ситуация, которая возникает при использовании операции Compare-And-Swap (CAS) в многопоточном программировании. Она связана с тем, что значение переменной изменяется с A на B, а затем снова на A. CAS не может определить, что значение изменялось между этими состояниями, и считает, что оно не изменилось. 
❤7😁3