Ответ на "Почему нельзя объявить метод интерфейса с модификатором final или static?"
Причина, по которой в интерфейсах нельзя объявлять методы с модификаторами final или static заключается в следующем:
Final методы предназначены для того, чтобы классы-наследники не могли их переопределить. Но если метод интерфейса объявить финальным, это нарушит саму суть интерфейсов — предоставить общий набор методов для реализации в других классах.
Static методы принадлежат классу, а не отдельным объектам этого класса. Описывая метод в интерфейсе мы имеем в виду, что он должен быть реализован в классах и вызываться у объектов этих классов. Статические же методы не предназначены для реализации и вызова на экземплярах класса, поэтому static методы в интерфейсах тоже не имеют смысла.
#вопросы_с_собеседований
Причина, по которой в интерфейсах нельзя объявлять методы с модификаторами final или static заключается в следующем:
Final методы предназначены для того, чтобы классы-наследники не могли их переопределить. Но если метод интерфейса объявить финальным, это нарушит саму суть интерфейсов — предоставить общий набор методов для реализации в других классах.
Static методы принадлежат классу, а не отдельным объектам этого класса. Описывая метод в интерфейсе мы имеем в виду, что он должен быть реализован в классах и вызываться у объектов этих классов. Статические же методы не предназначены для реализации и вызова на экземплярах класса, поэтому static методы в интерфейсах тоже не имеют смысла.
#вопросы_с_собеседований
Как получить коллекцию только для чтения?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Как получить коллекцию только для чтения?"
При помощи:
Эти методы принимают коллекцию в качестве параметра и возвращают коллекцию только для чтения с теми же элементами внутри.
#вопросы_с_собеседований
При помощи:
Collections.unmodifiableList(list);
Collections.unmodifiableSet(set);
Collections.unmodifiableMap(map).
Эти методы принимают коллекцию в качестве параметра и возвращают коллекцию только для чтения с теми же элементами внутри.
#вопросы_с_собеседований
Если оператор return содержится и в блоке catch и в finally, какой из них «главнее»?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Если оператор return содержится и в блоке catch и в finally, какой из них «главнее»?"
Если оператор return встречается как в блоке catch, так и в блоке finally, то return в блоке finally имеет больший приоритет и будет выполнен в любом случае.
Порядок выполнения такой конструкции будет следующий:
— Выполняется код в теле try.
— Если возникает исключение, управление передается в блок catch.
— В блоке catch может выполниться return, возвращающий значение из метода.
— Далее обязательно выполнится блок finally, даже если в catch уже был return.
— Если в finally есть оператор return, он перезапишет любое значение, возвращаемое ранее.
— Метод вернет значение, указанное в return блока finally.
#вопросы_с_собеседований
Если оператор return встречается как в блоке catch, так и в блоке finally, то return в блоке finally имеет больший приоритет и будет выполнен в любом случае.
Порядок выполнения такой конструкции будет следующий:
— Выполняется код в теле try.
— Если возникает исключение, управление передается в блок catch.
— В блоке catch может выполниться return, возвращающий значение из метода.
— Далее обязательно выполнится блок finally, даже если в catch уже был return.
— Если в finally есть оператор return, он перезапишет любое значение, возвращаемое ранее.
— Метод вернет значение, указанное в return блока finally.
#вопросы_с_собеседований
Как перейти на Scala: основы и особенности
Расскажет опытный эксперт — Алексей Воронец. На уроке вы:
- обсудите синтаксические особенности языка;
- узнаете, какие возможности языка позволяют комфортно использовать подходы функционального программирования;
- попрактикуетесь в написании функций и методов, создании иммутабельных конструкций;
- получите представление о возможностях композиции.
Занятие пройдёт 10 апреля в 20:00 мск в рамках курса «Scala-разработчик». Доступна рассрочка на обучение!
Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cw4Ie4
Расскажет опытный эксперт — Алексей Воронец. На уроке вы:
- обсудите синтаксические особенности языка;
- узнаете, какие возможности языка позволяют комфортно использовать подходы функционального программирования;
- попрактикуетесь в написании функций и методов, создании иммутабельных конструкций;
- получите представление о возможностях композиции.
Занятие пройдёт 10 апреля в 20:00 мск в рамках курса «Scala-разработчик». Доступна рассрочка на обучение!
Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cw4Ie4
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?"
— Если в блоке try вызвать метод System.exit(). Это приведет к немедленному завершению приложения, и блок finally пропускается.
— Если произойдет аварийное завершение JVM, например OutOfMemoryError. В этом случае JVM останавливается без выполнения finally.
— Если в блоке try выбрасывается исключение Error или его подклассы (например, StackOverflowError). Такие исключения обычно означают серьезную проблему, поэтому JVM не гарантирует выполнение finally.
— Если при выполнении кода в блоке try произошел deadlock. В этом случае поток зависает, и блок finally не выполняется.
— Если программа была принудительно остановлена, например, по kill -9 в Linux.
#вопросы_с_собеседований
— Если в блоке try вызвать метод System.exit(). Это приведет к немедленному завершению приложения, и блок finally пропускается.
— Если произойдет аварийное завершение JVM, например OutOfMemoryError. В этом случае JVM останавливается без выполнения finally.
— Если в блоке try выбрасывается исключение Error или его подклассы (например, StackOverflowError). Такие исключения обычно означают серьезную проблему, поэтому JVM не гарантирует выполнение finally.
— Если при выполнении кода в блоке try произошел deadlock. В этом случае поток зависает, и блок finally не выполняется.
— Если программа была принудительно остановлена, например, по kill -9 в Linux.
#вопросы_с_собеседований
Перегрузка — очень мощная техника для случаев, когда нужно одинаковое имя метода с разными параметрами. Вместо того, чтобы дублировать имя метода и добавлять беспорядок в ваш код, вы можете просто перегрузить его. Это позволяет сохранять код чистым, а также снижает риск того, что дублирующие методы сломают часть системы.
Как это провернуть? Расскажет опытный эксперт на открытом практическом уроке от OTUS! Встречаемся 26 апреля в 20:00 мск в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Какова иерархия коллекций?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Какова иерархия коллекций?"
В Java есть два основных интерфейса для коллекций — Collection и Map.
Interface Collection находится на верху иерархии и определяет общие методы для работы с коллекциями, такие как add(), remove(), size() и другие. От него наследуются конкретные реализации коллекций.
Наиболее часто используемые реализации Collection — это List, Set и Queue.
Map интерфейс реализует отдельную структуру данных. Он представляет отображение ключ-значение. Основные реализации — HashMap и TreeMap.
#вопросы_с_собеседований
В Java есть два основных интерфейса для коллекций — Collection и Map.
Interface Collection находится на верху иерархии и определяет общие методы для работы с коллекциями, такие как add(), remove(), size() и другие. От него наследуются конкретные реализации коллекций.
Наиболее часто используемые реализации Collection — это List, Set и Queue.
Map интерфейс реализует отдельную структуру данных. Он представляет отображение ключ-значение. Основные реализации — HashMap и TreeMap.
#вопросы_с_собеседований
Углубленному изучению Java – быть!
Как грамотно использовать конструкторы и блоки инициализации? — расскажем на открытом практическом уроке от OTUS, где мы:
- Разберём конструктор на запчасти;
- Определим финалистов (финальные переменные);
- Наведём порядок (инициализации);
Встречаемся 21 мая в 19:00 мск в преддверии старта курса «Углубленное изучения языка Java».
Кур построен на базе подготовки к сертификации OCAJP. Ваш билет в мир международных IT-проектов!
Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cx0yEP
Как грамотно использовать конструкторы и блоки инициализации? — расскажем на открытом практическом уроке от OTUS, где мы:
- Разберём конструктор на запчасти;
- Определим финалистов (финальные переменные);
- Наведём порядок (инициализации);
Встречаемся 21 мая в 19:00 мск в преддверии старта курса «Углубленное изучения языка Java».
Кур построен на базе подготовки к сертификации OCAJP. Ваш билет в мир международных IT-проектов!
Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cx0yEP
Как влияет модификатор static на класс/метод/поле?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Как влияет модификатор static на класс/метод/поле?"
Для класса — позволяет создать static-класс, экземпляры которого создавать нельзя. Используется для создания утилитных классов.
Для метода — делает метод статическим, то есть он может быть вызван без создания экземпляра класса.
Для поля — создает поле, общее для всех экземпляров класса. Статическое поле существует в единственном экземпляре для класса.
Если кратко, static позволяет создавать классы/методы/поля, связанные с классом, а не с экземпляром.
Это удобно, когда нужно реализовать утилитные классы или объекты, общие для всех экземпляров.
#вопросы_с_собеседований
Для класса — позволяет создать static-класс, экземпляры которого создавать нельзя. Используется для создания утилитных классов.
Для метода — делает метод статическим, то есть он может быть вызван без создания экземпляра класса.
Для поля — создает поле, общее для всех экземпляров класса. Статическое поле существует в единственном экземпляре для класса.
Если кратко, static позволяет создавать классы/методы/поля, связанные с классом, а не с экземпляром.
Это удобно, когда нужно реализовать утилитные классы или объекты, общие для всех экземпляров.
#вопросы_с_собеседований
Почему интерактивная разработка на Clojure — это круто?
В Clojure ты можешь запустить программу всего один раз и взаимодействовать с ней на протяжении всего процесса разработки в реальном времени. Хочешь разобраться? Тогда ждем тебя на открытом практическом уроке от OTUS, где мы разберем:
▫️как добавлять новые функции или менять состояние программы;
▫️как «прощупывать» любые данные и пошагово отлаживать код;
▫️как запускать тесты и подключаться к внешним системам.
И всё это не выходя из интерактивной среды разработки REPL!
Встречаемся 30 мая в 20:00 мск в рамках курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйся прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cx1XwM
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
В Clojure ты можешь запустить программу всего один раз и взаимодействовать с ней на протяжении всего процесса разработки в реальном времени. Хочешь разобраться? Тогда ждем тебя на открытом практическом уроке от OTUS, где мы разберем:
▫️как добавлять новые функции или менять состояние программы;
▫️как «прощупывать» любые данные и пошагово отлаживать код;
▫️как запускать тесты и подключаться к внешним системам.
И всё это не выходя из интерактивной среды разработки REPL!
Встречаемся 30 мая в 20:00 мск в рамках курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие реализации SortedSet вы знаете и в чем их особенность?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Какие реализации SortedSet вы знаете и в чем их особенность?"
В Java есть несколько реализаций интерфейса SortedSet:
— TreeSet — это реализация на основе красно-черного дерева. Элементы в TreeSet хранятся в отсортированном порядке согласно естественному порядку элементов или компаратору, переданному в конструктор.
Обеспечивает логарифмическую сложность для большинства операций.
— ConcurrentSkipListSet — потокобезопасная реализация, основанная на скип-листов.
Обеспечивает логарифмическую сложность операций и потокобезопасный доступ.
— EnumSet — высокопроизводительная реализация для элементов-перечислений.
Использует внутри битовые вектора для хранения.
— LinkedHashSet — реализация на основе хеш-таблицы и связанного списка.
Сохраняет порядок вставки элементов.
#вопросы_с_собеседований
В Java есть несколько реализаций интерфейса SortedSet:
— TreeSet — это реализация на основе красно-черного дерева. Элементы в TreeSet хранятся в отсортированном порядке согласно естественному порядку элементов или компаратору, переданному в конструктор.
Обеспечивает логарифмическую сложность для большинства операций.
— ConcurrentSkipListSet — потокобезопасная реализация, основанная на скип-листов.
Обеспечивает логарифмическую сложность операций и потокобезопасный доступ.
— EnumSet — высокопроизводительная реализация для элементов-перечислений.
Использует внутри битовые вектора для хранения.
— LinkedHashSet — реализация на основе хеш-таблицы и связанного списка.
Сохраняет порядок вставки элементов.
#вопросы_с_собеседований
В чем отличия между TreeSet и HashSet?
Основное отличие между TreeSet и HashSet заключается в том, что TreeSet хранит элементы в отсортированном порядке, в то время как порядок хранения элементов в HashSet не определен. TreeSet также обеспечивает быстрый поиск и извлечение элементов в отсортированном порядке.
#вопросы_с_собеседований
Основное отличие между TreeSet и HashSet заключается в том, что TreeSet хранит элементы в отсортированном порядке, в то время как порядок хранения элементов в HashSet не определен. TreeSet также обеспечивает быстрый поиск и извлечение элементов в отсортированном порядке.
#вопросы_с_собеседований
👉 Хочешь освоить Stream API и функциональные интерфейсы в Java?
Приходи на открытый урок, где опытный эксперт разберет обработку элементов коллекций с помощью Stream API и обработку функциональных интерфейсов при написании автотестов.
Спикер Павел Балахонов — ведущий инженер по автоматизированному тестированию на проекте VK Private Cloud Solutions, опытный ментор и преподаватель.
👉 Встречаемся 20 августа в 20:00 мск. Всем участникам дадим скидку на большое обучение.
Регистрация открыта
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Приходи на открытый урок, где опытный эксперт разберет обработку элементов коллекций с помощью Stream API и обработку функциональных интерфейсов при написании автотестов.
Спикер Павел Балахонов — ведущий инженер по автоматизированному тестированию на проекте VK Private Cloud Solutions, опытный ментор и преподаватель.
👉 Встречаемся 20 августа в 20:00 мск. Всем участникам дадим скидку на большое обучение.
Регистрация открыта
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Какие подклассы класса Reader вы знаете, для чего они предназначены?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований