Java с нуля до middle
153 subscribers
56 photos
14 links
Download Telegram
Java с нуля до middle pinned «Всем привет, я java developer. Последнее место работы было в Лиге, хоть работа была удаленной, но работать можно только из рф. Начинаю с сегодняшнего дня готовиться к собесам. Опыт прохождения есть, поэтому представляю, что и как примерно спрашивают. Предлагаю…»
Как работает сборщик мусора?

Мы знаем, что для очистки heap’a java использует сборщик мусора.

На данный момент используется G1, его включили в работу с Java 9

Принцип работы

Память разбивается на множество регионов одинакового размера. Размер этих регионов зависит от общего размера кучи и по умолчанию выбирается так, чтобы их было не больше 2048, обычно получается от 1 до 32 МБ. Исключение составляют только так называемые громадные регионы.

Продолжение в статье:
https://telegra.ph/Garbage-collector-11-03
Channel name was changed to «Java с 0 до middle»
Задача на собесе

Написать код, который выводит числа от 0 до 1000, которые делятся на 3, но не делятся на 5, и сумма цифр меньше десяти

Решение в комментах
Задача по sql

Решение в комментах
Утечка памяти раз

Продолжая вчерашнюю темы про память,
В примере утечка возникает из-за того, что list static,
статические переменные освобождаются только после завершения программы.
То есть после выхода из метода populateList(), garbage collector не сработает.
Если static уберем gc будет работать и проблем с памятью не будет.
Утечка памяти два

Второй кейс, если мы забыли переопределить equals и hascode у класса.
И начинаем складывать обьекты этого класса в мапу, будет утечка.
Не забываем переопределять equals и hascode.
Когда бакет в HashMap начинает хранить дерево, а не связанный список?

Когда в HashMap у нас возникает коллизия, элементы начинают складывать в один бакет. И в нем образуется связанный список. Поиск ключа в связанном списке это O(n). В java8, сделали хранение с помощью дерева, где скорость уже O(log n).
Мы должны правильно реализовать интерфейс Comparable и hashcode, тогда дерево будет строиться. Иначе мы будем иметь связанный список.

Вопрос сколько элементов должно храниться в одном бакете, чтобы построилось дерево? (Опрос в комментариях)
Задача с собеса ВТБ

Там вообще на собесе очень простые задачки были только.

Проверить является ли число полиндромом
Свойства, которым должен удовлетворять equals

Рефлексивность: a==a
Симметричность: a==b, b==a
Транзитивность: a==b, b==c, a==c
Консистентность: Множественные вызовы equals должны возвращать один и тот же результат
Написать sql запрос

Вывести в отсортированном порядке score, каждому score присвоить rank, если score эквивалентен, rank будет одинаковый.

Ответ в комментах
Добавляем массив в коллекцию

В чем тут проблема?
Arrays.asList возвращает List, возможно нам нужно что то другое
Arrays.asList не поддерживает изменения размера

Смотри в комментах, как делать правильно:
Когда finally не будет выполнен?

В основном в работе я пользовался вот такой конструкцией try with resources. Если у ресурсов есть AutoCloseable то все норм и париться не нужно.
Но бывает, что ресурсы мы закрываем сами и пишем это в finallly.

До блока finally не дойдет если:
Бесконечный цикл
Сбой JVM
Выходим из апп System.exit()
Красно-чёрное дерево в чем смысл?

Двоичное дерево поиска, в котором каждый узел имеет атрибут цвета.

При этом:
Узел может быть либо красным, либо чёрным и имеет двух потомков;
Корень — как правило чёрный.
Все листья, не содержащие данных — чёрные.
Оба потомка каждого красного узла — чёрные.
Любой простой путь от узла-предка до листового узла-потомка содержит одинаковое число чёрных узлов

Благодаря этому достигается балансировка и быстрая скорость O(log n)
Путь от корня до самого дальнего листа не более чем вдвое длиннее, чем до самого ближнего.

В java это коллекции TreeMap и TreeSet
Код в комментах
Людей стало чуть больше, в связи с этим вопрос, что вы еще не поняли?
Anonymous Poll
16%
Java Core
16%
Коллекции
35%
Многопоточка
5%
Исключения
62%
Spring
35%
Не хватает задач, теория есть на youtube
Задача с leetcode

Дан массив чисел и какое-то число, если оно есть в этом массиве удалить и посчитать количество чисел массива.
Не выделять память под новый массив.

Решение в комментах

Задание
:
Решите задачу выделяя память под новый массив и пришлите мне, я сделаю ревью
Как создавать бины в спринг и доставать их из контекста?

Сделал короткое видео:
развернул в проекте спринг, создал два бина, один заинжектил в другой.
Достал из контекста бины, вызвал у них методы, вывел в консоль.

Задание: (присылайте мне, я сделаю ревью)
Создать класс Comp, Mouse, Screen.
Создать их бины.
Заинжектить Mouse, Screen в Comp.
Mouse - умеет кликать
Screen - имеет поле разрешение и его можно включать и выключать
Comp - имеет метод включить и отображает подключенные устройства
https://www.youtube.com/watch?v=2OklKn94CIA
https://github.com/IvanKorni/springDemo

Сори за щелчки мышкой, исправлюсь 🫠
2
Разбираем SOLID по одному.
Про solid всегда спрашивают на собесах.
Когда ты пишешь код в энтерпрайсе, нужно всегда держать в уме эти принципы.

Про S

Single Responsibility Principle (Принцип единственной ответственности)

Не должно быть больше одной причины изменить класс.
Что это значит на практике? Весь класс целиком должен быть направлен на обеспечение одной логики. Если в классе в разных методах мы исполняем разную логику, класс нужно разделять и в именах новых классов прописывать, что он делает.

Конечно в реальных проектах, очень часто классы жирные, но никогда в одном классе не собирают логику какой то части приложения, всегда разделяют.
🙏1
Задача с leetcode

Дан linked list, поменять каждые два соседних узла местами и вернуть заголовок.

Решение в комментах
😱2