OOPs Interview Questions by InterviewBit Flashcards

1
Q

Что такое OOP?

A

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

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

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

A

Класс — это шаблон или чертёж для создания объектов. Он описывает, какие данные и поведение будут у объектов этого типа.

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

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

A

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

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

Чем OOP помогает при программировании?

A

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

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

Какие языки поддерживают OOP?

A

Языки, поддерживающие OOP, включают C#, Java, Python, C++, JavaScript и многие другие, которые позволяют создавать программы на основе объектов.

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

Что такое декларативное программирование?

A

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

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

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

A

Структурное программирование включает чёткую организацию кода с использованием блоков (например, if/else, циклы) и подпрограмм (функций), что делает программу логичной и управляемой.

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

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

A

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

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

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

A

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

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

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

A

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

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

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

A

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

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

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

A

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

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

Что такое метод в OOP?

A

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

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

Какие основные принципы OOP?

A

Основные принципы OOP: наследование, инкапсуляция, полиморфизм и абстракция, которые позволяют организовывать код более эффективно и удобно.

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

Что делает OOP при написании сложных программ?

A

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

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

Что такое повторное использование кода в OOP?

A

Повторное использование кода в OOP позволяет использовать общие части программы (методы и классы) в разных местах, что уменьшает дублирование и ускоряет разработку.

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

Как OOP помогает при изменении кода?

A

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

23
Q

Что такое спецификаторы доступа и какова их роль?

A

Спецификаторы доступа — это ключевые слова, которые определяют доступность классов, методов и других сущностей. Они включают private, public, protected и другие. Они помогают контролировать доступ к данным и методам, обеспечивая инкапсуляцию, что является важной частью OOP.

24
Q

Есть ли ограничения у наследования?

A

Да, наследование может быть сложным в реализации и может потребовать времени для обработки, так как нужно учитывать несколько классов. Также классы, участвующие в наследовании, сильно связаны между собой, что может привести к ошибкам при изменении.

25
Какие типы наследования существуют?
Основные типы наследования: 1) Одноуровневое (Single), 2) Множественное (Multiple), 3) Многоуровневое (Multi-level), 4) Иерархическое (Hierarchical), 5) Гибридное (Hybrid).
26
Что такое подкласс?
Подкласс — это класс, который наследует характеристики и поведение от другого класса (суперкласса). Он также называется дочерним классом.
27
Что такое суперкласс?
Суперкласс — это класс, от которого наследуют другие классы. Он предоставляет общие характеристики и поведение для своих подклассов.
28
Что такое интерфейс?
Интерфейс — это тип класса, который содержит только объявления методов без их реализации. Интерфейс нельзя использовать для создания объектов, но его можно реализовать в других классах, предоставив реализацию методов.
29
Что такое статический полиморфизм?
Статический полиморфизм (или полиморфизм времени компиляции) — это когда выбор функции или оператора происходит на этапе компиляции, а не во время выполнения программы. Это достигается с помощью перегрузки методов и операторов.
30
Что такое динамический полиморфизм?
Динамический полиморфизм (или полиморфизм времени выполнения) — это когда конкретная реализация функции или метода выбирается во время выполнения программы, обычно с помощью переопределения методов (method overriding).
31
В чём отличие перегрузки и переопределения?
Перегрузка — это создание нескольких методов с одинаковым именем, но с разными параметрами, что происходит во время компиляции (статический полиморфизм). Переопределение — это изменение реализации метода в подклассе, что происходит во время выполнения (динамический полиморфизм).
32
Как достигается абстракция данных?
Абстракция данных достигается с помощью абстрактных методов или классов, которые скрывают детали реализации и предоставляют только необходимую информацию.
33
Что такое абстрактный класс?
Абстрактный класс — это класс, который может содержать абстрактные методы (без реализации). Подклассы, наследующие абстрактный класс, обязаны реализовать эти абстрактные методы, если сам класс не является абстрактным.
34
Чем абстрактный класс отличается от интерфейса?
Основное отличие в том, что интерфейс требует обязательной реализации всех своих методов в подклассах, тогда как абстрактный класс может содержать как абстрактные, так и обычные методы. Интерфейсы не могут содержать полей, в отличие от абстрактных классов.
35
Объясните наследование на примере?
Например, у нас есть несколько видов транспортных средств — автомобиль, автобус и грузовик. Все они могут наследовать общие свойства (например, руль, тормоза) от абстрактного класса "Транспортное средство", а затем добавлять свои уникальные особенности.
36
Что такое исключение?
Исключение — это событие во время выполнения программы, которое прерывает нормальный процесс выполнения. Это может происходить из-за неправильных данных или ошибок в программе.
37
Что такое обработка исключений?
Обработка исключений позволяет предотвратить аварийное завершение программы, перехватывая исключения и обеспечивая выполнение альтернативных действий. Обычно для этого используют блоки try-catch.
38
Что такое сборка мусора в OOP?
Сборка мусора — это процесс управления памятью в OOP, при котором автоматически удаляются объекты, которые больше не используются, освобождая память для новых объектов.
39
Можно ли запустить Java-программу без использования OOP?
Нет, Java — это объектно-ориентированный язык программирования, и все программы в нем основаны на OOP. В отличие от этого, C++ позволяет работать и в процедурном стиле, не используя OOP.
40
Что такое полиморфизм времени компиляции и чем он отличается от полиморфизма времени выполнения?
Полиморфизм времени компиляции (или статический полиморфизм) связан с перегрузкой методов, когда компилятор выбирает, какой метод вызвать. Полиморфизм времени выполнения (динамический полиморфизм) зависит от типа объекта, который используется во время выполнения программы.
41
Что такое класс?
Класс — это шаблон или чертеж для создания объектов, который описывает их характеристики (данные) и поведение (методы). Класс сам по себе не занимает памяти, но объекты, созданные на его основе, занимают память.
42
Что такое объект?
Объект — это экземпляр класса, который имеет свои конкретные значения данных и может выполнять методы, описанные в классе. Он представляет собой конкретную сущность программы.
43
Что такое инкапсуляция?
Инкапсуляция — это процесс скрытия деталей реализации объекта и предоставления доступа только к необходимым данным и методам. Это достигается с помощью использования спецификаторов доступа, таких как private и public.
44
Что такое полиморфизм?
Полиморфизм — это способность объектов разных типов отвечать на одинаковые запросы, при этом результат выполнения может отличаться в зависимости от типа объекта. Он делится на полиморфизм времени компиляции и времени выполнения.
45
Как C++ поддерживает полиморфизм?
C++ поддерживает полиморфизм с помощью перегрузки функций и виртуальных функций. Виртуальные функции позволяют объектам разных типов использовать одинаковые методы, при этом решая, какую версию метода вызвать, на основе типа объекта во время выполнения программы.
46
Что такое наследование?
Наследование в OOP — это механизм, с помощью которого один класс может наследовать характеристики и поведение другого класса. Это позволяет использовать общие функции и данные, улучшая повторное использование кода.
47
Что такое абстракция?
Абстракция — это процесс скрытия ненужных деталей и предоставления пользователю только нужной информации. Например, для управления автомобилем достаточно знать, как им управлять, а не как устроены внутренние механизмы.
48
Сколько памяти занимает класс?
Классы сами по себе не занимают память, так как являются просто шаблонами. Память выделяется только для объектов, созданных на основе этого класса.
49
Всегда ли нужно создавать объекты для класса?
Нет, если класс содержит только статические методы, то для использования этих методов объект создавать не нужно. Методы можно вызывать напрямую через имя класса.
50
Что такое конструктор?
Конструктор — это специальный метод, который используется для инициализации объекта при его создании. Конструкторы имеют то же имя, что и класс, и обычно используются для назначения начальных значений переменным объекта.
51
Какие типы конструкторов существуют в C++?
В C++ существуют следующие типы конструкторов: 1) Конструктор по умолчанию (без параметров), 2) Параметризированный конструктор (с параметрами), 3) Конструктор копирования (инициализация объекта через другой объект того же класса).
52
Что такое конструктор копирования?
Конструктор копирования — это специальный конструктор, который создаёт новый объект, копируя данные из существующего объекта того же класса.
53
Что такое деструктор?
Деструктор — это метод, который автоматически вызывается при уничтожении объекта. Он освобождает ресурсы, которые были использованы объектом, например, память или открытые файлы.
54
Являются ли класс и структура одинаковыми? В чем их отличие?
Классы и структуры в C++ похожи, но есть отличие в их доступности по умолчанию. В структуре члены по умолчанию имеют публичный доступ, а в классе — приватный.