и посмотреть медиа
Тестировщик | Вопросы собесов
и посмотреть медиа
Вопросы собеседований для тестировщиков.
Вопросы собеседований для тестировщиков.
bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.
Вопросы по тестированию: ISTQB, Selenium, API. С примерами.
🤔 Как исправить коллектор? Если у вас возникли проблемы с работой 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(`Ссылка скрыта 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"Ссылка скрыта 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("Ссылка скрыта + 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"); } } Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как узнать статус-код? - Через DevTools в браузере (вкладка Network); - В Postman — отображается сразу после запроса; - Через curl, httpie или логирование на сервере; - В снифферах — видно в заголовках ответа. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое статические переменные? Статическая переменная — это переменная, значение которой сохраняется между вызовами функции или существования класса. В разных языках программирования она работает по-разному, но общий смысл — она общая для всех экземпляров и хранит свое значение в одном месте в памяти. 🟠В Java (статические переменные в классах) В Java статическая переменная объявляется с ключевым словом static внутри класса. Она принадлежит самому классу, а не его объектам. class Counter { static int count = 0; // Статическая переменная Counter() { count++; // Увеличиваем значение } void showCount() { System.out.println("Общее количество объектов: " + count); } } public class Main { public static void main(String[] args) { Counter obj1 = new Counter(); Counter obj2 = new Counter(); Counter obj3 = new Counter(); obj1.showCount(); // Выведет: Общее количество объектов: 3 } } 🟠В C (статические переменные в функциях и файлах) В C и С++ статическая переменная объявляется с static, но работает немного по-другому #include void counter() { static int count = 0; // Значение сохраняется между вызовами count++; printf("Count: %d\n", count); } int main() { counter(); // Count: 1 counter(); // Count: 2 counter(); // Count: 3 return 0; } Внутри файла (ограниченная область видимости) static int secretValue = 42; // Эта переменная доступна только в этом файле 🟠В Python (статические переменные в классах) В Python нет ключевого слова static, но аналог статической переменной — переменная класса. class Counter: count = 0 # Это статическая переменная def __init__(self): Counter.count += 1 print(Counter.count) # 0 a = Counter() b = Counter() print(Counter.count) # 2 🟠В JavaScript (через замыкания и свойства класса) В JavaScript можно создать статическую переменную с помощью static внутри класса class Counter { static count = 0; // Статическая переменная constructor() { Counter.count++; } static getCount() { return Counter.count; } } new Counter(); new Counter(); console.log(Counter.getCount()); // 2 Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что лучше Postman или полноценный фреймворк? Выбор между Postman и полноценным фреймворком для API-тестирования (например, RestAssured, JMeter, Cypress, Karate) зависит от задач и масштаба тестирования. Давайте разберем, когда лучше использовать Postman, а когда стоит писать тесты в коде. 🚩Когда Postman — хороший выбор? Это удобный инструмент с графическим интерфейсом для тестирования API. Подходит для ручного тестирования и быстрого создания автотестов. 🚩Плюсы Postman ➕ Простота не требует программирования, удобный UI. ➕Автоматизация есть встроенный JavaScript для тестов (pm.test). ➕Коллекции можно сохранять запросы и запускать их пакетами. ➕Интеграции Postman поддерживает CI/CD, Newman, экспорт в другие форматы. 🚩Минусы Postman ➖Медленный при больших тестах сложно поддерживать сотни сценариев. ➖Ограниченные возможности сложные проверки требуют костылей на JavaScript. ➖Мало гибкости сложные логики (например, работа с БД) реализовать сложно. ➖Трудно версионировать хранение тестов в Postman сложнее, чем в коде (например, в Git). 🚩Когда лучше использовать фреймворк для API-тестирования? Фреймворки, такие как RestAssured (Java), Cypress (JavaScript), Karate (Java), JMeter, Playwright API позволяют писать мощные тесты с полной автоматизацией. 🚩Плюсы фреймворка ➕Гибкость можно писать сложные тесты с циклами, логикой, базами данных. ➕Хорошая интеграция с CI/CD удобно запускать в Jenkins, GitHub Actions, GitLab CI. ➕Версионирование хранится в Git, легко отслеживать изменения. ➕Масштабируемость подходит для больших тестов и многопоточного выполнения. 🚩Минусы фреймворка ➖Сложнее в освоении нужно знать язык программирования (Java, Python, JS). ➖Дольше настраивать требует конфигурации проекта, зависимостей. ➖Меньше визуального удобства нет готового UI, как в Postman. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаSolo los usuarios registrados pueden compartir su opinión.
¡Sé el primero en compartir tu experiencia con este recurso!
Conductor en el mundo de los recursos humanos: las últimas tendencias, novedades y desafíos de reclutamiento para profesionales.
Datos prácticosIngeniería: Python, SQL, ETL, DWH, casos reales y consejos para entrevistas.
Producción de motos de nieve en Krasnoyarsk. Información sobre modelos y características técnicas.