cookie

We use cookies to improve your browsing experience. By clicking «Accept all», you agree to the use of cookies.

avatar

Java Interview Review

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

Show more
The country is not specifiedThe language is not specifiedThe category is not specified
Advertising posts
7 423
Subscribers
No data24 hours
-37 days
-330 days

Data loading in progress...

Subscriber growth rate

Data loading in progress...

Что такое synchronized? Можно применять как модификатор метода, и как самостоятельный оператор с блоком кода. Выполняет код при захваченном мониторе объекта. В виде оператора объект указывается явно. В виде модификатора нестатического метода используется this, статического – .class текущего класса. Один из основных инструментов обеспечения потокобезопасности. Одновременно выполняется не более одного блока synchronized на одном и том же объекте. Такая блокировка называется intrinsic lock или monitor lock, подробно рассматривается в Java Concurrency in Practice 2.3.1. Блок synchronized также необходим для использования методов wait, notify, notifyAll. #Язык #Многопоточность
Show all...
Photo unavailableShow in Telegram
📍Что нужно знать начинающему разработчику на Java? Приходи на практический вебинар по Java для новичков 👉 https://otus.pw/of42/ 📌 Что ждет на занятии? - Поговорим о месте реляционных баз данных в архитектуре информационных систем. - Рассмотрим основные компоненты и возможности РСУБД на примере PostgreSQL. - Сделаем обзор основных технологий по работе с реляционными БД в Java (JDBC, JPA/Hibernate, Spring Data и др.) ❗️ Еще больше навыков и оплачиваема стажировка ждет тебя на специализации «Java-разработчик» от онлайн-платформы OTUS. 👉 Регистрируйтесь на занятие
Show all...
Чем отличаются checked и unchecked исключения? Вопрос формулируют по-разному, суть вопроса – объяснение иерархии классов исключений. Подробно описано в документации. Исключения бывают checked и unchecked. Checked требуется указывать в сигнатуре метода в разделе throws; перехватывать или добавлять в throws в вызывающем его методе. Unchecked можно добавить, но не обязательно, перехватывать не обязательно даже если указана в throws. 🔘 Throwable – базовый класс для всего что может быть использовано с оператором throw и в конструкции try-catch 🔘 RuntimeException – «нормальные» unchecked-исключения 🔘 Error – unchecked исключения, которые означают «серьезные проблемы» приложения. Не должны обрабатываться (хотя технически можно). Теоретически JVM может находиться в невалидном состоянии и не давать больше никаких гарантий 🔘 Exception (кроме RuntimeException) – checked исключения #Язык
Show all...
Какие бывают модификаторы? 🔘 Модификаторы доступа private, protected, public (рассмотрим подробнее в разделе #Классы) 🔘 Модификаторы для многопоточности synchronized и volatile (подробнее чуть позже) 🔘 static (рассмотрим подробнее в разделе #Классы) 🔘 final 🔘 abstract (рассмотрим подробнее в разделе #Классы) 🔘 native – реализация метода скрыта внутри JVM, нельзя указывать в пользовательском коде 🔘 transient – поле будет пропущено при сериализации 🔘 strictfp – самый экзотический, ограничивает точность вычисления для переменной с плавающей точкой до стандарта IEEE. Нужно для переносимости между платформами. #Язык
Show all...
Photo unavailableShow in Telegram
Основы Java за 14 дней вместе с наставником – практикующим разработчиком. 10 учебных модулей, 62 урока с практикой в браузере, вебинары и лайвкодинг-сессия. Не важно, сколько вам лет, какое у вас образование и кем вы работаете сейчас. Начинаем 20 сентября. Занимайте место в группе!
Show all...
Какие существуют литералы? Литерал – последовательность символов, обозначающая значение примитивного типа (или строки). 🔘 Целочисленные (Integer). Возможные форматы: 2019, 1__000_000 (с Java 7), 10048L (можно l, но будет путаться с 1), 0xfd12aa, 0b1011101, 07654321. 🔘 С плавающей точкой (floating-point). Возможные форматы: 123.4, 56.7e8, .07, 42F, 1.4D (избыточно, по умолчанию и так double). 🔘 Символы и строки. Символ (char) – в одинарных кавычках: 'R'. Спецсимволы пишутся с бэкслешем: '\n'. Любой символ можно представлять в виде escape-последовательности: '\u00F1'. Строковый литерал – последовательность символов в двойных кавычках: "Blabla". Для символов строки действуют те же правила. 🔘 Логические (boolean). true и false. 🔘 Специальный литерал null. Все нюансы описаны в официальной документации. #Язык
Show all...
Photo unavailableShow in Telegram
Weekend Offer для Java-разработчиков в команду VK Звонков В команде вы сможете прокачивать свои навыки, участвовать в разработке новых фич, развивать и улучшать существующие решения, решать задачи бесперебойной передачи данных в сложных сетевых условиях. Если вам это интересно, успевайте подать заявку до 9 сентября, где вам подробно расскажут о процессе работы и всех задачах, которые предстоит выполнять, а также проведут интервью и выберут лучших кандидатов, которые будут совершенствовать VK Звонки – универсальный и эффективный инструмент для общения. Узнать подробнее и подать заявку можно по ссылке
Show all...
Чем отличается final finally finalize? (2/2) finally – часть языковой конструкции try-catch-finally. Любое исключение, выброшенное из блока try переводит исполнение в самый соответствующий ему catch (при наличии). Этим продиктована необходимость располагать блоки catch в строгом порядке, от типа исключения-наследника, к родителю. В случае multicatch тот же порядок должен соблюдаться и внутри одного catch. Больше примеров про порядок. После выполнится блок finally. Выполняется он в любом случае, было исключение или нет. Типичное использование – освобождение ресурсов, обязательные завершающие действия. Для требующих финализации классов («ресурсов») добавляется интерфейс AutoCloseable, повторяющийся код блока final выносится в метод close и вызывается неявно в конце try-with-resources. Если в этой конструкции присутствует и явный final, он будет выполнен после. #Язык
Show all...
Чем отличается final finally finalize? (1/2) Тем, что это даже синтаксически разные вещи. Как и вопрос о методах Object, это способ начать разговор. finalize – метод-финализатор из Object, мы уже рассмотрели в предыдущих постах. final – модификатор, который применяется к переменным, полям, методам и классам. Переменная или поле становится неизменяемым и требует инициализации. Финальный метод нельзя переопределить в наследниках. Финальный класс не может иметь наследников вообще. Используется для создания хорошего (Effective Java Item 15) API по принципу наименьших привилегий. Когда в методе используется локальная переменная внешней области видимости, она обязана быть effectively final. В этом случае ключевое слово final необязательно, но значение всё равно не должно меняться. #Язык
Show all...
wait, notify, notifyAll Часто этот вопрос формулируется как задача Producer-сonsumer. Эту задачу и практические задачи на многопоточность вообще при возможности лучше реализовывать на высокоуровневых примитивах синхронизации. Другой подход – воспользоваться также низкоуровневой, но оптимистической блокировкой на compareAndSet. Но обычно использование notify/wait (пессимистическая блокировка) – условие этого задания, то есть требуется реализовать уже существую BlockingQueue. Эти методы вместе с synchronized – самый низкий уровень пессимистических блокировок в Java, использующийся внутри реализации примитивов синхронизации. Еще с Java 5 в непосредственном использовании этих методов нет необходимости, но теоретические знания всё еще часто спрашивают на интервью. Чтобы вызывать эти методы у объекта, необходимо чтобы был захвачен его монитор (т.е. нужно быть внутри synchronized-блока на этом объекте). В противном случае будет выброшено IllegalMonitorStateException. Так что для полного ответа нужно понимать, как работает monitor lock (блок synchronized). Вызов wait тормозит текущий поток на ожидание на этом объекте и отпускает его монитор. Исполнение продолжится, когда другой поток вызовет notify и отпустит блокировку монитора. Если на объекте ожидают несколько потоков, notify разбудит один случайный, notifyAll - все сразу. В теории, ожидание wait может быть прервано без вызова notify, по желанию JVM (spurious wakeup). На практике это бывает крайне редко, но нужно страховаться и после вызова wait добавлять дополнительную проверку условия завершения ожидания. Еще два нештатных случая завершения wait – прерывание потока извне и таймаут ожидания. В случае прерывания выбрасывается InterruptedException. Для таймаута нужно указать время ожидания параметрами метода wait. Значение 0 проигнорируется. Различные проблемы реализации блокировок рассмотрены в Java Concurrency in Practice 14.1.3, 14.2. Для желающих разобраться, как блокировки работают в кишках JVM, написана статья на хабре. #МетодыObject #Многопоточность
Show all...
Choose a Different Plan

Your current plan allows analytics for only 5 channels. To get more, please choose a different plan.