С нуля до оффера
195 subscribers
91 photos
34 videos
15 files
30 links
Тут о превращении из омежки в сигму-программиста 🦾💻

По вопросам : @kottik111_dev
Download Telegram
Media is too big
VIEW IN TELEGRAM
Я думала рабство уже отменили 😐

#мемасики
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣7🤯4
04.02.2025

Ребятки, всем привет!
👋

Продолжаю изучать Stream API 📰

За сегодня выполнила:
⭕️Закончила 19 уровень на Джава раше(перепрочла вчерашние лекции, разобрала их с GPT + прошла 2 новые лекции)
⭕️Разобрала 27 задач от ментора(новую тему, как всегда, начинаю с анализа задач и только потом перехожу к практике)

Пока разбирала сегодняшние задачки еще раз убедилась насколько использование стрим апи и лямбда-выражений упрощает код

На завтра запланирована практика по стримам, а если успею, то более детально изучу класс Optional и попробую применить его на практике

Программировала сегодня: 4 часа 🪖

Всем большое спасибо, что подписываетесь и следите за моим продвижением! 🫶

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12
1 из сегодняшних задач ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
import java.util.\*;
import java.util.stream.\*;

class Product {
String name;
String category;
double price;

Product(String name, String category, double price) {
this.name = name;
this.category = category;
this.price = price;
}
}

class Order {
String orderId;
List<Product> products;

Order(String orderId, List<Product> products) {
this.orderId = orderId;
this.products = products;
}

double getTotalAmount() {
return products.stream()
.mapToDouble(p -> p.price)
.sum();
}
}

class Seller {
String name;
List<Order> orders;

Seller(String name, List<Order> orders) {
this.name = name;
this.orders = orders;
}

List<Order> getOrdersAboveAmount(double amount) {
return orders.stream()
.filter(order -> order.getTotalAmount() > amount)
.collect(Collectors.toList());
}
}

public class Main {
public static void main(String[] args) {
List<Seller> sellers = Arrays.asList(
new Seller("Alice", Arrays.asList(
new Order("O1", Arrays.asList(
new Product("Laptop", "Electronics", 1000),
new Product("Phone", "Electronics", 500)
)),
new Order("O2", Arrays.asList(
new Product("Shirt", "Clothing", 50),
new Product("Jeans", "Clothing", 80)
))
)),
new Seller("Bob", Arrays.asList(
new Order("O3", Arrays.asList(
new Product("Tablet", "Electronics", 300),
new Product("Smartwatch", "Electronics", 200)
)),
new Order("O4", Arrays.asList(
new Product("Monitor", "Electronics", 150),
new Product("Headphones", "Electronics", 80)
))
))
);

sellers.stream()
.flatMap(s -> s.getOrdersAboveAmount(400).stream())
.flatMap(o -> o.products.stream())
.filter(p -> p.category.equals("Electronics"))
.sorted(Comparator.comparingDouble(p -> p.price))
.forEach(p -> System.out.println(p.name));
}
}


#задачиОтМентора
🔥10👍1
05.02.2025

Ребятки, всем привет!
👋

Сегодня перешла к практике по Stream API 😺

В цеееелом, прям в целом… Ну, не то чтобы сложно, просто ощущение, что я овощ и часто путаюсь в том, когда и какие функции нужно использовать 🤡

Присутствует легкая каша в голове, так как этих функций очень много - путаюсь, какие методы вообще есть и за что отвечает каждая функция
Но это связано с тем, что я только приступила к ним, так что пару дней практики и все устаканится
👍

Но вроде все идет плавненько

За сегодня выполнила:
⭕️16 задач по стримам
⭕️Затронута класс Optional и сделала пару задач по нему

На задачи чисто по стримам потратила сегодня больше времени, чем изначально планировала, поэтому Optional нормально пройти не успела
Так что завтра буду с ним заканчивать + продолжу практику по стримам с добавлением исключений


Программировала сегодня: 4,5 часа ⌨️

Всем большое спасибо, что подписываетесь и следите за моим продвижением! 🫶

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
🔠🔠🔠🔠🔠🔠🔠🔠🔠


Ребятки, всем привет! 👋

Вас прибавилось, и я хочу сделать краткий экскурсионный пост по полезной информации в моем канале со ссылками

🔗ПОСТ-ЗНАКОМСТВО

🔗Истории о неудачном менторстве
ЧАСТЬ 1
ЧАСТЬ 2

🔗Полезные ссылки и материалы #полезное_java

🔗Ежедневные отчеты об учебе #отчет

🔗Задачи от ментора #задачиОтМентора

🔗Немного мемов #мемасики

🔗Рассказы о личном #личное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍21
С нуля до оффера pinned «🔠🔠🔠🔠🔠🔠🔠🔠🔠 Ребятки, всем привет! 👋 Вас прибавилось, и я хочу сделать краткий экскурсионный пост по полезной информации в моем канале со ссылками 🔗ПОСТ-ЗНАКОМСТВО 🔗Истории о неудачном менторстве ЧАСТЬ 1 ЧАСТЬ 2 🔗Полезные ссылки и материалы #полезное_java…»
06.02.2025

Ребятки, всем привет!
👋

Продолжаю бороться со Stream API и Optional 🔫

Сегодня очень неплохо позанималась :
⭕️Выполнила 4 задачи на стримы + ООП
⭕️3 задачи на практику по Optional и разобрала 12 готовых задач (как обычно 1 из примеров пришлю ниже 👇)

Чувствую, что написание собственного кода идет куда проще, что очень радует 😃

Завтра планируется фактически заключительный этап по Stream API - буду выполнять одни из последних задач по стримам вместе с Optional
(в субботу закончу окончательно)

Программировала сегодня: 5 часов 💻

Всем большое спасибо, что подписываетесь и следите за моим продвижением! 🫶

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍1
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Scanner;


class User {
private final int id;
private final String username;
private final String password;
private int loginAttempts;

public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
this.loginAttempts = 0;
}

public int getId() {
return id;
}

public String getUsername() {
return username;
}

public int getLoginAttempts() {
return loginAttempts;
}

public boolean validatePassword(String inputPassword) {
if (this.password.equals(inputPassword)) {
loginAttempts++;
return true;
}
return false;
}
}

class UserRepository {
private final Map<String, User> users = new HashMap<>();
private int nextId = 1;

public UserRepository() {

users.put("alice", new User(nextId++, "alice", "password123"));
users.put("bob", new User(nextId++, "bob", "secure456"));
}

public Optional<User> findByUsername(String username) {
return Optional.ofNullable(users.get(username));
}

public User createUser(String username, String password) {
User newUser = new User(nextId++, username, password);
users.put(username, newUser);
return newUser;
}
}

class UserService {
private final UserRepository userRepository;

public UserService(UserRepository repo) {
this.userRepository = repo;
}

public Optional<User> login(String username, String password) {
return userRepository.findByUsername(username)
.filter(user -> user.validatePassword(password));
}

public Optional<User> register(String username, String password) {
if (userRepository.findByUsername(username).isPresent()) {
return Optional.empty();
}
User newUser = userRepository.createUser(username, password);

newUser.validatePassword(password);
return Optional.of(newUser);
}


public String getLoginInfo(String username) {
return userRepository.findByUsername(username)
.map(user -> "Количество успешных входов: " + user.getLoginAttempts())
.orElse("Пользователь не найден.");
}
}
🔥8👍1
public class InteractiveLoginApp {
public static void main(String[] args) {
UserRepository userRepository = new UserRepository();
UserService userService = new UserService(userRepository);
Scanner scanner = new Scanner(System.in);

System.out.println("Выберите действие: ");
System.out.println("1. Вход");
System.out.println("2. Регистрация");
System.out.print("Ваш выбор (1 или 2): ");
String choice = scanner.nextLine().trim();

if ("1".equals(choice)) {
System.out.print("Введите имя пользователя: ");
String username = scanner.nextLine().trim();

System.out.print("Введите пароль: ");
String password = scanner.nextLine().trim();


Optional<User> userOpt = userService.login(username, password);
if (userOpt.isPresent()) {
System.out.println("Вход выполнен успешно! Добро пожаловать, " + username + ".");
System.out.println(userService.getLoginInfo(username));
} else {
System.out.println("Неверное имя пользователя или пароль.");
}
} else if ("2".equals(choice)) {
System.out.print("Введите желаемое имя пользователя: ");
String username = scanner.nextLine().trim();

System.out.print("Введите пароль: ");
String password = scanner.nextLine().trim();

Optional<User> userOpt = userService.register(username, password);
if (userOpt.isPresent()) {
System.out.println("Регистрация прошла успешно! Добро пожаловать, " + username + ".");
System.out.println(userService.getLoginInfo(username));
} else {
System.out.println("Пользователь с именем " + username + " уже существует. Попробуйте войти.");
}
} else {
System.out.println("Некорректный выбор.");
}

scanner.close();
}
}


#задачиОтМентора
🔥8👍1
+ Задача Анатолия не покидала меня весь день
public static void main(String[] args) {
Stream<Integer> stream = Stream.of(1,2,3)
.peek(System.out::println)
.filter(it -> it != 2);

Stream.of(4,5,6)
.peek(System.out::println)
.filter(it -> it != 5)
.peek(System.out::println)
.forEach(System.out::println);
stream
.peek(System.out::println)
.forEach(System.out::println);
}


Я немного посидела над ней, но пока что к верному решению не пришла 🙁
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍1
07.02.2025

Ребятки, всем
👋

Ну че, я практически добила Stream API и Optional 😎

Как и планировала вчера, сегодня доделала по этим темам заключительные задачки - выполнила 7 штук

Осталась выполнить всего 3 задачи, 🔹🔹 теперь я их буду выполнять не как обычно, а уже с использованием Maven и Lombok

Данные технологии я еще ни разу не затрагивала ❗️
Так что будет очень интересно погрузиться и поработать с ними


Завтра планируем созвониться с ментором - он проведет краткий экскурс, даст нужные материалы, и, как говориться «дальше в путь»

Программировала сегодня: 4 часа 💻

Выходного в субботу не будет
Планирую последнюю «свободную» субботу потратить на учебу

Всем большое спасибо, что подписываетесь и следите за моим продвижением! 🫶

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍2
Тк завтра выходного нет, я решила сегодня устроить себе мини-выходной
Всем хорошего вечера пятницы и отличных выходных 🥂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍1
08.02.2025

Ребятки, всем привет!
👋

В плане учебы день сегодня прошел 50/50

С одной стороны я выполнила намеченный план:
⭕️Созвонилась с ментором и начала изучение новых технологий - Maven и Lombok
⭕️Закончила последние 3 задачи по стримам и Optional, применяя изученный материал

С другой стороны, после выполнения всего выше перечисленного у меня осталось свободное время, которое, в идеале, можно было бы потратить опять на учебу
НО❗️ У меня капец как разболелся зуб ☠️ , и я экстренно начала поиски стоматологии, которая принимает на ночь глядя
В итоге под вечер все пошло насмарку 😾

Сегодня вечером я бы могла приступить к изучение основ многопоточки, но… не судьба 😩

Более детально погружаться в мейвен и ломбок я буду параллельно с изучением нового материала

Завтра по плану - разбор этой несчастной многопоточки
Буду изучать теорию вместе с ботом от ментора и, думаю, поделаю минимальную практику

Программировала сегодня: 3,5 часа ⌨️

Всем большое спасибо, что подписываетесь и следите за моим продвижением! 🫶

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍6
09.02.2025

Ребятки, всем привет!
👋

День сегодня прошел отлично 👍

Я успела позаниматься, разобрала основы многопоточки вместе с ботом от ментора и поделала пару довольно легких практических задач

Многопоточность - это когда программа вместо того, чтобы выполнять все задачи по очереди(однопоточно), может выполнять несколько задач одновременно, используя потоки(threads)
Однако многопоточность может приводить к сложным проблемам, например:

⚠️Race condition (гонка потоков) это когда несколько потоков одновременно обращаются к одной и той же переменной и изменяют ее, что приводит к непредсказуемым результатам

⚠️Deadlock (взаимная блокировка)это ситуация, когда два или более потока навсегда зависают, потому что ждут друг друга, удерживая ресурсы

Соответственно, программы работают быстрее, лучше и эффективнее, разделяя задачи между потоками, но важно учитывать возможные проблемы многопоточности


Конечно, прошлась по самым верхам, но какую-то основу концепции я поняла, и на данном этапе этого уже вполне достаточно

Более глубоко погружаться планирую только на этапе подготовки к собесам - и то, просто более детально заучивать теорию
На собеседованиях редко спрашивают что-то очень сложное по многопоточности , поэтому лучше я лишнее время потрачу на изучение других тем

На завтра по учебе у меня запланировано кое-что очень интересное, но об этом вы узнаете уже завтра 😈

Программировала сегодня: 3,5 часа ⌨️

Всем большое спасибо, что подписываетесь и следите за моим продвижением! 🫶

#отчет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93👍1
На это сообщение хочу ответить отдельным постом ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Рафаэль 🖤
Приветик. Я тоже изучаю жабу, но совсем недавно, где-то месяц. Использую курс алишева, дошел до колекций. Не так давно начал читать твой блог, поэтому многие старые посты просто напросто пропустил. В связи с чем у меня есть несколько вопросов:
1) Что у тебя за ментор и сколько стоят его услуги?
2) Какой у тебя роадмап?
3) Как ментор относится к javarush и каково твоё личное ощущение?
4) Сколько в целом уже учишь джаву?
Курс алишева неплох, есть интересные задачки, но всё равно ощущение, что прохожусь по некоторым верхам. Хотел взять dmdeva, но я пират. А для пиратов там домашки не предусмотрены)
👍2
Я начала интересоваться джавой в ноябре 2023 года
К февралю, в неспешном темпе, дошла до азов ООП, но затем на полгода забросила обучение

Вернулась только осенью: с середины сентября постепенно входила в режим, а с октября занимаюсь уже регулярно

Сейчас учусь с ментором, которого нашла в таблице менторов в Оме
Так как он только начинал менторство, первый месяц мы занимались бесплатно, а теперь его занятия стоят 10к/месяц
Для новых учеников там уже другие расценки

Изначально я предполагала, что придется дополнительно отдать 50% от первого оффера, но мы остались на текущих условиях

JavaRush — неплохая база для старта, но с какого-то момента лекции там становятся слишком путаными и непоследовательными
Часто приходилось искать дополнительные источники, чтобы лучше разобраться в теме
К тому же, общение с GPT очень помогало понять сложные моменты

Когда материал дается особенно тяжело, я люблю просить у GPT объяснение в стиле: «Объясни (тема) так, как будто бы объясняешь пятилетнему ребенку»
Такой подход часто делает сложные вещи более понятными

Ментор относится к JavaRush неплохо, считает, что для начала платформа более чем подходит, но дальше лучше учиться по другим материалам, используя ее лишь как вспомогательный ресурс

#личное
👍10🔥2🥰2
Насчет роадмапа — завтра подробно распишу
С ментором у нас немного экспериментальный подход к порядку изучения тем
🔥10👌2👍1
11.02.2025

Ребятки, всем привет!
👋

Если я пропала - значит, опять что-то произошло 😅

В общем, я тут вечером в воскресенье траванулась рыбой и меня жестко полоскало 🤢
Сегодня наконец-то стало получше, поэтому вновь приступила к проге
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63👍1