Например, если переопределить toString(), можно для Day.MONDAY.toString() получить "Понедельник", вместо "MONDAY".
Пример в комментариях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🎉1
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
💻🔍💼 Кризис IT-рынка: как джуны и кадровый голод меняют правила игры
В условиях нехватки опытных специалистов и наплыва джунов, IT-компании вынуждены искать нестандартные подходы к найму. Рассмотрим основные тренды и стратегии адаптации рынка.
Читать статью
#почитать
В условиях нехватки опытных специалистов и наплыва джунов, IT-компании вынуждены искать нестандартные подходы к найму. Рассмотрим основные тренды и стратегии адаптации рынка.
Читать статью
#почитать
👍3😁3🔥1
Class getClass() —
void notify() —
protected void finalize() —
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍5🎉2🤩1
LinkedList — это двусвязный список, который реализует интерфейсы List, Deque и Queue, обеспечивая гибкость в работе с элементами на обоих концах структуры.
🔹 Структура LinkedList
LinkedList хранит свои элементы в виде узлов (Nodes), каждый из которых содержит три части:
▪️ Ссылку на предыдущий узел
▪️ Ссылку на следующий узел
▪️ Само значение элемента
Каждый узел существует разрозненно в памяти, в отличие от массивов, где все элементы хранятся последовательно. Это позволяет LinkedList динамически изменять размер и не требует перераспределения памяти при добавлении новых элементов.
🔹 Производительность
▪️ Добавление: При добавлении нового элемента создается новый узел, который вставляется между двумя существующими узлами, изменяя у них ссылки. Если добавление происходит в начало или конец, обновляются только ссылки на предыдущий или следующий узел. Операции на концах занимают O(1), тогда как добавление в середину требует прохождения списка до нужного узла, что занимает O(n).
▪️ Удаление: Удаление элемента работает аналогично добавлению — обновляются ссылки соседних узлов. Удаление на концах списка занимает O(1), в середине — O(n).
▪️ Поиск: Поскольку узлы хранятся в памяти разрозненно, LinkedList не поддерживает эффективный случайный доступ. Чтобы найти элемент, нужно последовательно проходить список от начала или конца, из-за чело сложность поиска O(n).
🔹 Использование памяти
LinkedList требует дополнительной памяти для хранения двух ссылок (на предыдущий и следующий узел) для каждого элемента, что делает его более затратным по памяти по сравнению с массивами или ArrayList.
🔹 Преимущества и недостатки
▪️ Преимущества: Эффективные операции добавления и удаления в начале и конце списка, отсутствие необходимости в перераспределении памяти. Полезен для реализации очередей и стеков.
▪️ Недостатки: Медленный доступ к элементам (O(n)), высокий расход памяти из-за хранения ссылок, элементы хранятся разрозненно в памяти, что может приводить к фрагментации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥3🎉1
Привет, друзья!
Какие форматы кроме обычных вопросов вам бы ещё было интересно увидеть? Пишите в комментариях.💬
Также ниже предлагаю несколько вариантов готовых форматов. Можем обсудить: какие лучше, какие хуже и как интересно реализовать их.
Сделаем контент ещё интереснее вместе🔼
Какие форматы кроме обычных вопросов вам бы ещё было интересно увидеть? Пишите в комментариях.
Также ниже предлагаю несколько вариантов готовых форматов. Можем обсудить: какие лучше, какие хуже и как интересно реализовать их.
Сделаем контент ещё интереснее вместе
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍1🎉1
Новые форматы (можно выбрать несколько):
Anonymous Poll
40%
Правда или миф (даётся факт, выбираете правда или миф, потом разбор вопроса)
83%
Частые ошибки на собеседовании (разбор вопросов, где часто ошибаются)
59%
Прогноз ошибок (даётся рабочий код, нужно найти узкое место и предположить, что может пойти не так)
23%
Дебаты (даётся вопрос, где нет верного ответа. В комментариях обсуждаются + и - каждого варианта)
8%
Оставить всё как есть, не нужно новых форматов
👍4⚡2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22👏3🔥2
И переопределение (override), и перегрузка (overload) — это формы полиморфизма в Java, но они работают по-разному.
🔹 Переопределение происходит, когда
🔹 Перегрузка — это
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍8❤2👏1🤔1
Комментарии
Документация.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1🔥1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2🔥2😁2
"S" — это
🧑💻 Пример:
Класс, который отвечает за обработку данных, не должен
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3⚡1
TreeSet — это коллекция, которая хранит уникальные элементы и автоматически сортирует их в натуральном порядке или по заданному Comparator. Под капотом используется самобалансирующееся красно-черное дерево, которое гарантирует, что добавление, удаление и поиск элементов будут происходить за логарифмическое время. В отличие от HashSet, TreeSet не только предотвращает дублирование элементов, но и поддерживает их упорядоченность.
🔹 Структура TreeSet
В основе TreeSet лежит красно-черное дерево — структура данных, которая поддерживает балансировку после каждой операции вставки или удаления. Т.е. дерево автоматически регулирует свою форму при каждом добавлении или удалении элемента, чтобы предотвратить чрезмерное «перерастание» дерева в одну сторону.
Элементы в TreeSet хранятся в виде узлов дерева:
▪️ Каждый узел содержит ключ и ссылки на дочерние узлы
▪️ Дерево автоматически сбалансировано — максимальная глубина любого пути от корня к листу в два раза меньше самой длинной возможной
▪️ Элементы располагаются в отсортированном порядке по мере добавления, что гарантирует логарифмическую сложность поиска и вставки
🔹 Производительность
▪️ Добавление: При добавлении элемента дерево балансируется, чтобы соблюсти свойства красно-черного дерева. Это обеспечивает сложность добавления O(log n).
▪️ Удаление: Работает схожим образом — дерево ребалансируется, а ссылки между узлами корректируются. Удаление также выполняется за O(log n).
▪️ Поиск: Благодаря сбалансированной структуре, поиск элемента в TreeSet занимает O(log n), что делает его быстрее, чем линейный поиск в несбалансированных структурах.
🔹 Использование памяти
Каждый узел в TreeSet хранит не только ключ, но и ссылки на дочерние узлы (левый и правый). Это создает определенные накладные расходы по памяти, ведь для каждого элемента требуется больше памяти, чем, например, в HashSet, где хранятся лишь сами элементы.
🔹 Преимущества и недостатки
▪️ Преимущества:
- Гарантированный порядок элементов: В отличие от HashSet, TreeSet хранит элементы в отсортированном виде. Это важно, если нужно быстро получать минимальные, максимальные или средние значения без дополнительной сортировки. Также можно извлекать диапазоны значений с помощью методов вроде subSet().
- Навигационные методы: TreeSet предоставляет мощные инструменты для навигации по набору, такие как методы для поиска ближайших элементов (floor(), ceiling()), что делает его удобным для задач с диапазонами данных.
▪️ Недостатки:
- Производительность: Операции в TreeSet медленнее, чем в HashSet.
- Большие накладные расходы по памяти: Для каждого элемента TreeSet требуется хранить дополнительные ссылки на дочерние узлы, что увеличивает потребление памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥6🎉2❤1
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
👋🏭 От Hello World до Enterprise: 15 Java-проектов для начинающих и профессионалов
Ищете интересные идеи для Java-проектов? Можно начать с простых вещей, вроде создания чат-бота или текстового редактора, а затем усложнить задачи, взяв на себя разработку маркетплейса или системы онлайн-обучения. Эти идеи охватывают различные технологии, от баз данных и многопоточности до веб-сервисов и микросервисов. Воплощая их, вы сможете существенно улучшить свои навыки и добавить в портфолио проекты, которые привлекут внимание работодателей.
🔗 Ссылка на статью
Ищете интересные идеи для Java-проектов? Можно начать с простых вещей, вроде создания чат-бота или текстового редактора, а затем усложнить задачи, взяв на себя разработку маркетплейса или системы онлайн-обучения. Эти идеи охватывают различные технологии, от баз данных и многопоточности до веб-сервисов и микросервисов. Воплощая их, вы сможете существенно улучшить свои навыки и добавить в портфолио проекты, которые привлекут внимание работодателей.
🔗 Ссылка на статью
👍8🔥3❤2❤🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥7🎉2
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2🔥2😁2
Блок finally почти всегда выполняется, но есть несколько исключений, когда его выполнение будет пропущено:
🔹
🔹
🔹
В нормальных условиях блок finally всегда выполняется, даже если в блоках try или catch произошла ошибка.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍6🎉1
"I" — это принцип
🧑💻 Пример:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3🎉1🤩1
- Если два объекта равны согласно методу equals(),
- Если два объекта имеют одинаковый хэш-код,
🔹 Если нарушить этот контракт, возникают такие проблемы:
- Проблемы с коллекциями:
- Некорректная работа методов:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1🔥1
- Расскажите про сортировку пузырьком и реализуйте её.
Это простой алгоритм сортировки, который использует два вложенных цикла. Внешний цикл отвечает за количество проходов по массиву, а внутренний сравнивает соседние элементы. Если текущий элемент больше следующего, они меняются местами. Так продолжается, пока массив не будет отсортирован.
💡 Ключевые моменты:
▪️ Худший случай: O(n^2)
▪️ Используется строго для небольших наборов данных.
Реализация на картинке 👆🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4🎉2