#клируэй #техничка
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, "как да разположим бинарник на сървър"? След като билднете кода, какво трябва да се направи, за да стартира този сервис при стартиране на ОС?