#Вопросы_с_собеседования
Приведите примеры структурных шаблонов проектирования
•
•
•
•
•
•
•
Приведите примеры структурных шаблонов проектирования
•
Адаптер (Adapter) - Объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс.•
Мост (Bridge) - Структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.•
Компоновщик (Composite) - Объект, который объединяет в себе объекты, подобные ему самому.•
Декоратор (Decorator) - Класс, расширяющий функциональность другого класса без использования наследования.•
Фасад (Facade) - Объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.•
Приспособленец (Flyweight) - Это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.•
Заместитель (Proxy) - Объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.👍15❤4
#Вопросы_с_собеседования
Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
Интерфейс
Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
👍14😱1
Как преобразовать строку в Windows-1251?
В Java вы можете использовать классы
Обратите внимание, что некоторые символы, которые существуют в кодировке Windows-1251, могут отсутствовать в кодировке UTF-16, поэтому процесс преобразования может вызвать потерю данных.
В Java вы можете использовать классы
Charset и String для преобразования строки из одной кодировки в другую. Пример на картинке выше.Обратите внимание, что некоторые символы, которые существуют в кодировке Windows-1251, могут отсутствовать в кодировке UTF-16, поэтому процесс преобразования может вызвать потерю данных.
👍5
Объекты как параметры методов
В Java объекты могут использоваться как параметры методов, что позволяет передавать данные и взаимодействовать с ними внутри методов. Это один из основных способов работы с данными в ООП.
Параметры методов представляют собой значения, которые передаются методу при его вызове. Они объявляются в заголовке метода и позволяют методу получать информацию, необходимую для выполнения своей задачи.
В Java объекты могут использоваться как параметры методов, что позволяет передавать данные и взаимодействовать с ними внутри методов. Это один из основных способов работы с данными в ООП.
Параметры методов представляют собой значения, которые передаются методу при его вызове. Они объявляются в заголовке метода и позволяют методу получать информацию, необходимую для выполнения своей задачи.
👍10😢1
Что такое race-condition?
Также
Race condition (гонка состояний) — это ситуация, которая возникает в многопоточных программах, когда несколько потоков одновременно пытаются изменить общий ресурс или переменную, приводя к непредсказуемому поведению программы. Это может произойти из-за неопределенности в том, какой поток будет выполняться в данный момент, и какие операции он совершит.Также
race condition может возникнуть, если несколько потоков пытаются изменить одну и ту же общую переменную без какой-либо синхронизации. Например, если два потока пытаются одновременно увеличить значение переменной, которое зависит от текущего значения, то результат может быть непредсказуемым.👍14
Проверка на палиндром
Напишем небольшую программу, проверяющую является ли введенная строка палиндромом.
Перепишите код с картинки в файл с расширением
Напишем небольшую программу, проверяющую является ли введенная строка палиндромом.
Перепишите код с картинки в файл с расширением
.java, например, PalindromeChecker.java, затем скомпилируйте и запустите его с помощью команды javac PalindromeChecker.java, а затем java PalindromeChecker. Программа попросит вас ввести строку, и затем она выведет результат проверки на палиндром.😢8👍5🔥1
Autoboxing
Autoboxing — это механизм, который автоматически преобразует примитивные типы данных в соответствующие классы-оболочки, и наоборот, без явного указания программистом. Этот механизм упрощает код и делает его более читаемым, так как позволяет использовать примитивные типы как объекты.
Autoboxing позволяет, например, использовать примитивные типы в коллекциях и других ситуациях, где требуются объекты. Ранее, до появления autoboxing, программистам приходилось явно выполнять преобразования между примитивными типами и их классами-оболочками.
Autoboxing — это механизм, который автоматически преобразует примитивные типы данных в соответствующие классы-оболочки, и наоборот, без явного указания программистом. Этот механизм упрощает код и делает его более читаемым, так как позволяет использовать примитивные типы как объекты.
Autoboxing позволяет, например, использовать примитивные типы в коллекциях и других ситуациях, где требуются объекты. Ранее, до появления autoboxing, программистам приходилось явно выполнять преобразования между примитивными типами и их классами-оболочками.
👍3🔥3
Что такое Enum?
Enum — это особый тип данных, который представляет собой набор именованных констант, представляющих различные варианты значения для определенного типа данных. Enum используется для создания пользовательских типов данных, которые ограничивают множество возможных значений до определенного набора.Enum позволяет создавать более читаемый и безопасный код, так как позволяет использовать ограниченный набор значений, которые определены заранее. Это также предотвращает ошибки из-за некорректных значений, которые могут быть использованы в других случаях.👍5🔥2
Адаптер
Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Он позволяет «преобразовать» интерфейс одного класса в интерфейс другого класса таким образом, чтобы они могли взаимодействовать без изменения существующего кода.
Паттерн Адаптер включает в себя два вида адаптеров:
Классовый адаптер: Использует наследование для адаптации интерфейса исходного класса к целевому интерфейсу. То есть, он наследует исходный класс и реализует целевой интерфейс.
Объектный адаптер: Использует композицию, чтобы включить объект исходного класса в адаптер и реализует целевой интерфейс.
Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Он позволяет «преобразовать» интерфейс одного класса в интерфейс другого класса таким образом, чтобы они могли взаимодействовать без изменения существующего кода.
Паттерн Адаптер включает в себя два вида адаптеров:
Классовый адаптер: Использует наследование для адаптации интерфейса исходного класса к целевому интерфейсу. То есть, он наследует исходный класс и реализует целевой интерфейс.
Объектный адаптер: Использует композицию, чтобы включить объект исходного класса в адаптер и реализует целевой интерфейс.
❤12👍8
Generics
Generics (Обобщения) — это механизм, позволяющий создавать классы, интерфейсы и методы, которые могут работать с разными типами данных безопасным и типобезопасным способом. Он позволяет параметризовать типы таким образом, чтобы код был более гибким, повышая безопасность типов и устраняя необходимость приведения типов во время выполнения.
Generics (Обобщения) — это механизм, позволяющий создавать классы, интерфейсы и методы, которые могут работать с разными типами данных безопасным и типобезопасным способом. Он позволяет параметризовать типы таким образом, чтобы код был более гибким, повышая безопасность типов и устраняя необходимость приведения типов во время выполнения.
👍21
Конструктор
Конструктор — это специальный метод в классе, который вызывается при создании нового объекта этого класса. Конструкторы используются для инициализации состояния объекта, устанавливая начальные значения его полей. Конструкторы обеспечивают правильное создание объектов и обычно выполняют первоначальные операции, необходимые для поддержания корректного состояния объекта.
#для_начинающих
Конструктор — это специальный метод в классе, который вызывается при создании нового объекта этого класса. Конструкторы используются для инициализации состояния объекта, устанавливая начальные значения его полей. Конструкторы обеспечивают правильное создание объектов и обычно выполняют первоначальные операции, необходимые для поддержания корректного состояния объекта.
#для_начинающих
👍10
Паттерн проектирования Observer
Паттерн Observer является одним из популярных поведенческих паттернов проектирования. Он используется для реализации механизма, при котором объекты (наблюдатели) могут автоматически получать уведомления об изменениях в другом объекте (субъекте). Это особенно полезно, когда одни объекты зависят от состояния других и должны реагировать на его изменения.
#для_продвинутых
Паттерн Observer является одним из популярных поведенческих паттернов проектирования. Он используется для реализации механизма, при котором объекты (наблюдатели) могут автоматически получать уведомления об изменениях в другом объекте (субъекте). Это особенно полезно, когда одни объекты зависят от состояния других и должны реагировать на его изменения.
#для_продвинутых
👍15
OutOfMemoryError
«OutOfMemoryError» ошибка в Java, указывающая на то, что приложению не хватило памяти для выполнения операции. Это может произойти, когда программа пытается выделить больше памяти, чем доступно в куче (heap), которая используется для хранения объектов и данных во время выполнения Java-приложения.
В результате JVM (Java Virtual Machine) больше не может выделить дополнительную память, и возникает ошибка «OutOfMemoryError».
#для_начинающих
«OutOfMemoryError» ошибка в Java, указывающая на то, что приложению не хватило памяти для выполнения операции. Это может произойти, когда программа пытается выделить больше памяти, чем доступно в куче (heap), которая используется для хранения объектов и данных во время выполнения Java-приложения.
В результате JVM (Java Virtual Machine) больше не может выделить дополнительную память, и возникает ошибка «OutOfMemoryError».
#для_начинающих
👍13❤1
Лямбды как параметры и результаты методов
В Java лямбда-выражения — это компактный способ представления анонимных функций. Они часто используются для передачи функциональности как параметров в методы и возвращаются в качестве результатов методов, когда требуется работать с функциональным программированием.
#для_продвинутых
В Java лямбда-выражения — это компактный способ представления анонимных функций. Они часто используются для передачи функциональности как параметров в методы и возвращаются в качестве результатов методов, когда требуется работать с функциональным программированием.
#для_продвинутых
👍9❤2
Удачное и неудачное использование Optional
Удачным примером использования
Неудачным примером использования
Optional — это контейнер для объекта, который может содержать или не содержать значение null.Удачным примером использования
Optional является метод orElseGet(), который позволяет вернуть значение по умолчанию, если значение Optional равно null. (изображение 1)Неудачным примером использования
Optional является метод get(), который вызывает исключение NoSuchElementException, если значение Optional равно null. (изображение 2)👍9
Метод ordinal() в Enum
Метод
#для_начинающих
Метод
ordinal() является частью класса Enum. Класс Enum используется для создания типов данных, представляющих ограниченное множество значений, таких как перечисления (enumerations). Метод ordinal() возвращает порядковый номер (индекс) конкретного элемента перечисления в объявленном порядке.#для_начинающих
🔥9
Агрегация
Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Это также называется «композицией» или «составным объектом». Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.
Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
#для_продвинутых
Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Это также называется «композицией» или «составным объектом». Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.
Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
#для_продвинутых
👍16
Абстрактные классы
Абстрактные классы — это классы, которые не могут быть инстанциированы напрямую, то есть нельзя создать объект абстрактного класса при помощи оператора new. Они предназначены для обеспечения базовой структуры и функциональности для других классов, которые наследуются от них. Абстрактные классы представляют собой в некотором роде «заготовки» для подклассов, указывая на общие атрибуты и методы, которые они должны реализовать.
#для_начинающих
Абстрактные классы — это классы, которые не могут быть инстанциированы напрямую, то есть нельзя создать объект абстрактного класса при помощи оператора new. Они предназначены для обеспечения базовой структуры и функциональности для других классов, которые наследуются от них. Абстрактные классы представляют собой в некотором роде «заготовки» для подклассов, указывая на общие атрибуты и методы, которые они должны реализовать.
#для_начинающих
👍8❤2