ru
Feedback
Тестировщик | Вопросы собесов

Тестировщик | Вопросы собесов

Открыть в Telegram

📈 Аналитический обзор Telegram-канала Тестировщик | Вопросы собесов

Канал Тестировщик | Вопросы собесов (@easy_qa_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 12 215 подписчиков, занимая 9 965 место в категории Технологии и приложения и 52 704 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 12 215 подписчиков.

Согласно последним данным от 30 августа, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -16, а за последние 24 часа — -1, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 7.23%. В первые 24 часа после публикации контент обычно набирает 4.28% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 883 просмотров. В течение первых суток публикация набирает 523 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 2.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, api, testing, ввод, интерфейс.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

Благодаря высокой частоте обновлений (последние данные получены 31 августа, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

12 215
Подписчики
-124 часа
-137 дней
-1630 день
Архив постов
🔥 Осталось 3 дня! Пожизненный easyoffer PRO по цене одного года. Покупаешь один раз – пользуешься всю жизнь. Что входит в PRO: – Вопросы и задачи с реальных собеседований в конкретных компаниях – Лучшие ответы и видео-примеры от middle/senior специалистов – Записи реальных собеседований – Обход фильтров ATS с топ-30 ключевых слов в резюме – Автоотклики на hh – Тренажёры и симуляторы для идеальной подготовки к интервью ⏳ Акция действует только до 2 сентября 23:59 по МСК 👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/pro

🤔 Что такое микросервисная архитектура? Микросервисная архитектура (MSA, Microservices Architecture) – это стиль разработки ПО, в котором приложение разбивается на мелкие независимые сервисы, взаимодействующие между собой через API. 🚩Каждый микросервис Выполняет одну конкретную бизнес-задачу (например, авторизация, платежи, управление пользователями). Автономен – его можно разрабатывать, развертывать и масштабировать отдельно. Общается с другими микросервисами через HTTP (REST, gRPC) или асинхронные очереди (Kafka, RabbitMQ*. 🚩Ключевые принципы микросервисов Разделение на мелкие сервисы – нет единого монолита, каждый сервис отвечает за свою функцию. Связь через API – микросервисы общаются по HTTP (REST, GraphQL, gRPC) или через брокеры сообщений. Независимое развертывание – каждый сервис можно обновлять без остановки всей системы. Собственная база данных – каждый сервис управляет своими данными (это уменьшает зависимость между сервисами). Горизонтальное масштабирование – можно увеличить только нужные сервисы под нагрузкой. 🚩Пример микросервисной архитектуры Допустим, у нас есть интернет-магазин. В микросервисной архитектуре он может быть разделен на: User Service – отвечает за регистрацию и авторизацию. Order Service – обрабатывает заказы. Payment Service – управляет платежами. Product Service – хранит информацию о товарах. Notification Service – отправляет уведомления клиентам. 🚩ПлюсыГибкость можно разрабатывать разные сервисы разными командами и технологиями. ➕Масштабируемость можно увеличить только нужные сервисы, а не всю систему. ➕Устойчивость отказ одного сервиса не ломает всю систему. ➕Быстрое развертывание можно обновлять отдельные сервисы без остановки всего приложения. 🚩МинусыСложность нужно продумывать взаимодействие сервисов, мониторинг, балансировку. ➖Задержки в коммуникации из-за работы по сети API-запросы могут выполняться медленнее, чем в монолите. ➖Сложное тестирование приходится тестировать не только сервисы по отдельности, но и их взаимодействие. Ставь 👍 и забирай 📚 Базу знаний

Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес. Преимущества аренды: - Выделенные ресурсы без переплаты; - KVM-виртуализация; - Быстрые NVMe SSD; - Бесплатная защита от DDoS; - Управление через панель, API и Terraform; - Техподдержка 24/7. Запустите сервер за несколько минут! Попробовать #реклама 16+ selectel.ru О рекламодателе

🤔 Техника анализа классов эквивалентности — классический пример? Классический пример: поле для ввода возраста (принимает значения от 18 до 65). Разбивается на 3 класса: - валидный класс (18–65); - класс с меньшим значением (<18); - класс с большим значением (>65). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие знаешь статус коды? Статусные коды HTTP представляют собой стандартизированные индикаторы, отправляемые сервером в ответ на запросы клиента, чтобы указать на результат обработки запроса. Они помогают определить, был ли запрос успешным, произошла ли ошибка и какого рода действия требуется предпринять дальше. Они разделены на пять классов: 🚩1xx: Информационные 🟠100 Continue Промежуточный ответ, указывающий, что начальная часть запроса принята и клиент может продолжать отправку данных. 🟠101 Switching Protocols Сервер соглашается переключить протоколы в соответствии с запросом клиента, отправленным в заголовке Upgrade. 🚩2xx: Успешные 🟠200 OK Стандартный ответ для успешных HTTP-запросов. Ресурс успешно обработан и передан в теле ответа. 🟠201 Created Запрос был успешно выполнен, и в результате был создан новый ресурс. 🟠204 No Content Запрос успешно обработан, но в ответе нет содержимого. 🚩3xx: Перенаправления 🟠301 Moved Permanently Запрашиваемый ресурс был окончательно перемещен на URL, указанный в заголовке Location. Клиент должен использовать этот новый URL в будущем. 🟠302 Found Запрашиваемый ресурс временно находится по другому URI, указанному в заголовке Location. 🟠304 Not Modified Ресурс не был изменен с момента последнего запроса клиента, использующего условные заголовки типа If-Modified-Since или If-None-Match. 🚩4xx: Ошибки клиента 🟠400 Bad Request Сервер не может обработать запрос из-за неверного синтаксиса. 🟠401 Unauthorized Для доступа к запрашиваемому ресурсу требуется аутентификация. 🟠403 Forbidden Сервер понял запрос, но отказывается его авторизовать. 🟠404 Not Found Запрашиваемый ресурс не найден на сервере. 🟠405 Method Not Allowed Метод, указанный в запросе, не поддерживается для данного ресурса. 🚩5xx: Ошибки сервера 🟠500 Internal Server Error Общая ошибка сервера, когда сервер сталкивается с непредвиденными обстоятельствами. 🟠501 Not Implemented Сервер не поддерживает функциональные возможности, необходимые для обработки запроса. 🟠502 Bad Gateway Сервер, выступая в роли шлюза или прокси, получил неверный ответ от вышестоящего сервера. 🟠503 Service Unavailable Сервер временно не может обработать запрос из-за перегрузки или технического обслуживания. 🟠504 Gateway Timeout Шлюз или прокси-сервер не получил вовремя ответ от вышестоящего сервера для завершения запроса. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое респонсивная верстка? Респонсивная верстка (Responsive Web Design, RWD) — это подход к разработке веб-страниц, при котором сайт автоматически подстраивается под разные размеры экранов и устройства (десктопы, планшеты, смартфоны). 🚩Как реализуется респонсивность? 🟠Медиа-запросы (CSS Media Queries) Позволяют менять стили в зависимости от размера экрана.
body {
  font-size: 16px;
}

@media (max-width: 768px) {
  body {
    font-size: 14px;
  }
}
🟠Гибкие сетки (Flexible Grids, Flexbox, CSS Grid) Позволяют располагать элементы на странице так, чтобы они адаптировались под экран.
.container {
  display: flex;
  flex-wrap: wrap;
}

.item {
  flex: 1 1 300px; /* Блоки с минимальной шириной 300px */
}
🟠Отзывчивые изображения (Responsive Images) Изображения должны подстраиваться под размер экрана.
img {
  max-width: 100%;
  height: auto;
}
🟠Viewport в `<meta>` Обязательный тег для адаптивности на мобильных устройствах.
<meta name="viewport" content="width=device-width, initial-scale=1">
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чем разница между ошибкой и дефектом? В тестировании и разработке программного обеспечения ошибка (error) и дефект (defect) – это разные понятия, хотя они связаны между собой. 🚩Ошибка (Error) Ошибка – это неправильное действие или решение разработчика, из-за которого в коде появляется проблема. Ошибки могут быть на разных этапах Ошибки при написании кода (синтаксические, логические). Ошибки в требованиях (неправильное понимание задачи). Ошибки в дизайне (некорректная архитектура).
int divide(int a, int b) {
    return a / b; // Ошибка: нет проверки на деление на 0
}
🚩Дефект (Defect, Bug, Issue) Дефект – это некорректное поведение программы, вызванное ошибкой в коде. Дефект – это конкретная проблема в продукте, найденная тестировщиком или пользователем. Если дефект мешает пользователям – он становится проблемой (issue). Пример дефекта: Кнопка "Войти" не работает. При вводе 0 приложение вылетает с ошибкой. Цена товара на сайте отображается неправильно. Ставь 👍 и забирай 📚 Базу знаний

Как PostgreSQL ведёт себя под большой нагрузкой Борьба с блокировками в PostgreSQL: как сохранить параллельность при высокой
Как PostgreSQL ведёт себя под большой нагрузкой Борьба с блокировками в PostgreSQL: как сохранить параллельность при высокой нагрузке. 📅 8 сентября, 20:00 МСК - открытый урок курса «Высоконагруженные системы: архитектура и масштабирование». 📚 Разберём блокировки на уровне транзакций и строк, научимся выявлять взаимные блокировки и узкие места. На реальных примерах покажем оптимизацию запросов и архитектурные приёмы для поддержания производительности. Для разработчиков, архитекторов, инженеров, DBA и аналитиков, работающих с PostgreSQL. Регистрируйтесь - получите практические приёмы и спецусловия на обучение. 😊 Узнать больше #реклама 16+ otus.ru О рекламодателе

🤔 Какие есть методы проектирования? - Эквивалентное разбиение; - Анализ граничных значений; - Попарное тестирование; - Причинно-следственные графы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Расскажи об трехуровневой клиент-серверной архитектуре( 3-Tier)? Трёхуровневая архитектура (3-Tier) – это модель построения программных систем, в которой приложение разделено на три логических уровня: Уровень представления (Presentation Tier) – интерфейс пользователя. Уровень бизнес-логики (Application/Logic Tier) – обработка данных. Уровень данных (Data Tier) – база данных. 🟠Уровень представления (Presentation Tier) – Фронтенд Это интерфейс, который пользователь видит и с которым взаимодействует. Отправляет запросы на сервер и получает данные. Веб: HTML, CSS, JavaScript, React, Angular, Vue Мобильные приложения: Swift (iOS), Kotlin (Android) Десктопные приложения: Electron, WPF
fetch("https://api.example.com/products")
  .then(response => response.json())
  .then(data => console.log(data));
🚩Уровень бизнес-логики (Application Tier) – Бэкенд Обрабатывает запросы от фронтенда. Применяет правила и бизнес-логику. Запрашивает и обновляет данные в базе. Языки: Node.js, Java, Python, PHP, C# Фреймворки: Express.js, Spring, Django, ASP.NET API: REST, GraphQL, gRPC
app.get("/products", (req, res) => {
    const products = db.getAllProducts();
    res.json(products);
});
🚩Уровень данных (Data Tier) – База данных Хранит структурированные (SQL) или неструктурированные (NoSQL) данные. Отвечает на запросы сервера (CRUD: Create, Read, Update, Delete). Примеры технологий: SQL: **PostgreSQL, MySQL, MS SQL NoSQL: MongoDB, Redis, Firebase
SELECT * FROM products WHERE category = 'electronics';
🚩Как взаимодействуют уровни? Фронтенд (UI) делает запрос к API (https://api.example.com/products). Бэкенд обрабатывает запрос, запрашивает данные из БД. База данных возвращает данные бэкенду. Бэкенд отправляет ответ фронтенду. Фронтенд отображает данные пользователю.
Пользователь → Нажимает "Показать товары"
Фронтенд → Запрос на /products
Бэкенд → Запрос к БД
База данных → Отдаёт список товаров
Бэкенд → Отправляет JSON-ответ
Фронтенд → Показывает товары на экране
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какими пользовался сниферами? Обычно используются: - Charles — для мобильных и веб-приложений; - Fiddler — удобен на Windows; - Wireshark — низкоуровневый анализ сети; - Burp Suite — в тестах безопасности и перехватах HTTPS. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какой body при 404 ответе от сервера? Когда сервер возвращает ответ с кодом 404 (Not Found), это означает, что запрашиваемый ресурс не найден. Содержимое тела (body) ответа при этом может варьироваться в зависимости от реализации сервера и конкретного приложения, но обычно оно содержит информацию, объясняющую пользователю или клиентскому приложению причину ошибки.
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
<head>
    <title>404 Not Found</title>
</head>
<body>
    <h1>404 Not Found</h1>
    <p>The requested URL /path/to/resource was not found on this server.</p>
</body>
</html>
JSON-ответ для API с кодом 404
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "error": {
        "code": 404,
        "message": "Resource not found",
        "details": "The requested resource /api/v1/resource was not found on this server."
    }
}
🚩Примеры Node.js с использованием Express
const express = require('express');
const app = express();

app.use((req, res, next) => {
    res.status(404).json({
        error: {
            code: 404,
            message: "Resource not found",
            details: `The requested resource ${req.originalUrl} was not found on this server.`
        }
    });
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});
Python с использованием Flask
from flask import Flask, jsonify

app = Flask(__name__)

@app.errorhandler(404)
def not_found(error):
    response = jsonify({
        "error": {
            "code": 404,
            "message": "Resource not found",
            "details": "The requested resource was not found on this server."
        }
    })
    response.status_code = 404
    return response

ifead>
    <== "__main__":
    app.run(debug=True)
Ставь 👍 и забирай 📚 Базу знаний

Самое интересное в российском PostgreSQL этой осенью! Регистрируйтесь на бесплатную конференцию по PostgreSQL и технологиям С
Самое интересное в российском PostgreSQL этой осенью! Регистрируйтесь на бесплатную конференцию по PostgreSQL и технологиям СУБД — Tantor JAM 2026. 10 сентября, Москва. 📅 Что будет на конференции: ✅ AI-first мониторинг СУБД: что уже сегодня можно передать ИИ-агентам и как меняется профессия DBA; ✅ аналитика и HTAP без внешней обвязки, внутри Postgres; ✅ как за два года изменился PostgreSQL для 1С; ✅ защита данных в Tantor Postgres. Как всегда — технические доклады, живое общение с разработчиками и архитекторами, обмен опытом, а еще — вечерняя программа в честь пятилетия «Тантор Лабс». Участие бесплатное. 10.09.2026, Москва Зарегистрироваться #реклама 16+ tantorlabs.ru О рекламодателе

Пожизненный PRO доступ на easyoffer — по цене одного года! До 2 сентября вы можете купить PRO навсегда. Покупаешь один раз — пользуешься всю жизнь. – База вопросов и задач из собеседований – Примеры видео-ответов на вопросы – Записи реальных собеседований – Тренажеры "Проработка вопросов" и "Реальное собеседование" – Аналитика требований из вакансий – Автоотклики на вакансии – Агрегатор вакансий (скоро) 👉 Купить PRO со скидкой 70%: https://easyoffer.ru/pro

🤔 Что делать, если джуниор попал на проект с высокоуровневым чек-листом? - Разбить сложные пункты на подзадачи; - Попросить наставничество или пояснения; - Сконцентрироваться на базовых проверках; - Учиться у команды, не бояться задавать вопросы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для тестирования ПО где можно взять ожидаемый результат? Ожидаемый результат в тестировании ПО – это заранее определённый правильный ответ или поведение системы при заданных входных данных. Он необходим для сравнения с фактическим результатом, чтобы определить, работает ли система корректно. 🚩Где взять ожидаемый результат? 🟠Требования к ПО Основной источник – это функциональные и нефункциональные требования. Если в документации сказано, что кнопка "Отправить" должна отправлять форму и показывать сообщение "Успешно отправлено", то ожидаемый результат теста – появление этого сообщения после нажатия. 🟠Спецификации и дизайн-документы В технических документах могут быть описаны алгоритмы, расчёты, формулы и логика работы системы. Например, если система должна вычислять налог как 13% от суммы дохода, то для входного значения 1000 руб. ожидаемый результат – 130 руб. 🟠Обсуждения с заказчиком, аналитиками и разработчиками Если документация неполная или отсутствует, можно уточнить детали у команды. Например, можно спросить у разработчиков: "Как именно должна обрабатываться ошибка при неверном вводе пароля?" 🟠Прототипы и макеты UI/UX-дизайнеры разрабатывают макеты интерфейсов, из которых можно понять, как должна выглядеть страница после выполнения определённого действия. 🟠Анализ предыдущих версий продукта Если приложение уже существует, можно сравнивать с его предыдущими версиями. Например, если раньше кнопка "Удалить" показывала подтверждающее окно, а теперь не показывает, то это может быть багом. 🟠Стандарты и руководства по индустрии Если тестируем банковское ПО, то ожидаемые результаты могут основываться на стандартах безопасности (например, PCI DSS). Для веб-приложений – на спецификациях W3C. 🟠Ручной расчёт или внешние системы Для тестирования сложных математических вычислений можно рассчитать результат вручную или использовать калькулятор. Например, проверяя налоговый расчёт, можно свериться с бухгалтерскими системами. 🟠Анализ поведения конкурентов Если приложение разрабатывается аналогично конкуренту, можно изучить его работу и ожидать схожего поведения. Ставь 👍 и забирай 📚 Базу знаний

🤔 Расскажи про проведение проверок? Проведение проверок — важный процесс в QA (Quality Assurance), который помогает выявить дефекты до того, как продукт попадет к пользователю. Проверки можно разделить на ручные и автоматизированные, а также на разные уровни тестирования. 🚩Виды проверок в тестировании 🟠Верификация и Валидация Верификация (Verification) - проверяем, делаем ли мы всё правильно (соответствие требованиям). Валидация (Validation) – проверяем, правильно ли работает продукт (соответствует ли он ожиданиям пользователя). Верификация: «В ТЗ написано, что кнопка должна быть зеленой. Она зеленая?» ✅ Валидация: «Пользователь понимает, что это кнопка?» 🤔 🟠Функциональное и нефункциональное тестирование Функциональные проверки – проверяют, работает ли система по требованиям (например, корректный логин/пароль). Нефункциональные проверки – проверяют производительность, безопасность, удобство использования. Функциональная проверка: Если ввести 123456, логин пройдет? Нефункциональная проверка: Сайт выдержит 1000 пользователей одновременно? 🚩Методы проведения проверок 🟠Ручное тестирование Проверки выполняются тестировщиком без автоматизированных инструментов. Используются чек-листы, тест-кейсы, exploratory testing. Проверить, что кнопка "Заказать" работает на всех страницах. Вручную протестировать корзину в интернет-магазине. 🟠Автоматизированное тестирование Запуск тестов с помощью кода (Selenium, JUnit, PyTest, Cypress). Подходит для регрессионного тестирования и больших проектов.
@Test
public void testLogin() {
    driver.get("https://example.com");
    driver.findElement(By.id("username")).sendKeys("user");
    driver.findElement(By.id("password")).sendKeys("pass");
    driver.findElement(By.id("login")).click();
    Assert.assertTrue(driver.getTitle().contains("Dashboard"));
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие виды тестирования используются при валидации? Это процесс оценки готового продукта на соответствие ожиданиям и потребностям пользователя. Цель валидации – убедиться, что продукт "делает то, что нужно", т.е. соответствует требованиям реального использования. 🚩Основные виды тестирования 🟠Функциональное тестирование Это основной тип тестирования для проверки, выполняет ли продукт свои функции в соответствии с требованиями. Проверка всех функциональных аспектов системы: входные данные, поведение приложения и его отклик. Если у вас есть калькулятор, который должен складывать числа, вы проверяете, правильно ли он складывает: Ввод: 2 + 3 Ожидаемый результат: 5. Это напрямую подтверждает, что продукт соответствует описанным требованиям. 🟠Юзабилити-тестирование Цель – проверить удобство использования приложения для конечных пользователей. Логичность интерфейса, простота выполнения задач, читаемость текстов. Если у вас есть веб-приложение, проверяется, насколько удобно пользователь может найти нужную кнопку, завершить покупку или зарегистрироваться. Даже идеально работающая функция может быть бесполезна, если пользователю трудно ею воспользоваться. 🟠Тестирование пользовательского интерфейса (UI Testing) Это проверка внешнего вида продукта. Правильное отображение всех элементов интерфейса на экранах разных размеров и в разных браузерах. Если кнопка "Отправить" должна быть синей и размещена в правом углу, тестирование проверит, правильно ли она отображается на всех устройствах. Пользователи ожидают, что интерфейс будет соответствовать их привычкам и стандартам. 🟠Интеграционное тестирование Проверка взаимодействия между компонентами системы. Слаженная работа модулей вместе, например, API взаимодействие между фронтендом и бекендом. Если пользователь отправляет форму, тестируется, приходит ли запрос на сервер и возвращается ли ожидаемый ответ. Даже работающие по отдельности модули могут "сломаться", если они неправильно интегрированы. 🟠Тестирование совместимости Проверка работы продукта на различных устройствах, операционных системах и браузерах. Корректная работа системы в разных условиях. Проверка мобильного приложения на iOS и Android или веб-приложения в Chrome, Firefox и Safari. Пользователи используют продукт в разных средах, и везде он должен быть функциональным. 🟠Тестирование производительности (Performance Testing) Проверяется, как система ведет себя при различных нагрузках. Время отклика, устойчивость при большом количестве пользователей. Тестирование интернет-магазина во время "Черной пятницы", чтобы убедиться, что сайт не "упадет". Медленное или нестабильное приложение может отпугнуть пользователей. 🟠Альфа- и бета-тестирование Финальные этапы тестирования перед выпуском продукта. Проводится внутренней командой разработчиков и QA, чтобы найти оставшиеся баги. Проводится с участием реальных пользователей для получения обратной связи. Это помогает получить объективную оценку и убедиться, что продукт готов к реальной эксплуатации. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как исправить коллектор? Если у вас возникли проблемы с работой GC (Garbage Collector), это может проявляться как: Высокая нагрузка на CPU из-за частых сборок мусора. OutOfMemoryError (OOM) – память не освобождается вовремя. Долгие паузы (GC pauses) – приложение зависает во время очистки памяти. 🟠Выбор правильного GC-алгоритма Java поддерживает несколько GC-алгоритмов. Иногда просто смена GC помогает улучшить производительность.
java -XX:+PrintCommandLineFlags -version
Как задать нужный GC:
# G1 GC (по умолчанию в Java 9+)
java -XX:+UseG1GC -jar app.jar 

# ZGC (низкие паузы, для больших heap)
java -XX:+UseZGC -jar app.jar 

# Shenandoah GC (минимальные задержки, Java 12+)
java -XX:+UseShenandoahGC -jar app.jar 

# Serial GC (для маленьких приложений)
java -XX:+UseSerialGC -jar app.jar
🟠Оптимизация размеров heap (памяти JVM) Если у вас OutOfMemoryError или частые GC-паузы, попробуйте изменить размер heap.
java -Xms512m -Xmx4g -jar app.jar
🟠Включить логи GC для диагностики Чтобы понять, как работает GC, можно включить логи GC и проанализировать их.
java -Xlog:gc* -jar app.jar  # Логи GC для Java 9+
java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -jar app.jar  # Для Java 8
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как реализовать Вейтер для Api? Вейтер (waiter) — это механизм, который позволяет ожидать выполнения определенного состояния API перед продолжением выполнения кода. Он используется, когда API-ответ не моментальный и требует подождать, например: Ожидание готовности ресурса (создание пользователя, завершение обработки запроса). Проверка статуса задачи (например, пока файл обработается). Повторные запросы к API через интервалы времени. 🟠Реализация "вейтера" в JavaScript (async/await + setTimeout) Этот подход полезен для работы с REST API.
async function waitForCompletion(taskId, maxAttempts = 10, interval = 3000) {
    let attempt = 0;

    while (attempt < maxAttempts) {
        console.log(`Попытка ${attempt + 1}: Проверка статуса...`);
        
        const response = await fetch(`https://api.example.com/tasks/${taskId}`);
        const data = await response.json();

        if (data.status === "completed") {
            console.log("Задача выполнена!");
            return data;
        }

        attempt++;
        if (attempt < maxAttempts) {
            await new Promise(resolve => setTimeout(resolve, interval)); // Ожидание перед следующей попыткой
        }
    }

    throw new Error("Время ожидания истекло, задача не завершена.");
}

// Использование
waitForCompletion("12345").then(console.log).catch(console.error);
🟠Реализация "вейтера" в Python (requests + time.sleep) Используется в тестах и API-интеграциях.
import requests
import time

def wait_for_status(order_id, max_attempts=10, interval=5):
    url = f"https://api.example.com/orders/{order_id}"
    
    for attempt in range(max_attempts):
        print(f"Попытка {attempt + 1}: Проверяем статус...")
        response = requests.get(url)
        data = response.json()

        if data["status"] == "shipped":
            print("Заказ отправлен!")
            return data

        time.sleep(interval)  # Ждем перед следующей попыткой

    raise TimeoutError("Время ожидания истекло, заказ не отправлен.")

# Использование
try:
    order_data = wait_for_status("98765")
    print(order_data)
except TimeoutError as e:
    print(str(e))
🟠Реализация "вейтера" в Java (RestAssured + Thread.sleep) В Java "вейтеры" часто используют в тестах API.
import io.restassured.RestAssured;
import io.restassured.response.Response;

public class ApiWaiter {
    public static void waitForStatus(String taskId) throws InterruptedException {
        int maxAttempts = 10;
        int interval = 3000; // 3 секунды

        for (int i = 0; i < maxAttempts; i++) {
            System.out.println("Попытка " + (i + 1) + ": Проверяем статус...");
            Response response = RestAssured.get("https://api.example.com/tasks/" + taskId);
            String status = response.jsonPath().getString("status");

            if ("done".equals(status)) {
                System.out.println("Задача выполнена!");
                return;
            }

            Thread.sleep(interval);
        }

        throw new RuntimeException("Время ожидания истекло, задача не завершена.");
    }

    public static void main(String[] args) throws InterruptedException {
        waitForStatus("task123");
    }
}
Ставь 👍 и забирай 📚 Базу знаний