5 сложных вопросов для Python разработчиков
1. Какие встроенные структуры данных в Python ты знаешь и чаще всего используешь?
Чаще всего используются списки (list), словари (dict), кортежи (tuple) и множества (set). Списки хранят упорядоченные коллекции элементов. Словари хранят данные в виде пар "ключ-значение" для быстрого доступа. Кортежи похожи на списки, но их нельзя изменить после создания. Множества хранят уникальные неупорядоченные элементы и полезны для операций объединения или пересечения.
2. Что такое Pydantic?
Pydantic — это библиотека для проверки данных и управления настройками с помощью аннотаций типов. Она автоматически проверяет типы данных и преобразует их в нужный формат. Это особенно полезно для обработки данных из запросов API или конфигурационных файлов. Библиотека помогает избежать ошибок, обеспечивая корректность данных перед их использованием.
3. Как обычно оптимизируете медленные запросы в ORM?
Оптимизация начинается с поиска узких мест с помощью инструментов вроде
4. Что такое "лингвистические паттерны" (naming patterns, code smells)?
Лингвистические паттерны — это соглашения по именованию сущностей в коде, которые улучшают читаемость (например, CamelCase для классов). Code smells — это симптомы в коде, которые указывают на потенциальные проблемы дизайна (например, длинные методы или дублирование кода).
5. Что из себя внутри представляют списки?
Внутри список в Python — это динамический массив. Это означает, что элементы хранятся в непрерывном блоке памяти. Интерпретатор заранее резервирует немного больше памяти, чем нужно, чтобы быстро добавлять новые элементы. Когда место заканчивается, Python находит новый, больший блок памяти и копирует туда все элементы. Это делает добавление элементов в конец списка в среднем очень быстрым.
#data_structure #list #dictionary #validation #serialization #model #orm #performance #query #naming_patterns #readability #maintainability #implementation
1. Какие встроенные структуры данных в Python ты знаешь и чаще всего используешь?
Чаще всего используются списки (list), словари (dict), кортежи (tuple) и множества (set). Списки хранят упорядоченные коллекции элементов. Словари хранят данные в виде пар "ключ-значение" для быстрого доступа. Кортежи похожи на списки, но их нельзя изменить после создания. Множества хранят уникальные неупорядоченные элементы и полезны для операций объединения или пересечения.
2. Что такое Pydantic?
Pydantic — это библиотека для проверки данных и управления настройками с помощью аннотаций типов. Она автоматически проверяет типы данных и преобразует их в нужный формат. Это особенно полезно для обработки данных из запросов API или конфигурационных файлов. Библиотека помогает избежать ошибок, обеспечивая корректность данных перед их использованием.
3. Как обычно оптимизируете медленные запросы в ORM?
Оптимизация начинается с поиска узких мест с помощью инструментов вроде
django-debug-toolbar. Основные методы: использование select_related и prefetch_related для уменьшения числа запросов, добавление индексов к полям и правильное использование only() или defer() для загрузки только нужных полей. Иногда эффективнее заменить сложный запрос ORM на прямое SQL-выражение с помощью extra() или RawSQL.4. Что такое "лингвистические паттерны" (naming patterns, code smells)?
Лингвистические паттерны — это соглашения по именованию сущностей в коде, которые улучшают читаемость (например, CamelCase для классов). Code smells — это симптомы в коде, которые указывают на потенциальные проблемы дизайна (например, длинные методы или дублирование кода).
5. Что из себя внутри представляют списки?
Внутри список в Python — это динамический массив. Это означает, что элементы хранятся в непрерывном блоке памяти. Интерпретатор заранее резервирует немного больше памяти, чем нужно, чтобы быстро добавлять новые элементы. Когда место заканчивается, Python находит новый, больший блок памяти и копирует туда все элементы. Это делает добавление элементов в конец списка в среднем очень быстрым.
#data_structure #list #dictionary #validation #serialization #model #orm #performance #query #naming_patterns #readability #maintainability #implementation
🧑💻 5 сложных вопросов для Python разработчиков
1. Что такое "лингвистические паттерны" (naming patterns, code smells)?
Лингвистические паттерны — это соглашения по именованию сущностей в коде, которые улучшают читаемость (например, CamelCase для классов). Code smells — это симптомы в коде, которые указывают на потенциальные проблемы дизайна (например, длинные методы или дублирование кода).
2. Что такое Pydantic?
Pydantic — это библиотека для проверки данных и управления настройками с помощью аннотаций типов. Она автоматически проверяет типы данных и преобразует их в нужный формат. Это особенно полезно для обработки данных из запросов API или конфигурационных файлов. Библиотека помогает избежать ошибок, обеспечивая корректность данных перед их использованием.
3. Как обычно оптимизируете медленные запросы в ORM?
Оптимизация начинается с поиска узких мест с помощью инструментов вроде
4. Какие встроенные структуры данных в Python ты знаешь и чаще всего используешь?
Чаще всего используются списки (list), словари (dict), кортежи (tuple) и множества (set). Списки хранят упорядоченные коллекции элементов. Словари хранят данные в виде пар "ключ-значение" для быстрого доступа. Кортежи похожи на списки, но их нельзя изменить после создания. Множества хранят уникальные неупорядоченные элементы и полезны для операций объединения или пересечения.
5. Что из себя внутри представляют списки?
Внутри список в Python — это динамический массив. Это означает, что элементы хранятся в непрерывном блоке памяти. Интерпретатор заранее резервирует немного больше памяти, чем нужно, чтобы быстро добавлять новые элементы. Когда место заканчивается, Python находит новый, больший блок памяти и копирует туда все элементы. Это делает добавление элементов в конец списка в среднем очень быстрым.
#naming_patterns #readability #maintainability #validation #serialization #model #orm #performance #query #data_structure #list #dictionary #implementation
1. Что такое "лингвистические паттерны" (naming patterns, code smells)?
Лингвистические паттерны — это соглашения по именованию сущностей в коде, которые улучшают читаемость (например, CamelCase для классов). Code smells — это симптомы в коде, которые указывают на потенциальные проблемы дизайна (например, длинные методы или дублирование кода).
2. Что такое Pydantic?
Pydantic — это библиотека для проверки данных и управления настройками с помощью аннотаций типов. Она автоматически проверяет типы данных и преобразует их в нужный формат. Это особенно полезно для обработки данных из запросов API или конфигурационных файлов. Библиотека помогает избежать ошибок, обеспечивая корректность данных перед их использованием.
3. Как обычно оптимизируете медленные запросы в ORM?
Оптимизация начинается с поиска узких мест с помощью инструментов вроде
django-debug-toolbar. Основные методы: использование select_related и prefetch_related для уменьшения числа запросов, добавление индексов к полям и правильное использование only() или defer() для загрузки только нужных полей. Иногда эффективнее заменить сложный запрос ORM на прямое SQL-выражение с помощью extra() или RawSQL.4. Какие встроенные структуры данных в Python ты знаешь и чаще всего используешь?
Чаще всего используются списки (list), словари (dict), кортежи (tuple) и множества (set). Списки хранят упорядоченные коллекции элементов. Словари хранят данные в виде пар "ключ-значение" для быстрого доступа. Кортежи похожи на списки, но их нельзя изменить после создания. Множества хранят уникальные неупорядоченные элементы и полезны для операций объединения или пересечения.
5. Что из себя внутри представляют списки?
Внутри список в Python — это динамический массив. Это означает, что элементы хранятся в непрерывном блоке памяти. Интерпретатор заранее резервирует немного больше памяти, чем нужно, чтобы быстро добавлять новые элементы. Когда место заканчивается, Python находит новый, больший блок памяти и копирует туда все элементы. Это делает добавление элементов в конец списка в среднем очень быстрым.
#naming_patterns #readability #maintainability #validation #serialization #model #orm #performance #query #data_structure #list #dictionary #implementation
🧑💻 5 сложных вопросов для Python разработчиков
1. Что такое абстрактные классы?
Абстрактные классы в Python — это классы, которые не могут быть созданы непосредственно, а служат как шаблоны для других классов. Они могут содержать абстрактные методы, которые должны быть реализованы в дочерних классах. Абстрактные классы создаются с использованием модуля
2. Разница между одинарным и двойным подчеркиванием?
- Одинарное подчеркивание (
- Двойное подчеркивание (
3. Как работает middleware?
Middleware — это программный компонент, который обрабатывает запросы и ответы между клиентом и сервером в веб-приложении. Он может модифицировать запросы перед тем, как они попадут в обработчик, или изменять ответы перед отправкой их обратно клиенту.
4. Какие есть коды ответов HTTP?
Коды ответов HTTP делятся на пять категорий:
- 1xx (Информационные) — запрос принят, обработка продолжается.
- 2xx (Успешные) — запрос успешно выполнен (например, 200 OK).
- 3xx (Перенаправления) — нужно выполнить дополнительное действие (например, 301 Moved Permanently).
- 4xx (Ошибки клиента) — запрос содержит ошибки (например, 404 Not Found).
- 5xx (Ошибки сервера) — проблема на стороне сервера (например, 500 Internal Server Error).
5. Зачем нужен метод super в классе?
Метод
#abstract_class #oop #inheritance #naming #underscore #middleware #status_code #http #rest #super
1. Что такое абстрактные классы?
Абстрактные классы в Python — это классы, которые не могут быть созданы непосредственно, а служат как шаблоны для других классов. Они могут содержать абстрактные методы, которые должны быть реализованы в дочерних классах. Абстрактные классы создаются с использованием модуля
abc и декоратора @abstractmethod.2. Разница между одинарным и двойным подчеркиванием?
- Одинарное подчеркивание (
_) используется как соглашение для обозначения "непубличных" атрибутов и методов, которые не предназначены для использования вне класса, но это не является жестким ограничением.- Двойное подчеркивание (
__) используется для реализации механизма именования с учётом "защищённых" атрибутов, а также для создания уникальных имен, чтобы избежать конфликтов.3. Как работает middleware?
Middleware — это программный компонент, который обрабатывает запросы и ответы между клиентом и сервером в веб-приложении. Он может модифицировать запросы перед тем, как они попадут в обработчик, или изменять ответы перед отправкой их обратно клиенту.
4. Какие есть коды ответов HTTP?
Коды ответов HTTP делятся на пять категорий:
- 1xx (Информационные) — запрос принят, обработка продолжается.
- 2xx (Успешные) — запрос успешно выполнен (например, 200 OK).
- 3xx (Перенаправления) — нужно выполнить дополнительное действие (например, 301 Moved Permanently).
- 4xx (Ошибки клиента) — запрос содержит ошибки (например, 404 Not Found).
- 5xx (Ошибки сервера) — проблема на стороне сервера (например, 500 Internal Server Error).
5. Зачем нужен метод super в классе?
Метод
super() используется для вызова методов родительского класса в дочернем классе. Это позволяет расширять или изменять функциональность родительского метода без необходимости повторно писать его код.#abstract_class #oop #inheritance #naming #underscore #middleware #status_code #http #rest #super
🧑💻 5 сложных вопросов для Python разработчиков
1. Как работает middleware?
Middleware — это программный компонент, который обрабатывает запросы и ответы между клиентом и сервером в веб-приложении. Он может модифицировать запросы перед тем, как они попадут в обработчик, или изменять ответы перед отправкой их обратно клиенту.
2. Зачем нужен метод super в классе?
Метод
3. Разница между одинарным и двойным подчеркиванием?
- Одинарное подчеркивание (
- Двойное подчеркивание (
4. Что такое абстрактные классы?
Абстрактные классы в Python — это классы, которые не могут быть созданы непосредственно, а служат как шаблоны для других классов. Они могут содержать абстрактные методы, которые должны быть реализованы в дочерних классах. Абстрактные классы создаются с использованием модуля
5. Какие есть коды ответов HTTP?
Коды ответов HTTP делятся на пять категорий:
- 1xx (Информационные) — запрос принят, обработка продолжается.
- 2xx (Успешные) — запрос успешно выполнен (например, 200 OK).
- 3xx (Перенаправления) — нужно выполнить дополнительное действие (например, 301 Moved Permanently).
- 4xx (Ошибки клиента) — запрос содержит ошибки (например, 404 Not Found).
- 5xx (Ошибки сервера) — проблема на стороне сервера (например, 500 Internal Server Error).
#middleware #super #inheritance #oop #naming #underscore #abstract_class #status_code #http #rest
1. Как работает middleware?
Middleware — это программный компонент, который обрабатывает запросы и ответы между клиентом и сервером в веб-приложении. Он может модифицировать запросы перед тем, как они попадут в обработчик, или изменять ответы перед отправкой их обратно клиенту.
2. Зачем нужен метод super в классе?
Метод
super() используется для вызова методов родительского класса в дочернем классе. Это позволяет расширять или изменять функциональность родительского метода без необходимости повторно писать его код.3. Разница между одинарным и двойным подчеркиванием?
- Одинарное подчеркивание (
_) используется как соглашение для обозначения "непубличных" атрибутов и методов, которые не предназначены для использования вне класса, но это не является жестким ограничением.- Двойное подчеркивание (
__) используется для реализации механизма именования с учётом "защищённых" атрибутов, а также для создания уникальных имен, чтобы избежать конфликтов.4. Что такое абстрактные классы?
Абстрактные классы в Python — это классы, которые не могут быть созданы непосредственно, а служат как шаблоны для других классов. Они могут содержать абстрактные методы, которые должны быть реализованы в дочерних классах. Абстрактные классы создаются с использованием модуля
abc и декоратора @abstractmethod.5. Какие есть коды ответов HTTP?
Коды ответов HTTP делятся на пять категорий:
- 1xx (Информационные) — запрос принят, обработка продолжается.
- 2xx (Успешные) — запрос успешно выполнен (например, 200 OK).
- 3xx (Перенаправления) — нужно выполнить дополнительное действие (например, 301 Moved Permanently).
- 4xx (Ошибки клиента) — запрос содержит ошибки (например, 404 Not Found).
- 5xx (Ошибки сервера) — проблема на стороне сервера (например, 500 Internal Server Error).
#middleware #super #inheritance #oop #naming #underscore #abstract_class #status_code #http #rest
🧑💻 Вопросы с собесов для Node.js Разработчика
1. Расскажите о генераторах и итераторах в JavaScript и приведите пример их использования.
Итераторы — это объекты, которые реализуют метод
2. Что такое дескрипторы свойств объектов в JavaScript и как их можно использовать на практике?
Дескрипторы свойств — это специальные объекты, которые описывают атрибуты свойства объекта, такие как возможность его изменения, перечисления или удаления. Используя дескрипторы, можно точно контролировать, как свойства объекта будут вести себя. Например, можно сделать свойство неизменяемым или скрыть его от перебора через цикл.
3. Что такое ArrayBuffer и в чем разница между типами Uint32Array и Float32Array?
4. Назовите несколько способов создания неизменного объекта в JavaScript.
Существуют несколько способов сделать объект неизменным. Один из самых популярных — это метод
5. Объясните разницу между последовательным и параллельным выполнением асинхронных функций. Как работают Promise.all() и Promise.allSettled()?
Последовательное выполнение асинхронных функций означает, что каждая следующая функция начинается только после завершения предыдущей, тогда как параллельное выполнение позволяет нескольким функциям выполняться одновременно.
Метод
#функция #yield #next #объекты #defineproperty #байт #данные #arraybuffer #freeze #объект #seal #promise #асинхронность
1. Расскажите о генераторах и итераторах в JavaScript и приведите пример их использования.
Итераторы — это объекты, которые реализуют метод
next() и возвращают значение на каждой итерации. Генераторы — это функции, которые создают итераторы с помощью function* и yield. Генераторы позволяют контролировать выполнение кода и возвращать значения по мере необходимости, что упрощает работу с большими или бесконечными наборами данных.2. Что такое дескрипторы свойств объектов в JavaScript и как их можно использовать на практике?
Дескрипторы свойств — это специальные объекты, которые описывают атрибуты свойства объекта, такие как возможность его изменения, перечисления или удаления. Используя дескрипторы, можно точно контролировать, как свойства объекта будут вести себя. Например, можно сделать свойство неизменяемым или скрыть его от перебора через цикл.
3. Что такое ArrayBuffer и в чем разница между типами Uint32Array и Float32Array?
ArrayBuffer — это объект, который хранит фиксированное количество байт данных в памяти. Он используется для работы с бинарными данными. Uint32Array и Float32Array — это типизированные массивы, которые представляют разные типы данных: Uint32Array работает с беззнаковыми целыми числами, а Float32Array — с числами с плавающей точкой. Основное различие между ними — в типе данных, который они хранят.4. Назовите несколько способов создания неизменного объекта в JavaScript.
Существуют несколько способов сделать объект неизменным. Один из самых популярных — это метод
Object.freeze(), который запрещает добавление, удаление и изменение свойств объекта. Также можно использовать Object.seal(), который позволяет изменять существующие свойства, но не добавлять новые. Для глубоких объектов применяют рекурсивное замораживание.5. Объясните разницу между последовательным и параллельным выполнением асинхронных функций. Как работают Promise.all() и Promise.allSettled()?
Последовательное выполнение асинхронных функций означает, что каждая следующая функция начинается только после завершения предыдущей, тогда как параллельное выполнение позволяет нескольким функциям выполняться одновременно.
Метод
Promise.all() запускает несколько промисов параллельно и возвращает результат, когда все они успешно завершатся, а Promise.allSettled() возвращает результат независимо от того, завершился ли каждый промис успехом или ошибкой.#функция #yield #next #объекты #defineproperty #байт #данные #arraybuffer #freeze #объект #seal #promise #асинхронность
🧑💻 Вопросы с собесов для Node.js Разработчика
1. Виды тестов и их различия
Основные виды тестов: unit (проверка отдельных компонентов), integration (проверка взаимодействия компонентов), e2e (проверка всей системы). Они различаются scope, скоростью выполнения и сложностью setup.
2. Pick, Omit, Partial в TS
3. Что такое "всплытие" (hoisting) в контексте переменных и функций?
Hoisting (всплытие) - это механизм в JavaScript, при котором объявления переменных и функций "поднимаются" в начало своей области видимости. Объявления функций поднимаются полностью, а переменные, объявленные через
4. Представь есть очень толстый сложный запрос (загрузка видео или в бд). Что делать в Node.js? А если в SQL?
В Node.js для тяжелых операций используйте асинхронную обработку, потоки и очередь задач. Для SQL-запросов оптимизируйте запросы, добавляйте индексы и используйте пагинацию. В обоих случаях важно не блокировать event loop и эффективно использовать ресурсы.
5. Какие бывают транспорты между микросервисами (синхронный подход (REST, gRPC) и асинхронный (kafka, rabbitMQ, NATS))
Для коммуникации микросервисов используются синхронные (REST, gRPC) и асинхронные (Kafka, RabbitMQ, NATS) транспорты. Синхронные требуют immediate response, асинхронные используют message brokers для декаплингования сервисов.
#testing #unit #integration #type_utility #pick #omit #hoisting #performance_optimization #streams #sql_optimization #microservices #communication
1. Виды тестов и их различия
Основные виды тестов: unit (проверка отдельных компонентов), integration (проверка взаимодействия компонентов), e2e (проверка всей системы). Они различаются scope, скоростью выполнения и сложностью setup.
2. Pick, Omit, Partial в TS
Pick, Omit и Partial — это утилитарные типы TypeScript для работы с объектными типами. Pick создает тип из выбранных свойств исходного типа. Omit создает тип, исключая указанные свойства. Partial делает все свойства типа необязательными.3. Что такое "всплытие" (hoisting) в контексте переменных и функций?
Hoisting (всплытие) - это механизм в JavaScript, при котором объявления переменных и функций "поднимаются" в начало своей области видимости. Объявления функций поднимаются полностью, а переменные, объявленные через
var - только объявление, но не инициализация. let и const также всплывают, но не инициализируются до фактического объявления.4. Представь есть очень толстый сложный запрос (загрузка видео или в бд). Что делать в Node.js? А если в SQL?
В Node.js для тяжелых операций используйте асинхронную обработку, потоки и очередь задач. Для SQL-запросов оптимизируйте запросы, добавляйте индексы и используйте пагинацию. В обоих случаях важно не блокировать event loop и эффективно использовать ресурсы.
5. Какие бывают транспорты между микросервисами (синхронный подход (REST, gRPC) и асинхронный (kafka, rabbitMQ, NATS))
Для коммуникации микросервисов используются синхронные (REST, gRPC) и асинхронные (Kafka, RabbitMQ, NATS) транспорты. Синхронные требуют immediate response, асинхронные используют message brokers для декаплингования сервисов.
#testing #unit #integration #type_utility #pick #omit #hoisting #performance_optimization #streams #sql_optimization #microservices #communication
🧑💻 Подборка из 5 вопросов для Golang разработчиков
1. Какие методы уменьшения объема Docker-образа ты знаешь?
Основные методы: использование многоступенчатой сборки (multi-stage build), выбор минимального базового образа (например,
#docker #image_optimization
1. Какие методы уменьшения объема Docker-образа ты знаешь?
Основные методы: использование многоступенчатой сборки (multi-stage build), выбор минимального базового образа (например,
alpine), объединение команд RUN в одну для уменьшения слоёв, использование файла .dockerignore и удаление кэша пакетного менеджера в том же слое, где он использовался.#docker #image_optimization
🧑💻 Подборка из 5 вопросов для Golang разработчиков
1. Как в Go реализовать middleware?
Middleware — это функция, которая оборачивает http.Handler и добавляет дополнительную логику до и после вызова ServeHTTP.
2. Как устроен Outbox-паттерн и зачем он нужен?
Outbox-паттерн сохраняет сообщение в таблицу вместе с изменением состояния, а потом отдельный процесс (consumer) читает и отправляет их в Kafka. Это обеспечивает атомарность между БД и очередью.
3. Что такое transactional outbox и зачем он нужен?
Transactional outbox — это способ гарантированной доставки сообщений между сервисами. Он сохраняет сообщение в БД в рамках бизнес-транзакции, а затем отправляет его асинхронно.
4. Как предотвратить списание средств с баланса при гонке транзакций?
Нужно использовать транзакции с блокировкой строк (SELECT FOR UPDATE), чтобы избежать одновременного изменения баланса разными транзакциями.
5. Что такое палиндром и как его определить в Go?
Палиндром — это строка, которая читается одинаково слева направо и справа налево. В Go важно учитывать работу с рунами, а не байтами, особенно для кириллицы. Также часто приводят символы к нижнему регистру для корректного сравнения.
#middleware #http #decorator #outbox #transactional_messaging #kafka #pattern #transaction #locking #balance #string #palindrome
1. Как в Go реализовать middleware?
Middleware — это функция, которая оборачивает http.Handler и добавляет дополнительную логику до и после вызова ServeHTTP.
2. Как устроен Outbox-паттерн и зачем он нужен?
Outbox-паттерн сохраняет сообщение в таблицу вместе с изменением состояния, а потом отдельный процесс (consumer) читает и отправляет их в Kafka. Это обеспечивает атомарность между БД и очередью.
3. Что такое transactional outbox и зачем он нужен?
Transactional outbox — это способ гарантированной доставки сообщений между сервисами. Он сохраняет сообщение в БД в рамках бизнес-транзакции, а затем отправляет его асинхронно.
4. Как предотвратить списание средств с баланса при гонке транзакций?
Нужно использовать транзакции с блокировкой строк (SELECT FOR UPDATE), чтобы избежать одновременного изменения баланса разными транзакциями.
5. Что такое палиндром и как его определить в Go?
Палиндром — это строка, которая читается одинаково слева направо и справа налево. В Go важно учитывать работу с рунами, а не байтами, особенно для кириллицы. Также часто приводят символы к нижнему регистру для корректного сравнения.
#middleware #http #decorator #outbox #transactional_messaging #kafka #pattern #transaction #locking #balance #string #palindrome
🧑💻 Подборка из 5 вопросов для Golang разработчиков
1. RabbitMQ использует базу данных?
RabbitMQ не использует базу данных для хранения сообщений. Вместо этого оно записывает сообщения на диск в двух случаях: если сообщение имеет
2. Что такое Erlang?
Erlang — это функциональный язык программирования, разработанный для создания распределённых и отказоустойчивых систем. RabbitMQ разработан на Erlang и использует его платформу Open Telecom Platform (OTP) для кластеризации и обеспечения высокой доступности.
3. Какой протокол использует RabbitMQ?
RabbitMQ использует AMQP (Advanced Message Queuing Protocol) — открытый стандарт для передачи сообщений через сеть. Он обеспечивает надежную, масштабируемую и стандартизированную коммуникацию между системами.
4. Что такое pub/sub?
Pub/sub (publish/subscribe) — это асинхронная модель взаимодействия, где производитель публикует сообщение на определённую тему, и все подписчики этой темы получают его одновременно. Этот подход часто используется в микросервисах для организации событийного взаимодействия.
5. Является ли RabbitMQ устойчивым?
RabbitMQ поддерживает устойчивость сообщений и очередей. Чтобы обеспечить сохранение сообщений при перезапуске сервера, очередь должна быть помечена как durable, а сообщения — как persistent (указанием
#rabbitmq #storage #delivery_mode #erlang #otp #amqp #protocol #pub #sub #durability #persistence
1. RabbitMQ использует базу данных?
RabbitMQ не использует базу данных для хранения сообщений. Вместо этого оно записывает сообщения на диск в двух случаях: если сообщение имеет
delivery_mode=2 (устойчивое сообщение) или при недостатке оперативной памяти, чтобы освободить её для других задач.2. Что такое Erlang?
Erlang — это функциональный язык программирования, разработанный для создания распределённых и отказоустойчивых систем. RabbitMQ разработан на Erlang и использует его платформу Open Telecom Platform (OTP) для кластеризации и обеспечения высокой доступности.
3. Какой протокол использует RabbitMQ?
RabbitMQ использует AMQP (Advanced Message Queuing Protocol) — открытый стандарт для передачи сообщений через сеть. Он обеспечивает надежную, масштабируемую и стандартизированную коммуникацию между системами.
4. Что такое pub/sub?
Pub/sub (publish/subscribe) — это асинхронная модель взаимодействия, где производитель публикует сообщение на определённую тему, и все подписчики этой темы получают его одновременно. Этот подход часто используется в микросервисах для организации событийного взаимодействия.
5. Является ли RabbitMQ устойчивым?
RabbitMQ поддерживает устойчивость сообщений и очередей. Чтобы обеспечить сохранение сообщений при перезапуске сервера, очередь должна быть помечена как durable, а сообщения — как persistent (указанием
delivery_mode=2 при публикации). Устойчивые очереди сохраняются между перезапусками сервера, но сами сообщения требуют дополнительного указания их устойчивости.#rabbitmq #storage #delivery_mode #erlang #otp #amqp #protocol #pub #sub #durability #persistence
#Собес #sql #select #performance
🤔 Middle Java Backend-разработчик в компанию МВидео.
Техническое собеседование. Зима 2025. Просил 250к+. Проект: биллинг (сбор информации по поставщикам). Опыт в резюме: 3 года. Сначала было много вопросов об опыте, стеке, тестах, "почему уходишь с текущего места работы?" и т.д. Был лайкводинг.
💬 Вопросы:
- Как реализовать базовое приложение на Spring Boot?
- Зачем нужен Spring Framework?
- Что такое чистый и поддерживаемый код?
- Какие принципы важны при работе с базой данных?
- Влияет ли количество полей в SELECT на производительность?
👉 Все вопросы из этого собеседования (7)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle Java Backend-разработчик в компанию МВидео.
Техническое собеседование. Зима 2025. Просил 250к+. Проект: биллинг (сбор информации по поставщикам). Опыт в резюме: 3 года. Сначала было много вопросов об опыте, стеке, тестах, "почему уходишь с текущего места работы?" и т.д. Был лайкводинг.
💬 Вопросы:
- Как реализовать базовое приложение на Spring Boot?
- Зачем нужен Spring Framework?
- Что такое чистый и поддерживаемый код?
- Какие принципы важны при работе с базой данных?
- Влияет ли количество полей в SELECT на производительность?
👉 Все вопросы из этого собеседования (7)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#video #ошибки
📚 IT-расследование: как ошибка в программе убила людей?
Нашел для вас интересное видео про баг в аппарате Therac-25 и почему он стоил людям жизни.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 IT-расследование: как ошибка в программе убила людей?
Нашел для вас интересное видео про баг в аппарате Therac-25 и почему он стоил людям жизни.
Перейти к материалу
👉 База вопросов 👉 Новости
🧑💻 Подборка из 5 вопросов для Golang разработчиков
1. Можно ли передать функцию как параметр другой функции?
Да, в Go функции можно передавать как параметры другим функциям. Это позволяет создавать гибкие и переиспользуемые блоки логики. Такие функции называются функциями первого класса.
2. Какова алгоритмическая сложность доступа по ключу для map?
Доступ по ключу в
3. Что происходит, когда в коде просят выделить 1 КБ памяти?
При выделении 1 КБ памяти программа запрашивает у операционной системы блок памяти нужного размера. Обычно это происходит через аллокатор, который управляет памятью внутри процесса.
4. Как реализовать транзакции через SQL-запросы?
Используются команды
5. Почему поиск в B-tree работает быстрее полного перебора данных?
Потому что B-tree отсеивает ненужные данные, двигаясь по дереву, а не проверяя каждую строку таблицы.
#function #first_class #parameter #map #hash_table #complexity #memory_allocation #heap #pointer #begin #commit #rollback #b-tree #binary_search #index
1. Можно ли передать функцию как параметр другой функции?
Да, в Go функции можно передавать как параметры другим функциям. Это позволяет создавать гибкие и переиспользуемые блоки логики. Такие функции называются функциями первого класса.
2. Какова алгоритмическая сложность доступа по ключу для map?
Доступ по ключу в
map в Go выполняется за амортизированное время O(1). Это означает, что операции получения, вставки и удаления обычно очень быстры.3. Что происходит, когда в коде просят выделить 1 КБ памяти?
При выделении 1 КБ памяти программа запрашивает у операционной системы блок памяти нужного размера. Обычно это происходит через аллокатор, который управляет памятью внутри процесса.
4. Как реализовать транзакции через SQL-запросы?
Используются команды
BEGIN, COMMIT, ROLLBACK.5. Почему поиск в B-tree работает быстрее полного перебора данных?
Потому что B-tree отсеивает ненужные данные, двигаясь по дереву, а не проверяя каждую строку таблицы.
#function #first_class #parameter #map #hash_table #complexity #memory_allocation #heap #pointer #begin #commit #rollback #b-tree #binary_search #index
#Собес #grpc #middleware #concurrency
🤔 Middle+ Golang Backend-разработчик в Ozon
Техническое собеседование. Лето 2025. Вилка 290к+. Проект: мультисервисная платформа для работы с заказами и аналитикой в Ozon. Опыт в резюме — 3.5 года. Вопросы по конкурентности, работе с HTTP, базам данных, Kafka, паттерну Outbox, архитектуре и SQL.
💬 Вопросы:
- Зачем использовать UUID вместо автоинкрементного ID в распределённой системе?
- Что такое transactional consistency в контексте Outbox?
- Что такое transactional outbox и зачем он нужен?
- Что такое паттерн Strategy и зачем он нужен?
- Как реализовать worker pool в Go?
👉 Все вопросы из этого собеседования (15)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle+ Golang Backend-разработчик в Ozon
Техническое собеседование. Лето 2025. Вилка 290к+. Проект: мультисервисная платформа для работы с заказами и аналитикой в Ozon. Опыт в резюме — 3.5 года. Вопросы по конкурентности, работе с HTTP, базам данных, Kafka, паттерну Outbox, архитектуре и SQL.
💬 Вопросы:
- Зачем использовать UUID вместо автоинкрементного ID в распределённой системе?
- Что такое transactional consistency в контексте Outbox?
- Что такое transactional outbox и зачем он нужен?
- Что такое паттерн Strategy и зачем он нужен?
- Как реализовать worker pool в Go?
👉 Все вопросы из этого собеседования (15)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#article #инструменты #ии
📚 AI уже тут: в какие инструменты уже интегрирован ИИ
AI довольно быстро стал интегрироваться в инструменты и пускать корни во многие профессии, QA не исключение. Здесь точно есть что оптимизировать, ведь у тестировщиков всегда много рутинных задач, которые требуют внимательности, но не слишком сложны по своей сути.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 AI уже тут: в какие инструменты уже интегрирован ИИ
AI довольно быстро стал интегрироваться в инструменты и пускать корни во многие профессии, QA не исключение. Здесь точно есть что оптимизировать, ведь у тестировщиков всегда много рутинных задач, которые требуют внимательности, но не слишком сложны по своей сути.
Перейти к материалу
👉 База вопросов 👉 Новости
#podcast #кейсы #проекты
📚 Machine Learning: Нейросети и машинное обучение
Подкаст "Machine Learning" — это захватывающее путешествие в мир нейросетей, машинного обучения и искусственного интеллекта, созданное для всех, кто хочет разобраться в технологиях, меняющих мир! Каждую неделю мы погружаемся в актуальные темы: от новейших архитектур нейросетей, таких как трансформеры, до применения ИИ в медицине, финансах, играх и творчестве. Вместе с ведущими экспертами, исследователями и практиками мы обсуждаем, как алгоритмы учатся, почему большие языковые модели вроде GPT революционизируют обработку данных, и какие этические дилеммы стоят за развитием ИИ.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Machine Learning: Нейросети и машинное обучение
Подкаст "Machine Learning" — это захватывающее путешествие в мир нейросетей, машинного обучения и искусственного интеллекта, созданное для всех, кто хочет разобраться в технологиях, меняющих мир! Каждую неделю мы погружаемся в актуальные темы: от новейших архитектур нейросетей, таких как трансформеры, до применения ИИ в медицине, финансах, играх и творчестве. Вместе с ведущими экспертами, исследователями и практиками мы обсуждаем, как алгоритмы учатся, почему большие языковые модели вроде GPT революционизируют обработку данных, и какие этические дилеммы стоят за развитием ИИ.
Перейти к материалу
👉 База вопросов 👉 Новости
🧑💻 5 вопросов с собесов Frontend разработчиков
1. Что такое Сравнение (Diffing) и Патчинг?
Сравнение (Diffing) — это процесс, при котором React сравнивает старое и новое представление виртуального DOM, чтобы определить, какие изменения необходимо внести в реальный DOM. Патчинг — это этап, на котором React вносит эти изменения, обновляя только те элементы, которые изменились, а не перерисовывая всё дерево компонентов.
2. Что такое React Reconciliation (Этап согласования)?
React Reconciliation — это процесс, с помощью которого React обновляет интерфейс, определяя, какие изменения необходимо внести в виртуальный DOM и как это отразить на реальном DOM. Этот процесс включает сравнение старого и нового виртуального DOM, что позволяет React эффективно обновлять только те компоненты, которые изменились, а не перерисовывать всё приложение.
3. Что такое реактивность?
Реактивность — это подход к программированию, при котором интерфейс автоматически обновляется при изменении данных или состояния. В React это реализуется через систему состояния и пропсов, позволяющую разработчикам легко управлять изменениями в приложении и обеспечивать согласованность между данными и отображением.
4. Как работает реактивность под капотом и как реализовать её?
Реактивность в React работает через использование состояния и хуков, таких как
5. Что такое AbortController и как он используется в JavaScript для отмены асинхронных операций?
#virtual_dom #optimization #dom #реактивность #abort #fetch
1. Что такое Сравнение (Diffing) и Патчинг?
Сравнение (Diffing) — это процесс, при котором React сравнивает старое и новое представление виртуального DOM, чтобы определить, какие изменения необходимо внести в реальный DOM. Патчинг — это этап, на котором React вносит эти изменения, обновляя только те элементы, которые изменились, а не перерисовывая всё дерево компонентов.
2. Что такое React Reconciliation (Этап согласования)?
React Reconciliation — это процесс, с помощью которого React обновляет интерфейс, определяя, какие изменения необходимо внести в виртуальный DOM и как это отразить на реальном DOM. Этот процесс включает сравнение старого и нового виртуального DOM, что позволяет React эффективно обновлять только те компоненты, которые изменились, а не перерисовывать всё приложение.
3. Что такое реактивность?
Реактивность — это подход к программированию, при котором интерфейс автоматически обновляется при изменении данных или состояния. В React это реализуется через систему состояния и пропсов, позволяющую разработчикам легко управлять изменениями в приложении и обеспечивать согласованность между данными и отображением.
4. Как работает реактивность под капотом и как реализовать её?
Реактивность в React работает через использование состояния и хуков, таких как
useState и useEffect. Когда состояние изменяется, React автоматически инициирует перерисовку компонентов, которые зависят от этого состояния, обеспечивая согласованность между данными и интерфейсом. Реактивность достигается через механизм подписки на изменения состояния и виртуальный DOM, который минимизирует обновления реального DOM.5. Что такое AbortController и как он используется в JavaScript для отмены асинхронных операций?
AbortController — это встроенный объект в JavaScript, который позволяет отменять асинхронные операции, такие как запросы через fetch. Он работает вместе с AbortSignal, который передаётся в асинхронную операцию. Если вы вызываете метод abort() у контроллера, операция прерывается, и её результат больше не будет обработан.#virtual_dom #optimization #dom #реактивность #abort #fetch
#Собес #reducer #redux #solid
🤔 Middle Frontend разработчик (React) в компанию X5
Техническое собеседование. Весна 2025. Вилка: 300к+. Опыт в резюме: 4 года. Были вопросы на понимание принципа работы БД, вопросы про шардирование..
💬 Вопросы:
- Где хранить кэшированные данные? (LocalStorage, IndexedDB). Что делать, если IndexedDB не поддерживается?
- Как управлять версионностью зависимостей (например, React) между микрофронтами?
- Какие проблемы возникают в микрофронтенд-архитектуре?
- Как интерпретировать принцип замены Лисков (L в SOLID) во фронтенде (на примере React)?
- Как реализовать кэширование данных без библиотек?
👉 Все вопросы из этого собеседования (28)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle Frontend разработчик (React) в компанию X5
Техническое собеседование. Весна 2025. Вилка: 300к+. Опыт в резюме: 4 года. Были вопросы на понимание принципа работы БД, вопросы про шардирование..
💬 Вопросы:
- Где хранить кэшированные данные? (LocalStorage, IndexedDB). Что делать, если IndexedDB не поддерживается?
- Как управлять версионностью зависимостей (например, React) между микрофронтами?
- Какие проблемы возникают в микрофронтенд-архитектуре?
- Как интерпретировать принцип замены Лисков (L в SOLID) во фронтенде (на примере React)?
- Как реализовать кэширование данных без библиотек?
👉 Все вопросы из этого собеседования (28)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#documentation #база
📚 База знаний школы Systems Education
Большая база ссылок на статьи по различным темам: от работы с требованиями до протокола WebSocket.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 База знаний школы Systems Education
Большая база ссылок на статьи по различным темам: от работы с требованиями до протокола WebSocket.
Перейти к материалу
👉 База вопросов 👉 Новости
#course #ии
📚 «Введение в Data Science и машинное обучение»
Data Scientist is The Sexiest Job of the 21st Century, а машинное обучение и анализ данных - это захватывающие области, знакомство с которыми точно не оставит вас равнодушными! Мы начнем с самого начала, разберем центральные понятия и темы. Познакомимся с такими методами машинного обучения как деревья решений и нейронные сети. Практическая часть курса будет посвящена знакомству с наиболее популярными библиотеками для анализа данных, используя язык программирования Python — Pandas и Scikit-learn.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 «Введение в Data Science и машинное обучение»
Data Scientist is The Sexiest Job of the 21st Century, а машинное обучение и анализ данных - это захватывающие области, знакомство с которыми точно не оставит вас равнодушными! Мы начнем с самого начала, разберем центральные понятия и темы. Познакомимся с такими методами машинного обучения как деревья решений и нейронные сети. Практическая часть курса будет посвящена знакомству с наиболее популярными библиотеками для анализа данных, используя язык программирования Python — Pandas и Scikit-learn.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #scaling #optimization #performance
🤔 Как отправить 10 000 запросов за короткое время – подходы и оптимизация?
💬 Кратко:
Для отправки 10 000 запросов используйте асинхронный подход с ограничением параллелизма через Semaphore. Группируйте запросы с помощью
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как отправить 10 000 запросов за короткое время – подходы и оптимизация?
💬 Кратко:
Для отправки 10 000 запросов используйте асинхронный подход с ограничением параллелизма через Semaphore. Группируйте запросы с помощью
asyncio.gather() в батчах, используйте connection pooling и настраивайте таймауты для избежания блокировок.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🧑💻 5 сложных вопросов для Python разработчиков
1. Что такое конструктор класса / Как создается объект?
Конструктор класса — это специальный метод
2. Что такое параллелизм?
Параллелизм — это выполнение нескольких операций одновременно. В многозадачности задачи могут переключаться между собой, но в параллелизме задачи реально выполняются одновременно, используя несколько процессоров или ядер.
3. Что такое асинхронное программирование?
Асинхронное программирование позволяет выполнять несколько задач одновременно, не блокируя основной поток программы. В Python для этого используются ключевые слова
4. Что такое поведенческие паттерны?
Поведенческие паттерны проектирования фокусируются на улучшении взаимодействия между объектами и организации их ответственности. Эти паттерны помогают создать гибкие и удобные в обслуживании системы, обеспечивая решение проблем взаимодействия и распределения обязанностей.
5. Какая есть связь между хеш-функцией и изменяемостью/неизменяемостью?
Хеш-функция используется для получения уникального значения для объекта, которое представляет его состояние. В Python объекты, которые изменяются после создания, не могут быть хешируемыми, потому что их хеш-значение может измениться, что нарушит работу хеш-таблиц (например, словарей). Неизменяемые объекты, такие как строки и кортежи, можно хешировать, потому что их состояние не меняется.
#constructor #class #init #parallelism #concurrency #multiprocessing #async #await #behavioral #pattern #software #hash #immutable #mutable
1. Что такое конструктор класса / Как создается объект?
Конструктор класса — это специальный метод
__init__, который вызывается при создании нового объекта. Он используется для инициализации атрибутов объекта и выполнения других начальных действий.2. Что такое параллелизм?
Параллелизм — это выполнение нескольких операций одновременно. В многозадачности задачи могут переключаться между собой, но в параллелизме задачи реально выполняются одновременно, используя несколько процессоров или ядер.
3. Что такое асинхронное программирование?
Асинхронное программирование позволяет выполнять несколько задач одновременно, не блокируя основной поток программы. В Python для этого используются ключевые слова
async и await, которые позволяют запускать корутины и управлять асинхронными операциями.4. Что такое поведенческие паттерны?
Поведенческие паттерны проектирования фокусируются на улучшении взаимодействия между объектами и организации их ответственности. Эти паттерны помогают создать гибкие и удобные в обслуживании системы, обеспечивая решение проблем взаимодействия и распределения обязанностей.
5. Какая есть связь между хеш-функцией и изменяемостью/неизменяемостью?
Хеш-функция используется для получения уникального значения для объекта, которое представляет его состояние. В Python объекты, которые изменяются после создания, не могут быть хешируемыми, потому что их хеш-значение может измениться, что нарушит работу хеш-таблиц (например, словарей). Неизменяемые объекты, такие как строки и кортежи, можно хешировать, потому что их состояние не меняется.
#constructor #class #init #parallelism #concurrency #multiprocessing #async #await #behavioral #pattern #software #hash #immutable #mutable