Всегда ли наличие индекса — это хорошо? Всегда ли вариант с включённым индексом будет лучше, чем без него?
Какие стратегии инвалидации кэша бывают в Redis? Какие данные кэшировать, какие нет? L1/L2 кэширование.
Какова мотивация перехода? Почему решил выйти на рынок?
Большая таблица с промокодами замедлилась. Как разбираться и что делать?
Расскажите разницу между REST, gRPC и GraphQL.
В чём разница между EXPLAIN и EXPLAIN ANALYZE?
Может ли Go определить дедлок? Как рантайм Go обнаруживает дедлок?
У тебя есть большой файл с миллионами URL адресов картинок. Нужно скачать их все и сложить на диск. Как организовать код, чтобы скачивание было быстрым, компьютер не завис, программа не перезапускалась, и внешний сервис не забанил за слишком частые запросы?
/* Есть заказы, которые в процессе жизненного цикла переходят по статусам. Требуется реализовать слой работы с БД: - Сохранять историю статусов заказа - Учесть партицирование В дальнейшем, за рамками текущей задачи, будут реализованы другие методы: получение статусов по времени, полная история заказа и т.п. */
Реализуйте функцию, которая принимает []any и delta int. Необходимо увеличить на delta только первые вхождения уникальных чисел (int). Другие типы и повторные числа оставить без изменений. Функция должна вернуть обновленный слайс и 2 числа: updated — сколько уникальных чисел было изменено, duplicates — сколько числовых элементов оказалось дубликатами func IncrementUniqueIntsInMixed(xs []any, delta int) ([]any, int, int) { // ваш код }
Расскажите про gRPC: почему выбирают, преимущества, ограничения
С какими проблемами можем столкнуться при проектировании микросервисной архитектуры?
""" Места в кинотеатре расположены в один ряд. Только что пришедший зритель выбирает место, чтобы сидеть максимально далеко от остальных зрителей в ряду. То есть расстояние от того места, куда сядет зритель до ближайшего к нему зрителя должно быть максимально. Гарантируется, что в ряду всегда есть свободные места и уже сидит хотя бы один зритель. Напишите функцию, которая по заданному ряду мест (массиву из нулей и единиц) вернёт расстояние (число промежутков между креслами) от выбранного места до ближайшего зрителя. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """
Расскажите про миграции базы данных — как они хранились и кто их писал?
Представьте задачу: пользователю нужно получать уведомление о важном событии. Расскажите, какие основные части работы вы видите, какие зависимости, риски и как поймёте, что решение подходит.
Есть ли опыт с CI/CD? Что делал?
package main import ( "io" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { go func() { resp, err := http.Get("[link] if err != nil { log.Println("request error:", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) w.Write(body) }() } func main() { http.HandleFunc("/proxy", handler) log.Fatal(http.ListenAndServe(":8080", nil)) }
Помимо Go, из брокеров сообщений, баз данных, с чем работал?
Что такое CPU-bound и I/O-bound задачи?
Условие У нас есть база данных с паролями пользователей, пароли захешированы (функция 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() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range range tests { h := hashPassword(exp) act := RecoverPassword(h) if act != exp { fmt.Printf("Ошибка: ожидалось %q, получено %q\n", exp, act) ok = false } } if ok { fmt.Println("Все тесты пройдены успешно") } }