job4j.ru - Практика. Ревью. Результат.
771 subscribers
75 photos
186 links
О жизни в IT:
- Языки: Go, Rust, Java, Kotlin
- Технологии: PostgreSQL, Kafka
- Инфраструктура: Docker, Kubernetes
- Soft Skills: общение, интервью, карьера
Download Telegram
Упражнение дня.
Автомат размена купюр.
https://job4j.ru/profile/topics/199/task_code/558/new_task
Публикуйте решение на платформе.
🔥6👍3❤1
Упражнение дня.
Поиск уникальных слов в списке.
https://job4j.ru/profile/topics/29/task_code/559/new_task
Это задание дают решить устно. Попробуйте придумать алгоритм в голове, а потом реализуйте в коде.
👍4🔥2
Задание с собеседования.
https://job4j.ru/profile/topics/29/task_code/560/new_task
Оценить сложность алгоритм и затраты на память.
🔥4
Часто на собеседованиях дают задачу провести код-ревью.
Сегодняшняя задача — код-ревью.

Компания: ТБанк
Задание: Произвести рефакторинг приведенного ниже кода.

Свои ответы и предложения по улучшению кода пишите в комментариях.

Код для ревью:
@Controller
public class CartController {
@Resource
private CalculationService calculationService;

@RequestMapping(value = "/", method = RequestMethod.POST)
public String calculate(@RequestParam(value = "products") String products,
@RequestParam(value = "deliveryType") String deliveryType, Model model) {
try {
ObjectMapper mapper = new ObjectMapper();
List<Product> productsList = mapper.readValue(products, new TypeReference<List<Product>>() {});

Cart cart = new Cart(productsList);
calculationService.calculateProductsCost(cart, deliveryType);
calculationService.calculateDeliveryCost(cart, deliveryType);
calculationService.calculateDiscount(cart, deliveryType);

double totals = calculationService.productsCost + calculationService.deliveryCost - calculationService.discount;
String response = "<br/>Стоимость продуктов = " + calculationService.productsCost +
"<br/>Стоимость доставки = " + calculationService.deliveryCost +
"<br/>Скидка = " + calculationService.discount +
"<br/>ИТОГО = " + totals;

model.addAttribute("response", response);
} catch (JsonProcessingException e) {
model.addAttribute("response", "ERROR!");
}
return "index";
}
}


public class Cart implements Serializable {
private List<Product> products;

public class Product {
private double cost;
private int quantity;

@Component(value = "calculationService")
public class CalculationService {
double productsCost = 0.0;
double deliveryCost = 0.0;
double discount = 0.0;

private double reactFactor = 1.05;

void calculateProductsCost(Cart cart, String deliveryType) {
if (deliveryType.equals("TOTIME")) {
cart.getProducts().forEach(product -> productsCost += product.getCost() * product.getQuantity());
} else if (deliveryType.equals("REACT")) {
cart.getProducts().forEach(product -> productsCost += product.getCost() * product.getQuantity() * reactFactor);
}
}

void calculateDeliveryCost(Cart cart, String deliveryType) {
if (deliveryType.equals("TOTIME")) {
deliveryCost = cart.getProducts().size() > 10 ? 100.0 : 300.0;
} else if (deliveryType.equals("REACT")) {
deliveryCost = productsCost > 1000.0 ? 0.0 : 500.0 * reactFactor;
}
}

void calculateDiscount(Cart cart, String deliveryType) {
if (deliveryType.equals("TOTIME")) {
discount = productsCost >= 1000.0 && cart.getProducts().size() > 10 ? 100.0 : 0.0;
} else if (deliveryType.equals("REACT")) {
discount = productsCost >= 2000.0 ? 150.0 : 0.0;
}
}
}
🔥3
Ребята и девчата, давайте поделимся, кто чем пользуется для обхода блокировок Youtube.
Job4j + AI: Теперь в проекте Job4j внедрён искусственный интеллект. Первая функция - "AI, объясни". Выделяйте текст урока и попросите AI дать объяснение.
🔥21
Ежедневное упражнение.
Поиск общего числа в трех списках.
https://job4j.ru/profile/topics/30/task_code/561/new_task
Оцените сложность и затраты по памяти.
Правильное решение занимает n * log(n), а не n ^ 3.
👍4
📝 Ежедневное упражнение

Сегодняшняя задача — Конвертация римских чисел в арабские! 🏛🔢

Попробуйте написать метод, который преобразует римские числа, такие как X, IV, или MCMXCIV, в их арабские аналоги.

🚀 Готовы попробовать свои силы? Перейдите по ссылке, чтобы начать:

🔗 [Задание на сайте Job4j](https://job4j.ru/profile/topics/29/task_code/562/new_task)
👍5
📝 Ежедневное упражнение

Сегодняшняя задача — Найти ближайшего общего предка (LCA) двух узлов в бинарном дереве! 🌳🔍

Попробуйте написать метод, который находит ближайшего общего предка для двух узлов в бинарном дереве, например, для узлов 5 и 1 в дереве, где общий предок — 3.

🚀 Готовы попробовать свои силы? Перейдите по ссылке, чтобы начать:

🔗 [Задание на сайте Job4j](https://job4j.ru/profile/topics/205/task_code/563/new_task)
👍1
Осенний курс: Spring Core & AOP

Готовы к глубокому погружению в Spring? В нашем новом курсе по Spring Core и AOP вас ждёт 45 уроков с поддержкой от ментора!

Что вас ждёт в программе:
1. Основы Spring
2. IoC, DI, ApplicationContext
3. AOP и ещё многое другое
4. Работа с Telegram API

Практическая часть включает создание проекта «Бот-Помощник по Настроению», который поможет вам закрепить полученные знания на практике. По завершении курса вас ждёт теоретический экзамен, но время прохождения не ограничено.

Стоимость курса — 4990 рублей.

Присоединяйтесь и начните уже сегодня!
➡️ [Ссылка на курс](https://job4j.ru)
🔥5👍1