— Задача 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) {
//реализовать метод, который вызовет все эти сервисы
//как сделать этот код неблокирующим
}
}