Golang
Почему разработчики Go не гарантируют порядок обхода map при range?
Что можешь сказать о выводе этой программы?
Был ли у тебя опыт оптимизации запросов в реляционных базах данных?
Что такое мапы (map) в Go?
Почему мы не можем на всякий случай на каждое поле заранее добавлять по индексу?
-- вывести список книг отсортированный по id, -- но в выводе поменять 2 и 3 строки местами: -- 1 Мастер и Маргарита 100 -- 3 Золотой теленок 50 -- 2 Двенадцать стульев 200 -- 4 Евгений Онегин 250 -- 5 Повести Белкина 90 -- 6 Три мушкетера 60
Что ещё, кроме мьютекса, можно использовать для защиты от race condition?
Предположим, резко вырос RPS (Black Friday), и сервис аналитики не справляется — что можно сделать?
Дана таблица "orders": +----+---------+---------------------+-------------+ | id | user_id | created_at | price_total | +----+---------+---------------------+-------------+ | 1 | 111 | [phone]:00:00 | 2000| | 2 | 222 | [phone]:00:00 | 100 | | 3 | 111 | [phone]:00:00 | 20000| | 4 | 222 | [phone]:00:00 | 500| | 5 | 333 | [phone]:00:00 | 1000| +----+---------+---------------------+-------------+ Напишите SQL-запрос, который вернёт количество заказов по каждому пользователю с price_total больше или равным 1000 в таком виде отсортированному по количеству заказов в обратном порядке: +---------+-------------+ | user_id | order_count | +---------+-------------+ | 111 | 2 | | 222 | 1 | | 333 | 1 | +---------+-------------+
А что именно не получилось сделать в рамках оптимизации запросов?
Как это сделать на уровне Go — идейно, чтобы отправлять ответ пользователю и параллельно отправлять данные в аналитику?
Как осуществлялся деплой? Через что выкатывали в Kubernetes?
Может быть, предложишь что-то ещё, кроме Mutex и sync.Map для защиты записи?
Помнишь что-нибудь про принципы SOLID? Читал про них?
Как сервисы взаимодействовали между собой? Где они располагались?
Расскажи, как устроены интерфейсы в Go.
Зачем вообще используются интерфейсы (в разработке в целом, не только в Go)?
Если БД недоступна и вы делаете retry — не будете ли вы бесконечно обрабатывать одни и те же сообщения? Все 500 уйдут в DLQ?
Посмотри на схему базы данных выше — что можно добавить, или всё в порядке?
package maptask import "fmt" import "time" func Foo() { data := make(map[int]bool) for i := 0; i < 10; i++ { go func() { data[i] = true }() } time.Sleep(time.Second * 1) for k, v := range data { fmt.Println(k, v) } }