Sobes.tech

Необходимо да се проектира архитектурата на бекенда за месинджър (Slack, Teams, Mattermost). Изисквания и ограничения: само чатове 1x1, без групови чатове само текстови съобщения, без прикачени файлове услугата е достъпна чрез интернет до 10 000 потребители в системата съобщенията трябва да се доставят бързо, в рамките на няколко секунди трябва да се запази редът на съобщенията, без дублиране трябва да е възможно да се превърта чатът назад, т.е. да се съхраняват съобщенията клиентите са мобилни устройства, тяхното проектиране не е необходимо проектирането на удостоверяването не е необходимо

180

Напишете SQL заявка за показване на автори, които имат повече от 10 книги (таблици: автори, книги, връзка много към много)

179

Колко години търговски опит имате в разработката с Go?

175

Разкажи за интересна/сложна техническа задача, която си решил

173

Имаме база данни с пароли на потребители, паролите са хеширани (функция hashPassword), и също така е известен наборът от символи, които могат да се използват в паролите (променливата alphabet). Нашата задача е да реализираме функцията RecoverPassword така, че да възстанови паролата по известния хеш и TestRecoverPassword да завърши успешно. Основни изисквания: Може да се използва всякакъв метод package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecoverPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() {

171

пакет главен импортиране ( "crypto/md5" "fmt" ) var азбучен = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func ВъзстановяванеНаПарола(h []byte) string { return "" } func хешПарола(вход string) []byte { h := md5.Sum([]byte(вход)) return h[:] } func main() { тестове := []string{"a", "12", "abc333d"} ok := true for _, очаквано := range тестове { h := хешПарола(очаквано) активно := ВъзстановяванеНаПарола(h) if активно != очаквано { fmt.Printf("Грешка: очакваше %q, получи %q\n", очаквано, активно) ok = false } } if ok { fmt.Println("Всички тестове преминаха успешно") } }

170

Кои HTTP методи съществуват? Кои от тях са идемпотентни?

169

Как ще протича процесът на изпращане и получаване на съобщения между двама клиента? Опишете пълния поток.

169

Преглед на код: кеш в Go с мьютекс. Намерете проблеми и предложете подобрения. Условие: натоварване четене/запис 80/20.

166

С кои бази данни работихте най-тясно?

165

package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func VъзстановяванеНаПарола(h []byte) string { return "" } func hashПарола(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashПарола(exp) act := VъзстановяванеНаПарола(h) if act != exp { fmt.Printf("Грешка: очаквано %q, получено %q\n", exp, act) ok = false } } if ok { fmt.Println("Всички тестове преминаха успешно") } } За правилното изпълнение на кода: входна точка -- функция main в пакета main Задача: Реализирайте функцията VъзстановяванеНаПарола, която възстановява оригиналната парола по MD5 хеш, съставена от символи от дадения алфавит.

164

Как да реализираме graceful shutdown на Go услуга в Kubernetes при разгръщане на нова версия?

163

Опишете структурата на HTTP заявка и отговор. Как се класифицират кодовете за отговор?

162

Какви таблици и полета са необходими в базата данни PostgreSQL за този месинджър?

159

Защо разглеждате нови предложения? Активно или пасивно търсене?

157

Какво искаш сега — какви са очакванията ти за новата работа?

157

Какво беше най-трудното и най-интересното при преминаването от монолит към микросервизи?

156

Какво означава, когато процесът в топ показва 150% CPU? Това нормално ли е?

154

Как клиентът разбира за съобщенията, получени докато беше офлайн?

151
/4