Showing posts with label Java Interview Questions. Show all posts
Showing posts with label Java Interview Questions. Show all posts

Tuesday, April 10, 2018

Java Programming Interview Questions Series 03 - OOP Concepts


1. What are the main reasons to use Java Packages?
          Packages are used in Java, to evade name conflictions, to control access to class, interface, enumeration etc, to make it easier to locate the related classes and to provide a good structure for the projects with a huge amount of classes. 

2. What are the types of Packages?
          There are two types of Packages.
               1. Built-in Package:  Predefined Java Packages (java.lang, java.util)
               2. User-defined Package: Java Package that is created by the programmer to group his project's classes and interfaces.

3. What are the things to follow when using Java Packages?
          1. The Package statement should be at the first line in every class that belongs to the same Package.
          2. A Package is always defined as a separate folder containing the same name of the Package name.
          3. All the classes should be in the same Package folder.
          4. All classes of the Package must be compiled before execution.

4. What is an Abstract Class?
          To provide abstraction, use Abstract classes. It may have both abstract methods and concrete methods. Therefore it does not provide 100% abstraction. An abstract class is never initiated.

5. When to use Abstract class? 
          Abstract classes are used to define generic types of behaviours at the top of an OOP class hierarchy, and use its subclasses to provide implementation details of the abstract class.

6. When to use Abstract methods?
          Abstract methods are declared where two or more subclasses are going to do a similar case in many ways. To do that subclasses extend the same Abstract class and apply unique implementations for the abstract methods.

7. What is the difference between an Abstract class and an Interface?
     
8. What are the Nested Classes and what are the types of Nested Classes?
          A class is defined within another class is called as Nested Class. Which means the scope of the inner class is covered by the scope of its outer class.

There are 2 types of Nested Classes.
1.     Non-static Nested
2.     Static Nested

9. What are advantages of using Nested Classes?
          1. It increases encapsulation.
          2. It is a way of logically grouping classes that are only used in one place.
          3. It can lead to more readable and maintainable.

10. What is an Immutable object?
          An object that cannot be altered once it created is called immutable object. String, Integer, Float, Double, Byte are examples for the Immutable objects.

11. What is StringBuffer Class?
          The StringBuffer class is used to represent characters that can be modified. This is used when there are lots of modifications to the particular string. And this is thread safe.

12. What is StringBuilder Class?

          StringBuilder is unique to StringBuffer except one thing. That is it is not synchronized, means it is not thread safe. Therefore StringBuilder operates faster than the StringBuffer. 


13. What is meant by Exception Handling?
          To prevent abrupt termination of a program, we use Exception Handling. It is a mechanism to handle runtime malfunctions. There are many things such as programmer error, hardware error, files cannot be found that can be lead to an exception.

14. What are the categories in Exceptions?
          1. Checked Exception: That can be predicted by the programmer at the compile time.
          2. Unchecked Exception: These are the class which extends RuntimeExcpetion. This kind of exceptions are ignored at the compile time.
          3. Error: These are normally ignored in the code because you can rarely do anything about an error.

15. What are Uncaught Exceptions?

          When we do not handle exceptions, they lead to unexpected program termination. Therefore this will lead to an exception at runtime. These are called Uncaught Exceptions.    









Wednesday, August 23, 2017

Java Programming Interview Questions Series 02 - OOP Concepts





1.      What are the relationships in OOP?                     
                   There two types of relationships in Java.
·  IS-A relationship - Inheritance is an example of IS-A relationship.
·  HAS-A relationship - Aggregation is an example of HAS-A relationship.

2.     What is the difference between StringBuffer and String?
The String is an immutable class. You cannot modify its content once created. If we change the content of the String object, it creates a new string and refers to that new String. But StringBuffer is a mutable class. That means you can change/replace the content later.

3.     Can we use multiple inheritances in Java?
There are 4 types of inheritances that we can find in Java.
1.     Single Inheritance
2.     Multilevel Inheritance
3.     Hierarchical Inheritance
4.     Multiple Inheritance

But Multiple Inheritance is not supported in Java. Because,
·        To remove ambiguity.

·        To provide more maintainable and clear design.

4.     What is the difference between super() and this()?
Basically super() keyword comes from Inheritance. It is used to refer,
·        Immediate parent class constructor,
·        Immediate parent class variable,
·        Immediate parent class method.
   This() keyword is usually used to refer the current object whose method is being invoked. From this() keyword, we can refer any member in the current object.

5.     Can we use both super() and this() in a constructor?
           We can't use. Because both super() and this() must be the first statement inside a constructor. Once we call super() or this() constructor, it doesn’t work as method calling. It just map the super() or this() objects. Therefore we can’t use it.

6.     What is aggregation in java and why we need this?
Aggregation is a special form of association (HAS-A relationship). But it is not the main feature in Java. It has a one-way association. For an example, consider two classes called Student class and Address class, each student must have an address but each address may not have a student and it doesn’t make any sense. That is why it has a one-way association. Below example shows the how aggregation can be used.

  


You can see that in Student class, Address class is used. From that way, we obtain student address. This relationship is called Aggregation.
To maintain code reusability we need Aggregation. Let’s think that we have two another class of School and staff. In order to maintain all the classes’ addresses, we don’t just have to use the reference of Address class by defining inside each class.

7.     When to use Inheritance and Aggregation?
Using the Aggregation is the better option when you need to use property and behaviour of a class without modifying it inside your class. On the other hand, Inheritance is better to use when you need to use and modify property and behaviour of a class inside your class.

8.     What is Overriding?
Overriding occurs when we use Inheritance. In this feature, that allows the sub class to give a particular implementation of a method. But that method is already provided by one of its super class. If that method in the sub class has the same name, same return type, same signature and same parameters as a method in its super class, at that point the method in the sub class is said to override the method in the super class.

9.     Why Overriding phenomena happen?
If we use a sub class object using sub class reference and invoke a method, the compiler will check the sub class first and if it cannot find such method then it will check the super class.
If we use a sub class object using super class reference and invoke a method, the compiler will check the super class. But if it cannot find such method it will not check in sub class. Because the super class is not extended the sub class. Therefore it will create a compilation error.

10. What is the difference between Overloading and Overriding?

Method Overloading
Method Overriding
1.     The name must be same but parameter must be different.
2.     Increase readability of the code.
3.     Compile time polymorphism.
4.     Access specifier can be changed.
1.     Both name and parameter must be same.
2.     Increase reusability of the code.
3.     Runtime polymorphism.
4.     Access specifier cannot be more restrictive than the original method.


11. Can we override static method?
No, we cannot override static methods. Because static methods exist in the place called Class area.  On the other hand method overriding is associated with the object at runtime and they exist in the place called Heap.

12. What are Upcasting and Downcasting?
When a child class object is referenced by parent class reference variable is called Upcasting.
When a parent class object is referenced by child class reference variable is called Downcasting.

 
Parent p = new Parent();         
Child c = new Child();


Parent p = new Child();  //This is Upcasting.
          Child c = new Parent(); //This is Downcasting. 




But in Downcasting it gives a compilation error saying ‘incompatible type’. Therefore we can cast the Parent object to Student object.
                   Child c = (Child) new Parent();
This will be compiled successfully but throws ‘ClassCastException’ at runtime.

13. Can we override static methods exist in the Super class?
No. We cannot override static methods. Because overriding happens only for the instances that are created temporally when they are invoked. But once we static a method it exists in the Class area and we can directly access it at any time without any object.

14. Why static methods do not need (but can access) any object of a class?
Because all the static variables and static methods exist in the place ‘Class Area’. Therefore without any instance of a class, we can access any method or variable which are static.

15. Why a final class cannot be inherited but a final method can be inherited?
‘Final’ keyword has a different meaning when it uses for classes, methods and variables.
     a.  A final class cannot be extended.
     b. A final method cannot be overridden.
     c.  A final variable cannot be assigned after it has been initialized.   

That is because the language designers chose to design the language in that way.









Monday, August 21, 2017

Java Programming Interview Questions Series 01 - OOP Concepts



1. What are the main features in OOP?
               There are four main features in OOP. 
                            1. Inheritance
                            2. Polymorphism
                            3. Encapsulation
                            4. Abstraction
                As an Object-Oriented language, Java supports all the above features. 

2. What is the difference between parameter and argument?
               A Parameter is a variable which is defined by a method. It has no value in it but it will receive a value when the method is called.
                  An Argument is a value that is passed to the method when it is called.

        

3. What are the two methods to pass an argument to a method?
                1. Call-by-value: A copy of an argument value is passed to the method. Therefore modification of that argument value will not affect the original argument value.
                2. Call-by-reference: Reference to the argument is passed to the method. Therefore modification will affect the argument value.

4. What is method overloading?
                If two or more methods in a class having the same name but different parameters, it is called as method overloading. There are two types of overloading.
                              1. Method overloading by changing the data type of the argument
                              2. Method overloading by changing number of argument.

5. What is meant by default constructor?
               A constructor is a special method in a class that is used to initialize an object. Every class has a constructor. If we don't declare a constructor for a class, the compiler will create a default constructor for that class but it has no arguments. The default constructor has no meaningful implementation in it. 

6. Can we overload constructors?
             Yes. Constructors are also working as a normal method. To construct objects in different ways, we can overload constructors. 

7. What is the difference between constructor and a normal method?
               Constructors have special attributes rather than normal method. 
                              - Constructors must have the same name as the class.
                              - Constructors return the current state of a class. But constructor signature does not have any return type. 
                              - Constructors in java cannot be abstract, synchronized or static.
                              - They are only called once for an object.
               A normal method can be called many times and can be static, final, abstract. And it can return a value or can be void. 

8. What is meant by garbage collection?
               Normally the object will be destroyed automatically from the memory by the JVM. If there is no reference to an object, then it is assumed that the particular object is no longer needed and the memory will release the occupied memory. That technique is called Garbage Collection.

9. What are the advantages of Garbage collection?
           The programmer does not need to dereferencing an object. Because JVM does it automatically. Therefore memory efficiency will increase and decrease the chance to a memory leak.

10. What are Access Control Modifiers and Non-Access Modifiers?
             Basically, modifiers are keywords, that are used to change the meaning of a definition.
                              1. Access Control Modifiers
                                   Private    : Visible to the class only.
                                   Protected : Visible to the package and all subclasses.
                                   Default    : Visible to the package only.
                                   Public      : Visible to the world.
                          2. Non-Access Modifiers
                                   Static Used in classes and methods which can be accessed without an instance of a class.
                                   Final : Act as constant. Then, class, method or variable cannot be changed.
                                   Synchronized : Used in Threads. Then only one thread can be accessed to that method at a given point in time.
                                   Volatile : Used in Threads. It tells the compiler that the particular volatile variable can be changed unexpectedly in other segments of the program.
                                   Transient : Used in instance variables. Then it's value doesn't persist when an object is serialized.
                                   Abstract : Used to create abstract classes and methods.

11. Why constructors cannot be static?
               The need of a constructor is to initialize the contents of an instance of the class. But static methods do not have an instance. They stay in the place called class area. Therefore they can be executed without an instance. Therefore static constructor does not make any sense.

12. Why the Main method is static?
               Static classes and methods can be accessed without an instance of a class. The entry point of any Java program is the Main method. Therefore it is declared as static because it is called before any object of the class is created.

13. What is static initialization block?
              This is used to initialize static data member. Static block executes before the Main method. Static initialization block can be viewed as 'static constructor.'

14. What is static variable and instance variable?
              Static variables are defined as a class member and they can be accessed without any object of that class (Like static methods) and they can be accessed using its class name. They have only one single storage.
             Instance variables are initialized when an object of the class is initialized. And they can be accessed using the name of the object. Instance variables get new memory each time a new object is created. 

15. Why a non-static variable cannot be referenced from a static context?
              Non-static variables are created when an instance of the particular class is created. It has no particular storage in memory like static variables. Therefore if you try to access a non-static variable without any instance, the compiler will complain because the particular variable is not created yet.











Copyright © iTecTricks | Powered By Blogger

Design by Shehan Vanderputt