Получи случайную криптовалюту за регистрацию!

Java Interview Review

Логотип телеграм канала @javasobes — Java Interview Review J
Логотип телеграм канала @javasobes — Java Interview Review
Адрес канала: @javasobes
Категории: Технологии , Образование
Язык: Русский
Страна: Россия
Количество подписчиков: 7.50K
Описание канала:

Популярные вопросы и ответы с собеседований на Java-разработчика.
Канал для Android-разработчиков @AndroidSobes
Связаться с нами @SobesAdmin
http://itsobes.ru/

Рейтинги и Отзывы

3.00

3 отзыва

Оценить канал javasobes и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

0

1 звезд

1


Последние сообщения

2022-08-31 10:00:11
Найти работу в айти можно 2 методами:

Первый. Бесконечно скроллить HeadHunter и пытаться что-то выклевать на LinkedIn. Офигеть от условий и закрыть.

Второй. Подписаться на Java Job. Это база адекватных предложений, где даже для новичков много мест с хорошей з/п.

Тут найдете работу как в Яндексе (именно сюда крупняки присылают вакансии напрямую), так и в молодых стартапах!

В общем, не теряйте времени и находите работу в 2 клика: @Job_javadevs
1.1K views07:00
Открыть/Комментировать
2022-08-29 17:02:06 finalize

Метод придуман для минимизации риска утечки внешних ресурсов. Может быть вызван виртуальной машиной при сборке мусора (добавляя при этом для нее избыточную нагрузку). Это не то же самое, что деструктор в C++.

Есть только гарантии, что метод не будет вызван пока есть ссылки на объект, и что не будет вызван больше одного раза. Даже то, что вызов будет вообще – не факт. Исполнять будет неизвестно какой, но не синхронизированный поток. Исключения проигнорируются.

С давних пор использовать финализаторы не рекомендуется (Effective Java Item 7), а с Java 9 этот метод помечен как deprecated. Вместо финализатора всегда стоит воспользоваться try/finally, try-with-resource или более специализированными классами пакета java.lang.ref.

#МетодыObject
2.4K views14:02
Открыть/Комментировать
2022-08-28 17:00:04
А есть тут мобильные разработчики?

У нас для вас рекомендация. Mobile Native – канал нашего подписчика и коллеги из мира Android-разработки, на котором он публикует актуальные материалы для мобильщиков: вопросы для собесов, полезные статьи, новости и делится личным опытом.

Кстати, материалы по бэку и best practices по API тоже проскакивают, присоединяйтесь.

Чаты на вебсокетах
Performance Best Practices for REST APIs
Список Public APIs

Подписаться → @mobile_native
2.9K views14:00
Открыть/Комментировать
2022-08-26 17:03:24 toString

Строковое представление экземпляра. По умолчанию возвращает "ПолноеИмяКласса@хэшВ16тиричномВиде" (например "java.lang.Object@1a23b4f"). Часть после @ – не адрес в памяти, так что умолчательная реализация почти не несет практической пользы. Полезно добавлять нормальную реализацию даже если не необходимо в логике программы – поможет в отладке. Готовый вызов x.toString() с проверкой на null уже реализован в String.valueOf(x).

#МетодыObject
#Строки
3.5K views14:03
Открыть/Комментировать
2022-08-24 17:02:42 clone

По умолчанию protected – потому что универсальной реализации нет, а вызов приведет к CloneNotSupportedException. Нужно писать свою реализацию, делать при этом ее public и добавлять классу интерфейс Cloneable. Подразумевается что этот метод делает «глубокое копирование», то есть поля-ссылки копи будут вести на копии полей оригинала. Это диктуется соглашением, по которому объект-клон не должен зависеть от оригинала.

По контракту клон должен быть другим объектом (!= оригиналу). Рекомендуется, чтобы все классы иерархии реализовывали Cloneable, реализация метода начиналась с super.clone() (если родитель не Object), а результат был equals и имел тот же класс что и оригинал.

Альтернативы (многие считают что более удобные) метода clone - конструктор копирования и паттерн factory method. Всё, что нужно знать о копировании объектов в Java можно найти в Effective Java Item 11.

#МетодыObject
4.4K views14:02
Открыть/Комментировать
2022-08-22 17:02:22 equals, hashCode

Эти два метода придуманы для использования в Java Collections Framework и связаны общим контрактом, для соблюдения которого переопределять их необходимо вместе. Методы обязательно нужно переопределить чтобы эффективно использовать экземпляры как ключи в HashMap или HashSet. HashMap работает тем эффективнее, чем «лучше» распределение хэшей.

Контракт:
1. Если объекты equals, у них должны быть одинаковые hashCode (не обязательно наоборот – коллизии допустимы!)
2. equals должен быть отношением эквивалентности
3. Ничто не может быть equals(null)
4. equals и hashCode должны возвращать одни и те же значения для одного и того же объекта при каждом последующем вызове, даже если состояние объекта изменилось. Это делает реализацию для изменяемых (mutable) объектов крайне сложной.

По умолчанию equals сравнивает на ==. С умолчательным hashCode дела обстоят интереснее: он зависит от реализации JVM, и может быть неожиданным. Например в OpenJDK 7 это случайное число.

Подробная инструкция по переопределению этих методов описана в Effective Java Item 9 (больше деталей о волшебном числе 31 здесь).

#МетодыObject
4.6K views14:02
Открыть/Комментировать
2022-08-19 17:00:49 getClass

Возвращает класс этого экземпляра. То есть результатом вызова .getClass() переменной типа Foo может быть как Foo.class, так и .class любого из его подклассов. Компилятор страхуется от ClassCastException в рантайме подменой возвращаемого типа метода на Class.

Подробнее об этом читайте на хабре.

#МетодыObject
2.6K views14:00
Открыть/Комментировать
2022-08-17 17:00:41 Перечислите методы класса java.lang.Object

Этот вопрос используется, как способ начать разговор – по большинству методов можно уйти в обсуждении далеко вглубь. В первую очередь важно запомнить сигнатуры – не зная ответов на вопросы по этим методам, можно будет хотя бы рассуждать отталкиваясь от них. Также полезно открыть исходник и внимательно прочитать javadoc-документацию. Поступим как на интервью, и далее рассмотрим каждый из методов детально. Их список:

1. public final native Class getClass()
2. public native int hashCode()
3. public boolean equals(Object obj)
4. protected native Object clone() throws CloneNotSupportedException
5. public String toString()
6. public final native void notify()
7. public final native void notifyAll()
8. public final native void wait(long timeout) throws InterruptedException
9. public final void wait(long timeout, int nanos) throws InterruptedException
10. public final void wait() throws InterruptedException
11. protected void finalize() throws Throwable

#МетодыObject
4.0K views14:00
Открыть/Комментировать
2021-05-31 15:55:15 Канал давно находится «в заморозке», но это новость, которой мы не можем не поделиться. Организаторы июньской Java-конференции JLove (https://jlove.konfy.care) по старой дружбе дали нам с вами промо-код ITSOBES, дающий аж 50% скидку на участие.

Не рекламы ради, но скидка большая, а это и правда крутая международна конференция в пост-ковидном онлайн формате: spatial chat, discord, и общение со спикерами.
4.8K views12:55
Открыть/Комментировать
2020-12-14 18:00:43 Что такое Java-модули?

Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.

Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна: Class.forName() выбросит ClassNotFoundException.

Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.

Модуль определяется файлом объявления module-info.java. Поговорим о его содержимом и о применении модулей вообще в будущих постах постах.

JVM может работать относительно модулей в трех режимах:

• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.

• Single module mode – когда не используется флаг --module-source-path. Структура проекта остается старой, файл module-info.java лежит в директории /src. Поэтому иметь несколько модулей в одном проекте не получится.

• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в --module-source-path. Полноценное использование JPMS.

#Модули
14.0K views15:00
Открыть/Комментировать