Golang
По какви критерии избирате компании, на какво се базирате?
Можем ли да предадем слайс като параметър на функция?
Как задачите идват в работата? Разкажи ми за този процес.
Разкажи за базите данни — с какви си работил и с какви работиш сега?
Въпрос за бавната услуга Вземайки пример с създаването на поръчка. Има заявка към услугата и отговор, между тези две действия съхраняваме в аналитиката поръчаните стоки (например за броене на популярността на стоките). Аналитичната услуга понякога работи бавно или тайм-аутва, и ние не успяваме да отговорим навреме, губим поръчки. Какво да направим, за да спрем да губим поръчки и пари? Измислете как да паралелизирате поръчката и аналитиката.
Как се обработват грешките в Go? Каква е разликата между errors.Is и errors.As?
Уточняване на зоната на отговорност: машина на състоянията, Transactional Outbox, оптимистични блокировки
Представете си ситуация: не можете да намерите общ език с тестера във вашия екип, който постоянно 'подкожда' ви. Как ще взаимодействате?
Какви са брокерите на съобщения? Кои знаете? Как се различава RabbitMQ от Kafka?
Какво ще се случи, ако трябва да се откажете от Kafka и да я замените с друг брокер на съобщения? Как да изолирате Kafka от външните услуги?
Как протича процесът на пускане? Как премина последният пуск с вашето участие?
Какво трябва да се направи, за да започне да работи REST API сървърът (репозитория с код) в Kubernetes?
Разкажи за graceful shutdown: какво е, какво се случва при него, как се извиква? Какви процеси изпълнява услугата в Kubernetes след получаване на SIGTERM?
Къде според вас започва highload? Каква е границата между highload и не-highload?
Имаш услуга, която създава много goroutines. Как бихте ограничили броя на едновременно работещите goroutines?
Какво е системно повикване (syscall)?
Разкажете повече за проектите на Go
Кое от следните е най-вероятно да се случи при опит за стартиране на много голям брой горутини (например, десетки хиляди) без допълнителен контрол? - Основният проблем ще бъде блокирането на глобалния mutex в рамката, което ще доведе до пълно спиране на изпълнението на програмата - Планировчикът на Go ще изпълнява горутините на малки групи последователно, така че увеличаването на техния брой почти не влияе върху използването на паметта - Масовото създаване на горутини може да доведе до значително използване на памет и допълнителни разходи за планировчика; в такива случаи е подходящ пул от работници - Ако броят на горутините надвиши броя на логическите процесори, Go автоматично ще започне да отказва нови стартирания на горутини с паника
Разкажи за Kubernetes — какво е, как се различава от Docker, какви са основните му компоненти?
Как е организиран каналът под капака в Go?