Golang
Что такое нормализация базы данных? В каких случаях нужна денормализация?
Что выведет программа? Почему? 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 }
Если добавляем много consumer'ов, но Kafka lag всё равно не уменьшается — о чём это свидетельствует?
Какие конкретно показатели пропускной способности были? Сколько запросов в секунду обычно и на пике?
Зачем используются интерфейсы в Go, какие у них плюсы и минусы?
Расскажи про map в Go: как устроена, какая сложность операций в среднем и худшем случае.
Можешь рассказать, что такое коллизия в контексте этой задачи? И могут ли быть коллизии в твоем коде?
С какими челленджами вы сталкивались при работе с Kafka?
Как бы ты решил проблему с загрузкой миллиона пользователей в память (риск по памяти и задержке)?
Как интерфейсы помогают в тестировании (unit-тесты)?
Ты попадал в проект, который строили прям с нуля, или ты уже на какой-то промежуточной стадии туда вошёл?
С точки зрения производительности, какие общепринятые правила стоит применить к такой схеме БД?
Почему вы сделали именно столько сервисов? Как происходил выбор — делать сервис или не делать?
Что такое context в Go, зачем нужен, можно ли без него жить?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) // добавить транзакцию if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount // защитить SELECT FOR UPDATE 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 }
Если добавить больше consumer'ов при большом Kafka lag — поможет ли это? В каком случае поможет, а в каком нет? Что если partition'ов 16, а consumer'ов 2?
-- Вывести все книги и их авторов/соавторов в простом табличном виде. -- Пример: -- book_name | author_name -- --------------------|-------------- -- Мастер и маргарита | Игорь -- Евгений Онегин | Иван -- Вывести всех авторов и кол-во их книг. -- Пример: -- author_name | book_count -- ------------|----------- -- Игорь | 2 -- Иван | 1
Расскажите подробнее про работу с Kafka: как именно происходила дедупликация сообщений?
Чем вы занимались на последнем месте работы? Что за проект был?
За счет чего именно достигается отсутствие коллизии в разных решениях — в ин-мемори и в базе данных?