Задание с собеседования.
https://job4j.ru/profile/topics/29/task_code/560/new_task
Оценить сложность алгоритм и затраты на память.
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
Новое видео на канале.
Telegram API Java | Отправляем изображение и аудио
https://youtu.be/QklucPZw1Lk?si=SWLMndy3jV_znFXO
Telegram API Java | Отправляем изображение и аудио
https://youtu.be/QklucPZw1Lk?si=SWLMndy3jV_znFXO
YouTube
Telegram API Java | Отправляем изображение и аудио
В этом видео я рассказываю, как отправить изображение и аудио через Telegram API Java.
Курс по Java - https://job4j.ru/
Исходный код проекта - https://github.com/peterarsentev/job4j_boost_mood_bot/tree/RecommendationService
Курс по Java - https://job4j.ru/
Исходный код проекта - https://github.com/peterarsentev/job4j_boost_mood_bot/tree/RecommendationService
🔥5
Ежедневное упражнение.
Поиск общего числа в трех списках.
https://job4j.ru/profile/topics/30/task_code/561/new_task
Оцените сложность и затраты по памяти.
Правильное решение занимает n * log(n), а не n ^ 3.
Поиск общего числа в трех списках.
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)
Сегодняшняя задача — Конвертация римских чисел в арабские! 🏛🔢
Попробуйте написать метод, который преобразует римские числа, такие как 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)
Сегодняшняя задача — Найти ближайшего общего предка (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)
Готовы к глубокому погружению в 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.
Условия:
💸 Испытательный срок – 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)
Мы добавили мощный инструмент для подготовки к собеседованиям:
🔹 Темы и вопросы: Выбирай интересующую тему и отвечай на вопросы.
🔹 AI-проверка: Наш AI анализирует твой ответ, оценивает его по 100-балльной шкале и дает развернутое объяснение.
🔹 Отслеживание прогресса: Каждый ответ сохраняется в истории. На основе качества ответов вопросы сортируются в группы — слабые, средние, сильные. Это помогает лучше запомнить сложные темы и повторять их для усиления.
🎯 Такой подход сделает твою подготовку более эффективной!
Переходи в раздел и начни тренироваться: [job4j.ru/profile Упражения -> Собеседования](https://job4j.ru/profile)
🔥16👍5
📌 Сегодняшний вопрос из собеседования:
Из-за чего может возникать `NoClassDefFoundError` и `NoSuchMethodError`?
👉 Более подробно о вопросе можно узнать по ссылке: [Job4j](https://job4j.ru/profile/interview/4/question/5)
Из-за чего может возникать `NoClassDefFoundError` и `NoSuchMethodError`?
👉 Более подробно о вопросе можно узнать по ссылке: [Job4j](https://job4j.ru/profile/interview/4/question/5)
🔍 Сегодняшний вопрос из собеседования:
Объясните отличие анонимного класса от локального класса?
Проверь свои знания и получи подробное объяснение! 💡
👉 [Проверь свои знания](https://job4j.ru/profile/interview/5/question/6)
Объясните отличие анонимного класса от локального класса?
Проверь свои знания и получи подробное объяснение! 💡
👉 [Проверь свои знания](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)
Успех на собеседовании начинается с тренировки! 💼💡
Готовитесь к важному интервью и хотите улучшить свои навыки? Мы выпустили новое видео, которое поможет вам отточить ответы на сложные вопросы, которые часто задают на собеседованиях. Не пропустите полезные советы и примеры, чтобы уверенно проходить интервью и получить работу мечты!
📹 Смотрите видео на разных платформах:
- Rutube: [Ссылка на видео](https://rutube.ru/video/878f5b7c093a42ababb0bc0572cbc148/)
- YouTube: [Ссылка на видео](https://youtu.be/G9uW-M9PgRw)
- VK: [Ссылка на видео](https://vk.com/video298358674_456239269)
Успех на собеседовании начинается с тренировки! 💼💡
RUTUBE
Тренировка вопросов для собеседований! Java | Kotlin | SQL
Тренировка вопросов для собеседований!
Мы добавили мощный инструмент для подготовки к собеседованиям:
🔹 Темы и вопросы: Выбирай интересующую тему и отвечай на вопросы.
🔹 AI-проверка: Наш AI анализирует твой ответ, оценивает его по 100-балльной шкале и…
Мы добавили мощный инструмент для подготовки к собеседованиям:
🔹 Темы и вопросы: Выбирай интересующую тему и отвечай на вопросы.
🔹 AI-проверка: Наш AI анализирует твой ответ, оценивает его по 100-балльной шкале и…
🔍 Сегодняшний вопрос из собеседования:
Что такое ELK-стек?
Проверь свои знания и получи подробное объяснение! 💡
👉 [Проверь свои знания](https://job4j.ru/profile/interview/6/question/7)
Что такое ELK-стек?
Проверь свои знания и получи подробное объяснение! 💡
👉 [Проверь свои знания](https://job4j.ru/profile/interview/6/question/7)
👍1🔥1
📌 Сегодняшний вопрос из собеседования:
Расскажите про Maven Scope?
👉 Проверь ответ и получи объяснение: https://job4j.ru/profile/interview/8/question/11
Расскажите про Maven Scope?
👉 Проверь ответ и получи объяснение: https://job4j.ru/profile/interview/8/question/11
🔥5
💻 Проверь свои знания по корутинам в Kotlin перед собеседованием!
Корутины — это одна из ключевых тем в Kotlin, которая часто встречается на собеседованиях. Готовы ли вы к вопросам по этой теме?
🚀 Ответьте на 23 вопроса с собеседований и убедитесь, что ваши знания на высоте! Подготовьтесь к следующему этапу карьеры и получите полезные рекомендации по улучшению навыков.
👉 Начать проверку можно по ссылке: [job4j.ru/profile/interview/9](https://job4j.ru/profile/interview/9)
Не упустите возможность подготовиться к собеседованию на высоком уровне! #Kotlin #Coroutines #Job4j
Корутины — это одна из ключевых тем в Kotlin, которая часто встречается на собеседованиях. Готовы ли вы к вопросам по этой теме?
🚀 Ответьте на 23 вопроса с собеседований и убедитесь, что ваши знания на высоте! Подготовьтесь к следующему этапу карьеры и получите полезные рекомендации по улучшению навыков.
👉 Начать проверку можно по ссылке: [job4j.ru/profile/interview/9](https://job4j.ru/profile/interview/9)
Не упустите возможность подготовиться к собеседованию на высоком уровне! #Kotlin #Coroutines #Job4j
🔥3👍1
Группировка и статистика URL по шаблонам
В новой задаче нужно сгруппировать URL по шаблонам и собрать статистику посещений. Задача отлично подходит для тренировки работы с коллекциями, строками и алгоритмами подсчета. Подготовьтесь к решению интересной проблемы и улучшите свои навыки Java!
Ссылка на задачу: https://job4j.ru/profile/topics/29/task_code/564/new_task
Присоединяйтесь к обсуждению и делитесь своими решениями!
В новой задаче нужно сгруппировать URL по шаблонам и собрать статистику посещений. Задача отлично подходит для тренировки работы с коллекциями, строками и алгоритмами подсчета. Подготовьтесь к решению интересной проблемы и улучшите свои навыки Java!
Ссылка на задачу: https://job4j.ru/profile/topics/29/task_code/564/new_task
Присоединяйтесь к обсуждению и делитесь своими решениями!
👍6
Навигационная аналитика: проектирование системы сбора данных
Представьте, что у вас есть веб-приложение с более чем 5000 активными пользователями. Как спроектировать систему для сбора и анализа посещаемых страниц?
- Сбор данных через логи или трекеры.
- Масштабирование с помощью распределенных систем (Kafka, PostgreSQL).
- Анализ через Spark или ELK стек.
- Ускорение за счёт кэширования и параллельных вычислений.
Как бы вы подошли к решению этой задачи?
👉 [Подробнее на Job4j](https://job4j.ru/profile/interview/10/question/127)
Представьте, что у вас есть веб-приложение с более чем 5000 активными пользователями. Как спроектировать систему для сбора и анализа посещаемых страниц?
- Сбор данных через логи или трекеры.
- Масштабирование с помощью распределенных систем (Kafka, PostgreSQL).
- Анализ через Spark или ELK стек.
- Ускорение за счёт кэширования и параллельных вычислений.
Как бы вы подошли к решению этой задачи?
👉 [Подробнее на Job4j](https://job4j.ru/profile/interview/10/question/127)
🤯2👍1
Перечислю их:
1. Отсутствие цели или ее неопределенность.
2. Отсутствие плана.
3. Недостаток регулярности.
4. Слишком сильный уклон в теорию.
5. Перфекционизм.
Это видео было записано 7 лет назад. За эти годы я приобрел значительный дополнительный опыт как в программировании, так и в преподавании. Первое, на что хотелось бы обратить внимание, — все указанные выше ошибки относятся к самостоятельной работе, так называемому пути "одиночного воина" или самурая. На первом этапе этот подход очень важен, и, в зависимости от ваших целей, первые 5–10 лет вы действительно можете развиваться самостоятельно.
"Ого!" — скажете вы. "Но ведь есть примеры, когда за год люди становятся сеньорами!" К сожалению, большинство из нас склонно к тщеславию и живет в иллюзиях по поводу своих достижений. Самостоятельный путь часто вводит в заблуждение, когда вы полагаетесь только на свой опыт и упускаете возможность учиться на опыте других.
Для полноценного развития в каждом этапе жизни у нас должны быть три роли: учитель, товарищ и ученик. Однако часто происходит перекос: мы стремимся быть учителями, диктовать свои правила и давать советы. Роль товарища реализуется слабо или посредственно. А советы других мы часто игнорируем из-за гордости и убежденности в своей правоте. В результате, после школы или института наш прогресс начинает резко замедляться.
Чтобы этого избежать, вам нужен учитель, ментор или наставник — человек, который будет делиться с вами своим опытом и знаниями. Возникает вопрос: где его найти? Нет, я не собираюсь рекламировать свои курсы. Вам нужен не просто формальный статус ученика на каком-либо курсе, а реальные отношения с наставником.
Приведу пример из своего опыта. Когда я учился в институте, к нам в группу пришел парень, который увлеченно рассказывал о компьютерах, программировании и всем, что с этим связано. Он стал для меня первым учителем, который открыл для меня мир программирования. Я внимательно слушал его, искренне интересовался и задавал вопросы. На первой работе моим учителем стал мой начальник.
Можно выделить несколько важных черт таких отношений:
1. Учитель должен быть увлечен своим делом — программированием.
2. Учитель должен быть способен делиться своими знаниями. Бывает, что человек — отличный профессионал, но передать знания не может.
3. Ученик должен воспринимать знания учителя с уважением и интересом.
4. Учитель должен иметь возможность напрямую взаимодействовать с учеником, чтобы корректировать его действия и мышление.
Таким образом, учителем для вас может стать любой человек, обладающий этими качествами: коллега, начальник или просто профессионал в своей области.
И в завершение хочу подчеркнуть важность самого понятия "отношения". Процесс обучения — это взаимный процесс, в котором один участник хочет делиться знаниями и опытом, а другой — их получать. Ключевым навыком здесь является умение общаться, задавать вопросы и делиться результатами.
1. Отсутствие цели или ее неопределенность.
2. Отсутствие плана.
3. Недостаток регулярности.
4. Слишком сильный уклон в теорию.
5. Перфекционизм.
Это видео было записано 7 лет назад. За эти годы я приобрел значительный дополнительный опыт как в программировании, так и в преподавании. Первое, на что хотелось бы обратить внимание, — все указанные выше ошибки относятся к самостоятельной работе, так называемому пути "одиночного воина" или самурая. На первом этапе этот подход очень важен, и, в зависимости от ваших целей, первые 5–10 лет вы действительно можете развиваться самостоятельно.
"Ого!" — скажете вы. "Но ведь есть примеры, когда за год люди становятся сеньорами!" К сожалению, большинство из нас склонно к тщеславию и живет в иллюзиях по поводу своих достижений. Самостоятельный путь часто вводит в заблуждение, когда вы полагаетесь только на свой опыт и упускаете возможность учиться на опыте других.
Для полноценного развития в каждом этапе жизни у нас должны быть три роли: учитель, товарищ и ученик. Однако часто происходит перекос: мы стремимся быть учителями, диктовать свои правила и давать советы. Роль товарища реализуется слабо или посредственно. А советы других мы часто игнорируем из-за гордости и убежденности в своей правоте. В результате, после школы или института наш прогресс начинает резко замедляться.
Чтобы этого избежать, вам нужен учитель, ментор или наставник — человек, который будет делиться с вами своим опытом и знаниями. Возникает вопрос: где его найти? Нет, я не собираюсь рекламировать свои курсы. Вам нужен не просто формальный статус ученика на каком-либо курсе, а реальные отношения с наставником.
Приведу пример из своего опыта. Когда я учился в институте, к нам в группу пришел парень, который увлеченно рассказывал о компьютерах, программировании и всем, что с этим связано. Он стал для меня первым учителем, который открыл для меня мир программирования. Я внимательно слушал его, искренне интересовался и задавал вопросы. На первой работе моим учителем стал мой начальник.
Можно выделить несколько важных черт таких отношений:
1. Учитель должен быть увлечен своим делом — программированием.
2. Учитель должен быть способен делиться своими знаниями. Бывает, что человек — отличный профессионал, но передать знания не может.
3. Ученик должен воспринимать знания учителя с уважением и интересом.
4. Учитель должен иметь возможность напрямую взаимодействовать с учеником, чтобы корректировать его действия и мышление.
Таким образом, учителем для вас может стать любой человек, обладающий этими качествами: коллега, начальник или просто профессионал в своей области.
И в завершение хочу подчеркнуть важность самого понятия "отношения". Процесс обучения — это взаимный процесс, в котором один участник хочет делиться знаниями и опытом, а другой — их получать. Ключевым навыком здесь является умение общаться, задавать вопросы и делиться результатами.
👍12❤4🔥4