Wildberries / WB - 5 (Команда спецпроектов)
Актуальность: 1 кв 2025
Вопросы по Go
Заголовок раздела «Вопросы по Go»- Перечислить типы данных 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 - Безопасно ли удалять элемент из
nilmap?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
Вопросы по PostgreSQL
Заголовок раздела «Вопросы по PostgreSQL»- Какие виды индексов? Для чего нужны? Как работают под капотом?
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
Заголовок раздела «Вопросы по Kafka»- Какие есть основные компоненты в 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}Задача: Что выведет код? go/puzzles
Заголовок раздела «Задача: Что выведет код? go/puzzles»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()) // ?}Доп. вопрос: Как сделать за 3
Заголовок раздела «Доп. вопрос: Как сделать за 3»Задача: Составить SQL запросы. sql/general
Заголовок раздела «Задача: Составить SQL запросы. sql/general»-- Вывести пользователей и название города;-- Вывести пользователей и города, включая города в которых нет пользователей;-- Вывести города и количество пользователей, в которых больше 0 пользователей;-- Вывести города и количество пользователей, если в городе 0 пользователей заменить 0 на null;-- Вывести города и количество пользователей отсортированных по убыванию количества пользователей.
CREATE TABLE cities (id serial PRIMARY KEY,name text NOT NULL);
INSERT INTOcities (name)VALUES('Москва '),('Санкт-Петербург '),('Краснодар ');
CREATE TABLE users (id serial PRIMARY KEY,name text NOT NULL,city_id int NOT NULL REFERENCES cities(id));
INSERT INTOusers (name, city_id)VALUES('Иван ', 1),('Анна ', 1),('Олег ', 2);