С какви бази данни сте работили и на какво ниво? Повече подробности за PostgreSQL, Redis, ClickHouse.
Golang
Как в Go да върнете обект от тип error без да използвате пакета errors от стандартната библиотека?
Проектирайте SQL схема за банкова система с таблици за сметки и транзакции. Какви ограничения и индекси са необходими?
Какво се случва след въвеждането на google.com в браузъра и натискането на Enter? Опишете целия процес и участниците.
Къде и как да стартирате функцията cleanup? Как да предадете контекста на rate limiter?
Обяснете структурата на ограничителя на скоростта и функцията Allow. Какви конфигурационни параметри се използват и за какво служат?
Защо избрахте типа NUMERIC(18,2) за amount? Какви алтернативи съществуват и какъв е проблемът с DOUBLE PRECISION?
Каква е разликата между TCP и UDP? Къде се използва всеки от тях?
Коригирайте реализацията на cleanup, като използвате обикновен цикъл for вместо range. Обяснете финалната логика на почистване.
Има ли микросервис за изтриване на средства от баланса на потребителя? При репликация на услугата възниква проблем с race condition. Как да решим този проблем?
Може ли да се гарантира доставката на данни по UDP?
По какъв протокол се изпълнява DNS заявката? Това единственият възможен протокол ли е?
Обяснете вашата реализация на функцията Allow след корекциите. Как се обработва случаят с първия заявка от потребителя?
Как да се избегне проблемът с плаващата точка без използване на NUMERIC? Какъв е алтернативният подход с типа INT?
Предложете модел на статус за транзакциите в платежната обработка. Как работи възстановяването?
Защо е необходим mutex в rate limiter? Може ли да се реши проблемът без mutex, използвайки sync.Map?
Как да организирате фонова горутина за периодично почистване на остарели данни от bucket-овете?
Обяснете процеса на плащане с банкова карта чрез терминал: кои участници са включени и как протича взаимодействието между тях?
Какво е индекс в PostgreSQL? Как работихте с индекси и на какво основание взехте решение за създаване на индекс?
Реализирайте логиката на функцията Allow за ограничителя на скоростта. Как ще следите събитията и ще проверявате лимитите?