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
Компания Call Insight ищет специалиста по разработке программного обеспечения для работы над различными проектами. Вакансия идеально подойдет тем, кто имеет опыт работы с Java Core, SQL, JDBC, а также знаком с основами Spring и JPA+Hibernate.

Условия:
💸 Испытательный срок – 2 месяца, з/п – 60 тыс. руб. После успешного прохождения – 80 тыс.

Направления:
➡️ Разработка нового функционала голосовых помощников
➡️ Анкеты для голосовых роботов
➡️ Автоматизация бизнес-процессов call-центра
➡️ Структуры БД и хранимые процедуры для отчетности call-центров
➡️ Новый функционал для роботизированной платформы искусственного интеллекта

Технологии:
– Java 8/11, Spring 4.3/5.x, VXML, MySQL 5.7/8, Angular, Swagger, GitLab

Резюме отправлять в формате PDF на адрес @parsentev.
🚀 Новая функция в проекте: Тренировка вопросов для собеседований!

Мы добавили мощный инструмент для подготовки к собеседованиям:

🔹 Темы и вопросы: Выбирай интересующую тему и отвечай на вопросы.

🔹 AI-проверка: Наш AI анализирует твой ответ, оценивает его по 100-балльной шкале и дает развернутое объяснение.

🔹 Отслеживание прогресса: Каждый ответ сохраняется в истории. На основе качества ответов вопросы сортируются в группы — слабые, средние, сильные. Это помогает лучше запомнить сложные темы и повторять их для усиления.

🎯 Такой подход сделает твою подготовку более эффективной!

Переходи в раздел и начни тренироваться: [job4j.ru/profile Упражения -> Собеседования](https://job4j.ru/profile)
🔥16👍5
📌 Сегодняшний вопрос из собеседования:

Из-за чего может возникать `NoClassDefFoundError` и `NoSuchMethodError`?

👉 Более подробно о вопросе можно узнать по ссылке: [Job4j](https://job4j.ru/profile/interview/4/question/5)
🔍 Сегодняшний вопрос из собеседования:

Объясните отличие анонимного класса от локального класса?

Проверь свои знания и получи подробное объяснение! 💡

👉 [Проверь свои знания](https://job4j.ru/profile/interview/5/question/6)
🔥4👍1
🚀 Новое видео на тему тренировки вопросов из собеседований!

Готовитесь к важному интервью и хотите улучшить свои навыки? Мы выпустили новое видео, которое поможет вам отточить ответы на сложные вопросы, которые часто задают на собеседованиях. Не пропустите полезные советы и примеры, чтобы уверенно проходить интервью и получить работу мечты!

📹 Смотрите видео на разных платформах:

- Rutube: [Ссылка на видео](https://rutube.ru/video/878f5b7c093a42ababb0bc0572cbc148/)
- YouTube: [Ссылка на видео](https://youtu.be/G9uW-M9PgRw)
- VK: [Ссылка на видео](https://vk.com/video298358674_456239269)

Успех на собеседовании начинается с тренировки! 💼💡
🔍 Сегодняшний вопрос из собеседования:

Что такое ELK-стек?

Проверь свои знания и получи подробное объяснение! 💡

👉 [Проверь свои знания](https://job4j.ru/profile/interview/6/question/7)
👍1🔥1