wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

2604ООПИнтерфейсы

Total questions: 51

Worksheet time: 28mins

Name
Class
Date
1.

Напишите свои ФИО (в формате: Примеров Пример Примерович)

4 lines
2.

Какое ключевое слово используется для указания наследования в большинстве ООП языков?

a)

implement

b)

extend

c)

new

d)

interface

3.

Что наследуется от базового класса?

a)

Только публичные методы и атрибуты.

b)

Только приватные методы и атрибуты.

c)

Все публичные, защищенные и некоторые приватные методы и атрибуты (если они не перекрыты).

d)

Все методы и атрибуты, кроме конструкторов.

4.

Можно ли наследоваться от нескольких классов одновременно (множественное наследование)?

a)

Да, во всех ООП языках.

b)

Нет, ни в одном ООП языке.

c)

Да, но только в некоторых языках (например, C++).

d)

Да, но только если базовые классы не имеют общих методов.

5.

Что такое super() (или аналогичная конструкция) в конструкторе подкласса?

a)

Вызов конструктора подкласса.

b)

Вызов конструктора базового класса.

c)

Создание нового экземпляра класса.

d)

Удаление экземпляра класса.

6.

Что такое переопределение метода (method overriding)?

a)

Создание нового метода в базовом классе.

b)

Изменение имени метода в подклассе.

c)

Реализация метода в подклассе с тем же именем и сигнатурой, что и в базовом классе.

d)

Удаление метода из базового класса.

7.

Может ли подкласс отменить (переопределить) приватный метод базового класса?

a)

Да, всегда.

b)

Да, но только если приватный метод виртуальный.

c)

Нет, приватные методы не наследуются и не могут быть переопределены.

d)

Да, но нужно использовать специальное ключевое слово.

8.

Что такое final класс (или аналогичный модификатор)?

a)

Класс, от которого можно наследоваться только один раз.

b)

Класс, от которого нельзя наследоваться.

c)

Класс, содержащий только константы.

d)

Класс, не требующий конструктора.

9.

Как называется метод, который должен быть реализован в подклассе абстрактного класса?

a)

Приватный метод.

b)

Статический метод.

c)

Абстрактный метод.

d)

Виртуальный метод.

10.

Можно ли создать экземпляр абстрактного класса?

a)

Да, всегда.

b)

Да, если реализованы все абстрактные методы.

c)

Нет, нельзя.

d)

Только если класс пустой.

11.

Что такое нисходящее преобразование типов (downcasting)?

a)

Преобразование объекта базового класса к типу производного класса.

b)

Преобразование объекта производного класса к типу базового класса.

c)

Создание нового объекта.

d)

Удаление объекта.

12.

Можно ли создать объект интерфейса напрямую?

a)

Да, всегда.

b)

Да, если реализованы все методы.

c)

Нет, только через класс, который реализует этот интерфейс.

d)

Только если интерфейс пустой.

13.

Что позволяет делать интерфейс?

a)

Описывать только структуру данных.

b)

Задавать контракт для классов, реализующих его.

c)

Скрывать внутреннюю реализацию класса.

d)

Наследовать методы от других классов.

14.

Сколько интерфейсов может реализовать класс?

a)

Только один.

b)

Только два.

c)

Неограниченное количество.

d)

Только если интерфейсы не имеют общих методов.

15.

Может ли интерфейс наследовать другие интерфейсы?

a)

Нет.

b)

Да, может.

c)

Только если они находятся в одном пакете.

d)

Только если интерфейсы не имеют общих методов.

16.

Когда мы пишем интерфейсы вместо классов?

a)

Когда мы пишем интерфейсы вместо классов.

b)

Когда мы используем классы вместо интерфейсов.

c)

Когда мы используем интерфейсы для определения поведения, а затем работаем с объектами через эти интерфейсы.

d)

Когда мы используем только абстрактные классы.

17.

Какой принцип SOLID активно использует интерфейсы?

a)

Single Responsibility Principle.

b)

Open/Closed Principle.

c)

Liskov Substitution Principle.

d)

Dependency Inversion Principle.

18.

Для чего используется приведение типов к интерфейсу?

a)

Чтобы создать новый объект.

b)

Чтобы получить доступ к методам, объявленным в интерфейсе.

c)

Чтобы скрыть методы, не объявленные в интерфейсе.

d)

Чтобы удалить объект.

19.

Что происходит, если класс не реализует все методы интерфейса?

a)

Компилятор выдаст ошибку.

b)

Класс будет считаться абстрактным.

c)

Будут использоваться методы базового класса.

d)

Будут использоваться методы интерфейса по умолчанию (если они есть).

20.

Какое ключевое слово используется для реализации интерфейса классом?

a)

extend

b)

inherit

c)

implement

d)

derive

21.

Что позволяет dependency injection?

a)

Зависимости внедряются в класс снаружи, через интерфейсы.

b)

В классе создаются экземпляры зависимостей.

c)

Зависимости импортируются в класс из файла.

d)

Зависимости хранятся в базе данных.

22.

Какой стандартный интерфейс используется для сравнения объектов в большинстве языков?

a)

Comparable (Java, C#)

b)

Comparator

c)

Equatable

d)

IComparable

23.

Какой стандартный интерфейс позволяет перебирать элементы коллекции в цикле foreach (или его эквиваленте)?

a)

Iterator

b)

Enumerable или IEnumerable (C#)

c)

Iterable (Java)

d)

Все вышеперечисленные.

24.

Какой интерфейс позволяет клонировать объекты?

a)

Cloneable (Java)

b)

ICloneable (C#)

c)

Copyable

d)

Все вышеперечисленные.

25.

Какой интерфейс предоставляет возможность сериализации объекта?

a)

Serializable (Java)

b)

ISerializable (C#)

c)

Persistable

d)

Все вышеперечисленные.

26.

Какой интерфейс обычно используется для форматирования объектов в строковое представление?

a)

Formattable

b)

Stringable

c)

ToString() (метод, наследуемый от Object/базового класса)

d)

Displayable

27.

У вас есть иерархия классов Animal, Dog, Cat. Как лучше всего организовать код, чтобы можно было вызывать метод makeSound() для любого животного, не зная конкретного типа?

a)

Использовать наследование и переопределение методов.

b)

Использовать интерфейсы и реализацию.

c)

Использовать перегрузку методов.

d)

Использовать статические методы.

28.

Как обеспечить возможность сортировки объектов класса Person по возрасту и по имени?

a)

Реализовать интерфейс Comparable и Comparator.

b)

Реализовать только интерфейс Comparable.

c)

Реализовать только интерфейс Comparator.

d)

Использовать лямбда-выражения.

29.

Как реализовать возможность сохранения и загрузки объектов класса Game в файл?

a)

Реализовать интерфейс Serializable.

b)

Использовать JSON.

c)

Использовать XML.

d)

Все вышеперечисленное.

30.

Как создать систему уведомлений, которая может отправлять сообщения разными способами (email, SMS, push-уведомления), не изменяя основной код приложения?

a)

Использовать наследование.

b)

Использовать интерфейсы и стратегию.

c)

Использовать перегрузку методов.

d)

Использовать статические методы.

31.

Как реализовать систему плагинов, позволяющую добавлять новую функциональность в программу без перекомпиляции?

a)

Использовать наследование.

b)

Использовать интерфейсы и динамическую загрузку классов.

c)

Использовать перегрузку методов.

d)

Использовать статические методы.

32.

В каком случае лучше использовать абстрактный класс, а не интерфейс?

a)

Когда нужно определить только контракт (набор методов).

b)

Когда нужно предоставить реализацию по умолчанию для некоторых методов.

c)

Когда требуется множественное наследование.

d)

Всегда лучше использовать интерфейс.

33.

Как обеспечить соблюдение Liskov Substitution Principle при наследовании?

a)

Подкласс не должен добавлять новые методы.

b)

Подкласс не должен изменять поведение базового класса.

c)

Подкласс должен гарантировать, что все его методы работают так же, как и методы базового класса.

d)

Все вышеперечисленное.

34.

Какой паттерн проектирования часто используется вместе с интерфейсами для реализации гибкой конфигурации компонентов?

a)

Singleton.

b)

Factory Method.

c)

Observer.

d)

Iterator.

35.

Что такое "DI container"?

a)

Класс для хранения объектов.

b)

Инструмент, который автоматизирует внедрение зависимостей.

c)

Тип данных для хранения чисел.

d)

Компилятор языка программирования.

36.

В каком случае при наследовании нужно использовать virtual и override (или их аналоги)?

a)

Когда нужно создать новый метод.

b)

Когда нужно переопределить метод базового класса.

c)

Когда нужно скрыть метод базового класса.

d)

Когда н

37.

Что такое default методы в интерфейсах?

a)

Методы, которые не нужно реализовывать в классах.

b)

Методы с реализацией по умолчанию, которые могут быть переопределены в классах.

c)

Методы, которые доступны только в интерфейсе.

d)

Методы, которые нельзя переопределить.

38.

Что такое явная реализация интерфейса?

a)

Реализация интерфейса, которая видна только внутри класса.

b)

Реализация интерфейса, которая видна только в базовом классе.

c)

Реализация интерфейса, которая не требует использования ключевого слова implement.

d)

Реализация интерфейса, которая позволяет избежать конфликтов имен.

39.

Как реализовать интерфейс в Python (хотя формально интерфейсов нет)?

a)

Использовать абстрактные классы (abc module).

b)

Просто реализовать нужные методы в классе.

c)

Использовать duck typing (если объект ведет себя как утка, значит это утка).

d)

Все вышеперечисленное.

40.

Что такое виртуальное наследование?

a)

Наследование, которое может быть переопределено.

b)

Наследование, которое происходит только в виртуальной памяти.

c)

Механизм для предотвращения дублирования базовых классов при множественном наследовании.

d)

Наследование интерфейса.

41.

В каком языке интерфейсы называются "протоколами"?

a)

Java

b)

C#

c)

Python

d)

Swift

42.

Что такое "dependency inversion principle"?

a)

Зависимости должны быть направлены в одну сторону.

b)

Высокоуровневые модули не должны зависеть от низкоуровневых модулей, а оба должны зависеть от абстракций.

c)

Низкоуровневые модули не должны зависеть от высокоуровневых модулей, а оба должны зависеть от абстракций.

d)

Все зависимости должны быть внедрены через конструктор.

43.

Что такое "Inversion of Control (IoC)"?

a)

Паттерн проектирования, где поток управления передается от приложения контейнеру.

b)

Способ инвертировать порядок выполнения операций.

c)

Метод оптимизации кода.

d)

Способ избежать зависимостей между классами.

44.

Как интерфейсы помогают в тестировании кода?

a)

Позволяют легко заменять реальные объекты моками (заглушками).

b)

Ускоряют выполнение тестов.

c)

Упрощают написание тестов.

d)

Все вышеперечисленное.

45.

Что такое "marker interface" (или "tagging interface")?

a)

Интерфейс, содержащий только константы.

b)

Интерфейс, не содержащий методов.

c)

Интерфейс, используемый для маркировки классов определенным образом.

d)

Интерфейс, используемый для реализации полиморфизма.

46.

Какой недостаток множественного наследования решают интерфейсы?

a)

Запутанность кода.

b)

Проблема "Diamond Problem" (когда один класс наследует два класса, которые, в свою очередь, наследуют один и тот же класс).

c)

Сложность поддержки кода.

d)

Все вышеперечисленное.

47.

Как бы вы спроектировали систему логирования, чтобы можно было добавлять новые источники и форматы логов без изменения существующего кода?

a)

С использованием наследования.

b)

С использованием интерфейсов и стратегии.

c)

С использованием перегрузки методов.

d)

С использованием статических методов.

48.

Как бы вы реализовали систему отправки уведомлений, чтобы можно было легко переключаться между разными способами отправки?

a)

С использованием наследования.

b)

С использованием интерфейса NotificationSender.

c)

С использованием статических методов.

d)

С использованием перегрузки методов.

49.

Как бы вы реализовали возможность фильтрации списка объектов по разным критериям (например, по возрасту, по имени, по дате создания)?

a)

С использованием наследования.

b)

С использованием интерфейса Predicate (или аналога) и лямбда-выражений.

c)

С использованием перегрузки методов.

d)

С использованием статических методов.

50.

Как бы вы реализовали систему плагинов, которые могут динамически загружаться и расширять функциональность приложения?

a)

С использованием статического импорта.

b)

С использованием рефлексии и интерфейсов.

c)

С использованием прямого обращения к памяти.

d)

С использованием командной строки.

51.

Как бы вы реализовали возможность сравнивать объекты разных классов, но с общей концепцией (например, Document и Image), основываясь на их дате создания?

a)

Создать общий базовый класс Comparable.

b)

Создать общий интерфейс Comparable.

c)

Не сравнивать объекты разных классов.

d)

Использовать динамическое приведение типов.