Перейти к содержимому

Yadro / Ядро - Рекомендованные вопросы

  • Какие технологические преимущества экосистемы Go вы можете назвать? go/stdlib-tooling
  • Какие технологические недостатки языка Go вы можете назвать? go/stdlib-tooling
  • Что вас огорчает в системе типов Go? go/basics
  • Почему на Go практически не пишут расширений для других языков и динамических библиотек? go/stdlib-tooling
  • Go - императивный или декларативный? А в чем разница? go/stdlib-tooling
  • Что такое thread pool, какого он размера и зачем он нужен? go/concurrency
  • Каковы функции шедулера? go/runtime
  • Что происходит, когда вы отправляете данные из горутины в сетевое соединение? go/concurrency
  • Почему треды в Go - легковесные? go/stdlib-tooling
  • Какие средства обобщенного программирования есть в Go? go/basics
  • Почему встраивание - не наследование? go/interfaces
  • Что такое тип-сумма и как ее реализовать на Go? go/basics
  • Как соблюдать SOLID при программировании на Go? architecture/principles
  • Что значит «A little copying is better than a little dependency»? go/basics
  • Главная проблема производительности современной компьютерной системы? misc/general
  • Как сообщить компилятору, что наш тип реализует интерфейс? go/interfaces
  • Что такое type switch? go/interfaces
  • Почему иногда говорят, что в Go nil имеет тип? go/stdlib-tooling
  • Как получить переменную, которая не-nil, но nil? go/interfaces
  • Как устроен тип map? go/maps
  • Какая функция используется для хеширования в map? go/maps
  • Что может быть ключем в map? go/maps
  • Каков порядок перебора map? go/maps
  • Модификация значений мапы в цикле for range - что будет? go/maps
  • Что выведет и почему? https://go.dev/play/p/xGfhfL2QwOW go/puzzles
  • Что такое sync.Map? go/sync
  • Как устроена map в смысле computer science? сложность? как достигается константная скорость? как разложить хеши в ограничьенном пространстве? что с коллизиями и какая получится скорость в худшем случае? algorithms/complexity
  • Что такое канал? go/channels
  • zero-value канала? go/channels
  • Что будет, если читать/писать nil-канал? go/channels
  • Что будет, если читать из закрытого канала? go/channels
  • Что будет, если писать в закрытый канал? go/channels
  • Как читать из канала и не блокироваться? go/channels
  • Какая разница между небуферизованным каналом и буфер.каналом емкостью 1 go/channels
  • За счет чего обеспечивается потокобезопасность каналов? linux-os/processes
  • Как читать из несколько каналов и не блокироваться, пока хоть в одном есть данные? go/channels
  • В каком порядке отрабатывают case? go/channels
  • Что произойдет в select, если один из каналов закроется? go/channels
  • Как отбросить закрытые каналы? go/channels
  • Написать код слияния данных из двух каналов в третий (возможны два варианта: с селектом или с отдельными го-рутинами) go/channels
  • Написать код слияния данных из N каналов в (N+1)-ый (возможны два варианта: с селектом или с отдельными го-рутинами) go/channels
  • Какие типы мьютексов предоставляет stdlib? go/sync
  • Что именно защищает мьютекс? go/sync
  • сколько R и W локов можно взять от sync.RWMutex одновременно? go/sync
  • Что будет, если попытаться взять Lock, не отпустив RUnlock? sql/transactions
  • Зачем нужны atomic? go/sync
  • Почему интенсивная конкурентная модификация atomic приводит к заметному снижению производительности на многопроцессорных системах? go/sync
  • Какие еще примитивы синхронизации знаете? go/sync
  • Что такое рейс-кондишн? go/concurrency
  • Как бороться? go/concurrency
  • Что такое дедлок? Как бороться со случившимся дедлоком? Как не допустить дедлок? go/sync
  • Как запустить N задач в параллель в Go? go/concurrency
  • В какой момент запустится горутина? go/concurrency
  • Как подождать их выполнения? go/sync
  • С помощью wait group - что произойдет, если сделать wg.Add(1) внутри каждой горутины, а не перед их запуском? go/concurrency
  • Как получить результаты из горутин? go/concurrency
  • Как поймать их ошибки выполнения, если есть? go/errors-panic
  • Что такое контекст? Для чего используется? go/context
  • С какими способами взаимодействия между сервисами вы сталкивались? architecture/microservices
  • Что такое protobuf? network/grpc
  • Какой инструментарий для работы с протобуфами вы использовали? network/grpc
  • Что такое GRPC, OpenAPI? Их особенности. Ваши критерии выбора между ними. network/grpc
  • Что такое OpenAPI, REST, Swagger? network/http
  • Как решать проблемы backward compatibility openAPI? network/http
  • Какие REST-овые методы знаете? В чем между ними разница? Можно ли сделать так, что GET будет делать DELETE, а POST будет делать PUT? network/http
  • Что такое gRPC? network/grpc
  • Коммитить или не коммитить код в репозиторий? git/general
  • Как решать проблемы backward comptibility gRPC API? network/grpc
  • Что такое ошибки в Go, как обрабатывать ошибки в Go? go/errors-panic
  • Как писать свои ошибки в Go go/errors-panic
  • Предположим, ваша функция должна возвращать детализированные Recoverable и Fatal ошибки. как это реализовано в пакете net? как это надо делать в современном Go? go/errors-panic
  • Как встроить стандартный профайлер в свое приложение? go/perf-profiling
  • Overhead от стандартного профайлера? go/perf-profiling
  • Какие-то стандарты знаете для метрик? devops/observability
  • Какова идеальная структура проекта на Go по вашему опыту hr-behavioral/about-you
  • Как вы применяете пакеты internal? go/stdlib-tooling
  • Где следует поместить описание интерфейса и почему? go/interfaces
  • Ваш любимый способ делать dependency injection? architecture/principles
  • Какой у вас любимый линтер? go/stdlib-tooling
  • Что такое lock-frее структуры данных, и есть ли в Go такие? algorithms/data-structures
  • Как вы реализуете LRU cache на Go? algorithms/data-structures
  • Как вы отсортируете массив структур по алфавиту по полю Name? go/slices-arrays
  • Удалить дубликаты из массива без переаллокации - можно ли? go/slices-arrays
  • У нас есть таблица с bigint primary key. Мы добавляем записи в таблицу и удаляем их оттуда случайным образом. Вопрос: как найти первый незанятый индекс в этой таблице? sql/indexes
  • Что такое сериализация? Зачем она нужна? go/stdlib-tooling
  • У вас есть кривой json с плавающим типом полей. Как написать десериализатор? go/stdlib-tooling
  • В чем польза от sync.Pool? go/sync
  • Если сериализация медленная, то что делать? go/perf-profiling
  • Какими пользовался GIT сервисами? git/general
  • Что такое Git? git/general
  • Как пользовался Git-ом? (через IDE, с помощью UI, с помощью CLI) git/general
  • Чем отличаются коммит, ветка, тэг? git/general
  • Какие бывают тэги? go/structs-methods
  • Что значит «fast-forward merge»? git/general
  • Что такое конфликт, когда он образуется, что делать, если он возник? hr-behavioral/teamwork
  • Что такое rebase? Чем отличается от merge? Зачем нужен rebase и какие подводные камни? git/general
  • Что такое submodule? Зачем нужны, как с ними работать? git/general
  • Какой любимый flow разработки? Структура веток, правила, соглашения …Личный опыт. go/structs-methods
  • Пользовался Jira или аналогами? Насколько активно? hr-behavioral/general
  • Пользовался Jenkins или аналогами? Насколько глубоко? devops/ci-cd
  • Назовите 10 трехбуквенных команд в Linux. linux-os/shell
  • Как отлистать процессы? linux-os/processes
  • Как посмотреть потребление каких-нибудь ресуров? linux-os/processes
  • Что такое proc-fs? sys-fs? linux-os/filesystem
  • Что такое initrd? linux-os/general
  • Как устроена в общих чертах файловая система в Linux? Что такое inode? linux-os/filesystem
  • Чем отличается hard link от symbolic link? Что будет с файлом, если удалить hard link? symlink? linux-os/filesystem
  • Что можете рассказать о file permissions в Linux? (chmod, suid, sgid, sticky bit, ACL, etc.) linux-os/filesystem
  • Что означают разрешения 0764 для файла? linux-os/filesystem
  • Можно ли удалить файл с разрешениями 0644, которым владeeт root, от имени другого пользователя (естественно без sudo/su)? linux-os/filesystem
  • Как убить сервис? что делает команда kill? linux-os/processes
  • Чем отличаются сигналы, какие можно перехватить? linux-os/processes
  • Когда процесс может не реагировать на SIGKILL? linux-os/processes
  • Что такое zombie и orphan? linux-os/processes
  • Зачем может понадобиться вызвать fork два раза подряд? linux-os/processes
  • Как дебажить зависшую программу (в топе висит, на вызовы не рeaгирует, CPU потребляет)? linux-os/processes
  • Причины высокого потребление памяти? go/memory-gc
  • Что можете сказать про perf, eBPF, tcpdump? devops/observability
  • Как запустить сервис (при старте, периодически, вместе с другим сервисом) linux-os/general
  • Как посмотреть что-то про сетку в Linux? linux-os/general
  • Что выводит команда ip? network/general
  • Какие бывают сетевые девайсы в Linux? network/general