Използвали ли сте моделите Inbox и Outbox?
Golang
Задача: «Пинг-понг с таймаут» Напишете функция pingPong, която: - Стартира две горутини: едната генерира съобщения "ping", другата — "pong". - Горутините трябва да обменят съобщения чрез общ канал строго по ред. - Обменът продължава 3 секунди, след което програмата трябва да приключи (грейсфул спиране). - Използвайте контекст за анулиране с таймаут. - Извеждайте всяко съобщение на екрана заедно с времето (в милисекунди от старта). Примерен очакван изход: 0ms: ping
Проста задача за live coding (базова конкуренция) Условие: Напишете функция fetchAll(urls []string) map[string]string, която за всеки URL изпълнява HTTP GET заявка конкурентно и връща карта, където ключът е URL, а стойността е тялото на отговора (низ). Ако заявката не успее (грешка, не 200), стойността ще бъде празен низ. Ограничения: - Не може да се използват външни библиотеки (само стандартните). - Не може да се променя подписът. - Програмата не трябва да пада при паника в http.Get. Примерен вход: ["[link]" "[link]" "[link]"]
package main import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }
Попълнете слайса с елементи без мьютекс, за да съдържа всички 1000 елемента.
Къде са съхранявани логовете?
Как осигуриха идемпотентността?
Какво да кажете на интервюиращия (ако ви попитат) "Ще използвам работен пул с фиксиран брой работници, канал за задачи и sync.WaitGroup. Работниците ще изпълняват заявките, а таймаутът и анулирането ще се контролират чрез контекста. Резултатите ще събера в буфер, защитен с мьютекс (или чрез отделен канал)." Сега е вашият ред Напишете кода в този чат. Ще го проверя и ще дам обратна връзка. Ако не знаете откъде да започнете, поискайте подсказка. Успех!
Какво е указател и какво ще стане, ако аргументът на функцията е указател?
// всички елементи в slice трябва да са уникални + общо 1000 елемента // програмата не трябва да се блокира излишно заради time.sleep func main() { checkIncrement := map[int]int32{} var data []int for i := 0; i < 1000; i++ { go func() { data = append(data, i) if _, found := checkIncrement[i]; found { fmt.Println(i) panic("дублиращо се увеличение") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }
Каква е разликата между DELETE и TRUNCATE?
Разкажи за блокировките в Postgres.
Чувал ли си за разпределено проследяване?
Как използвахте Redis?
Разкажи ми за последния ти проект.