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