Какие подклассы класса Writer вы знаете, для чего они предназначены?
•
•
•
•
•
•
•
•
•
•
Writer - абстрактный класс, описывающий символьный вывод;•
BufferedWriter - буферизованный выходной символьный поток;•
CharArrayWriter - выходной поток, который пишет в символьный массив;•
FileWriter - выходной поток, пишущий в файл;•
FilterWriter - абстрактный класс, предоставляющий интерфейс для классов-надстроек;•
OutputStreamWriter - выходной поток, транслирующий байты в символы;•
PipedWriter - выходной канал;•
PrintWriter - выходной поток символов, включающий методы print() и println();•
StringWriter - выходной поток, пишущий в строку;👍18
Узнаем размер каталога с помощью Java
Размер файлов в Java можно получить с помощью класса File. Встроенная функция 'fileName.length()' используется для определения размера файла в байтах.
Каталог может содержать N файлов, для расчета размера каталога требуется суммирование размеров всех файлов.
Подробнее можно посмотреть здесь.
Размер файлов в Java можно получить с помощью класса File. Встроенная функция 'fileName.length()' используется для определения размера файла в байтах.
Каталог может содержать N файлов, для расчета размера каталога требуется суммирование размеров всех файлов.
Подробнее можно посмотреть здесь.
👍16🤔2❤1
Как пройти собеседование на позицию Java-разработчика
В статье автор разбирает вопросы и задачи, которые могут попасться на интервью.
Смотреть статью
В статье автор разбирает вопросы и задачи, которые могут попасться на интервью.
Смотреть статью
Tproger
Как пройти собеседование на позицию Java-разработчика
Расскажем, как проходит собеседование у Java-разработчика, что ищут работодатели. И разберём вопросы и задачи, которые могут попасться.
👍7😱3❤1😢1
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
ArrayList:
• доступ к произвольному элементу по индексу за константное время
• доступ к элементам по значению за линейное время
• вставка в конец в среднем производится за константное время
• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
• на добавление и удаление в начало или конец списка потребуется константное
• вставка или удаление в/из произвольного место константное
• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
ArrayList это список, реализованный на основе массива, а LinkedList — это классический двусвязный список, основанный на объектах с ссылками между ними.ArrayList:
• доступ к произвольному элементу по индексу за константное время
O(1);• доступ к элементам по значению за линейное время
O(N);• вставка в конец в среднем производится за константное время
O(1);• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
capacity) не изменяется);• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
O(N);• на добавление и удаление в начало или конец списка потребуется константное
O(1);• вставка или удаление в/из произвольного место константное
O(1);• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.👍22❤3
Классы 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.
Google-json — библиотека прямиком из Google. Она реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.
Как видно на картинке, перевод объекта проходит с помощью минимального количества легко читаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
👍14❤3
#Вопросы_с_собеседования
Что такое «абстракция»?
Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
Что такое «абстракция»?
Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
👍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?
Ответ на картинке.
Другие способы это сделать можно найти здесь.
Ответ на картинке.
Другие способы это сделать можно найти здесь.
👍26❤1
Инкапсуляция
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
👍20❤4😢2
Что такое «локальный класс»? Каковы его особенности?
Local inner class (Локальный класс) - это вложенный класс, который может быть декларирован в любом блоке, в котором разрешается декларировать переменные. Как и простые внутренние классы (Member inner class) локальные классы имеют имена и могут использоваться многократно. Как и анонимные классы, они имеют окружающий их экземпляр только тогда, когда применяются в нестатическом контексте.
Локальные классы имеют следующие особенности:
• Видны только в пределах блока, в котором объявлены;
• Не могут быть объявлены как
• Не могут иметь внутри себя статических объявлений методов и классов, но могут иметь финальные статические поля, проинициализированные константой;
• Имеют доступ к полям и методам обрамляющего класса;
• Могут обращаться к локальным переменным и параметрам метода, если они объявлены с модификатором
Local inner class (Локальный класс) - это вложенный класс, который может быть декларирован в любом блоке, в котором разрешается декларировать переменные. Как и простые внутренние классы (Member inner class) локальные классы имеют имена и могут использоваться многократно. Как и анонимные классы, они имеют окружающий их экземпляр только тогда, когда применяются в нестатическом контексте.
Локальные классы имеют следующие особенности:
• Видны только в пределах блока, в котором объявлены;
• Не могут быть объявлены как
private/public/protected или static;• Не могут иметь внутри себя статических объявлений методов и классов, но могут иметь финальные статические поля, проинициализированные константой;
• Имеют доступ к полям и методам обрамляющего класса;
• Могут обращаться к локальным переменным и параметрам метода, если они объявлены с модификатором
final.👍15
Что выведет следующий код?
Anonymous Quiz
12%
Go-Go! Bo-Bo! Hello, World!
52%
Bo-Bo! Go-Go!
3%
Go-Go! Bo-Bo!
34%
Bo-Bo! Hello, World! Go-Go!
👍26😢9🔥2❤1
#Вопросы_с_собеседования
Какой результат выведет вызов метода foo()?
Ответ:
Разберем решение детально: С первым выводом
Какой результат выведет вызов метода foo()?
Ответ:
“HelloHello”Разберем решение детально: С первым выводом
Hello вопросов быть не должно, далее в метод bar передаем копию ссылки на строку, теперь на данную строку ссылаются две переменные: m из метода foo и m из метода bar. Так как строки в Java являются immutable, при попытке присоединить к уже существующей строке дополнительное значение World!, в методе bar произойдет создание новой строки и локальная переменная m этого метода будет ссылаться на новую строку со значением Hello World!, при этом в методе foo в результат будет выведено значение переменной m которая по прежнему ссылается на строку Hello.👍36
#Вопросы_с_собеседования
Какой параметр запуска JVM используется для контроля размера стека потока?
Какой параметр запуска JVM используется для контроля размера стека потока?
-Xss👍23
#Вопросы_с_собеседования
Какие методы класса File вы знаете?
Наиболее используемые методы класса File:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Какие методы класса File вы знаете?
Наиболее используемые методы класса File:
•
boolean createNewFile(): делает попытку создать новый файл;•
boolean delete(): делает попытку удалить каталог или файл;•
boolean mkdir(): делает попытку создать новый каталог;•
boolean renameTo(File dest): делает попытку переименовать файл или каталог;•
boolean exists(): проверяет, существует ли файл или каталог;•
String getAbsolutePath(): возвращает абсолютный путь для пути, переданного в конструктор объекта;•
String getName(): возвращает краткое имя файла или каталога;•
String getParent(): возвращает имя родительского каталога;•
boolean isDirectory(): возвращает значение true, если по указанному пути располагается каталог;•
boolean isFile(): возвращает значение true, если по указанному пути находится файл;•
boolean isHidden(): возвращает значение true, если каталог или файл являются скрытыми;•
long length(): возвращает размер файла в байтах;•
long lastModified(): возвращает время последнего изменения файла или каталога;•
String[] list(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге;•
File[] listFiles(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге.👍19😱1