Необходимо да се проектира архитектурата на бекенда за месинджър (Slack, Teams, Mattermost). Изисквания и ограничения: само чатове 1x1, без групови чатове само текстови съобщения, без прикачени файлове услугата е достъпна чрез интернет до 10 000 потребители в системата съобщенията трябва да се доставят бързо, в рамките на няколко секунди трябва да се запази редът на съобщенията, без дублиране трябва да е възможно да се превърта чатът назад, т.е. да се съхраняват съобщенията клиентите са мобилни устройства, тяхното проектиране не е необходимо проектирането на удостоверяването не е необходимо
Golang
Напишете SQL заявка за показване на автори, които имат повече от 10 книги (таблици: автори, книги, връзка много към много)
Какво е същността Service в Kubernetes?
Колко години търговски опит имате в разработката с Go?
Разкажи за интересна/сложна техническа задача, която си решил
Имаме база данни с пароли на потребители, паролите са хеширани (функция 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() {
пакет главен импортиране ( "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("Всички тестове преминаха успешно") } }
Кои HTTP методи съществуват? Кои от тях са идемпотентни?
Как ще протича процесът на изпращане и получаване на съобщения между двама клиента? Опишете пълния поток.
Преглед на код: кеш в Go с мьютекс. Намерете проблеми и предложете подобрения. Условие: натоварване четене/запис 80/20.
С кои бази данни работихте най-тясно?
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 хеш, съставена от символи от дадения алфавит.
Как да реализираме graceful shutdown на Go услуга в Kubernetes при разгръщане на нова версия?
Опишете структурата на HTTP заявка и отговор. Как се класифицират кодовете за отговор?
Какви таблици и полета са необходими в базата данни PostgreSQL за този месинджър?
Защо разглеждате нови предложения? Активно или пасивно търсене?
Какво искаш сега — какви са очакванията ти за новата работа?
Какво беше най-трудното и най-интересното при преминаването от монолит към микросервизи?
Какво означава, когато процесът в топ показва 150% CPU? Това нормално ли е?
Как клиентът разбира за съобщенията, получени докато беше офлайн?