Как работает map под капотом в новых версиях Go, что изменилось?
В новых версиях Go (начиная с Go 1.9 и далее) внутреннее устройство map было значительно улучшено для повышения производительности и уменьшения фрагментации памяти.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
В новых версиях Go (начиная с Go 1.9 и далее) внутреннее устройство map было значительно улучшено для повышения производительности и уменьшения фрагментации памяти.
Читать ответПри реализации кэша на Go с использованием мьютекса под нагрузку чтения/записи 80/20 основная проблема — блокировка всех операций чтения и записи одним мьютексом, что снижает производительность при частых чтениях.
Читать ответВ планировщике Go (Golang) используются несколько разновидностей очередей для управления горутинами (goroutines):
Читать ответНовые горутины в Go создаются с помощью ключевого слова go, за которым следует вызов функции или метода. Это происходит в том месте программы, где написан оператор go. Например:
Читать ответЭтот подход называется "закрытие канала" (channel closing) в Go. Когда канал закрывается с помощью close(ch), это сигнализирует получателям, что больше значений не будет.
Читать ответВ Go тип переменной в среде выполнения можно проверить несколькими способами:
Читать ответВысокая частота коллизий в структуре данных Map (например, хеш-таблице) негативно влияет на производительность, так как несколько ключей попадают в одну и ту же корзину (bucket).
Читать ответВ Go аргументы функций передаются по значению, то есть копируются. Если передать структуру значением, то внутри функции будет работать копия этой структуры, и изменения полей не повлияют на оригинал.
Читать ответepoll — это механизм в Linux для эффективного мониторинга множества файловых дескрипторов на предмет событий ввода-вывода (например, готовность к чтению или записи).
Читать ответВ Go контексты (context.Context) устроены так, что можно создавать иерархию контекстов, где дочерний контекст наследует значения и отмену от родительского.
Читать ответSyscall (системный вызов) — это механизм, с помощью которого программа запрашивает услуги операционной системы, например, операции ввода-вывода, управление процессами, работу с файлами и т.д.
Читать ответВ Go дженерики появились относительно недавно и пока уступают по функциональности таким языкам, как C#. Основные ограничения и чего не хватает в дженериках Go по сравнению с C#:
Читать ответ