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

Wildberries / WB - 4 (Команда поставщиков)

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

  • Есть ли какие-то нюансы с типом int (имеется в виду зависимость от разрядности системы)? go/basics
  • Что представляют из себя строки? Как посчитать количество символов? hr-behavioral/about-you
  • Различия слайсов и массивов. Из чего состоит слайс? go/slices-arrays
  • Как растет слайс? go/slices-arrays
  • Если не присвоить результат append к исходному слайсу, изменится ли он? go/slices-arrays
  • Что можешь рассказать про тип map? go/maps
  • Как растет map? go/maps
  • Можно ли взять указатель на элемент map (порядок)? go/maps
  • Как растет размер map? go/maps
  • Мы удалили ключи из map, как сделать чтобы она освободила память? (скопировать в новую и удалить старую) go/maps
  • Безопасно ли удалять элемент из nil map? go/maps
  • Как понять есть ли ключ в map? go/maps
  • Как работать с малой в условиях конкурентности? go/concurrency
  • Можно ли перехватить Fatal error? go/errors-panic
  • Какие типы каналов бывают и как с ними работать? go/channels
  • Пакет context, какие бывают, для чего нужны, какие есть методы? go/context
  • Зачем нужен defer? Всегда ли он выполняется? go/errors-panic
  • В какой очередности выполняется defer? algorithms/data-structures
  • Зачем нужен recover? go/errors-panic
  • Можно ли отловить панику в горутине из другой горутины? go/concurrency
  • Какие бывают примитивы синхронизации? go/sync
  • RWMutex vs Mutex; go/sync
  • Какая команда помогает проверить есть ли гонки или дедлоки? go/sync
  • Data race и Race condition; go/sync
  • Чем отличается concurrency от параллелизма, можно ли быть параллелизм на 1 ядре? go/concurrency
  • Что делать если запрос тормозит? sql/query-optimization
  • Чем отличается explain от explain analyze? sql/query-optimization
  • На основании чего работает explain, если он не выполняет запрос? sql/query-optimization
  • Какие есть уровни изоляции? sql/transactions
  • На уровне Serializable две транзакции апдейтят одну строку, что произойдет? sql/transactions
  • Как бы делал инсерт 100000000 строк? go/strings-runes
func main() {
fmt.Println(arr()) // Что выведет?
}
func arr() []int {
arr := []int{0, 1, 2, 3, 4}
arr[0] = 1
arr = append(arr, 5) // И что выведет если убрать эту строку?
newArr := append(arr, 6)
arr[0] = 10
return newArr
}
type item struct {
name string
}
type wrapper struct {
item *item
}
func (b *wrapper) unwrap() item {
return *b.item
}
func (b *wrapper) wrap(item *item) {
b.item = item // Вот тут сделать так b.item = &item - ЭТО ТО ЧТО НАДО СДЕЛАТЬ, ЧТОБЫ ВЫВОДИЛСЯ a,b,c
}
func wrapItems(items []item) []*wrapper {
for _, it := range items {
w := new(wrapper)
w.wrap(&it)
result = append(result, w)
}
return result
}
func main() {
items := []item{
{"a "},
{"b "},
{"c "},
}
wrappers := wrapItems(items)
for _, w := range wrappers {
fmt.Println(w.unwrap()) // Что тут выведет (с, с, с) // как поправить?
}
}
func spawnMessages(n int) chan string {
ch := make(chan string, 1)
for i := 0; i < n; i++ {
ch <- fmt.Sprintf("msg %d ", i+1)
}
return ch
}
func main() {
n := 10
for msg := range spawnMessages(n) {
fmt.Println("received: ", msg)
}
}

Будет дано короткое описание от бизнеса и аналитика по количеству запросов (RPS), рост в год и соотношение нагрузки read/write.

Нужно превратить это в функциональные требования (FT) и выписать нефункциональные требования. По мере проектирования добавляются новые входные данные, проверка на фрод. В конце нужно сделать расчеты количества данных и какие ресурсы будут требоваться для серверов.