OOPs Interview Questions
1. What is the difference between OOP and SOP?
Object-Oriented Programming | Structural Programming |
Object-Oriented Programming is a type of programming which is based on objects rather than just functions and procedures | Provides logical structure to a program where programs are divided functions |
Bottom-up approach | Top-down approach |
Provides data hiding | Does not provide data hiding |
Can solve problems of any complexity | Can solve moderate problems |
Code can be reused thereby reducing redundancy | Does not support code reusability |
2. What is Object Oriented Programming?
Object-oriented programming (OOP) is a programming paradigm that is based on the concept of “objects,” which are self-contained units that contain both data and behavior. In OOP, objects interact with each other through methods, which are functions that are associated with a particular object.
OOP languages are designed to allow developers to create complex and modular programs by encapsulating related data and behavior into objects. These languages often include features such as inheritance, polymorphism, and encapsulation, which allow objects to be created, extended, and modified in a structured and organized way.
Some examples of OOP languages include Java, C++, and Python. These languages are used to build a wide variety of software applications, including web applications, mobile apps, and desktop software.
OOP is a popular programming paradigm because it allows developers to create reusable code, manage complexity, and reduce the likelihood of errors in their programs.Regenerate response
3. Why use OOPs?
- OOPs allows clarity in programming thereby allowing simplicity in solving complex problems
- Code can be reused through inheritance thereby reducing redundancy
- Data and code are bound together by encapsulation
- OOPs allows data hiding, therefore, private data is kept confidential
- Problems can be divided into different parts making it simple to solve
- The concept of polymorphism gives flexibility to the program by allowing the entities to have multiple forms
4. What are the main features of OOPs?
There are four main features of object-oriented programming (OOP):
- Encapsulation: Encapsulation is the process of bundling data and behavior (methods) together into a single unit (an object). This allows developers to create self-contained and modular units of code that can be easily reused and maintained.
- Inheritance: Inheritance is the ability of an object to inherit characteristics and behavior from a parent object. This allows developers to create a hierarchy of objects, with child objects inheriting properties and methods from their parent objects. This allows for code reuse and helps to reduce redundancy in the codebase.
- Polymorphism: Polymorphism is the ability of an object to take on multiple forms. This can be achieved through inheritance, where a child object can override or extend the behavior of a parent object. Polymorphism allows developers to write code that is more flexible and easier to maintain.
- Abstraction: Abstraction is the process of hiding the implementation details of an object and exposing only the essential characteristics and behavior of the object to the outside world. This allows developers to create code that is more modular and easier to understand.
These four features are central to the object-oriented programming paradigm and are implemented in different ways in different OOP languages. They allow developers to create complex and modular programs that are easier to understand, maintain, and modify.
5. What is an object?
In object-oriented programming (OOP), an object is a self-contained unit that contains both data and behavior. An object is a representation of a real-world entity or concept, and it is designed to model the characteristics and behavior of that entity or concept in a program.
An object is made up of two main components:
- Data: An object stores data in the form of attributes, which represent the characteristics or properties of the object. For example, in a program that models a car, the data for a car object might include its make, model, and color.
- Behavior: An object also has behavior, which is implemented as methods. Methods are functions that are associated with a particular object and that operate on the object’s data. For example, a car object might have methods for starting the engine, accelerating, and braking.
In OOP, objects interact with each other through methods. For example, a car object might send a message to a driver object, asking the driver to start the engine. The driver object would then invoke the appropriate method on the car object to start the engine.
Objects are a key concept in OOP languages and are used to design and implement software programs. They allow developers to create modular, reusable code and to model real-world entities and concepts in a program.
6. What is a class?
A class is a prototype that consists of objects in different states and with different behaviors. It has a number of methods that are common the objects present within that class.
7. What is the difference between a class and a structure?
There are some key differences between classes and structures:
- Inheritance: Classes can support inheritance, which means that a class can inherit the attributes and behaviors of another class. Structures, on the other hand, do not support inheritance.
- Polymorphism: Classes can support polymorphism, which means that a class can have multiple forms or implementations. Structures do not support polymorphism.
- Memory layout: The memory layout of a class object is usually more complex than that of a structure, as a class object may contain references to other objects in addition to its own data fields. Structures, on the other hand, typically contain only their own data fields and do not contain references to other objects.
In general, classes are a more powerful and flexible way to define objects in a program, while structures are a simpler way to group together related data. The choice between using a class or a structure will depend on the specific needs of the program and the trade-offs between complexity and flexibility.
8. Can you call the base class method without creating an instance?
Yes, you can call the base class without instantiating it if:
- It is a static method
- The base class is inherited by some other subclass
9. What is the difference between a class and an object?
Object | Class |
A real-world entity which is an instance of a class | A class is basically a template or a blueprint within which objects can be created |
An object acts like a variable of the class | Binds methods and data together into a single unit |
An object is a physical entity | A class is a logical entity |
Objects take memory space when they are created | A class does not take memory space when created |
Objects can be declared as and when required | Classes are declared just once |
OOPs Interview Questions-Inheritance
10. What is inheritance?
Inheritance is a mechanism in object-oriented programming that allows one class (called the subclass or derived class) to inherit the attributes and behaviors of another class (called the superclasshttps://datavalley.ai/interview-questions-on-amazon-aurora/ or base class). Inheritance is used to create a hierarchy of classes, where a subclass can inherit the characteristics of its superclass and add additional unique features of its own.
For example, consider a class called Animal
that represents animals in general. This class might define attributes such as name
and species
, as well as methods such as make_sound()
and eat()
. Now, suppose we want to create a class called Dog
that represents dogs specifically. We can use inheritance to create the Dog
class by deriving it from the Animal
class. The Dog
class will automatically inherit the attributes and behaviors of the Animal
class, and we can add additional attributes and behaviors specific to dogs.
Inheritance is useful because it allows us to create a class hierarchy that reflects the relationships between different types of objects. It also allows us to reuse code by defining common behavior in a superclass and then inheriting that behavior in multiple subclasses.
In many programming languages, inheritance is implemented using the extends
keyword. For example, in Java, we might define the Animal
class as follows:
Copy codepublic class Animal {
String name;
String species;
public void makeSound() {
// code to make a sound
}
public void eat() {
// code to eat
}
}
And then define the Dog
class as a subclass of Animal
like this:
Copy codepublic class Dog extends Animal {
// additional attributes and behaviors specific to dogs
}
11. What are the different types of inheritance?
In object-oriented programming, there are several types of inheritance that can be used to define the relationships between classes. Here are the most common types:
- Single inheritance: Single inheritance is a type of inheritance in which a subclass inherits from a single superclass. This is the most basic form of inheritance and is often used to create a simple class hierarchy.
- Multiple inheritance: Multiple inheritance is a type of inheritance in which a subclass can inherit from multiple superclasses. This allows a subclass to inherit the attributes and behaviors of multiple classes, which can be useful in certain situations. However, multiple inheritance can also lead to complexity and ambiguity, as it is possible for a subclass to inherit conflicting attributes or behaviors from its multiple superclasses.
- Multi-level inheritance: Multi-level inheritance is a type of inheritance in which a subclass inherits from a superclass, which in turn inherits from another superclass, and so on. This creates a chain of inheritance in which a subclass can inherit attributes and behaviors from multiple levels of the class hierarchy.
- Hierarchical inheritance: Hierarchical inheritance is a type of inheritance in which a single superclass is inherited by multiple subclasses. This creates a tree-like structure in which the superclass is at the root and the subclasses are branches.
- Hybrid inheritance: Hybrid inheritance is a type of inheritance that combines two or more of the above types of inheritance. This can be useful in certain situations, but can also lead to complexity and ambiguity.
In general, the choice of which type of inheritance to use will depend on the specific needs of the program and the relationships between the classes being defined.
12. What is the difference between multiple and multilevel inheritance?
Multiple Inheritance | Multilevel Inheritance |
Multiple inheritance comes into picture when a class inherits more than one base class | Multilevel inheritance means a class inherits from another class which itself is a subclass of some other base class |
Example: A class defining a child inherits from two base classes Mother and Father | Example: A class describing a sports car will inherit from a base class Car which inturn inherits another class Vehicle |
13. What is hybrid inheritance?
Hybrid inheritance is a combination of multiple and multi-level inheritance.
14. What is hierarchical inheritance?
Hierarchical inheritance refers to inheritance where one base class hhttps://datavalley.ai/data-transformation-using-aws-services-amazon/as more than one subclasses. For example, the vehicle class can have ‘car’, ‘bike’, etc as its subclasses.
15. What are the limitations of inheritance?
- Increases the time and effort required to execute a program as it requires jumping back and forth between different classes
- The parent class and the child class get tightly coupled
- Any modifications to the program would require changes both in the parent as well as the child class
- Needs careful implementation else would lead to incorrect results
16. What is a superclass?
A superclass or base class is a class that acts as a parent to some other class or classes. For example, the Vehicle class is a superclass of class Car.
17. What is a subclass?
A class that inherits from another class is called the subclass. For example, the class Car is a subclass or a derived of Vehicle class.
Want to upskill yourself to get ahead in your Career? Check out this video
Polymorphism
18. What is polymorphism?
Polymorphism refers to the ability to exist in multiple forms. Multiple definitions can be given to a single interface. For example, if you have a class named Vehicle, it can have a method named speed but you cannot define it because different vehicles have different speed. This method will be defined in the subclasses with different definitions for different vehicles.
19. What is static polymorphism?
Static polymorphism (static binding) is a kind of polymorphism that occurs at compile time. An example of compile-time polymorphism is method overloading.
20. What is dynamic polymorphism?
Runtime polymorphism or dynamic polymorphism (dynamic binding) is a type of polymorphism which is resolved during runtime. An example of runtime polymorphism is method overriding.
21. What is method overloading?
Method overloading is a feature of OOPs which makes it possible to give the same name to more than one methods within a class if the arguments passed differ.
22. What is method overriding?
Method overriding is a feature of OOPs by which the child class or the subclass can redefine methods present in the base class or parent class. Here, the method that is overridden has the same name as well as the signature meaning the arguments passed and the return type.
23. What is operator overloading?
Operator overloading refers to implementing operators using user-defined types based on the arguments passed along with it.
24. Differentiate between overloading and overriding.
Overloading | Overriding |
Two or more methods having the same name but different parameters or signature | Child class redefining methods present in the base class with the same parameters/ signature |
Resolved during compile-time | Resolved during runtime |
Encapsulation
25. What is encapsulation?
Encapsulation refers to binding the data and the code that works on that together in a single unit. For example, a class. Encapsulation also allows data-hiding as the data specified in one class is hidden from other classes.
26. What are ‘access specifiers’?
Access specifiers or access modifiers are keywords that determine the accessibility of methods, classes, etc in OOPs. These access specifiers allow the implementation of encapsulation. The most common access specifiers are public, private and protected. However, there are a few more which are specific to the programming languages.
27. What is the difference between public, private and protected access modifiers?
Name | Accessibility from own class | Accessibility from derived class | Accessibility from world |
Public | Yes | Yes | Yes |
Private | Yes | No | No |
Protected | Yes | Yes | No |
Data abstraction
28. What is data abstraction?
Data abstraction is a very important feature of OOPs that allows displaying only the important information and hiding the implementation details. For example, while riding a bike, you know that if you raise the accelerator, the speed will increase, but you don’t know how it actually happens. This is data abstraction as the implementation details are hidden from the rider.
29. How to achieve data abstraction?
Data abstraction can be achieved through:
- Abstract class
- Abstract method
30. What is an abstract class?
An abstract class is a class that consists of abstract methods. These methods are basically declared but not defined. If these methods are to be used in some subclass, they need to be exclusively defined in the subclass.
31. Can you create an instance of an abstract class?
No. Instances of an abstract class cannot be created because it does not have a complete implementation. However, instances of subclass inheriting the abstract class can be created.
32. What is an interface?
It is a concept of OOPs that allows you to declare methods without defining them. Interfaces, unlike classes, are not blueprints because they do not contain detailed instructions or actions to be performed. Any class that implements an interface defines the methods of the interface.
33. Differentiate between data abstraction and encapsulation.
Data abstraction | Encapsulation |
Solves the problem at the design level | Solves the problem at the implementation level |
Allows showing important aspects while hiding implementation details | Binds code and data together into a single unit and hides it from the world |
34. What are virtual functions?
Virtual functions are functions that are present in the parent class and are overridden by the subclass. These functions are used to achieve runtime polymorphism.
35. What are pure virtual functions?
Pure virtual functions or abstract functions are functions that are only declared in the base class. This means that they do not contain any definition in the base class and need to be redefined in the subclass.
36. What is a constructor?
A constructor is a special type of method that has the same name as the class and is used to initialize objects of that class.
37. What is a destructor?
A destructor is a method that is automatically invoked when an object is destroyed. The destructor also recovers the heap space that was allocated to the destroyed object, closes the files and database connections of the object, etc.
38. Types of constructors
Types of constructors differ from language to language. However, all the possible constructors are:
- Default constructor
- Parameterized constructor
- Copy constructor
- Static constructor
- Private constructor
39. What is a copy constructor?
A copy constructor creates objects by copying variables from another object of the same class. The main aim of a copy constructor is to create a new object from an existing one.
40. What is the use of ‘finalize’?
Finalize as an object method used to free up unmanaged resources and cleanup before Garbage Collection(GC). It performs memory management tasks.
41. What is Garbage Collection(GC)?
GC is an implementation of automatic memory management. The Garbage collector frees up space occupied by objects that are no longer in existence.
42. Differentiate between a class and a method.
Class | Method |
A class is basically a template that binds the code and data together into a single unit. Classes consist of methods, variables, etc | Callable set of instructions also called a procedure or function that are to be performed on the given data |
43. Differentiate between an abstract class and an interface?
Basis for comparison | Abstract Class | Interface |
Methods | Can have abstract as well as other methods | Only abstract methods |
Final Variables | May contain final and non-final variables | Variables declared are final by default |
Accessibility of Data Members | Can be private, public, etc | Public by default |
Implementation | Can provide the implementation of an interface | Cannot provide the implementation of an abstract class |
44. What is a final variable?
A variable whose value does not change. It always refers to the same object by the property of non-transversity.
Exception Handling
45. What is an exception?
An exception is a kind of notification that interrupts the normal execution of a program. Exceptions provide a pattern to the error and transfer the error to the exception handler to resolve it. The state of the program is saved as soon as an exception is raised.
46. What is exception handling?
Exception handling in Object-Oriented Programming is a very important concept that is used to manage errors. An exception handler allows errors to be thrown and caught and implements a centralized mechanism to resolve them.
47. What is the difference between an error and an exception?
Error | Exception |
Errors are problems that should not be encountered by applications | Conditions that an application might try to catch |
48. What is a try/ catch block?
A try/ catch block is used to handle exceptions. The try block defines a set of statements that may lead to an error. The catch block basically catches the exception.
49. What is a finally block?
A finally block consists of code that is used to execute important code such as closing a connection, etc. This block executes when the try block exits. It also makes sure that finally block executes even in case some unexpected exception is encountered.
50. What are the limitations of OOPs?
- Usually not suitable for small problems
- Requires intensive testing
- Takes more time to solve the problem
- Requires proper planning
- The programmer should think of solving a problem in terms of objects