diff --git a/CACHE_AND_DB.md b/CACHE_AND_DB.md
new file mode 100644
index 0000000..1ee81bb
--- /dev/null
+++ b/CACHE_AND_DB.md
@@ -0,0 +1,27 @@
+### Вопросы про кеширование и базам данных
+
+1. Что такое индексы в MySQL, как и для чего их использовать и создавать?
+
+2. Что такое составной индекс, как и для чего их использовать и создавать?
+
+3. Как использовать индексы в JOIN запросах Mysql?
+
+4. Что такое частичные индексы, как и для чего их использовать и создавать?
+
+5. В чем отличия InnoDB и MyISAM?
+
+6. Возможен ли JOIN со вложенными запросами, как?
+
+7. Что такое дедлоки (deadlock), почему возникают, как можно недопускать?
+
+8. Что такое HAVING, что он делает как и зачем его использовать?
+
+9. Разница между WHERE и HAVING и можно ли использовать HAVING без группировки данных?
+
+10. Что такое EXPLAIN?
+
+11. Как узнать версию Mysql?
+
+12. Как можно оптимизировать ORDER BY RAND()?
+
+13. Как удалить индекс MySQL?
\ No newline at end of file
diff --git a/COMMON.md b/COMMON.md
new file mode 100644
index 0000000..984a0da
--- /dev/null
+++ b/COMMON.md
@@ -0,0 +1,68 @@
+### Общие вопросы
+
+**1. В чем отличие протоколов TCP и UDP? В каком случае UDP предпочтительнее?**
+
+__TCP__ – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.
+
+__UDP__ – транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети.
+
+Разница между протоколами TCP и UDP – в так называемой _"гарантии доставки"_.
+TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение.
+Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм.
+TCP исключает потери данных, дублирование и перемешивание пакетов, задержки.
+UDP все это допускает, и соединение для работы ему не требуется.
+Процессы, которым данные передаются по UDP, должны обходиться полученным, даже и с потерями.
+TCP контролирует загруженность соединения, UDP не контролирует ничего, кроме целостности полученных датаграмм.
+
+С другой стороны, благодаря такой не избирательности и бесконтрольности, UDP доставляет пакеты данных (датаграммы) гораздо быстрее, потому для приложений, которые рассчитаны на широкую пропускную способность и быстрый обмен, UDP можно считать оптимальным протоколом.
+К таковым относятся сетевые и браузерные игры, а также программы просмотра потокового видео и приложения для видеосвязи (или голосовой): от потери пакета, полной или частичной, ничего не меняется, повторять запрос не обязательно, зато загрузка происходит намного быстрее.
+Протокол TCP, как более надежный, с успехом применяется даже в почтовых программах, позволяя контролировать не только трафик, но и длину сообщения и скорость обмена трафиком.
+
+**2. Что такое NAT?**
+
+Сети обычно проектируются с использованием частных IP адресов.
+Это адреса __10.0.0.0/8__, __172.16.0.0/12__ и __192.168.0.0/16__.
+Эти частные адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, и они не маршрутизируются в интернете.
+Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть переведен на общедоступный публичный адрес.
+
+И вот как раз NAT переводит приватные адреса, в общедоступные.
+Это позволяет устройству с частным адресом IPv4 обращаться к ресурсам за пределами его частной сети. NAT в сочетании с частными адресами IPv4 оказался полезным методом сохранения общедоступных IPv4-адресов.
+Один общедоступный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет частный IPv4-адрес.
+NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей.
+
+**3. Что такое HTTP и HTTPS, в чем их отличия?**
+
+__HTTP__ _(от англ. HyperText Transfer Protocol — протокол передачи гипертекста)_ — это прикладной протокол передачи данных в сети.
+На текущий момент используется для получения информации с веб-сайтов.
+Протокол HTTP основан на использовании технологии «клиент-сервер»: клиент, отправляющий запрос, является инициатором соединения; сервер, получающий запрос, выполняет его и отправляет клиенту результат.
+
+__HTTPS__ _(от англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста)_ — это расширение протокола HTTP, поддерживающее шифрование посредством криптографических протоколов __SSL__ и __TLS__.
+
+Чем отличаются HTTP от HTTPS:
+- HTTPS не является отдельным протоколом передачи данных, а представляет собой расширение протокола HTTP с надстройкой шифрования;
+- передаваемые по протоколу HTTP данные не защищены, HTTPS обеспечивает конфиденциальность информации путем ее шифрования;
+- HTTP использует порт 80, HTTPS — порт 443.
+
+**4. Что такое SSL и TSL, есть ли между ними отличия?**
+
+__SSL__ или слой защищенных сокетов было оригинальным названием протокола, который разработала компания Netscape в середине 90-х.
+SSL 1.0 никогда не был публично доступным, а в версии 2.0 были серьезные недостатки.
+Протокол SSL 3.0, выпущенный в 1996, был полностью переделан и задал тон следующей стадии развития.
+
+Когда следующую версию протокола выпустили в 1999, ее стандартизировала специальная рабочая группа проектирования сети Интернет и дала ей новое название: защита транспортного уровня, или TLS.
+Как говорится в TLS-документации, «разница между этим протоколом и SSL 3.0 не критичная».
+TLS и SSL формируют постоянно обновляемую серию протоколов, и их часто объединяют под названием __SSL/TLS__.
+
+Протокол TLS шифрует интернет-трафик любого вида. Самый распространенный вид — веб-трафик.
+Вы знаете, когда ваш браузер устанавливает соединение по TLS — если ссылка в адресной строке начинается с «https».
+
+TLS также используется другими приложениями — например, в почте и системах телеконференций.
+
+Самый безопасный метод шифрования — это асимметричное шифрование. Для этого требуется 2 ключа, 1 публичный и 1 приватный.
+Это файлы с информацией, чаще всего очень большие числа.
+Механизм сложный, но если попросту, вы можете использовать публичный ключ, чтобы шифровать данные, но вам нужен приватный ключ, чтобы расшифровывать их.
+Два ключа связаны с помощью сложной математической формулы, которую сложно хакнуть.
+
+Так как в асимметричном шифровании применяются сложные математические расчеты, нужно много вычислительных ресурсов.
+TLS решает эту проблему, используя асимметричное шифрование только в начале сессии, чтобы зашифровать общение между сервером и клиентом.
+Сервер и клиент должны договориться об одном ключе сессии, который они будут вдвоем использовать, чтобы зашифровать пакеты данных.
\ No newline at end of file
diff --git a/GOLANG.md b/GOLANG.md
new file mode 100644
index 0000000..9acf95b
--- /dev/null
+++ b/GOLANG.md
@@ -0,0 +1 @@
+### Вопросы по языку Golang
\ No newline at end of file
diff --git a/INFRASTRUCTURE_AND_DEPLOY.md b/INFRASTRUCTURE_AND_DEPLOY.md
new file mode 100644
index 0000000..85aa471
--- /dev/null
+++ b/INFRASTRUCTURE_AND_DEPLOY.md
@@ -0,0 +1,25 @@
+### Вопросы про инфраструктуру и деплой
+
+**1. Что такое сине-зеленый деплой(blue-green deployment)?**
+
+Стратегия сине-зеленого развертывания (иногда ее ещё называют red/black, т.е. красно-чёрной) предусматривает одновременное развертывание старой (зеленой) и новой (синей) версий приложения.
+После размещения обеих версий обычные пользователи получают доступ к зеленой, в то время как синяя доступна для QA-команды для автоматизации тестов через отдельный сервис или прямой проброс портов.
+
+После того, как синяя (новая) версия была протестирована и был одобрен ее релиз, сервис переключается на неё, а зеленая (старая) сворачивается.
+
+**2. Что такое Canary (канареечные развертывания)?**
+
+Канареечные выкаты похожи на сине-зеленые, но лучше управляются и используют прогрессивный поэтапный подход. К этому типу относятся несколько различных стратегий, включая «скрытые» запуски и А/В-тестирование.
+
+Эта стратегия применяется, когда необходимо испытать некую новую функциональность, как правило, в бэкенде приложения.
+Суть подхода в том, чтобы создать два практически одинаковых сервера: один обслуживает почти всех пользователей, а другой, с новыми функциями, обслуживает лишь небольшую подгруппу пользователей, после чего результаты их работы сравниваются.
+Если все проходит без ошибок, новая версия постепенно выкатывается на всю инфраструктуру.
+
+**3. Что такое Dark (скрытые) или А/В-развертывания?**
+
+Скрытое развертывание — еще одна вариация канареечной стратегии.
+Разница между скрытым и канареечным развертыванием состоит в том, что скрытые развертывания имеют дело с фронтендом, а не с бэкендом, как канареечные.
+
+Другое название этих развертываний — А/В-тестирование. Вместо того, чтобы открыть доступ к новой функции всем пользователям, ее предлагают лишь ограниченной их части. Обычно эти пользователи не знают, что выступают тестерами-первопроходцами (отсюда и термин «скрытое развертывание»).
+
+С помощью переключателей функциональности (feature toggles) и других инструментов можно следить за тем, как пользователи взаимодействуют с новой функцией, увлекает ли она их или они считают новый пользовательский интерфейс запутанным, и другими типами метрик.
diff --git a/MICROSERVICES.md b/MICROSERVICES.md
new file mode 100644
index 0000000..b41cd99
--- /dev/null
+++ b/MICROSERVICES.md
@@ -0,0 +1,2 @@
+### Вопросы про микросервисы
+
diff --git a/README.md b/README.md
index f9f19fe..9711c53 100644
--- a/README.md
+++ b/README.md
@@ -1,144 +1,43 @@
-# Вопросы и ответы для собеседования Golang разработчика
+# Вопросы и ответы для собеседования Back-end/Golang разработчика и не только
+
+Здесь собирается большая коллеция вопросов и ответов на них, необходимых не только для прохождения собеседований, но и для комплексного развития кругозора
## Содержание
-1. [Общие вопросы](#common_questions)
-2. [Вопросы про микросервисы](#microseivice_questions)
-3. [Вопросы про инфраструктуру и деплой](#infrastructure_deploy_questions)
-4. [Вопросы про кеширование и базам данных](#database_cache_questions)
-5. [Вопросы по языку Golang](#golang_questions)
+1. [Общие вопросы](COMMON.md)
+ - В чем отличие протоколов TCP и UDP? В каком случае UDP предпочтительнее?
+ - Что такое NAT?
+ - Что такое HTTP и HTTPS, в чем их отличия?
+ - Что такое SSL и TSL, есть ли между ними отличия?
+ - coming soon
+2. [Вопросы про микросервисы](MICROSERVICES.md)
+ - TODO
+3. [Вопросы про инфраструктуру и деплой](INFRASTRUCTURE_AND_DEPLOY.md)
+ - Что такое сине-зеленый деплой(blue-green deployment)?
+ - Что такое Canary (канареечные развертывания)?
+ - Что такое Dark (скрытые) или А/В-развертывания?
+ - coming soon
+4. [Вопросы про кеширование и базам данных](CACHE_AND_DB.md)
+ - Что такое индексы в MySQL, как и для чего их использовать и создавать?
+ - Что такое составной индекс, как и для чего их использовать и создавать?
+ - Как использовать индексы в JOIN запросах Mysql?
+ - Что такое частичные индексы, как и для чего их использовать и создавать?
+ - В чем отличия InnoDB и MyISAM?
+ - Возможен ли JOIN со вложенными запросами, как?
+ - Что такое дедлоки (deadlock), почему возникают, как можно недопускать?
+ - Что такое HAVING, что он делает как и зачем его использовать?
+ - Разница между WHERE и HAVING и можно ли использовать HAVING без группировки данных?
+ - Что такое EXPLAIN?
+ - Как узнать версию Mysql?
+ - Как можно оптимизировать ORDER BY RAND()?
+ - Как удалить индекс MySQL?
+ - coming soon
+5. [Вопросы по языку Golang](GOLANG.md)
+ - Что из себя представляет тип данных string в языке Golang? Можно ли изменить определенный символ в строке? Что происходит при склеивании строк?
+ - Вытекающий вопрос — как эффективно склеивать множество строк?
+ - Что будет происходить при конкуррентной записи в map? Как можно решить эту проблему?
+ - coming soon
-### Общие вопросы
+## Как мне добавить свой вопрос-ответ?
-**1. В чем отличие протоколов TCP и UDP? В каком случае UDP предпочтительнее?**
-
-__TCP__ – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.
-
-__UDP__ – транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети.
-
-Разница между протоколами TCP и UDP – в так называемой _"гарантии доставки"_.
-TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение.
-Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм.
-TCP исключает потери данных, дублирование и перемешивание пакетов, задержки.
-UDP все это допускает, и соединение для работы ему не требуется.
-Процессы, которым данные передаются по UDP, должны обходиться полученным, даже и с потерями.
-TCP контролирует загруженность соединения, UDP не контролирует ничего, кроме целостности полученных датаграмм.
-
-С другой стороны, благодаря такой не избирательности и бесконтрольности, UDP доставляет пакеты данных (датаграммы) гораздо быстрее, потому для приложений, которые рассчитаны на широкую пропускную способность и быстрый обмен, UDP можно считать оптимальным протоколом.
-К таковым относятся сетевые и браузерные игры, а также программы просмотра потокового видео и приложения для видеосвязи (или голосовой): от потери пакета, полной или частичной, ничего не меняется, повторять запрос не обязательно, зато загрузка происходит намного быстрее.
-Протокол TCP, как более надежный, с успехом применяется даже в почтовых программах, позволяя контролировать не только трафик, но и длину сообщения и скорость обмена трафиком.
-
-**2. Что такое NAT?**
-
-Сети обычно проектируются с использованием частных IP адресов.
-Это адреса __10.0.0.0/8__, __172.16.0.0/12__ и __192.168.0.0/16__.
-Эти частные адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, и они не маршрутизируются в интернете.
-Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть переведен на общедоступный публичный адрес.
-
-И вот как раз NAT переводит приватные адреса, в общедоступные.
-Это позволяет устройству с частным адресом IPv4 обращаться к ресурсам за пределами его частной сети. NAT в сочетании с частными адресами IPv4 оказался полезным методом сохранения общедоступных IPv4-адресов.
-Один общедоступный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет частный IPv4-адрес.
-NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей.
-
-**3. Что такое HTTP и HTTPS, в чем их отличия?**
-
-__HTTP__ _(от англ. HyperText Transfer Protocol — протокол передачи гипертекста)_ — это прикладной протокол передачи данных в сети.
-На текущий момент используется для получения информации с веб-сайтов.
-Протокол HTTP основан на использовании технологии «клиент-сервер»: клиент, отправляющий запрос, является инициатором соединения; сервер, получающий запрос, выполняет его и отправляет клиенту результат.
-
-__HTTPS__ _(от англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста)_ — это расширение протокола HTTP, поддерживающее шифрование посредством криптографических протоколов __SSL__ и __TLS__.
-
-Чем отличаются HTTP от HTTPS:
-- HTTPS не является отдельным протоколом передачи данных, а представляет собой расширение протокола HTTP с надстройкой шифрования;
-- передаваемые по протоколу HTTP данные не защищены, HTTPS обеспечивает конфиденциальность информации путем ее шифрования;
-- HTTP использует порт 80, HTTPS — порт 443.
-
-**4. Что такое SSL и TSL, есть ли между ними отличия?**
-
-__SSL__ или слой защищенных сокетов было оригинальным названием протокола, который разработала компания Netscape в середине 90-х.
-SSL 1.0 никогда не был публично доступным, а в версии 2.0 были серьезные недостатки.
-Протокол SSL 3.0, выпущенный в 1996, был полностью переделан и задал тон следующей стадии развития.
-
-Когда следующую версию протокола выпустили в 1999, ее стандартизировала специальная рабочая группа проектирования сети Интернет и дала ей новое название: защита транспортного уровня, или TLS.
-Как говорится в TLS-документации, «разница между этим протоколом и SSL 3.0 не критичная».
-TLS и SSL формируют постоянно обновляемую серию протоколов, и их часто объединяют под названием __SSL/TLS__.
-
-Протокол TLS шифрует интернет-трафик любого вида. Самый распространенный вид — веб-трафик.
-Вы знаете, когда ваш браузер устанавливает соединение по TLS — если ссылка в адресной строке начинается с «https».
-
-TLS также используется другими приложениями — например, в почте и системах телеконференций.
-
-Самый безопасный метод шифрования — это асимметричное шифрование. Для этого требуется 2 ключа, 1 публичный и 1 приватный.
-Это файлы с информацией, чаще всего очень большие числа.
-Механизм сложный, но если попросту, вы можете использовать публичный ключ, чтобы шифровать данные, но вам нужен приватный ключ, чтобы расшифровывать их.
-Два ключа связаны с помощью сложной математической формулы, которую сложно хакнуть.
-
-Так как в асимметричном шифровании применяются сложные математические расчеты, нужно много вычислительных ресурсов.
-TLS решает эту проблему, используя асимметричное шифрование только в начале сессии, чтобы зашифровать общение между сервером и клиентом.
-Сервер и клиент должны договориться об одном ключе сессии, который они будут вдвоем использовать, чтобы зашифровать пакеты данных.
-
----
-
-### Вопросы про микросервисы
-
----
-
-### Вопросы про инфраструктуру и деплой
-
-**1. Что такое сине-зеленый деплой(blue-green deployment)?**
-
-Стратегия сине-зеленого развертывания (иногда ее ещё называют red/black, т.е. красно-чёрной) предусматривает одновременное развертывание старой (зеленой) и новой (синей) версий приложения.
-После размещения обеих версий обычные пользователи получают доступ к зеленой, в то время как синяя доступна для QA-команды для автоматизации тестов через отдельный сервис или прямой проброс портов.
-
-После того, как синяя (новая) версия была протестирована и был одобрен ее релиз, сервис переключается на неё, а зеленая (старая) сворачивается.
-
-**2. Что такое Canary (канареечные развертывания)?**
-
-Канареечные выкаты похожи на сине-зеленые, но лучше управляются и используют прогрессивный поэтапный подход. К этому типу относятся несколько различных стратегий, включая «скрытые» запуски и А/В-тестирование.
-
-Эта стратегия применяется, когда необходимо испытать некую новую функциональность, как правило, в бэкенде приложения.
-Суть подхода в том, чтобы создать два практически одинаковых сервера: один обслуживает почти всех пользователей, а другой, с новыми функциями, обслуживает лишь небольшую подгруппу пользователей, после чего результаты их работы сравниваются.
-Если все проходит без ошибок, новая версия постепенно выкатывается на всю инфраструктуру.
-
-**3. Что такое Dark (скрытые) или А/В-развертывания?**
-
-Скрытое развертывание — еще одна вариация канареечной стратегии.
-Разница между скрытым и канареечным развертыванием состоит в том, что скрытые развертывания имеют дело с фронтендом, а не с бэкендом, как канареечные.
-
-Другое название этих развертываний — А/В-тестирование. Вместо того, чтобы открыть доступ к новой функции всем пользователям, ее предлагают лишь ограниченной их части. Обычно эти пользователи не знают, что выступают тестерами-первопроходцами (отсюда и термин «скрытое развертывание»).
-
-С помощью переключателей функциональности (feature toggles) и других инструментов можно следить за тем, как пользователи взаимодействуют с новой функцией, увлекает ли она их или они считают новый пользовательский интерфейс запутанным, и другими типами метрик.
-
----
-
-### Вопросы про кеширование и базам данных
-
-**1. Что такое индексы в MySQL, как и для чего их использовать и создавать?**
-
-**2. Что такое составной индекс, как и для чего их использовать и создавать?**
-
-**3. Как использовать индексы в JOIN запросах Mysql?**
-
-**4. Что такое частичные индексы, как и для чего их использовать и создавать?**
-
-**5. В чем отличия InnoDB и MyISAM?**
-
-**6. Возможен ли JOIN со вложенными запросами, как?**
-
-**7. Что такое дедлоки (deadlock), почему возникают, как можно недопускать?**
-
-**8. Что такое HAVING, что он делает как и зачем его использовать?**
-
-**9. Разница между WHERE и HAVING и можно ли использовать HAVING без группировки данных?**
-
-**10. Что такое EXPLAIN?**
-
-**11. Как узнать версию Mysql?**
-
-**12. Как можно оптимизировать ORDER BY RAND()?**
-
-**13. Как удалить индекс MySQL?**
-
----
-
-### Вопросы по языку Golang
+- [Ознакомтесь с шаблоном составления](TEMPLATE.md)