Отладка и производительность

Отладка и производительность #


1. Действия при OutOfMemory. Сервис перезагружается каждые несколько часов #

2. ЦПУ улетел вверх. Твои действия. #

3. Приходил запрос от саппорта. Клиент жалуется, что у него тормозит конкретная страница. Как будешь начинать копать задачу и куда будешь двигаться. #

4. Есть микросервис. Есть ендпоинт. Ендпоинт не укладывается по времени работы на какой то ступени нагрузочного тестирования. Нужно ускорить его работу. Как приступить к этой задаче? Предположим у нас нет БД. Какие болевые точки могут быть? #

5. Есть java сервер. Сервер завис. Как подойти к этой проблеме? #

6. Микросервис уходит в рестарт по памяти. Твои дейстия? OutOfMemoryException #

7. Авторизация. Есть запрос. Как бэкэнд может узнать, какой пользователь делает запрос: из браузера или API? Как информация об авторизации, сессии передается в запросе? В каком заголовке эта инфа может передаваться? #

8. В проде все было хорошо. И вдруг бэкэнд стал отвечать с длительностью 1.5 сек. Решили добавить кэш, добавили, а время ответа возрасло до 1.6 сек. Почему такое могло случиться? #

9. Деплоим версию сервиса (делаем выкатку на прод). Сервис поднимается, но спустя 20-60 сек падает по ошибке “Не хватает памяти OOM (Out of memory)”. Kuber убивает старый под, поднимает новый под, снова сервис поднимает. Но снова сервис падает, и снова. Куда бы ты посмотрел? Что бы сделал? #

10. Есть микросервис, который сохраняет файлы в S3. Есть API загрузки файла. Какой-то микросервис дергает этот метод, передает файл, и микросервис, который сохраняет файл падает по OutOfMemoryError. Что будешь делать? Падает микросервис до сохранения файла на S3 #

11. Написали код, код возможно будет меняться. Есть риск возникновения ошибки при изменении кода. Какую стратегию тестирования выбрать? #

12. Java сервер. Работал, работал и завис. Как нам разобраться, что пошло не так? #

13. Надо протестировать какой-то объект. В него инжектится другой объект. На другой объект кидаем мок. Как проверить вызывается ли объект? #

14. Мы сидим в k8s и никто не даст нам снять heap dump. Что делать? Есть Grafana. На какие метрики будем обращать внимание? #

15. Написали сервис, в нем есть (а?)синхронный запрос. Flux, GraphQL. К нам в сервис приходит сущность. Мы должны записать ее в БД и сверить expected и received сущности. Тебе надо написать тест этого сравнения. Как будешь делать? #

16. Идёт загрузка клиентов, большое количество данных. Нам хочется, чтобы грузилось 5-10 тысяч записей в секунду. Это данные передают пакетами. Они могут быть в базе данных, а могут и не быть. Какой быстрый алгоритм Вы бы организовали для добавление/обновление данных? #

17. Есть приложение по заказу такси. Пользователь едет в метро, связь работает не очень хорошо. Он нажимает кнопку Заказать машину, а в ответ прилетает ошибка, второй раз нажимает - тоже ошибка. В третий раз нажимает - успех. Выходит из метро, его ждут 3 машины. Как такое могло произойти? Что надо переделать в приложении, чтобы избежать такой ситуации? #

18. What happens if you create a changeset that runs on the development environment, but then you realize there’s a typo in a column name? How would you fix it? #

19. Есть наш сервис. Мы из него делаем HTTP запрос во внешний источник (ВИ) в диком интернете. Каждый запрос во ВИ для нас платный. В логах видим, что от ВИ периодически приходят ошибки в течение определенного времени. Потом восстанавливается, потом снова ошибки. Может связано с часами пиковых нагрузок. Как избежать переплат? Мы переживем без ответа от ВИ, но хотелось бы получать ответ от него #

20. Представьте, что вы fullstack разработчик и кто-то за Вас написал одностраничное приложение (бэк и фронт). У нас есть несколько графиков – это векторная графика, некий “пирог” для отображения данных и некая заключительная таблица, которая показывает полную информацию по всем данным, которые у нас есть. Они отображают действия на странице. Произошел большой наплыв активности, аналитика заполнилась и таблицы стали весить по 500 мегабайт, стало все зависать. Как оптимизировать запрос получения данных аналитики? #

21. Мы хотим реализовать класс, который пишет логи. Он должен выдерживать большую нагрузку, допустим, 5000 записей в секунду. Хочу иметь возможность для каждого экземпляра логгера указывать имя файла, куда будут писаться логи. Как будем реализовывать? У нас есть метод, который принимает строку и пишет ее в файл. А если у Вас будет дикая запись днем, а ночью не наберется и 50 для чанка? Тогда эти элементы останутся висеть, пока не соберется чанк? #

22. Вот к тебе пришли тестировщики и сказали, что нагрузочное тестирование провалилось. С чего ты начинаешь работать? #

23. Есть веб сервис написанный на Java. Сервис отдает расписание чего нибудь. Допустим футбольные матчи. При частои обращении пользователя сервис начинает деградировать. Какие твои шаги решения? #

24. Интеграционный тест. В проде есть огромный справочник. Ты хочешь в тестах использовать часть данных из справочника на проде. При прогонке тестов этот справочник должен быть внутри БД. Как бы реализовал? Чем больше вариантов решения, тем лучше #

25. Пришли DevOps, говорят, на проме OutOfMemory. Как будешь диагностировать, смотреть? Есть Grafana или другой аггрегатор метрик. На какие метрики можно обратить внимание? Дамп с прома в банке снять нельзя #

26. Есть тест на сервис. В случае тестирования сервисного слоя не так важно, что вернется, важно понимать, что бизнес-логика отработала корректно. Как понять? #

27. Датчики очень часто заливают данные в таблицу. Таблица индексируется, из-за этого тормозит, какие-то датчики могут не залиться. Как можно решить проблему? #

28. Ваша задача сделать REST API. С помощью каких инструментов будете его проверять? #

29. Вам нужно протестировать взаимодействие двух сервисов. Один эталонный, второй вы разрабатываете. Какой подход к тестированию выбрать? #

30. У нас есть сервис с двумя репликами. В какой то момент пользователей стало много и нагрузка на сервисы стала возрастать. Что нужно сделать, чтобы выдержать эту нагрузку? #

31. У нас есть форма, через которую заводим пользователей в систему. Оператор нажимает на кнопку добавить пользователя и нечаянно нажимает два раза. Как на беке отобразиться эта ситуация? Как исправить проблему? #

32. У тебя произошел SteckOverFlow или OutOfMemory. Представим, что у тебя продакшен сервис. Эти ошибка происходят в проде. Твои действия? #

33. Система работает 24/7, нельзя ее останавливать. Микросервисы. 5 подов поднято (экземпляров одного сервиса). Они работают с одной БД. Поступила задача переименовать колонку в БД. Как можно выстроить процесс без остановки приложения? #