Вопросы и ответы для собеседования Back-end/Golang разработчика и не только

Вместе мы разберемся!
Здесь собирается большая коллеция вопросов и ответов на них, необходимых не только для прохождения собеседований, но и для комплексного развития кругозора ## Содержание 1. [Общие вопросы](docs/COMMON.md) - В чем отличие протоколов TCP и UDP? В каком случае UDP предпочтительнее? - Что такое NAT? - Что такое HTTP и HTTPS, в чем их отличия? - Что такое SSL и TSL, есть ли между ними отличия? - coming soon 2. [Вопросы по шаблонам проектирования](docs/DESIGN_PATTERNS.md) - TODO 3. [Вопросы про микросервисы](docs/MICROSERVICES.md) - TODO 4. [Вопросы про инфраструктуру и деплой](docs/INFRASTRUCTURE_AND_DEPLOY.md) - Что такое сине-зеленый деплой(blue-green deployment)? - Что такое Canary (канареечные развертывания)? - Что такое Dark (скрытые) или А/В-развертывания? - coming soon 5. [Вопросы про кеширование и базам данных](docs/CACHE_AND_DB.md) - Что такое индексы в MySQL, как и для чего их использовать и создавать? - Что такое составной индекс, как и для чего их использовать и создавать? - Как использовать индексы в JOIN запросах Mysql? - Что такое частичные индексы, как и для чего их использовать и создавать? - В чем отличия InnoDB и MyISAM? - Возможен ли JOIN со вложенными запросами, как? - Что такое дедлоки (deadlock), почему возникают, как можно недопускать? - Что такое HAVING, что он делает как и зачем его использовать? - Разница между WHERE и HAVING и можно ли использовать HAVING без группировки данных? - Что такое EXPLAIN? - Как узнать версию Mysql? - Как можно оптимизировать ORDER BY RAND()? - Как удалить индекс MySQL? - coming soon 6. [Вопросы по языку Golang](docs/GOLANG.md) - Что из себя представляет тип данных string в языке Golang? Можно ли изменить определенный символ в строке? Что происходит при склеивании строк? - Вытекающий вопрос — как эффективно склеивать множество строк? - Что будет происходить при конкуррентной записи в map? Как можно решить эту проблему? - Расскажите о ООП в Golang. - В чем различия goroutine от потока системы? - Как огранить число потоков на системы при запуске Golang программы и возможно ли огранить их до 1 потока? - Как устроен слайс и чем он отличается от массива? - [Как задать направление канала?](docs/GOLANG.md#8) - [Напишите собственную функцию Sleep, используя time.After](docs/GOLANG.md#9) - [Что такое буферизированный канал? Как создать такой канал с ёмкостью в 20 сообщений?](docs/GOLANG.md#10) - [Напишите программу, которая меняет местами два числа (x := 1; y := 2; swap(&x, &y) должно дать x=2 и y=1)](docs/GOLANG.md#11) - [Какое будет значение у переменной x после выполнения программы?](docs/GOLANG.md#12) 7. [Вопросы о распределённых системах](docs/DISTRIBUTED_SYSTEMS.md) - Как тестировать распределённую систему? - coming soon 8. [Вопросы по организации кода](docs/CODE_DESIGN.md) - Как тесты и TDD влияют на организацию кода? - В чём разница между сцеплением и связанностью? - Почему в TDD тесты пишутся прежде кода? - Если у вашего кода плохая организация, как вы это поймёте? ## Как мне добавить свой вопрос-ответ? - [Ознакомтесь с шаблоном составления](TEMPLATE.md)