Golang
Можешь рассказать, как ты выбирал алгоритм для формирования короткой ссылки?
А вот тут ты еще пишешь про перекос при другом способе генерации. Можешь рассказать, про что это?
```go type User struct { ID int Name string } var ( dbHits int ) func getUserInfoFromDB(id int) User { time.Sleep(100 * time.Millisecond) dbHits++ return User{ID: id, Name: fmt.Sprintf("User-%d", id), } } func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Println(getUserInfoFromDB(i)) }(42) } wg.Wait() fmt.Println("DB hits:", dbHits) } ``` Исправьте ошибку в коде, связанную с конкурентным доступом к переменной dbHits.
Вы жили в одной инфраструктуре или разные системы были в разных контурах?
Как в Go реализуется полиморфизм без классического наследования (duck typing)? Это полиморфизм времени компиляции или времени исполнения? Какой ещё вид полиморфизма можно реализовать в Go?
-- Напишите SQL-запрос, который вернет следующие данные: -- n1. Вывести имя клиента и его город, которые сделали хотя бы 1 заказ
/ * Дан отсортированный по неубыванию список целых чисел a, индекс элемента index и целое число k. Необходимо вернуть в любом порядке k чисел из списка, которые являются ближайшими по значению к элементу a[index]. a=[2, 3, 5, 7, 11], index=3, k=2 -> [5, 7] a=[4, 12, 15, 15, 24], index=1, k=3 -> [12, 15, 15] a=[2, 3, 5, 7, 11], index=2, k=2 -> [3, 5] или [5, 7] * /
Как вы масштабировали консьюмеров в Kafka? Что происходит, если консьюмеров больше, чем партиций?
У вас был монолит, который переписывали на микросервисную архитектуру — ты в этом участвовал?
У вас был аналитик, то есть вы работали по ТЗ? Как это выглядело?
/ * Дана строка, содержащая символы (){}. Нужно определить, является ли входная строка сбалансированной с точки зрения скобок. * / func isBalanced(s string) bool { // TODO: implement this return false } fmt.Println(isBalanced("()")) // -> true fmt.Println(isBalanced("({()})")) // -> true fmt.Println(isBalanced("(()")) // -> false fmt.Println(isBalanced("(()))")) // -> false fmt.Println(isBalanced("({})")) // -> false
Есть функция запроса в базу, которая возвращает одно и то же значение. Предложи решение, чтобы она не ходила лишний раз в базу за одними и теми же данными.
Расскажи, что знаешь про MVCC. Что происходит при UPDATE записи с точки зрения MVCC (создание новой версии строки, судьба старой)? Когда VACUUM очищает старые версии строк?
Как происходит блокировка при попытке освободить семафор (прочитать из канала), если в канале нет элементов?
Если бы мы сначала прочитали все данные в память и потом только читали, можно ли обойтись без mutex? Имеет ли смысл использовать map в таком сценарии?
func (r *PayoutRepository) save(p Partner) error { _, err := r.db.Exec( fmt.Sprintf("UPDATE partners SET balance = %s, hold = %s WHERE id = %s", p.Balance, p.Hold, p.ID), ) if err != nil { return err } if err := r.eventPublisher.Publish("BalanceChanged", p); err != nil { return err } return nil }
А сейчас какая алгоритмическая сложность поиска?
Напиши запрос: выбрать название всех книг, которые сейчас находятся на руках у читателей
Наша схема не предполагает, что у книги может быть несколько авторов — как это учесть?
Что такое partial (частичный) индекс?