Как влияе GOGC върху производителността на услугата? Какво е STW и как влияе на латентността?
Golang
Ако услугата връща грешка 500, как ще се справите с проблема?
Опишете процеса на компилиране на Go програма: какво се случва при изпълнение на go build?
Запознати ли сте с модела MVCC?
Защо течовете на горутините се считат за по-критични от класическите течове на паметта по отношение на въздействието върху изпълнението?
Използвате ли TDD? Как покривате кода си с тестове?
Как безопасно да се обръщате към участък от паметта от няколко горутини? Кога да използвате мьютекси, а кога атомици?
Опишете процеса на анализ и оптимизация на дълъг SQL заявка.
Какви са горутините в Go? Как работи планировчикът на Go (модел GMP)?
#клируэй #техничка 1. Какво е впечатляващото в Go? - горутините и планировчикът, който позволява да работите без да мислите за това как работи с конкурентността. 2. Какви недостатъци виждате в Go? - обработката на грешки 3. Как стигнахте до Go? 4. Какво осигурява лекотата в Go и защо гошните потоци се превключват по-бързо? Защо в ОС не можеше да се направи същото? 5. Какво жертваме, когато вместо ОС потоци използваме горутини? 6. Какво е конкурентност и паралелност? 7. Какво е интерфейсът net.Listener и какви са методите му? 8. Работили ли сте директно с мрежи или чрез рамки и кои? 9. Какво отличава TCP от UDP и какво е това изобщо и за какво се използва? 10. Какви рискове има при използване на TCP и UDP? 11. Какво е bigEndian и LittleEndian? 12. Какво е TLS? 13. Какви са начините за предаване на данни между микросервизи (например команди/заявки/отговори/прехвърляне на файлове)? Какви модели или средства за разработка можем да изберем и какви са нюансите им? 14. Какви са начините за предаване на данни по мрежата и техните плюсове/минуси? 15. С какви СУБД работихте и какви средства използвахте? 16. Каква библиотека използвахте за всяка база данни в гошката? 17. Как се борите, когато базата данни се разраства по време на разработка? 18. В базата данни променихте схемата, полетата, как се решава такъв проблем, за да не се унищожат старите данни? миграции, ако се правят, как и какви са плюсовете/минусите? 19. Как в продукция променяте базата данни? Кой го правеше? 20. Как е по-добре да се направи, за да се абстрахира компонентът за работа с базата данни от цялата основна логика, така че всички тези SQL заявки, като метасистеми, да не се разпиляват по кода? Да се преместят в отделна директория и логика, а горе да се подават интерфейси, за да се обвиват и да не се зависим от конкретна база данни + да се пишат тагове? 21. За какво са нужни индексите и какви са техните минуси? 22. Получих задача: да напиша код - да го поставя в проекта и какво ще правя по отношение на документиране на резултата? 23. Каква документация обикновено използвате и за какво + къде отива тя? Например, какъв е този интерфейс, за какво се използва и т.н.? Имало ли е такава ситуация? 24. Активно ли използвате go doc и има ли такава практика при вас? 25. Имате ли спецификации или ги съпровожда в Markdown? Как ги правите? 26. Какъв е вашият работен поток, от кого идват задачите и какво след това? 27. Колко подробно са описани задачите? Т.е. трябва ли само да влезете или също да помислите архитектурно и да питате някого? 28. Имаме проект с много горутини. Разкажете, какви средства за синхронизация се използват, за да се завършат всички горутини по елегантен и безопасен начин? 29. Къде в проекта използвахте горутини? 30. Колко байта заема интерфейсът, когато го предавате вътре в функция? 31. Какво е httpHandler, какво получава и каква е структурата и какви аргументи и сигнатура има? За какво е нужен и къде се използва? 32. Какво е middleware и как се използва? Как беше при вас в проекта? 33. Какви свойства на езика Go позволяват да се изграждат тези middleware и каква е тази функция, какво приема и какво връща? 34. Имаме функция, която приема функция и след изпълнение стартира горутина и прави callback, а ние подаваме метод на структура, който също не приема нищо и не връща - ще има ли грешка при компилация или нещо друго? Т.е. сигнатурата й е празна, и имаме някакъв метод, който изисква такъв тип функция, а вместо да подадем чиста функция, подаваме метод, т.е. обект.функция. 35. Има функция, която приема int32, а ние се опитваме да подадем int16, какво ще се случи и на какъв етап? 36. Колко байта заема в паметта слайс на amd64 например? 24 байта, а данните не се предават във функцията? 37. Как може да реализирате множество в Golang и какви са разликите и нюансите? 38. Какво е UUID и беше ли използван при вас в проекта, къде и с коя библиотека? 39. Имаш мап с 1 000 000 елемента, какво ще се случи, ако добавим още 1 елемент? Какви сценарии са възможни и как ще се промени скоростта на достъп до данните? 41. Използвали ли сте Docker (контейнери/подове)? И какви други услуги имаше преди Docker, "как да разположим бинарник на сървър"? След като билднете кода, какво трябва да се направи, за да стартира този сервис при стартиране на ОС?
Разкажете ни за брокерите на съобщения: какви видове има, как работи Kafka?
Какви са низовете в Go и какви са характеристиките им?
Как работи планировчикът на горутините в Go? Разкажете за GMP модела.
Какво е анализ на escape? В кои случаи обектът отива в купчината?
Защо не може да се поставят индекси на всички колони на таблицата?
Разкажете за вашия опит, всичко, което смятате за необходимо и релевантно за тази позиция.
Разкажете за пакета unsafe в Go. Кога ви помогна в работата?
Как взаимодействаха репликите на услугите в Kubernetes и каква информация споделяха?
С какви нерелационни бази данни сте работили?
Как е структурирана средата за изпълнение на Go?