Sobes.tech

Тайм-аут одинаковый для всех? Как будет высчитываться этот тайм-аут?

Intern
Озон банк
4

Если БД недоступна и вы делаете retry — не будете ли вы бесконечно обрабатывать одни и те же сообщения? Все 500 уйдут в DLQ?

Middle+
ВайлдберрисВайлдберрис
4

Вот, предположим, у нас большая нагрузка, миллионы клиентов, и твой запрос начинает очень долго работать. Что ты будешь делать? Как ты поймешь, что он работает за константное время?

Intern
Озон банк
4

Что выведет программа? Почему? func main() { timeStart := time.Now() _, _ = <-worker(), <-worker() println(int(time.Since(timeStart).Seconds())) } func worker() chan int { ch := make(chan int) go func() { time.Sleep(3 * time.Second) ch <- 1 }() return ch }

Senior
OZONOZON
4

Почему вы сделали именно столько сервисов? Как происходил выбор — делать сервис или не делать?

Middle+
РамблерРамблер
4

Если добавляем много consumer'ов, но Kafka lag всё равно не уменьшается — о чём это свидетельствует?

Middle+
ВайлдберрисВайлдберрис
4

Давай обсудим реплики и партиционирование — зачем они нужны.

Middle
VKVK
4

Почему мы не можем на всякий случай на каждое поле заранее добавлять по индексу?

Intern
Озон банк
4

Как пронумеровать сотрудников мужского и женского пола отдельно?

Middle
RWB
4

Как понять, в какой бакет положить новый элемент?

Middle
VKVK
4

Можешь привести примеры, когда использование внешних ключей нецелесообразно?

Middle
СитиДрайвСитиДрайв
4

Как осуществлялся деплой? Через что выкатывали в Kubernetes?

Middle+
ВайлдберрисВайлдберрис
4

Расскажи про массивы и слайсы в Go: чем они похожи и в чём отличие.

Middle
VKVK
4

package main import "fmt" func main() { a := []int{1,2} a = append(a, 3) b := append(a, 4) c := append(a, 5) fmt.Println(b) fmt.Println(c) }

Middle
ООО Левел Тревел
4

А так вот ин-мемори решение у тебя использует мьютекс. Можешь рассказать, что это такое, какой использовался у тебя?

Intern
Озон банк
4

Сталкивался ли ты с понятием шардирования?

Middle
VKVK
4

func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(totalPayouts) // добавить транзакцию if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil } func (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // добавить $1 if err != nil { if err == sql.ErrNoRows { return p, errors.New("partner not found") } return p, err } return p, nil }

Senior
Pasul LTD
4

Зачем вообще используются интерфейсы (в разработке в целом, не только в Go)?

Middle
VKVK
4

Как это сделать на уровне Go — идейно, чтобы отправлять ответ пользователю и параллельно отправлять данные в аналитику?

Intern
Озон банк
4

Дана таблица "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 | +---------+-------------+

Senior
OZONOZON
4
/399