diff --git a/README.md b/README.md
index 5a12493..244bdd5 100644
--- a/README.md
+++ b/README.md
@@ -79,35 +79,35 @@
- В чём разница между сцеплением и связанностью?
- Почему в TDD тесты пишутся прежде кода?
- Если у вашего кода плохая организация, как вы это поймёте?
-9. [Вопросы от Данила Подольского на позицию Senior Golang Backend Developer в компанию Evrone](docs/PODOLSKY.md)
- - [Go — императивный или декларативный? А в чем разница?](docs/PODOLSKY.md#1)
- - [Что такое type switch?](docs/PODOLSKY.md#2)
- - [Как сообщить компилятору, что наш тип реализует интерфейс?](docs/PODOLSKY.md#3)
- - [Как работает append?](docs/PODOLSKY.md#4)
- - [Какое у slice zero value? Какие операции над ним возможны?](docs/PODOLSKY.md#5)
- - [Как устроен тип map?](docs/PODOLSKY.md#6)
- - [Каков порядок перебора map?](docs/PODOLSKY.md#7)
- - [Что будет, если читать из закрытого канала?](docs/PODOLSKY.md#8)
- - [Что будет, если писать в закрытый канал?](docs/PODOLSKY.md#9)
- - [Как вы отсортируете массив структур по алфавиту по полю Name?](docs/PODOLSKY.md#10)
- - [Что такое сериализация? Зачем она нужна?](docs/PODOLSKY.md#11)
- - [Сколько времени в минутах займет у вас написание процедуры обращения односвязного списка?](docs/PODOLSKY.md#12)
- - [Где следует поместить описание интерфейса: в пакете с реализацией или в пакете, где этот интерфейс используется? Почему?](docs/PODOLSKY.md#13)
- - [Предположим, ваша функция должна возвращать детализированные Recoverable и Fatal ошибки. Как это реализовано в пакете net? Как это надо делать в современном Go?](docs/PODOLSKY.md#14)
- - [Главный недостаток стандартного логгера?](docs/PODOLSKY.md#15)
- - [Есть ли для Go хороший orm? Ответ обоснуйте.](docs/PODOLSKY.md#16)
- - [Какой у вас любимый линтер?](docs/PODOLSKY.md#17)
- - [Можно ли использовать один и тот же буфер []byte в нескольких горутинах?](docs/PODOLSKY.md#18)
- - [Какие типы мьютексов предоставляет stdlib?](docs/PODOLSKY.md#19)
- - [Что такое lock-free структуры данных, и есть ли в Go такие?](docs/PODOLSKY.md#20)
- - [Способы поиска проблем производительности на проде?](docs/PODOLSKY.md#21)
- - [Стандартный набор метрик prometheus в Go -программе?](docs/PODOLSKY.md#22)
- - [Как встроить стандартный профайлер в свое приложение?](docs/PODOLSKY.md#23)
- - [Overhead от стандартного профайлера?](docs/PODOLSKY.md#24)
- - [Почему встраивание — не наследование?](docs/PODOLSKY.md#25)
- - [Какие средства обобщенного программирования есть в Go?](docs/PODOLSKY.md#26)
- - [Какие технологические преимущества языка Go вы можете назвать?](docs/PODOLSKY.md#27)
- - [Какие технологические недостатки языка Go вы можете назвать?](docs/PODOLSKY.md#28)
+9. [Вопросы от Данила Подольского на позицию Senior Golang Backend Developer в компанию Evrone](docs/podolsky/)
+ - [Go — императивный или декларативный? А в чем разница?](docs/podolsky/)
+ - [Что такое type switch?](docs/podolsky/)
+ - [Как сообщить компилятору, что наш тип реализует интерфейс?](docs/podolsky/)
+ - [Как работает append?](docs/podolsky/)
+ - [Какое у slice zero value? Какие операции над ним возможны?](docs/podolsky/)
+ - [Как устроен тип map?](docs/podolsky/)
+ - [Каков порядок перебора map?](docs/podolsky/)
+ - [Что будет, если читать из закрытого канала?](docs/podolsky/)
+ - [Что будет, если писать в закрытый канал?](docs/podolsky/)
+ - [Как вы отсортируете массив структур по алфавиту по полю Name?](docs/podolsky/)
+ - [Что такое сериализация? Зачем она нужна?](docs/podolsky/)
+ - [Сколько времени в минутах займет у вас написание процедуры обращения односвязного списка?](docs/podolsky/)
+ - [Где следует поместить описание интерфейса: в пакете с реализацией или в пакете, где этот интерфейс используется? Почему?](docs/podolsky/)
+ - [Предположим, ваша функция должна возвращать детализированные Recoverable и Fatal ошибки. Как это реализовано в пакете net? Как это надо делать в современном Go?](docs/podolsky/)
+ - [Главный недостаток стандартного логгера?](docs/podolsky/)
+ - [Есть ли для Go хороший orm? Ответ обоснуйте.](docs/podolsky/)
+ - [Какой у вас любимый линтер?](docs/podolsky/)
+ - [Можно ли использовать один и тот же буфер []byte в нескольких горутинах?](docs/podolsky/)
+ - [Какие типы мьютексов предоставляет stdlib?](docs/podolsky/)
+ - [Что такое lock-free структуры данных, и есть ли в Go такие?](docs/podolsky/)
+ - [Способы поиска проблем производительности на проде?](docs/podolsky/)
+ - [Стандартный набор метрик prometheus в Go -программе?](docs/podolsky/)
+ - [Как встроить стандартный профайлер в свое приложение?](docs/podolsky/)
+ - [Overhead от стандартного профайлера?](docs/podolsky/)
+ - [Почему встраивание — не наследование?](docs/podolsky/)
+ - [Какие средства обобщенного программирования есть в Go?](docs/podolsky/)
+ - [Какие технологические преимущества языка Go вы можете назвать?](docs/podolsky/)
+ - [Какие технологические недостатки языка Go вы можете назвать?](docs/podolsky/)
10. [Популярные задачи на собеседованиях](docs/POPULAR_TASKS.md)
- [На вход подаются два неупорядоченных слайса любой длины. Надо написать функцию, которая возвращает их пересечение](docs/POPULAR_TASKS.md#1)
- [Написать генератор случайных чисел](docs/POPULAR_TASKS.md#2)
diff --git a/docs/PODOLSKY.md b/docs/podolsky/README.md
similarity index 76%
rename from docs/PODOLSKY.md
rename to docs/podolsky/README.md
index 7e161cd..a14ea95 100644
--- a/docs/PODOLSKY.md
+++ b/docs/podolsky/README.md
@@ -1,92 +1,92 @@
## Вопросы от Данила Подольского на позицию Senior Golang Backend Developer в компанию Evrone
-### Go — императивный или декларативный? А в чем разница?
+### 1. Go — императивный или декларативный? А в чем разница?
В основном Императивный.
Разница в подходе:
- императивный - как сделать (прямо пошагово);
- декларативный - что сделать (итоговый результат).
-### Что такое type switch?
+### 2. Что такое type switch?
Сравнение типов переменной, а не ее значений.
-### Как сообщить компилятору, что наш тип реализует интерфейс?
+### 3. Как сообщить компилятору, что наш тип реализует интерфейс?
Если наш тип реализует все методы интерфейса, значит он реализует этот интерфейс.
-### Как работает append?
+### 4. Как работает append?
Если capacity исходного массива достаточно, он используется повторно. В противном случае выделяется новый базовый массив достаточной длины и данные копируются
-### Какое у slice zero value? Какие операции над ним возможны?
+### 5. Какое у slice zero value? Какие операции над ним возможны?
Zero value у slice == nil
Возможные операции: len, cap, append.
-### Как устроен тип map?
+### 6. Как устроен тип map?
Map в Go это хэш таблица, позволяющая хранить пары ключ-значение и обладающая следующими функциями: маппинг, вставка, удаление, поиск. Map in Go не упорядоченная. Место поиска определяется рандомно. Когда мы пытаемся получить значение из мапы, а его там нет, получаем «нулевое значение типа», что в случае числа 0. Map — ссылочный тип и мало объявить переменную, надо ее проинициализировать.
-### Каков порядок перебора map?
+### 7. Каков порядок перебора map?
Случайным образом.
-### Что будет, если читать из закрытого канала?
+### 8. Что будет, если читать из закрытого канала?
Вернется нулевое значение.
-### Что будет, если писать в закрытый канал?
+### 9. Что будет, если писать в закрытый канал?
Произойдет вызов panic.
-### Как вы отсортируете массив структур по алфавиту по полю Name?
+### 10. Как вы отсортируете массив структур по алфавиту по полю Name?
С помощью функции sort.SliceStable. Для этого сначала конвертируем массив в слайс.
```go
slice := array[:]
```
-### Что такое сериализация? Зачем она нужна?
+### 11. Что такое сериализация? Зачем она нужна?
Сериализация — это преобразование объекта в какой-либо формат с тем, чтобы потом можно было восстановить из этого формата. Допустим, после передачи как набора байт по сети. Или сохранения в файл на диск.
-### Сколько времени в минутах займет у вас написание процедуры обращения односвязного списка?
+### 12. Сколько времени в минутах займет у вас написание процедуры обращения односвязного списка?
Тут каждый считает сам. Попробуйте с таймингом (засеките время).
-### Где следует поместить описание интерфейса: в пакете с реализацией или в пакете, где этот интерфейс используется? Почему?
+### 13. Где следует поместить описание интерфейса: в пакете с реализацией или в пакете, где этот интерфейс используется? Почему?
Небольшое копирование лучше, чем небольшая зависимость. Даже в стандартной библиотеке есть места, где те же io.Reader или fmt.Stringer переопределены, чтобы избежать ненужной зависимости от других пакетов. Если интерфейс маленький, скопировать его не составит труда, а если он большой, то есть вероятность, что в будущем одному модулю понадобятся одни методы, а другому - другие.
-### Предположим, ваша функция должна возвращать детализированные Recoverable и Fatal ошибки. Как это реализовано в пакете net? Как это надо делать в современном Go?
+### 14. Предположим, ваша функция должна возвращать детализированные Recoverable и Fatal ошибки. Как это реализовано в пакете net? Как это надо делать в современном Go?
[Обработка ошибок в Go 1.13](https://habr.com/ru/company/vk/blog/473658/). Вкратце: Go обрабатывает ошибки как значения. В версии 1.13 добавлены метод Unwrap, исследование ошибок с помощью Is и As, упаковка ошибок с помощью %w для fmt.Errorf.
-### Главный недостаток стандартного логгера?
+### 15. Главный недостаток стандартного логгера?
Стандартными логгерами являются: log и log/syslog. Однако в них не реализована идея разделения сообщений по уровням важности (информационные, ошибки, отладочная информация, различные дампы) и сопутствующие плюшки (цвет сообщений и т.д.). Такими пакетами являются: logrus, glog.
-### Есть ли для Go хороший orm? Ответ обоснуйте.
+### 16. Есть ли для Go хороший orm? Ответ обоснуйте.
Для работы с базами данных можно использовать пакет database/sql. Но есть куча ORM, можно выбрать любую. Все зависит от исходной посылки.
-### Какой у вас любимый линтер?
+### 17. Какой у вас любимый линтер?
Go vet + golint
-### Можно ли использовать один и тот же буфер []byte в нескольких горутинах?
+### 18. Можно ли использовать один и тот же буфер []byte в нескольких горутинах?
Зачем может понадобиться использовать один и тот же буфер []byte в нескольких горутинах параллельно? Не за чем, для этого существуют каналы. Но даже если такая задача стоит, то в этом случае - это общие данные и тут необходимо исключить возможность одновременного выполнения нескольких операций записи. Например используя мьютексы.
-### Какие типы мьютексов предоставляет stdlib?
+### 19. Какие типы мьютексов предоставляет stdlib?
В стандартной библиотеке есть пакет sync. Он предоставляет следующие типы мьютексов:
- sync.Mutex - блокирует и снимает блокировку;
- sync.RWMutex - тоже самое, но есть отдельно блокировка на чтение/запись и отдельно на чтение;
- отдельно стоит упомянуть sync.Map - вид мьютекса для мап.
-### Что такое lock-free структуры данных, и есть ли в Go такие?
+### 20. Что такое lock-free структуры данных, и есть ли в Go такие?
Синхронизация – это узкое место параллельных программ. Распараллеливая алгоритмы, мы работаем с последовательными структурами данных, обеспечивая их работу примитивами синхронизации – критическими секциями, мьютексами, условными переменными (condvar); в результате мы выстраиваем все наши потоки в очередь на доступ к структуре данных, тем самым убивая параллельность.
@@ -100,30 +100,30 @@ Lock-free структуры данных - не требующие внешне
В Go есть sync.Map и пакет atomic. Но с точки зрения указанных определений, а также реализации данных пакетов - это не чистый lock-free, это просто абстрактная реализация этой модели.
-### Способы поиска проблем производительности на проде?
+### 21. Способы поиска проблем производительности на проде?
Анализ метрик (Prometheus и Grafana), кода (pprof) - это про продукт. Анализ загрузки сети (интерфейсы маршрутизаторов, МСЭ и т.д.), соединений (tshark, wireshark) - это про сеть. И железо - логи ОС и т.д.
-### Стандартный набор метрик prometheus в Go-программе?
+### 22. Стандартный набор метрик prometheus в Go-программе?
-### Как встроить стандартный профайлер в свое приложение?
+### 23. Как встроить стандартный профайлер в свое приложение?
-### Overhead от стандартного профайлера?
+### 24. Overhead от стандартного профайлера?
-### Почему встраивание — не наследование?
+### 25. Почему встраивание — не наследование?
Буква L в аббревиатуре SOLID обозначает Liskov Substitution - объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы. Этот принцип предложила [Барбара Лисков](https://en.wikipedia.org/wiki/Barbara_Liskov).
При использовании наследования объект представляет собой наследуемый тип, тем самым наследуя функциональность, которой делятся родители. При использовании композиции у объекта есть все признаки, что предоставляют необходимую для объекта функциональность. Другой объект может повторно использовать некоторые из данных функциональностей, однако тип родителя или иерархия, восходящая к нему, отсутствует.
-### Какие средства обобщенного программирования есть в Go?
+### 26. Какие средства обобщенного программирования есть в Go?
Обобщенное программирование — это форма, в которой мы подключаем шаблоны, известные как дженерики, которые на самом деле не являются истинным исходным кодом, но компилируются компилятором для преобразования их в исходный код. [Дженерики будут](https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md) с версии 1.18.
-### Какие технологические преимущества языка Go вы можете назвать?
+### 27. Какие технологические преимущества языка Go вы можете назвать?
- Параллелизм
- Кроссплатформенность
@@ -137,7 +137,7 @@ Lock-free структуры данных - не требующие внешне
- Open Source
- Обаятельный талисман
-### Какие технологические недостатки языка Go вы можете назвать?
+### 28. Какие технологические недостатки языка Go вы можете назвать?
- быстрый, да не такой как C, C++
- нет ООП