JavaRush /Курсы /Java Multithreading /Вопросы с собеседования 1 уровень

Вопросы с собеседования 1 уровень

Java Multithreading
1 уровень , 15 лекция
Открыта

— Чуть не забыл. Вот тебе несколько вопросов к собеседованию, рассмотренных в текущем уровне:

 

 Вопросы к собеседованиям
1 Перечислите методы класса Object
2 Зачем нужны методы equals & hashCode?
3 Что будет, если переопределить equals, но не переопределить hashCode?
4 Зачем нужны методы wait, notify, notifyAll?
5 Как правильно клонировать объект?
6 Зачем нужен метод finalize() и как он работает?
7 В чем отличие final, finally, finalize?
8 Что такое try-with-resources?
9 Чем отличаются методы wait(1000) и sleep(1000)?
10 В чем отличие i++ и ++i ?
Комментарии (136)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3585174 Уровень 33
24 сентября 2025
Like
4el0vek3 Уровень 36
19 августа 2025
1.Перечислите методы класса Object. boolean equals(Object) int hashcode() String toString() Object clone() Class getClass() void finalize() void wait(), wait(long timeout), wait(long timeout, int nanos) void notify() notifyAll() 2. Зачем нужны методы equals & hashCode? Метод equals() используется для глубокого сравнения двух объектов, которое обычно включает в себя сравнение всех полей между собой. Метод hashcode() используется для быстрого сравнения двух объектов, потому что сравнить два целых числа проще, чем все поля, некоторые из которых тоже могут быть объектами. Чаще всего сравнение по хэшкодам используется в коллекциях для ускорения нахождения необходимого элемента. Сначала объект ищется по хэшкоду, а потом, если объектов с таким хэшкодом несколько, с помощью метода equals(). Объекты, которые различаются между собой хоть немного, должны выдавать false при сравнении друг с другом с помощью equals(). Все объекты, которые имеют одинаковые поля, должны выдавать true при сравнении их хэшкодов. 3. Что будет, если переопределить equals, но не переопределить hashCode? В таком случае при добавлении ряда объектов в коллекцию и последующем поиске в коллекции одного из элементов, в коллекции ничего не будет обнаружено, потому что в коллекциях сначала идет поиск по совпадению хэшкода, а затем уже с помощью глубокого сравнения. 4. Зачем нужны методы wait, notify, notifyAll? Данные методы используются для работы с многопоточностью и вызываются только из синхронизированного блока или метода. void notify() - возобновляет выполнение одного ожидающего потока. void notifyAll() - возобновляет выполнение всех ожидающих этот объект потоков. void wait() - освобождает монитор и переводит вызывающий поток в состояние ожидания до тех пор, пока другой поток не вызовет метод notify(). void wait(long) - ожидание длится указанное количество миллисекунд или до получения уведомления. void wait(long, int) - ожидание длится указанное количество миллисекунд и наносекунд
4el0vek3 Уровень 36
19 августа 2025
5. Как правильно клонировать объект? Необходимо в классе, к которому принадлежит объект, реализовать интерфейс Cloneable и переопределить метод clone(). В методе желательно произвести глубокое копирование - то есть скопировать не ссылки на объекты, а сами объекты. 6. Зачем нужен метод finalize() и как он работает? Метод finalize() предназначен для автоматического освобождения системных ресурсов, занимаемых объектом, на котором данный метод будет вызван. Основная цель этого метода – освободить используемые внешние не-Java ресурсы: закрыть файлы, потоки ввода-вывода и т.п. Когда сборщик мусора (GC) добирается до ненужного объекта, то перед его удалением он должен вызвать метод finalize(), который, в свою очередь, должен быть переопределен в удаляемом объекте. Недостатки: - нет гарантии, что он будет вызван, т.к. где-то может остаться ссылка на объект. - нет гарантии на то, в какое время будет вызван метод, так как он не вызывается сразу, а помещается в очередь, которая обрабатывается специально созданным для этого потоком. В очередь на финализацию попадают только те объекты, в которых переопределен метод finalize. - есть вероятность, что этот метод не будет вызван совсем. Это может произойти в момент, когда объект уже станет доступным для сборщика мусора и программа завершит свою работу. Для освобождения ресурсов рекомендуется использовать конструкции try - catch - finally или try-with-resourses.
4el0vek3 Уровень 36
19 августа 2025
7. В чем отличие final, finally, finalize? final - модификатор доступа, который устанавливает, что переменной может быть присвоено значение (или ссылка на объект) только один раз. finally - ключевое слово, использующееся в конструкции try-catch-finally, и включает в себя код, который должен выполниться в любом случае: возникло исключение или нет. Обычно в теле finally закрываются ресурсы. Начиная с Java 7 вместо finally можно использовать try-with-resourses. finalize() - метод, предназначенный для автоматического освобождения системных ресурсов, занимаемых объектом, на котором данный метод будет вызван. 8. Что такое try-with-resources? Это специальная конструкция, появившаяся в Java 7, позволяющая открывать ресурсы в скобках после ключевого слова try. Ресурсы закрываются автоматически после выхода из блока try. 9. Чем отличаются методы wait(1000) и sleep(1000)? Метод sleep (long millis) является статическим методом класса Thread, метод wait(long timeoutMillis) является методом класса Object и может быть вызван для любого объекта, но только в блоке synchronized. В случае с wait(1000) нить может проснутся раньше, если получит уведомление об освобождении ресурса, вызванное с помощью notify() или notifyAll(). Также wait() освобождает те ресурсы, с которыми работала нить. 10. В чем отличие i++ и ++i ? В первом случае (i++) инкрементирование произойдет после того, как значение i будет использовано в каком-либо выражении. Во втором случае (++i) переменная сначала инкрементируется, а потом ее значение используется в выражении.
23 апреля 2025
интересное получается собеседование по multithreading 🤖🤖
No Name Уровень 36
20 ноября 2024
+ лекция в копилке
ProphetName Уровень 38
24 октября 2024
На всё про всё в java: java interview
FolFix Уровень 38
21 октября 2024
Мне нравиться, хочу больше таких вопросов.
Алексей Уровень 7
6 ноября 2024
нравиТСя!))
FolFix Уровень 38
6 ноября 2024
Точно, всегда была проблема с этим словом 😅
Nazadain Уровень 39
20 ноября 2024
"Что делать?" - ться, "Что делает?" - тся. Пример: Мне <что делает?> нравиТСя. <Что делать?> НравитЬся кому-то.
Кирилл Уровень 34
23 мая 2024
Крайне рекомендую вот этот ресурс для подготовки к собеседованиям. Вопросы, ответы, записи собеседований. Плюс телеграм-канал. https://easyoffer.ru/
Private Joker Уровень 36
17 июня 2024
всего 1700 вопросов))
Кирилл Уровень 34
23 мая 2024
Приятный раздел. Побольше таких бы. Для себя просто проговорить если, как будто отвечаешь на собеседовании, то мозг намного лучше усвоит информацию. Плюс, если есть пробелы, сразу их восполнить. Проговаривать полезно, даже тогда, когда кажется, - ну это легко, это я знаю. А сможете объяснить? Красиво и без эммм нуууу?
Максим Li Уровень 40
18 мая 2024
18.05.2024
Ислам Уровень 33
24 февраля 2024
Nice