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

Ozon / Озон (вопросы и ревью кода)

Актуальность: 4 кв 2025

  • Какую самую сложную инженерную задачу вы решали? hr-behavioral/about-you
  • Как вы использовали Kafka? brokers/kafka
  • Как устроена структура данных хэш-таблицы? algorithms/data-structures
  • Если хэш-функция возвращает огромное число, а массив хэш-таблицы имеет фиксированный размер (например, 100 ячеек), как именно это большое значение преобразуется в конкретный индекс массива? algorithms/data-structures
  • Какие проблемы возникают при работе хэш-таблицы? sql/general
  • При каких условиях в хэш-таблице происходит эвакуация? sql/general
  • Чему равна временная сложность операций старой мапы в худшем случае? algorithms/complexity
  • Как обрабатываются коллизии в хэш-таблице? go/maps
  • В утилите top на Linux процесс отображается с нагрузкой 146% CPU. Возможно ли, чтобы один процесс использовал больше 100% процессора? Как интерпретировать это значение? linux-os/processes
  • Что такое переменная GOMAXPROCS в Go и зачем она нужна? go/runtime
  • Входит ли системная горутина sysmon в лимит потоков, заданный GOMAXPROCS? go/concurrency
  • Как убить процесс в Linux? linux-os/processes
  • Какие флаги бывают у команды kill? hr-behavioral/teamwork
  • На физическом сервере без контейнеризации запущен процесс с утечкой памяти. Что произойдет, когда он исчерпает доступную память? go/memory-gc
  • Что такое HTTP-протокол? network/http
  • Из каких частей состоит HTTP-запрос? network/http
  • Чем HTTP-ответ отличается от HTTP-запроса? network/http
  • Что такое cookies и как они используются в HTTP? network/http
  • Где хранятся cookies? network/http
  • Что такое cookies в контексте семантики HTTP-запроса? network/http
package main
import (
"fmt "
"sync "
)
func main() {
fmt.Println(GetOrCreate("hello ", "world "))
fmt.Println(Get("hello "))
}
var cache = make(map[string]string)
// GetOrCreate проверяет существование ключа key
// Если такого нет, то создает новое значение
func GetOrCreate(key, value string) string {
var m sync.Mutex
m.Lock()
value = cache[key]
m.Unlock()
if value != "" {
return value
}
m.Lock()
cache[key] = value
m.Unlock()
return value
}
func Get(key string) string {
var m sync.Mutex
m.Lock()
v := cache[key]
m.Unlock()
return v
}