Курсы по Java для новичков
675 subscribers
66 photos
1 video
4 files
73 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
Что спрашивают на собеседованиях по Java Core?

Чаще всего проверяют не просто знание синтаксиса, а понимание:
— зачем используют HashMap и как она работает под капотом
— что делает synchronized
— как аккуратно работать с датами (и не ловить баги из-за часовых поясов)
— как использовать Stream API
— как писать и применять лямбда-выражения в реальном коде

Если эти темы для тебя не просто знакомы, а отработаны на практике —
уровень на собеседовании ощущается сразу.

Поэтому я собрала курс «Прокачай Java» — без лишней теории и перегруза:
✔️ ввод-вывод (потоки)
✔️ коллекции
✔️ даты и время
✔️ многопоточность
✔️ лямбда-выражения
✔️ Stream API

Если чувствуешь, что база есть, но уверенности не хватает —
возможно, это как раз тот шаг, который выведет тебя на новый уровень 🚀

И в течение всего апреля на курс действует скидка 15%.
👍6
import java.util.*;

class Student {
String name;

Student(String name) {
this.name = name;
}
}

public class Main {
public static void main(String[] args) {
Set<Student> set = new HashSet<>();

set.add(new Student("Ann"));
set.add(new Student("Ann"));

System.out.println(set.size());
}
}
👍1
👍5
import java.util.*;

class Student {
String name;

Student(String name) {
this.name = name;
}

//добавляем equals()
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Student)) return false;
Student s = (Student) o;
return Objects.equals(name, s.name);
}

}

public class Main {
public static void main(String[] args) {
Set<Student> set = new HashSet<>();

set.add(new Student("Ann"));
set.add(new Student("Ann"));

System.out.println(set.size());
}
}
👍4
Что теперь выведет код?
Anonymous Quiz
53%
1
40%
2
5%
Ошибка компиляции
3%
Runtime Error
import java.util.*;

class Student {
String name;

Student(String name) {
this.name = name;
}

@Override
public boolean equals(Object o) {
return true;
}

@Override
public int hashCode() {
return new Random().nextInt();
}


}

public class Main {
public static void main(String[] args) {
Set<Student> set = new HashSet<>();

set.add(new Student("Ann"));
set.add(new Student("Ann"));

System.out.println(set.size());


}
}
👍2
Что будет выведено на консоль?
Anonymous Quiz
22%
1
69%
2
3%
0
6%
Runtime Error
🔹 Как работает Set в Java?
Set — это коллекция, в которой не может быть дубликатов. Добавили одинаковый объект дважды? Второй раз просто проигнорируется.
Но как Java это понимает? 🤔
Всё держится на двух методах класса, объекты которого вы кладёте в Set:
equals() — проверяет, равны ли объекты
hashCode() — определяет, в какую «корзину» (ячейку хеш-таблицы) попадёт объект
📌 Как это работает:
1. Сначала вычисляется hashCode() и определяется индекс корзины. В ней хранятся объекты в виде списка или дерева.
2. Java перебирает элементы корзины и вызывает equals() для сравнения с новым объектом
3. Если равный объект найден — новый не добавится. Если нет — объект добавляется в корзину
💡 Важно:
equals() и hashCode() нужно переопределять вместе — и по одному принципу.
Например, если студенты считаются равными по фамилии (игнорируем год рождения и средний балл), то и hashCode() должен вычисляться только по фамилии.

А задачи на использование множества вы найдёте в курсе «Прокачай Java» — и до конца месяца там действует скидка 15% 😉
6
Свежие отзывы на курс "Основы языка Java":
Шикарный курс, гораздо лучше аналогов известных платформ с бесплатными частями для изучения!!! Материал изложен понятно. Очень радует количество задачек и особенно наборы входных параметров в них, которые каждый раз пытаются тебя подловить на неочевидных нюансах, которые не ожидаешь, но могут попасть на входе и все испортить. В целом нужна практика, практика и практика. Было бы неплохо еще какой-нибудь задачник отдельно выпустить для тренировки навыков уже после прохождения самого курса.

Стася Грозная 11 дней назад
Решил изучать Java после Python! Пробовал несколько других курсов от хороших преподавателей, но все казались переусложненными, либо слишком подробными, что тормозило обучение. Нашел этот курс (привлекла невысокая цена и хорошие отзывы), начал проходить, следом появился интерес к Java. По итогу прохождения могу выделить ПЛЮСЫ курса: 1. Теория есть в текстовом и видео формате - кому как больше нравится. 2. Компактный объем. Теория разбита на небольшие разделы, видео длится в среднем 8-12 минут. 3. После теории обязательные тесты и/или задачки на закрепление материала. 4. Минимально требуется изучать дополнительные материалы, обычно теории в 95% случает хватает для решения задач. 5. Оксана (автор курса) оперативно отвечает на все вопросы - почти каждый день за редким исключением. 6. У этого курса есть два продолжения - ООП и Прокачай Java! То есть сразу понятно, что проходить дальше и в какой последовательности. МОМЕНТЫ, на которые я обращал внимание: - Иногда бывало, что в видео есть то, чего нет в текстовой части раздела, или наоборот (обычно это небольшой, но важный нюанс). Поэтому в идеале проверять, что видео совпадает с текстом. Но в целом это не минус, а просто замечание. В видео больше нюансов и проще следить за ходом мысли автора, нежели просто читать сухой текст. - Для совсем новичков в программировании будет сложно, так как автор позиционирует свой курс уже для тех, кто знаком с алгоритмами решения задач и владеет какой-никакой базой (например C/C++). Но если вы знаете, например, основы Python или любого другого языка, то проблем с пониманием у вас не возникнет. Как итог: курсом доволен, буду брать следующий, надеюсь дальше будет только интереснее! КУРС РЕКОМЕНДУЮ ОДНОЗНАЧНО! АВТОРУ СПАСИБО ЗА ПОДДЕРЖКУ И ОТВЕТЫ НА ВСЕ ВОПРОСЫ!

Виталий Виноградов 14 дней назад
👍6
import java.util.*;

public class Test {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();

map.put("A", 1);
map.put("B", 2);
map.put("A", 3);
map.put(null, 4);
map.put(null, 5);

System.out.println(map.get("A"));
System.out.println(map.get(null));
System.out.println(map.size());
}
}
👍3
import java.util.*;

class Key {
String value;

Key(String value) {
this.value = value;
}

@Override
public boolean equals(Object o) {
return true;
}

@Override
public int hashCode() {
return 1;
}
}

public class Main {
public static void main(String[] args) {
Map<Key, String> map = new HashMap<>();

map.put(new Key("A"), "first");
map.put(new Key("B"), "second");
map.put(new Key("C"), "third");

System.out.println(map.size());
System.out.println(map.get(new Key("Z")));
}
}
2
Что выведет код?
Anonymous Quiz
12%
3 third
52%
1 third
0%
1 first
36%
1 null
import java.util.*;

public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();

map.put(null, 1);
map.put(null, 2);

map.put("A", null);
map.put("A", 3);

map.put("B", null);

System.out.println(map.get(null));
System.out.println(map.get("A"));
System.out.println(map.get("B"));
}
}
👍3
👍3
🔥24👍4😍32
Друзья! Последняя неделя была посвящена небольшому отпуску в Польше. Варшава, Гданьск, Торунь.  Встреча с младшим сыном и его семьёй, общение и новые впечатления. Всем желаю хорошей семьи и маленьких радостей в жизни!
19🔥8😍3
class Student {
String name;

Student(String name) {
this.name = name;
}
}

public class Main {
public static void main(String[] args) {
Map<Student, Integer> map = new TreeMap<>();

map.put(new Student("Alice"), 1);
map.put(new Student("Alice"), 2);

System.out.println(map.size());
}
}
👍3
Что будет выведено на консоль?
Anonymous Quiz
29%
1
49%
2
18%
Runtime Error
4%
Ошибка компиляции
Как работает TreeMap в Java? 🌳

🔹 TreeMap — это реализация Map, которая хранит ключи в отсортированном порядке.

Но важно понять главное:

📌 Порядок задаётся не equals(), а сравнением:
— через compareTo() (если ключ реализует Comparable)
— или через Comparator, переданный в конструктор

Именно результат сравнения определяет:
— где хранится элемент
— считается ли ключ «тем же самым»

Если compareTo() возвращает 0 — ключи считаются одинаковыми, и значение перезапишется.

⚙️ Под капотом:
TreeMap построен на красно-чёрном дереве, поэтому:
— добавление, удаление, поиск → O(log n)
— элементы всегда отсортированы

💡 Важный момент:
equals() для TreeMap не обязателен,
но лучше, чтобы он был согласован с compareTo() — иначе можно получить неожиданные баги.
🔥1