Java Learning
18.7K subscribers
1.62K photos
1 video
3 files
995 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
#вопросы_с_собеседований Spring
Что подразумевается под конфигурацией контейнера на основе аннотаций?

Вместо использования XML для описания связывания компонента разработчик перемещает конфигурацию в сам класс компонента, используя аннотации в соответствующем объявлении класса, метода или поля. Это работает как альтернатива настройкам XML. Пример на картинке.
👍19😢1
Существует ли возможность перенаправить потоки стандартного ввода/вывода?

Класс System позволяет вам перенаправлять стандартный ввод, вывод и поток вывода ошибок, используя простой вызов статического метода:
setIn(InputStream) - для ввода;
setOut(PrintStream) - для вывода;
setErr(PrintStream) - для вывода ошибок.
👍14
#Вопросы_с_собеседования

Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?

Ответ:
Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.
👍29
Назовите основные классы потоков ввода/вывода.

Разделяют два вида потоков ввода/вывода:
байтовые - java.io.InputStream, java.io.OutputStream;
символьные - java.io.Reader, java.io.Writer.
👍181
Язык программирования Java - зачем его учить и что на нем пишут

0:00 Вступление
0:10 Какие из этих программ написаны на Java?
0:33 История создания Java
1:34 Как применяется Java
3:10 Популярные фреймворки
4:37 Архитектура приложений - виртуальная машина, управление памятью
6:40 Типизация в Java
7:30 Другие особенности Java
8:05 Зарплаты разработчиков на Java
9:01 Мой опыт работы с Java
12:05 Как начать писать на Java
12:40 Ответы на вопрос из начала видео

Смотреть видео
👍72😱1😢1
Вложенный класс имеет доступ к статическим методам и свойствам класса, в котором он объявлен?
Anonymous Quiz
50%
Да
37%
Да, если вложенный класс тоже статический
9%
Нет
4%
Узнать ответ
👍10🔥3
Алгоритм оценки математического выражения с использованием JavaFX

Смотреть статью
👍51
Какие подклассы класса Writer вы знаете, для чего они предназначены?

Writer - абстрактный класс, описывающий символьный вывод;
BufferedWriter - буферизованный выходной символьный поток;
CharArrayWriter - выходной поток, который пишет в символьный массив;
FileWriter - выходной поток, пишущий в файл;
FilterWriter - абстрактный класс, предоставляющий интерфейс для классов-надстроек;
OutputStreamWriter - выходной поток, транслирующий байты в символы;
PipedWriter - выходной канал;
PrintWriter - выходной поток символов, включающий методы print() и println();
StringWriter - выходной поток, пишущий в строку;
👍18
Узнаем размер каталога с помощью Java

Размер файлов в Java можно получить с помощью класса File. Встроенная функция 'fileName.length()' используется для определения размера файла в байтах.

Каталог может содержать N файлов, для расчета размера каталога требуется суммирование размеров всех файлов.

Подробнее можно посмотреть здесь.
👍16🤔21
Как пройти собеседование на позицию Java-разработчика

В статье автор разбирает вопросы и задачи, которые могут попасться на интервью.

Смотреть статью
👍7😱31😢1
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?

ArrayList это список, реализованный на основе массива, а LinkedList — это классический двусвязный список, основанный на объектах с ссылками между ними.

ArrayList:
• доступ к произвольному элементу по индексу за константное время O(1);
• доступ к элементам по значению за линейное время O(N);
• вставка в конец в среднем производится за константное время O(1);
• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.

LinkedList:
• на получение элемента по индексу или значению потребуется линейное время O(N);
• на добавление и удаление в начало или конец списка потребуется константное O(1);
• вставка или удаление в/из произвольного место константное O(1);
• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.

В целом, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
👍223
🎙️ В чем разница между Hashset и Treeset?

Классы HashSet и TreeSet реализуют интерфейс Set и представляют наборы отдельных элементов. Кроме того, TreeSet реализует интерфейс NavigableSet. Этот интерфейс определяет методы, использующие порядок элементов.

HashSet внутренне основан на HashMap, а TreeSet поддерживается экземпляром TreeMap, который определяет их свойства: HashSet не хранит элементы в каком-либо определенном порядке. Итерация по элементам в HashSet проиcходит в перемешанном порядке. TreeSet, с другой стороны, создает элементы по порядку в соответствии с некоторым предопределенным Компаратором.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤔2
Google-json (GSON)

Google-json — библиотека прямиком из Google. Она реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.

Как видно на картинке, перевод объекта проходит с помощью минимального количества легко читаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
👍143
#Вопросы_с_собеседования

Что такое «абстракция»?

Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.

Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
👍23
Как работают методы wait() и notify()(notifyAll())?

Эти методы определены у класса Object и предназначены для взаимодействия потоков между собой при межпоточной синхронизации.

wait(): освобождает монитор и переводит вызывающий поток в состояние ожидания до тех пор, пока другой поток не вызовет метод notify()/notifyAll();
notify(): продолжает работу потока, у которого ранее был вызван метод wait();
notifyAll(): возобновляет работу всех потоков, у которых ранее был вызван метод wait().

Когда вызван метод wait(), поток освобождает блокировку на объекте и переходит из состояния Работающий (Running) в состояние Ожидания (Waiting). Метод notify() подаёт сигнал одному из потоков, ожидающих на объекте, чтобы перейти в состояние Работоспособный (Runnable). При этом невозможно определить, какой из ожидающих потоков должен стать работоспособным. Метод notifyAll() заставляет все ожидающие потоки для объекта вернуться в состояние Работоспособный (Runnable). Если ни один поток не находится в ожидании на методе wait(), то при вызове notify() или notifyAll() ничего не происходит.

Поток может вызвать методы wait() или notify() для определённого объекта, только если он в данный момент имеет блокировку на этот объект. wait(), notify() и notifyAll() должны вызываться только из синхронизированного кода.
👍13
Каков самый простой способ перевернуть ArrayList?

Ответ на картинке.

Другие способы это сделать можно найти здесь.
👍261
Инкапсуляция

Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.

Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.

Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
👍204😢2
Переворот LinkedList

Еще один способ как это сделать вы можете найти здесь.
👍181
Что такое «локальный класс»? Каковы его особенности?

Local inner class
(Локальный класс) - это вложенный класс, который может быть декларирован в любом блоке, в котором разрешается декларировать переменные. Как и простые внутренние классы (Member inner class) локальные классы имеют имена и могут использоваться многократно. Как и анонимные классы, они имеют окружающий их экземпляр только тогда, когда применяются в нестатическом контексте.

Локальные классы имеют следующие особенности:

• Видны только в пределах блока, в котором объявлены;
• Не могут быть объявлены как private/public/protected или static;
• Не могут иметь внутри себя статических объявлений методов и классов, но могут иметь финальные статические поля, проинициализированные константой;
• Имеют доступ к полям и методам обрамляющего класса;
• Могут обращаться к локальным переменным и параметрам метода, если они объявлены с модификатором final.
👍15
Метод toCharArray()

Возвращает вновь распределённый символьный массив, длина которого равна длине данной строки и содержимое, которое инициализируются, содержит последовательность символов, представленных данной строкой.
👍115
🤔29