Перейти к содержимому

Burger King / Бургер Кинг

  • Рассказ о себе и обязанностях. hr-behavioral/general
  • Какие проблемы с производительностью PostgreSQL вы встречали? sql/general
  • Что такое индекс? Как он ускоряет поиск? Типы индексов. Отличие B-tree от хэш-индекса. sql/indexes
  • Как PostgreSQL хранит данные? sql/general
  • Транзакции, ACID, уровни изоляции, MVCC. sql/transactions
  • Что такое VACUUM? sql/replication-scaling
  • Запустится ли транзакция при одном запросе UPDATE? sql/transactions
  • CAP-теория. Как достигается согласованность в PostgreSQL? sql/general
  • Что такое FOREIGN KEY? sql/schema-design
  • Важна ли последовательность условий для составного индекса? sql/indexes
  • Почему триггер NOTIFY не срабатывает на реплике? sql/replication-scaling
  • Примитивные типы в Go. Для чего нужны? go/basics
  • Разница между int и int64. go/basics
  • Строка в Go. Длина строки «Привет» в байтах. Что будет при обращении к нулевому элементу? go/strings-runes
  • Что такое массив? go/slices-arrays
  • Слайс. Как работает append? go/slices-arrays
  • Устройство мапы. Что такое «эвакуация данных»? go/maps
  • Конкурентность vs. параллельность. go/concurrency
  • Поток, горутина: отличия. go/concurrency
  • Как рантайм Go управляет потоками? go/runtime
  • Типы многозадачности. Вытесняющая многозадачность: зачем добавили? go/concurrency
  • Примитивы синхронизации. go/sync
  • Атомики: для чего нужны? Почему x++ вызывает гонку? hr-behavioral/motivation
  • Отличие буферизированного канала (буфер=1) от небуферизированного. go/channels
  • select: что делает, если каналы не готовы? Примеры использования. go/channels
  • Контекст: как отмена влияет на горутины? Как проверить контекст? go/concurrency
  • Сборщик мусора: принцип работы. Как в языках без GC? go/memory-gc
  • Что такое ESB? Типы атак (SQL-инъекции, XSS). Как работает XSS? security/appsec
  • Что делает cherry-pick? git/general
  • Отличие merge от rebase? git/general
func main() {
appendAndModify := func(s1 []int) {
newSlice := append(s1, 1)
newSlice[0] = -1
}
slice1 := []int{1, 2, 3}
appendAndModify(slice1)
slice2 := make([]int, 0, 10)
slice2 = append(slice2, 1, 2, 3)
appendAndModify(slice2)
fmt.Println(slice1, slice2)
}
func main() {
type User struct{ ID int }
users := map[int]User{1: {ID: 1}}
var user *User
user = &users[1]
fmt.Println(user)
}
func main() {
rpcCall := func() int {
time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
return 42
}
job := func() {
result := rpcCall()
fmt.Println(result)
}
job()
fmt.Println("---")
}
func main() {
n := 10
wg := sync.WaitGroup{}
wg.Add(n)
for i := range n {
go func() {
fmt.Println(i * 10)
wg.Done()
}()
}
wg.Wait()
}