Тех собес на middle-senior Java Developer в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований в категории Java Developer

Посмотреть видео в категории

(2025-03-11)

— Задача 1. //оптимизировать таким образом, чтобы этот код держал 10к RPS. Можно зайти через использование кэша, использования потокбезопасных коллекций //спрашивают про пакет java.util.concurrent, рассказать про потокобезопасные коллекций и инструменты

public class MyWebServer {
    //вычисляет через нейронную сеть прогноз погоды за ~1 секунду
    private int aiWeatherForeCast() {
        Thread.sleep(1000);
        return new Random().nextInt(70) - 30;
    }

    static class WeatherHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange exchange) throws IOException {
            int temperature = aiWeatherForecast();
            String jsonResponse = "{"temperature": " + temperature + "}";
            OutputStream os = exchange.getResponseBody();
            os.write(jsonResponse.getBytes());
            os.close();
        }
    }
}

— Задача 2.

  // код можно переписывать.
// сделать код неблокирующим
// возможно, если отойти от лямбд, будет минус в карму
public class SnippetParser {
    private void sleep(int sec) {
        try {
            Thread.sleep(sec * 1000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }
    //какой-то запрос в сторонний сервис
    Function itemDescription = itemDescription -> {
        sleep(2);
        return "asdfgvcbnvmxm";
    }
    //какой-то запрос в сторонний сервис
    Function itemPrice = itemPrice -> {
        sleep(2);
        return Random.nextInt();
    }
    //какой-то запрос в сторонний сервис
    Function prettify = description {
        sleep(2);
        return description; //какая-то модификация над строкой
    }

    //какой-то запрос в сторонний сервис
    Function convertToRub = price {
        sleep(2);
        return price*70; //какая-то модификация над числом
    }

    //реализовать метод-сниппет, который соберет информацию о товарах
    public List scanSnippet(int itemId) {
        //реализовать метод, который вызовет все эти сервисы
        //как сделать этот код неблокирующим
    }
}