Има ли някакви затруднения с използването на външно хранилище? И, да речем, може ли да имаме няколко инстанции на едно и също приложение? Какво може да се случи в този случай?
Golang
Използвали ли сте брокери на съобщения в работата си?
Защо грешките не се връщат в метода Process? Трябва да се коригира и да се изпрати напълно работещ код.
Каква е разликата между релационните бази данни и NoSQL?
Какви са каналите в Go и операторът select?
Какви други структури се използват за индекси в базите данни освен B-дервото?
Каква посока или проект ви беше възложен в момента във вашата текуща организация?
Какво е указател и колко тежи?
Може ли да се използва контекст за прехвърляне на данни между компоненти или функции?
Каква е разликата между процес и нишка?
Какво е race condition и какви са начините за защита от него?
Каква е разликата между горутина и нишка на операционната система?
Какво е канал в Go и какви са основните му области на приложение?
Актуализациите на документи постъпват в услугата message Document { string Url = 1; // URL на документа, неговият уникален идентификатор uint64 PubDate = 2; // обявеното време за публикуване на документа uint64 FetchTime = 3; // времето на получаване на тази актуализация на документа, може да се счита за идентификатор на версия. Пара (Url, FetchTime) е уникална. string Text = 4; // текстът на документа uint64 FirstFetchTime = 5; // първоначално липсва, трябва да се попълни } Документите могат да пристигат в произволен ред (не в реда, в който са били актуализирани), и може да има дублиращи се съобщения. Необходимо е на изхода да се формират същите съобщения, но с коригирани полета според следните правила (всичко по-долу важи за група документи със същото поле Url): Полето Text и FetchTime трябва да са такива, каквито са в документа с най-голям FetchTime, получен досега. Полето PubDate трябва да е такова, каквото е в съобщението с най-малък FetchTime. Полето FirstFetchTime трябва да е равно на минималната стойност на FetchTime. Тоест, във всеки момент взимаме PubDate и FirstFetchTime от първата версия, получена досега (ако ги сортираме по FetchTime), а Text - от последната. Интерфейсът в кода може да бъде реализиран така: type Processor interface { Process(doc *Document) (*Document, error) } Този код ще работи в услуга, която чете съобщения от опашка (Kafka или подобна), и също така записва резултата в опашката. Ако Process връща Null, нищо не се записва в опашката.
Какво е итерация върху низ чрез for range в Go? Какви са променливите i и v вътре в цикъла, какви са техните типове данни?
Как да използвате select за работа с няколко канала едновременно?
Какви са пробите (probes) в Kubernetes, как да ги настроите и какви видове има?
Разкажете за практическия си опит с каналите в Go — как ги използвахте на практика?
Какво още, освен мютекс, може да се използва за защита срещу race condition?
/* Дадена е низ, съдържащ символите (){}. Трябва да се определи дали входният низ е балансиран по отношение на скобите. */ func isBalanced(s string) bool { // TODO: реализирайте това return false } fmt.Println(isBalanced("()")) // -> true fmt.Println(isBalanced("({()})")) // -> true fmt.Println(isBalanced("(()")) // -> false fmt.Println(isBalanced("(()))")) // -> false fmt.Println(isBalanced("({})")) // -> false