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

Wildberries / WB - 5 (Команда спецпроектов)

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

  • Перечислить типы данных Go; go/basics
  • Есть ли какие-то нюансы с типом 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
  • Можно ли прочитать из закрытого канала? go/channels
  • Как проверить при чтении из канала получили ли мы валидное значение? go/channels
  • Можно ли два раза закрыть канал? go/channels
  • Что произойдет если записать в канал у которого нет читателя? go/channels
  • Зачем нужны горутины и что это такое? go/concurrency
  • Почему горутины легковесные? go/concurrency
  • Чем ограничьено создание горутин? Сколько можно создать? go/concurrency
  • Расскажи про GMP; go/concurrency
  • Что происходит с горутиной, если она делает сетевой вызов? go/concurrency
  • Что происходит когда сетевой вызов завершен? network/general
  • Глобальная очередь, как из нее забираются горутины? go/runtime
  • Что происходит, если у процессора закончились горутины? go/runtime
  • Пакет context, какие бывают, для чего нужны, какие есть методы? go/context
  • Зачем нужен defer? Всегда ли он выполняется? go/errors-panic
  • В какой очередности выполняется defer? algorithms/data-structures
  • Зачем нужен recover? go/errors-panic
  • Можно ли отловить панику в горутине из другой горутины? go/concurrency
  • Какие бывают примитивы синхронизации? go/sync
  • RWMutex vs Mutex go/sync
  • Зачем нужен select? Как выйти из select не блокируясь? (имеется в виду default ). go/channels
  • Какие виды индексов? Для чего нужны? Как работают под капотом? sql/indexes
  • Как устроен b-tree, чем отличается от бинарного, как происходит поиск, какую имеет структуру, чем помогает балансировка, сколько может быть детей у листьев (хотят пересказ из postgres internal). sql/indexes
  • За счет чего b-trее хорошо работает с большими/меньше и диапазонами? sql/indexes
  • Как устроен hash индекс? sql/indexes
  • Будет ли работать составной индекс по полям (a, b, c) если мы ищем по полям b и c? sql/indexes
  • Что делать если запрос тормозит? sql/query-optimization
  • Чем отличается explain от explain analyze? sql/query-optimization
  • На основании чего работает explain, если он не выполняет запрос? sql/query-optimization
  • Индекс построили, но запрос все равно тормозит, что делать? sql/indexes
  • Что такое партиционирование, для чего нужно, какие виды? sql/schema-design
  • Партиции логические или физические? brokers/kafka
  • Можно ли партиционировать партицию? sql/schema-design
  • Как можно партиционировать, какие виды? sql/schema-design
  • Какие есть стратегии джойнов (не про left, right). Как оптимально сджойнить маленькую и большую таблицу? (переключить стратегию джойнов). architecture/patterns
  • Что такое консистентность, как она достигается на postgresql? architecture/general
  • Как заблокировать строку? go/strings-runes
  • Какие есть уровни изоляции? sql/transactions
  • На уровне Serializable две транзакции апдейтят одну строку, что произойдет? sql/transactions
  • Какие есть основные компоненты в Kafka? brokers/kafka
  • Чем занимается брокер? brokers/general
  • Чем отличается топик от партиции? brokers/kafka
  • Можно сделать так чтобы продюсер писал все в одну партицию? brokers/general
  • Какие есть гарантии доставки? brokers/kafka
  • Действительно ли exactly once обеспечит отправку одного сообщения? brokers/general
  • Что такое консумер группа? brokers/kafka
  • 100 партиций, 200 консьюмеров, как это будет работать? brokers/general
  • 25 партиций, 20 консьюмеров, как это будет работать? brokers/general
  • Всегда ли один и тот же консьюмер будет обрабатывать 2 партиции? brokers/general

Задача: Написать функцию проверяющую является ли строка палиндромом. «Ana»- это палиндром, а «table» и «John»- нет. go/strings-runes

Заголовок раздела «Задача: Написать функцию проверяющую является ли строка палиндромом. «Ana»- это палиндром, а «table» и «John»- нет. go/strings-runes»
func IsPalindrome(str string) bool {
// Write
}
func worker() chan int {
ch := make(chan int)
go func() {
time.Sleep(3 * time.Second)
ch <- 42
}()
return ch
}
func main() {
timeStart := time.Now()
_, _ = <-worker(), <-worker()
println(time.Since(timeStart).Seconds()) // ?
}
-- Вывести пользователей и название города;
-- Вывести пользователей и города, включая города в которых нет пользователей;
-- Вывести города и количество пользователей, в которых больше 0 пользователей;
-- Вывести города и количество пользователей, если в городе 0 пользователей заменить 0 на null;
-- Вывести города и количество пользователей отсортированных по убыванию количества пользователей.
CREATE TABLE cities (
id serial PRIMARY KEY,
name text NOT NULL
);
INSERT INTO
cities (name)
VALUES
('Москва '),
('Санкт-Петербург '),
('Краснодар ');
CREATE TABLE users (
id serial PRIMARY KEY,
name text NOT NULL,
city_id int NOT NULL REFERENCES cities(id)
);
INSERT INTO
users (name, city_id)
VALUES
('Иван ', 1),
('Анна ', 1),
('Олег ', 2);