#вопросы_с_собеседований
Какой класс предназначен для работы с элементами файловой системы?
Какой класс предназначен для работы с элементами файловой системы?
File работает непосредственно с файлами и каталогами. Данный класс позволяет создавать новые элементы и получать информацию существующих: размер, права доступа, время и дату создания, путь к родительскому каталогу.
#вопросы_с_собеседований
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
Cтек – участок памяти, тесно связанный с потоками. У каждого потока есть свой стек, который хранит локальные переменные, параметры методов и стек вызовов. Переменная, хранящаяся в стеке одного потока, не видна для другого.
Куча – общий участок памяти, который делится между всеми потоками. Объекты (неважно, локальные или любого другого уровня) создаются в куче. Для улучшения производительности поток обычно кэширует значения из кучи в свой стек, в этом случае для того, чтобы указать потоку, что переменную следует читать из кучи, используется ключевое слово volatile.
Куча – общий участок памяти, который делится между всеми потоками. Объекты (неважно, локальные или любого другого уровня) создаются в куче. Для улучшения производительности поток обычно кэширует значения из кучи в свой стек, в этом случае для того, чтобы указать потоку, что переменную следует читать из кучи, используется ключевое слово volatile.
#вопросы_с_собеседований
1. Дайте определение понятию «конструктор».
2. Что такое «конструктор по умолчанию»?
1. Дайте определение понятию «конструктор».
2. Что такое «конструктор по умолчанию»?
1. Конструктор — это специальный метод, у которого отсутствует возвращаемый тип и который имеет то же имя, что и класс, в котором он используется. Конструктор вызывается при создании нового объекта класса и определяет действия, необходимые для его инициализации.
2. Если у какого-либо класса не определить конструктор, то компилятор сгенерирует конструктор без аргументов - так называемый «конструктор по умолчанию».
public class ClassName() {}
Если у класса уже определен какой-либо конструктор, то конструктор по умолчанию создан не будет и, если он необходим, его нужно описывать явно.
public class ClassName() {}
Если у класса уже определен какой-либо конструктор, то конструктор по умолчанию создан не будет и, если он необходим, его нужно описывать явно.
#вопросы_с_собеседований
Каким образом реализованы методы hashCode() и equals() в классе Object?
Каким образом реализованы методы hashCode() и equals() в классе Object?
Хочешь работать в IT, но не хватает практики? Присоединяйся к бесплатному Java-интенсиву, где тебя ждут реальные задачи, которые помогут закрепить знания и понять, в каком направлении двигаться дальше.
Регистрируйся по ссылке: 👉 https://clc.am/nxzpFg.
Своими навыками делится программист с 15-летним опытом Даниил Пилипенко.
Что тебя ждёт?
✔️ Основы программирования на Java.
✔️ Работа с файлами и библиотеками.
✔️ Разработка приложения, которое непрерывно записывает звук с микрофона компьютера и отправляет файлы в Dropbox.
✔️ Анализ работ и разбор типичных ошибок.
✔️ Практические советы и инсайты от опытного программиста.
🎉 Если твой проект будет одним из лучших — получишь сертификат на 30 000 рублей для поступления на любой онлайн-курс университета Skillbox!
Регистрируйся по ссылке: 👉 https://clc.am/nxzpFg.
Своими навыками делится программист с 15-летним опытом Даниил Пилипенко.
Что тебя ждёт?
✔️ Основы программирования на Java.
✔️ Работа с файлами и библиотеками.
✔️ Разработка приложения, которое непрерывно записывает звук с микрофона компьютера и отправляет файлы в Dropbox.
✔️ Анализ работ и разбор типичных ошибок.
✔️ Практические советы и инсайты от опытного программиста.
🎉 Если твой проект будет одним из лучших — получишь сертификат на 30 000 рублей для поступления на любой онлайн-курс университета Skillbox!
Реализация метода Object.equals() сводится к проверке на равенство двух ссылок:
public boolean equals(Object obj) {
return (this == obj);
}
Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:
public native int hashCode();
public boolean equals(Object obj) {
return (this == obj);
}
Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:
public native int hashCode();
Sams Teach Yourself Java in 21 Days (2020)
Автор: Rogers Cadenhead
Количество страниц: 672
С помощью этого руководства вы быстро освоите основы, а затем перейдете к продвинутым особенностям и концепциям современной Java. Книга была полностью обновлена для Java 11 и 12. К тому времени, когда вы прочтете книгу, вы будете хорошо разбираться в Java и библиотеках. Предыдущий опыт программирования не требуется. Следуя 21 тщательно организованному уроку из этой книги, каждый может изучить основы программирования на Java.
Скачать книгу
Автор: Rogers Cadenhead
Количество страниц: 672
С помощью этого руководства вы быстро освоите основы, а затем перейдете к продвинутым особенностям и концепциям современной Java. Книга была полностью обновлена для Java 11 и 12. К тому времени, когда вы прочтете книгу, вы будете хорошо разбираться в Java и библиотеках. Предыдущий опыт программирования не требуется. Следуя 21 тщательно организованному уроку из этой книги, каждый может изучить основы программирования на Java.
Скачать книгу
Telegram
Книги для программистов (reserved)
Sams Teach Yourself Java in 21 Days (2020)
Автор: Rogers Cadenhead
Автор: Rogers Cadenhead
Международная Java-конференция для опытных разработчиков и тимлидов #Joker 2020 уже 25–28 ноября, Online.
Технические доклады о рантайме, виртуальных машинах, компиляторах, оптимизации от Java-потрошителей и чемпионов со всего мира. А также интервью с экспертами, воркшопы, нетворкинг и дискуссионные зоны для лютых холиваров.
В программе:
— Создатель Concurnas Jason Tatton расскажет о создании надежных многопоточных, распределенных и параллельных систем с использованием JVM. Если вы ищете средства для создания таких продуктов, вам однозначно понравится.
— Профессиональный спикер и автор блога JavaSpecialists.eu Heinz Kabutz в компании с соратником John Green расскажут о многопоточном программировании с использованием Phaser, StampedLock и VarHandle.
— Один из разработчиков Kotlin Роман Елизаров даст большое интервью с Q&A-сессией. Можно будет в прямом эфире расспросить его о перспективах языка, его эволюции и компромиссах, на которые приходится идти в работе.
Программа и билеты со скидкой по промокоду proglib2020JRGpc : https://bit.ly/34OtLez
Технические доклады о рантайме, виртуальных машинах, компиляторах, оптимизации от Java-потрошителей и чемпионов со всего мира. А также интервью с экспертами, воркшопы, нетворкинг и дискуссионные зоны для лютых холиваров.
В программе:
— Создатель Concurnas Jason Tatton расскажет о создании надежных многопоточных, распределенных и параллельных систем с использованием JVM. Если вы ищете средства для создания таких продуктов, вам однозначно понравится.
— Профессиональный спикер и автор блога JavaSpecialists.eu Heinz Kabutz в компании с соратником John Green расскажут о многопоточном программировании с использованием Phaser, StampedLock и VarHandle.
— Один из разработчиков Kotlin Роман Елизаров даст большое интервью с Q&A-сессией. Можно будет в прямом эфире расспросить его о перспективах языка, его эволюции и компромиссах, на которые приходится идти в работе.
Программа и билеты со скидкой по промокоду proglib2020JRGpc : https://bit.ly/34OtLez
Joker 2022. Конференция для опытных Java-разработчиков
Joker 2022 — международная Java-конференция. Спикеры со всего мира. Несколько десятков докладов о JVM-языках, инструментах, фреймворках, архитектуре и многом другом.
#вопросы_с_собеседований
Какие подклассы класса OutputStream вы знаете, для чего они предназначены?
Какие подклассы класса OutputStream вы знаете, для чего они предназначены?
☕️ OutputStream - это абстрактный класс, определяющий потоковый байтовый вывод;
☕️ BufferedOutputStream - буферизированный выходной поток;
☕️ ByteArrayOutputStream - все данные, посылаемые в этот поток, размещаются в предварительно созданном буфере;
☕️ DataOutputStream - выходной поток байт, включающий методы для записи стандартных типов данных Java;
☕️ FileOutputStream - запись данных в файл на физическом носителе;
☕️ FilterOutputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства;
☕️ PrintStream - выходной поток, включающий методы print() и println();
☕️ ObjectOutputStream - выходной поток для записи объектов;
☕️ PipedOutputStream реализует понятие выходного канала.
☕️ BufferedOutputStream - буферизированный выходной поток;
☕️ ByteArrayOutputStream - все данные, посылаемые в этот поток, размещаются в предварительно созданном буфере;
☕️ DataOutputStream - выходной поток байт, включающий методы для записи стандартных типов данных Java;
☕️ FileOutputStream - запись данных в файл на физическом носителе;
☕️ FilterOutputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства;
☕️ PrintStream - выходной поток, включающий методы print() и println();
☕️ ObjectOutputStream - выходной поток для записи объектов;
☕️ PipedOutputStream реализует понятие выходного канала.
GeekBrains запускает курс «Python для решения бизнес-задач»
Обучение начнется 23 октября и продлится 2,5 месяца. Курс рассчитан на далеких от программирования слушателей: маркетологов, продакт-менеджеров и предпринимателей. В формате видеоуроков и практических вебинаров они научатся автоматизировать рутинные задачи и процессы. Опытные преподаватели расскажут, как создавать ботов Telegram, собирать, обрабатывать и визуализировать данные о клиентах, а также обрабатывать файлы и проверять правильность заполнения форм. Python позволяет написать программу один раз и запускать ее по потребности — это экономит рабочее время.
Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/b894de20
Обучение начнется 23 октября и продлится 2,5 месяца. Курс рассчитан на далеких от программирования слушателей: маркетологов, продакт-менеджеров и предпринимателей. В формате видеоуроков и практических вебинаров они научатся автоматизировать рутинные задачи и процессы. Опытные преподаватели расскажут, как создавать ботов Telegram, собирать, обрабатывать и визуализировать данные о клиентах, а также обрабатывать файлы и проверять правильность заполнения форм. Python позволяет написать программу один раз и запускать ее по потребности — это экономит рабочее время.
Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/b894de20
#вопросы_с_собеседований
Какой класс появился в Java 8 для кодирования/декодирования данных?
Какой класс появился в Java 8 для кодирования/декодирования данных?
Base64 - потокобезопасный класс, который реализует кодировщик и декодировщик данных, используя схему кодирования base64 согласно RFC 4648 и RFC 2045.
Base64 содержит 6 основных методов:
getEncoder()/getDecoder() - возвращает кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getUrlEncoder()/getUrlDecoder() - возвращает URL-safe кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getMimeEncoder()/getMimeDecoder() - возвращает MIME кодировщик/декодировщик, соответствующий стандарту RFC 2045.
Base64 содержит 6 основных методов:
getEncoder()/getDecoder() - возвращает кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getUrlEncoder()/getUrlDecoder() - возвращает URL-safe кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getMimeEncoder()/getMimeDecoder() - возвращает MIME кодировщик/декодировщик, соответствующий стандарту RFC 2045.
#вопросы_с_собеседований
Какое худшее время работы метода get(key) для ключа, который есть в HashMap?
Какое худшее время работы метода get(key) для ключа, который есть в HashMap?
O(N). Худший случай - это поиск ключа в HashMap, вырожденного в список по причине совпадения ключей по hashCode() и для выяснения, хранится ли элемент с определённым ключом, может потребоваться перебор всего списка.
UPD. Начиная с Java 8 корзины в HashMap становятся балансированными деревьями, если в них попадает больше определенного кол-ва объектов. Поэтому худший случай будет O(log n). Подробности можно почитать в https://javahungry.blogspot.com/2013/08/hashing-how-hash-map-works-in-java-or.html (спасибо за указание на ошибку)
UPD. Начиная с Java 8 корзины в HashMap становятся балансированными деревьями, если в них попадает больше определенного кол-ва объектов. Поэтому худший случай будет O(log n). Подробности можно почитать в https://javahungry.blogspot.com/2013/08/hashing-how-hash-map-works-in-java-or.html (спасибо за указание на ошибку)
Blogspot
Hashing :How HashMap works in java or How get() method works internally | Java Hungry
One of the most darling question of the core java interviewers is How hash map works in java . Most of the candidates rejection chances increases if the candidate do not give the satisfactory explanation . This question shows that candidate has good knowledge…
#вопросы_с_собеседований
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
☕️ В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса.
☕️ Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
☕️ Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 8) default - методами с реализацией по-умолчанию, а поля - public static final.
☕️ Интерфейсы позволяют создавать структуры типов без иерархии.
☕️ Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.
Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.
☕️ Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
☕️ Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 8) default - методами с реализацией по-умолчанию, а поля - public static final.
☕️ Интерфейсы позволяют создавать структуры типов без иерархии.
☕️ Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.
Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.