50+ OOPs Interview Questions and Answers (2025) by https://www.simplilearn.com/ РУССКИЙ Flashcards

1
Q

Зачем нам нужно использовать ООП?

A

ООП необходимо использовать для:

  1. более ясного программирования и более лаконичного решения проблем
  2. повторного использования кода с помощью наследования
  3. снижения избыточности
  4. инкапсуляции
  5. сокрытия данных
  6. разделения на подзадачи
  7. гибкости программы с помощью полиморфизма
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое множественное наследование?

A

Если один класс разделяет поведение и структуру, определенные в другом множественном классе, это называется множественным наследованием.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Приведите пример инкапсуляции.

A

Понятие сокрытия данных называется инкапсуляцией. Примерами являются защищенные и закрытые члены в C++.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

В чем разница между перегрузкой и переопределением?

A

Перегрузка — это два или более методов с одинаковым именем, но разными параметрами. Она решается во время компиляции. В то время как переопределение — это концепция ООП, которая позволяет подклассам иметь определенную реализацию метода, уже предоставленного его родительским классом. Она решается во время выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Определите защищенный модификатор доступа.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Какова функция ключевого слова super?

A

Ключевое слово super используется для переадресации вызова конструктора в конструктор в суперклассе. Оно вызывает переопределенный метод, который позволяет получить доступ к этим методам и скрытым членам суперкласса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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

A

Когда выполняется полиморфный вызов, и компилятор знает, какая функция должна быть вызвана; это известно как полиморфизм времени компиляции. Такие функции, как аргументы функций по умолчанию, перегрузка и шаблоны в C++ поддерживают полиморфизм времени компиляции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Одним из ключевых вопросов на собеседовании по ООП может стать приведение примера из реальной жизни по абстракции данных.

A

При управлении автомобилем вы знаете, что при нажатии на педаль газа скорость увеличится. Однако вы не знаете точно, как это происходит. Это пример абстракции данных, поскольку детали реализации скрыты от водителя.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какова цель ключевого слова «this»?

A

Для ссылки на текущий объект класса используется это ключевое слово. Оно используется как указатель, который различает глобальный объект и текущий объект, ссылаясь на текущий.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что подразумевается под термином ООП?

A

ООП означает объектно-ориентированное программирование, парадигму программирования, которая использует объекты для представления и манипулирования данными. Аспекты ООП основаны на концепции объектов, которые имеют свойства и методы, а также взаимодействия между ними.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Каковы основные языки объектно-ориентированного программирования?

A

К основным объектно-ориентированным языкам программирования относятся Java, C++, Python, C# и Ruby.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Какие еще парадигмы программирования существуют помимо ООП?

A

Другие парадигмы программирования включают:

  • Функциональное программирование: акцент делается на использовании функций и неизменяемых данных для решения проблем.
  • Процедурное программирование: акцент делается на разбиении программы на небольшие процедуры или функции для улучшения читаемости и удобства обслуживания.
  • Логическое программирование: акцент делается на использовании логики и математической нотации для представления и манипулирования данными.
  • Событийно-управляемое программирование: акцент делается на обработке событий, а поток управления основан на событиях.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что подразумевается под структурным программированием?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Каковы основные особенности ООП?

A

Основными особенностями объектно-ориентированного программирования (ООП) являются инкапсуляция, наследование, полиморфизм, абстракция.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Каковы преимущества использования ООП?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Почему ООП так популярны?

A

ООП настолько популярно, потому что оно позволяет разработчикам организовывать и структурировать свой код так, чтобы он отражал объекты реального мира и их взаимодействия, делая его более интуитивным и простым для понимания.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Объясните концепцию наследования на примере из реальной жизни.

A

Родительский класс — это логическое понятие, например, транспортное средство — это базовый класс, который определяет общие свойства, присущие всем транспортным средствам. Однако дочерние классы — это более конкретный тип класса, например, грузовик, автобус, автомобиль и т. д. Наследование позволяет подклассам наследовать общие атрибуты транспортного средства и определять конкретные атрибуты и методы для своих собственных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Чем структура отличается от класса?

A

Структура — это определяемая пользователем коллекция переменных с различными типами данных. Однако невозможно создать экземпляр структуры или наследовать ее. Таким образом, это не концепция ООП.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Что такое абстрактная функция?

A

Абстрактная функция — это функция, объявленная только в базовом классе. Она переопределяется в подклассе, поскольку не содержит определения в базовом классе.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Назовите три оператора, которые нельзя перегружать.

A
  • «::» Оператор разрешения области действия
  • «. » Оператор указателя на член
  • «.» точка или оператор доступа к члену
22
Q

Чем инкапсуляция отличается от абстракции данных?

A

Абстракция данных относится к способности скрывать нежелательную информацию. В то же время инкапсуляция относится к сокрытию данных, а также метода вместе.

23
Q

Есть ли ограничения по наследованию? Если да, то какие?

A

Да. Ограничения наследования:

  1. Увеличение усилий и времени выполнения
  2. Тесная связь родительского и дочернего классов
  3. Требует правильной реализации
  4. Требует перехода между разными классами
24
Q

Определите виртуальные функции.

A

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

25
Q

Перечислите ограничения объектно-ориентированного программирования.

A
  1. Требует интенсивного тестирования
  2. Не подходит для решения мелких проблем
  3. Требует хорошего планирования
  4. Требуется больше времени для решения проблем
  5. Проблемы нужно рассматривать в терминах объектов
26
Q

В чем разница между базовым классом и суперклассом?

A

Базовый класс — это корневой класс — наиболее обобщенный класс. В то же время суперкласс — это непосредственный родительский класс, от которого наследуется другой класс.

27
Q

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

A

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

28
Q

Что такое класс?

A

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

29
Q

Что такое объект?

A

В объектно-ориентированном программировании объект — это экземпляр класса. Это самостоятельная единица кода и данных со своими свойствами и методами. Объект — это конкретный экземпляр класса, который может быть создан во время выполнения.

30
Q

Что такое инкапсуляция?

A

Инкапсуляция — это механизм сокрытия внутренних деталей объекта от внешнего мира. Это один из фундаментальных принципов объектно-ориентированного программирования, наряду с наследованием и полиморфизмом. Инкапсуляция достигается с помощью модификаторов доступа (таких как «public» или «private») для ограничения доступа к членам класса.

31
Q

Что такое полиморфизм?

A

Полиморфизм — это концепция объектно-ориентированного программирования, которая позволяет рассматривать объекты разных классов как объекты общего суперкласса. Основная идея полиморфизма заключается в том, что одна функция или метод могут быть написаны для работы с несколькими вещами.

Существует два типа полиморфизма:

  1. Полиморфизм времени компиляции (также известный как статический полиморфизм) достигается посредством перегрузки функций или операторов.
  2. Полиморфизм времени выполнения (также известный как динамический полиморфизм) достигается посредством переопределения функций.
32
Q

Каким образом C++ поддерживает полиморфизм?

A

C++ поддерживает полиморфизм с помощью функции, называемой виртуальными функциями. Виртуальная функция — это функция-член, объявленная виртуальной в базовом классе и может быть переопределена в производных классах. Когда виртуальная функция вызывается через указатель или ссылку базового класса, программа во время выполнения определит, какую версию функции вызывать, основываясь на фактическом типе объекта, на который указывается или на который ссылается.

33
Q

Что такое абстракция?

A

Абстракция — это процесс сокрытия деталей реализации класса или объекта и отображения только необходимой информации для пользователей. Это метод отображения только существенных особенностей объекта и сокрытия второстепенных деталей, что помогает снизить сложность и повысить эффективность.

34
Q

Сколько памяти занимает класс?

A

Объем памяти, занимаемый классом в C++, зависит от размера его членов данных и любого базового класса, от которого он наследуется.

Размер класса — это сумма размеров всех его членов данных. Например, класс с членом данных int и членом данных double займет 8 байт в системе с 4-байтовыми int и 8-байтовыми double.

35
Q

Всегда ли необходимо создавать объекты из класса?

A

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

36
Q

Что такое конструктор?

A

Конструктор — это специальная функция-член класса, которая автоматически вызывается при создании объекта. Она используется для инициализации состояния объекта и выделения ему необходимых ресурсов. Конструкторы имеют то же имя, что и класс, и не имеют возвращаемого типа.

37
Q

Каковы различные типы конструкторов в C++?

A

В C++ существует несколько типов конструкторов, включая конструктор по умолчанию, параметризованный конструктор, конструктор копирования и конструктор перемещения.

38
Q

Что такое конструктор копирования?

A

Конструктор копирования — это специальный конструктор, который используется для создания нового объекта как копии существующего объекта. Он принимает ссылку на объект того же класса в качестве аргумента и создает новый объект с тем же состоянием, что и исходный объект.

39
Q

Что такое деструктор?

A

Деструктор — это специальная функция-член класса, которая автоматически вызывается, когда объект класса выходит из области видимости или удаляется. Он используется для освобождения любых ресурсов, которые удерживал объект, и выполнения любой другой необходимой очистки. Деструкторы имеют то же имя, что и класс, с префиксом тильды (~) и не имеют никакого возвращаемого типа.

40
Q

Каковы различные типы наследования?

A

В C++ существует несколько типов наследования, включая одиночное, множественное, многоуровневое, иерархическое и гибридное наследование.

41
Q

Что такое подкласс?

A

Подкласс — это класс, полученный из другого, называемого суперклассом. Подкласс наследует свойства и методы суперкласса, а также может иметь его свойства и методы.

42
Q

Дайте определение суперклассу?

A

Суперкласс — это класс, используемый в качестве базового класса для одного или нескольких производных классов. Суперкласс определяет свойства и методы, общие для всех его производных классов.

43
Q

Что такое интерфейс?

A

Интерфейс — это набор чисто виртуальных функций, которые определяют контракт для реализации класса. Это способ достижения абстракции в C++.

44
Q

Что подразумевается под статическим полиморфизмом?

A

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

45
Q

Что подразумевается под динамическим полиморфизмом?

A

Динамический полиморфизм, также известный как полиморфизм времени выполнения, — это форма полиморфизма, при которой тип объекта определяется во время выполнения. Это достигается посредством переопределения функций.

46
Q

Что такое абстрактный класс?

A

Абстрактный класс — это класс, экземпляр которого не может быть создан, и он обычно используется как базовый класс для других классов. Абстрактный класс содержит по крайней мере одну чисто виртуальную функцию.

47
Q

Чем абстрактный класс отличается от интерфейса?

A

Абстрактный класс может содержать конкретные и чисто виртуальные функции, тогда как интерфейс может содержать только чисто виртуальные части.

48
Q

Что такое спецификаторы доступа и каково их значение?

A

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

Значение спецификаторов доступа заключается в управлении видимостью и доступностью членов класса, предотвращении непреднамеренной модификации и содействии инкапсуляции.

49
Q

Что такое исключение?

A

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

50
Q

Что подразумевается под обработкой исключений?

A

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

51
Q

Что подразумевается под сборкой мусора в мире ООП?

A

Сборка мусора — это функция объектно-ориентированных языков программирования, которая автоматически освобождает память программы, которая больше не используется.

52
Q

Можно ли запустить Java-приложение без реализации концепции ООП?

A

Нет, Java — это объектно-ориентированный язык программирования, и основные концепции ООП, такие как классы, объекты и наследование, являются основополагающими для этого языка.