0% found this document useful (0 votes)
18 views117 pages

OOPS Concepts in Java Explained in Hinglish

Java questions premius

Uploaded by

ashutoshhhh2
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views117 pages

OOPS Concepts in Java Explained in Hinglish

Java questions premius

Uploaded by

ashutoshhhh2
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1.) explain Oops Concept in Java in Hinglish with code, Explain each and everything ?

Java mein OOPS (Object-Oriented Programming System) ek programming


approach hai jisse code ko logically structure kiya jaata hai, jisse ki code
manageable, reusable aur secure ban jaata hai. Isme kuch important concepts
hain: Class, Object, Encapsulation, Inheritance, Polymorphism, aur Abstraction.
OOPS Concepts Hinglish mein
1. Class aur Object
Class ek template hota hai jismein properties (variables) aur actions (methods)
de ne kiye jaate hain. Object class ka real-world implementation hai.

java
class Student {
int rollNo;
String name;

void display() {
[Link]("Roll No: " + rollNo + ", Name: " + name);
}
}

public class Test {


public static void main(String[] args) {
Student s1 = new Student();
[Link] = 101;
[Link] = "Amit";
[Link]();
}
}
Isme 'Student' ek class hai aur s1 ek object hai jismein properties set kar sakte
hain aur method call kar sakte hain.
2. Encapsulation
Encapsulation ka matlab hota hai apne data ko secure rakhna by wrapping
variables and methods within a class aur kisi external entity ko direct access nahi
dena, sirf methods ke through access milta hai.

java
class Account {
private int balance;

// Setter
public void setBalance(int amt) {
balance = amt;
}
// Getter
public int getBalance() {
return balance;
fi
}
}
Yahan balance variable private hai, toh direct access allowed nahi hai. Set aur get
methods ke through access hota hai.
3. Inheritance
Inheritance ki help se ek class doosri class ki properties aur methods inherit kar
sakti hai. Isse code reuse hota hai aur naye features add kiye ja sakte hain.

java
class Parent {
void display() {
[Link]("Parent class");
}
}
class Child extends Parent {
void show() {
[Link]("Child class");
}
}
Yahan 'Child' class ne 'Parent' ki functionality inherit ki hai.
4. Polymorphism
Polymorphism ka matlab ek hi action ko alag-alag tareeke se perform karna. Jaise
method overloading aur overriding.

java
class Animal {
void sound() {
[Link]("Animal sound");
}
}

class Dog extends Animal {


void sound() {
[Link]("Dog barks");
}
}
Yahan 'sound' method Parent (Animal) mein bhi hai, aur Child (Dog) mein bhi
override kiya gaya hai.
5. Abstraction
Abstraction ka matlab hai unnecessary details ko hide karna aur sirf necessary
information dikhana.

java
abstract class Shape {
abstract void draw();
}
class Circle extends Shape {
void draw() {
[Link]("Draw Circle");
}
}
'Shape' class abstract hai, jismein abstract method draw() hai, har child class apni
style se implement karegi.

Q2) what is difference between checked and unchecked Exception?

Checked Exception
Checked exceptions wo hote hain jo compile time par check kiye jaate hain. Java
compiler aapko force karta hai ki aap inko handle karo (try-catch ya throws) kyunki
yeh mostly external resources par depend karte hain jaise les, network, database,
etc.
Example:

java
import [Link].*;

public class CheckedDemo {


public static void main(String[] args) {
try {
FileReader fr = new FileReader(" [Link]"); // FileNotFoundException aa
sakta hai
} catch (FileNotFoundException e) {
[Link]("File nahi mili!");
}
}
}
Yahan FileNotFoundException ek checked exception hai, agar aap isko handle
nahi karte toh compile time par error milega.

Unchecked Exception
Unchecked exceptions runtime par aate hain, matlab inko compile time par check
nahi kiya jaata. Yeh zyada tar programming mistakes ki wajah se aate hain—for
example, divide by zero, array index galat, null object par method call, etc.
Example:

java
public class UncheckedDemo {
public static void main(String[] args) {
int a = 10;
fi
fi
int b = 0;
int c = a / b; // ArithmeticException runtime par throw hoga
[Link](c);
}
}
Yahan ArithmeticException ek unchecked exception hai, isko handle karna
zaroori nahi hai, compiler warning nahi dega, lekin program crash ho jayega agar
exception aaya.

Di erence Table
Feature Checked Unchecked
Exception Exception
Compile time Check karte Check nahi
par hain karte hain
Parent class [Link] [Link]
ption meException/
Error
Handle karna Zaroori hai (try- Optional (agar
catch/throws) chahe toh
handle karo)
Example FileNotFoundE NullPointerExc
xception, eption,
IOException ArithmeticExce
ption,
ArrayIndexOut
OfBoundsExce
ption

Q3) what is super class of all the classes in java and explain all the method of
object class ?

Java mein sabhi classes ka super class Object class hota hai. Matlab, jitni bhi
classes aap banaate ho (chahe user-de ned, chahe system-de ned), sab inherit
karte hain Object class ko directly ya indirectly. Isliye Object class ki properties
aur uske methods sab classes mein milte hain.
Object Class ke Important Methods aur Hinglish Explanation
1. toString()
Is method se object ki String representation milti hai. Agar override nahi kiya hai
toh class name + hex code return hota hai. Commonly debugging mein useful hai.

java
class Student {
public String toString() {
ff
fi
fi
return "Student Object";
}
}
public class Demo {
public static void main(String[] args) {
Student s = new Student();
[Link](s); // Output: Student Object
}
}
Jab [Link](object); karte ho toh internally toString() call hota hai.
2. equals(Object obj)
Yeh method do objects ko compare karta hai. Agar values same hain, toh true
return karega. Default behaviour sirf reference compare karta hai (matlab dono ek
hi memory address pe hain ya nahi).

java
Student s1 = new Student();
Student s2 = s1;
[Link]([Link](s2)); // true
Override karke values ko bhi compare kar sakte hain.
3. hashCode()
Object ka ek unique integer hash code generate karta hai, jo collections
(HashMap, HashSet) me zaruri hota hai.

java
class Student {}
public class Demo {
public static void main(String[] args) {
Student s = new Student();
[Link]([Link]());
}
}
Hash code collections ke performance ke liye important hai.
4. getClass()
Object ki actual runtime class return karta hai. Code ke meta information nikalne
mein use hota hai.

java
Student s = new Student();
[Link]([Link]()); // Output: class Student
Isse aap pata kar sakte hain object kis class ka hai.
5. clone()
Isse object ka copy (clone) bana sakte ho. Use karne ke liye Cloneable interface
implement karna zaruri hai.

java
class Student implements Cloneable {
int roll;
public Object clone() throws CloneNotSupportedException {
return [Link]();
}
}
Mostly advanced use cases mein hota hai.
6. nalize()
Jab object destroy hone wala hai (garbage collection hone par), tab yeh method
call hota hai. Resource cleanup mein help karta hai.

java
protected void nalize() {
[Link]("Object is destroyed");
}
Iska use ab kam hota hai; recommended nahi hai modern Java mein.
7. wait(), notify(), notifyAll()
Multithreading mein synchronization ke liye use hote hain. Thread ko wait karwana,
wake karna, ya sabko wake karna possible hai.

java
// Sample with synchronized block and wait/notify
synchronized(obj) {
[Link]();
}
Concurrency handle karne ke liye use hota hai.

Hinglish Summary Table


Method Purpose Use Example Notes
(code)
toString() Object ko [Link] Usually
String mein intln(obj); override karte
convert karta hain
hai
equals() Do object ko [Link](o Default
compare karta bj2); reference
hai compare hota
hai
hashCode() Unique integer [Link] Collections
deta hai (); mein use karte
objects ko hain
getClass() Object ka [Link](); Re ection
class nikalta mein use hota
hai hai
fi
fl
fi
clone() Object ki copy [Link](); Cloneable
banata hai implement
karna padta
hai
nalize() Destroy hone protected Deprecated in
pe resource void nalize() modern Java
cleanup karta {...}
hai
wait()/notify()/ Concurrency [Link](); Multithreading
notifyAll() manage karta [Link](); ka part hai
hai
Ye sabhi methods har class ko milte hain by default Java mein,
kyunki Object sabka parent hai. Is wajah se aap koi bhi object mein in methods ka
use kar sakte ho, chahe vo user-de ned ho ya system-de ned

Q4) what is di erence between throw and throws keyword in java ?

Java mein exception handling ke liye throw aur throws keywords use hote hain,
lekin dono ka role alag hota hai. Hinglish mein sab detail, di erentiation, aur code
ke saath samjha jaata hai.

throw Keyword
• Iska use manually exception ko throw karne ke liye hota hai (matlab khud
se exception uthana).
• Ye kisi bhi block ya method ke andar likha jaata hai.
• Syntax: throw new ExceptionType("message");
• Sirf ek hi exception ek baar throw kiya ja sakta hai.
Example Hinglish:

java
public class ThrowDemo {
public static void main(String[] args) {
int age = 15;
if(age < 18) {
throw new ArithmeticException("Access denied - Age kam hai");
}
[Link]("Access granted");
}
}
Yahan programmer khud se arithmetic exception throw kar raha hai jab age < 18
ho jaaye.

throws Keyword
fi
fi
ff
fi
fi
ff
• Iska use method signature mein hota hai, batane ke liye ki is method se
kaun-kaun si exception bahar ja sakti hai (pass ho sakti hai).
• Checked exceptions ke liye zaroori hai taki compiler ko pata ho ki calling
code ko handle karna padega.
• Syntax: returnType methodName() throws ExceptionType1,
ExceptionType2 { ... }
• Aap ek method ke signature mein multiple exception declare kar sakte
hain.
Example Hinglish:

java
import [Link].*;

public class ThrowsDemo {


public static void readFile() throws FileNotFoundException {
FileReader fr = new FileReader("[Link]");
}

public static void main(String[] args) {


try {
readFile();
}
catch(FileNotFoundException e) {
[Link]("File nahi mili!");
}
}
}
Yahan method readFile() batata hai ki wo FileNotFoundException throw kar sakta
hai, isliye handle karna padega.

Di erence Summary Table


Feature throw throws
Use location Method/block Method
ke andar signature mein
Purpose Exception ko Declare karna
manually throw ki method kya
karna throw karega
Syntax throw new void method()
ExceptionTyp throws
e() ExceptionTyp
e
Exceptions Ek hi Multiple
exception ek exceptions
baar throw declare ho
hogi sakti hain
ff
Checked? Mainly Checked &
unchecked unchecked,
exceptions mostly
checked
Handling Code mein try- Caller ko
catch ke andar handle karna
likhna padta hai
Hinglish Short Points
• throw matlab aap khud se exception bahar phek rahe ho (manually).
• throws matlab aap batate ho ki yeh method ke andar jab exception ho
sakti hai, toh caller ko handle karna padega.
• throw likhne ke baad exception object aata hai; throws likhne ke baad
exception class name aata hai.

Q5) why string is immutable in java ?

Java mein String immutable isliye hota hai kyunki ek baar String object ban gaya,
uski value kabhi change nahi ho sakti—agar modify karne ki koshish karte ho toh
actually ek naya object banta hai, old value same hi rehti hai.

Hinglish Explanation with Code


Kya hota hai Immutable?
• Immutable ka matlab hai: object ki value x hai, change nahi ho sakti.
• Agar aap String modify karte ho—concat, replace, etc.—JVM naya
String object create karti hai aur purana object waisa hi rehta hai.
Code Example:

java
public class StringTest {
public static void main(String[] args) {
String str = "Bihar";
[Link](" Engineer");
[Link](str); // Output: Bihar

str = [Link](" Engineer");


[Link](str); // Output: Bihar Engineer
}
}
Pehli baar concat karne par str ki value nahi badli, kyunki concat naya object
return karta hai. Dusri baar jab assignment bhi kiya, tab nayi value str mein set ho
gayi.
fi
Java mein String Immutable Kyun Hai? Reasons & Bene ts
0. String Pool: JVM string literals ko ek pool mein store karti hai. Agar String
mutable hota, toh ek reference change karne se pool ke saare references ki value
bhi change ho sakti thi, jo galat hota aur unpredictable bhi.
0. Security: String ka use passwords, le-paths, URLs, networking mein
hota hai. Agar String mutable hota toh kisi attacker ke liye value modify karna easy
ho jaata.
0. Thread Safety: Immutable hone ki wajah se multiple threads bina
synchronize kiye ek hi String object use kar sakte hai, koi race condition nahi
aayegi.
0. Hashcode Caching: Immutable hone ki wajah se String ka hashcode ek
hi baar calculate hota hai, aur cache kiya ja sakta hai. Collections mein fast
retrieval possible hai.
0. Class Loader: Java ka class loader String ka hi use karta hai, agar ye
mutable hota toh insecure class loading ho sakti thi.

Hinglish Summary Points


• Jab bhi String change karne ki koshish karte ho, JVM naya object bana
deti hai.
• Old value memory mein safe rehti hai; aapke naye reference mein
updated value milti hai.
• Immutability ki wajah se String security, multi-threading, e cient caching
aur reliable memory management mein help karta hai.
• Agar aapko String ko baar-baar modify karna hai, toh StringBuilder ya
StringBu er use karo, kyunki vo mutable hote hain.

Pool Mechanism Example:

java
String s1 = "Java";
String s2 = "Java";
[Link](s1 == s2); // Output: true (pool ka same object)
Dono s1, s2 pool ke ek hi object ko refer karte hain, agar s1 ki value change hoti
toh pool ke sare references bhi change ho jaate, jo allowed nahi hai.
Immutability ki wajah se String fast, reliable aur secure banta hai—and ye Java
language design ka ek important principle hai.

Q6) what is di erence between == operator and equals() method ?

Java mein == operator aur .equals() method dono comparison ke liye use hote
hain, lekin dono ka kaam bilkul alag hai. Hinglish mein isko detail, example aur
code ke saath explain kiya gaya hai.
ff
ff
fi
fi
ffi
1. == Operator
• == operator reference comparison karta hai—matlab do objects ka
memory address check karta hai, ki kya dono ek hi jagah ko point kar rahe hain.
• Primitive types (int, char, oat, etc.) ke liye == unki exact value compare
karta hai.
• Agar objects ka reference same hai (ek hi object), tab result true hoga,
warna false.
Example:

java
String s1 = "HELLO";
String s2 = "HELLO";
String s3 = new String("HELLO");

[Link](s1 == s2); // true (pool ka same memory address)


[Link](s1 == s3); // false (s3 new object, di erent memory address)
Yahan par s1 aur s2 pool ke same memory ko point karte hain, isliye true, lekin s3
naya object bana hai, alag address hai, toh false aata hai.

2. .equals() Method
• .equals() method value comparison karta hai—matlab do objects ki
actual content/value check karta hai, ki kya dono ka data same hai.
• By default (agar aap override nahi karte ho), Object class ki .equals() bhi
reference compare karti hai, lekin String class aur kuch dusri classes isko override
kar deti hain taaki actual value compare ho.
• Custom class mein generally aap override kar ke apni value compare kar
sakte hain.
Example:

java
String s1 = "HELLO";
String s2 = "HELLO";
String s3 = new String("HELLO");

[Link]([Link](s2)); // true (content same)


[Link]([Link](s3)); // true (content same, chahe reference alag ho)
Yahan par .equals() method actual value (HELLO) compare karta hai, chahe
references alag ho, output true hi aata hai.

Table Summary
Feature == Operator .equals() Meth
od
Comparison Reference Value/content
Type (memory (is data same?)
address)
fl
ff
Primitives Actual value Not applicable
(method nahi
hota)
Objects References Override karke
compare hota value/ elds
hai compare kar
sakte hain
Output s1 == s2 true/ [Link](s2) t
Example false rue/false
Override Nahin Haan, custom
Option logic add kar
sakte hain
Common Use Mostly Objects ka
primitives or actual data
string pool compare karna
Hinglish Key Points
• == operator sirf address check karta hai, value nahi. Java mein string
pool ki wajah se kabhi dono string ek hi address par bhi ho sakte hain, lekin mostly
nai object pe nahi hoga.
• .equals() method value/data compare karta hai, isliye kaa useful hai
object ki actual equality check karne ke liye.
• Agar aap apni custom class bana rahe ho, toh
generally .equals() override karna chahiye taki aap apni actual attribute compare
kar sako.
• Jab bhi string ya object ki actual value compare karni ho,
hamesha .equals() use karo, sirf reference compare karna ho toh == use karo.

Q7) what is di erence between jdk, jre and jvm ?

Java mein JDK, JRE aur JVM teen important components hain, jinhe samajhna
zaruri hai agar aap Java development ya execution mein kaam karte ho. Hinglish
mein yeh sab detail mein, short points aur examples ke saath bataya gaya hai.

JVM (Java Virtual Machine)


• JVM ek machine hai jo Java code (bytecode) ko execute karti hai, chahe
aapka system Windows ho, Linux ho ya Mac ho—JVM Java program ko har jagah
same tarah chalata hai.
• JVM, .class le (jo compiler se milti hai) ko uthata hai aur usko machine
code mein convert karta hai, taki OS usko samjh sake.
• JVM hi actual me Java ki "write once, run anywhere" power deta hai.
fi
ff
fi
fi
Short Example:
Jab aap java MyProgram command chalate ho, JVM hi aapka program run karti
hai.

JRE (Java Runtime Environment)


• JRE ek package hai jismein JVM, libraries (math, util, lang, awt etc.) aur
supporting les hoti hain, jo Java program ko run karne ke liye jaruri hain.
• Agar kisi user ko sirf Java application run karna hai (develop nahi karna
hai), toh uske computer mein JRE hona chahiye.
• Ismein "compiler" nahi hota, sirf run-time ka part hota hai.
Short Example:
Agar aap game ya banking app bana ke kisi ko dete ho, to user ko sirf JRE lagti hai
use run karne ke liye.

JDK (Java Development Kit)


• JDK Java developers ke liye hota hai, kyunki ye JRE + developer tools
(javac compiler, jar tool, debugger, documentation tool, etc.) contain karta hai—
matlab agar aapko Java code likhna, compile and debug karna hai to JDK zaruri
hai.
• JDK mein JRE bhi hoti hai, isliye directly code run bhi kar sakte ho.
• Platform-speci c hota hai, alag-alag OS ke liye alag version hota hai.
Short Example:
Jab aap javac [Link] likh kar code compile karte ho, to ye JDK ka
compiler kam karta hai.

Hinglish Summary Table


Component Full Name Purpose Contains Kaam Kisliye
Hai
JDK Java Develop + JRE, Code likhne,
Development Compile + Compiler, compile karne
Kit Run Debugger, ke liye
JRE Java Runtime Sirf Run karne Tools
JVM, Application
Environment ke liye Libraries, chalane ke
JVM Java Virtual Code execute Support
Executionles liye
.class le ko
Machine karne ke liye engine, actual run
memory, etc. karne ke liye
Hinglish Key Points
• JVM: Java program run karta hai, bytecode ko machine code mein
convert karta hai.
• JRE: Sirf run karna ho Java application, to JRE laga lo, ismein JVM bhi
hoti hai.
• JDK: Java developer ke liye, likhne, compile karne, debug karne, aur run
karne ke liye sab kuch ek package mein milta hai, ismein JRE bhi included hoti hai.
• Hierarchy: JVM < JRE < JDK
Agar code compile karna hai ya application banana hai, to JDK use karo. Bas run
karna hai, to JRE kaa hai, aur JVM toh dono mein hoti hi hai as engine.
fi
fi
fi
fi
fi
Q8) explain jvm architecture ?

JVM (Java Virtual Machine) architecture ek complex system hai jo Java program ko
run karta hai. Hinglish mein, har ek part ka kaam simple language mein samjhaaya
gaya hai, taaki concepts bilkul clear ho.

JVM Architecture Components Hinglish Mein


1. Class Loader Subsystem
• Ye part sabse pehle aata hai. Jab aap Java program chalate ho,
ye .class les ko memory mein load karta hai.
• Teen kaam karta hai: Loading, Linking, Initialization.
• Loading: Class le ko JVM mein laana.
• Linking: Bytecode ko verify karna, memory allocate karna, references ko
resolve karna.
• Initialization: Static variables ko actual value dena, static blocks execute
karna.
2. Runtime Data Areas
JVM runtime par kuch memory areas create karta hai:
• Method Area: Sabhi class-level data, static variables, method code, run-
time constant pool yahan store hote hain.
• Heap: Sabhi objects, arrays yahan create hote hain. Ye JVM start hone
par banta hai aur sab threads share karte hain.
• Stack: Har thread ka apna JVM stack hota hai. Isme method call ke local
variables, intermediate result, partial calculations, aur method return values store
hoti hain.
• Program Counter (PC) Register: Har thread ka ek PC register hota hai, jo
batata hai kaunsa instruction next execute hona hai.
• Native Method Stack: Agar Java program mein koi native (C/C++ ya OS
speci c) method call hota hai, toh uska data yahan store hota hai.
3. Execution Engine
• Sabse important part, jo bytecode ko actually execute karta hai.
• Interpreter: Bytecode ko line-by-line translate karke execute karta hai.
Simple programs mein fast hota hai, lekin repeatedly same code chalane par slow
ho sakta hai.
• JIT Compiler (Just-In-Time): Frequently used bytecode ko native machine
code mein convert karta hai, taki speed increase ho jaaye. Ye compiled code future
mein direct run ho jaata hai.
4. Native Interface & Libraries
• Agar code mein native language (C/C++) ka use hota hai, toh JVM ke
paas ek Native Interface hota hai, jo OS level libraries ko access karta hai. Iske liye
Native Method Libraries use hoti hain.

JVM Data Flow Hinglish Summary


fi
fi
fi
0. Java source code likhne ke baad compile karke .class (bytecode) le
milti hai.
0. JVM ka Class Loader subsystem ye le load karta hai.
0. Data areas (Method Area, Heap, Stack, PC Register, Native Stack) create
hote hain.
0. Execution Engine (Interpreter + JIT compiler) bytecode ko machine code
mein convert karke execute karta hai.
0. Agar koi native method hai, toh Native Interface usko handle karta hai.

Hinglish Key Points


• Class Loader pehle .class le ko memory mein load karta hai.
• Method Area mein sabhi bytecode details store hoti hain, Heap mein
objects hote hain, Stack mein thread-speci c local data hota hai.
• Execution Engine hi actual program run karta hai—Interpreter line-by-line
aur JIT compiler fast conversion ke liye.
• Native Interface se JVM OS/library ke native code ko bhi call kar sakta
hai.
Ye saare parts milke JVM ko powerful banaate hain, jisse Java program har
platform pe same tarike se run hota hai—One code, run anywhere philosophy
possible hota hai

Q9) what is di erence between error and exception ?

Java mein Error aur Exception dono program ke ow ko disturb karte hain, lekin
dono bilkul alag situation ko represent karte hain. Hinglish mein, sab point,
di erence aur code ke saath samjhaaya gaya hai.

Error in Java
• Error wo problems hain jo system level pe aati hain—matlab JVM/
resource ke khatam hone, stack over ow, memory full, etc.
• Ye unrecoverable hote hain, inka solution nahi hota; program crash hi ho
jaata hai.
• Error mainly [Link] class ke objects hote hain, jaise
OutOfMemoryError, StackOver owError.
Code Example:

java
public class ErrorExample {
public static void main(String[] args) {
// StackOver owError example (in nite recursion)
print();
}
public static void print() {
print(); // yahan pe stack kabhi khatam nahi hoga, StackOver owError throw
ho jayega
ff
ff
fl
fl
fi
fl
fi
fi
fi
fl
fl
fi
}
}
Yahan pe program crash ho jaata hai, aap try-catch laga ke isko recover nahi kar
sakte.

Exception in Java
• Exception wo situations hain jo code mein aati hain—matlab input galat,
array index galat, le nahi mili, division by zero, etc.
• Exception recoverable hai, try-catch ke through handle kar sakte ho aur
program ko continue kara sakte ho.
• Exception mainly [Link] class ke objects hote hain; jaise
NullPointerException, FileNotFoundException.
Code Example:

java
public class ExceptionExample {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
int c = a / b; // yahan ArithmeticException aayega
[Link](c);
} catch (ArithmeticException e) {
[Link]("Division by zero galat hai!");
}
[Link]("Rest of code runs...");
}
}
Yahan pe try-catch ke through exception recover ho gaya, program continue ho
gaya.

Summary Table
Feature Error Exception
Source System/ Coding/
Environment Program
problem mistakes
Example OutOfMemory NullPointerExc
Error, eption,
StackOver ow IOException
Error
Recoverable Nahi (mostly) Haan (try-
catch se)
Parent Class [Link] [Link]
ption
fl
fi
Handling Handle karna Handle karna
recommended zaroori hai
nahi
Type Always Checked &
unchecked Unchecked
Hinglish Key Points
• Error wo hai jo system level pe crash kar deta hai, recover nahi kar sakte,
code ka kaam nahi hai—jaise memory full, JVM down ho gaya.
• Exception wo hai jo aapke code ki galti se aata hai aur aap usko try-
catch se handle karke program ko safely run kara sakte ho.
• Exception ke liye handle karna zaroori hai, Error ke liye recommended
nahi hai (mostly program ko close kar dena chahiye).
• Dono throwable hain, par error hai system ka dikkat, exception hai
programmer ki dikkat.

Q10) what is di erence between nal, nally and nalized() in java ?

Java mein nal, nally aur nalize() teeno alag-alag cheezein hain, although naam
milte-julte hain. Hinglish mein, har ek ka use, concept, aur code example ke saath
detail samjhaya gaya hai.

1. nal Keyword
• nal ek keyword hai, jo variable, method ya class ke saath use hota hai.
• Agar variable ko nal bana do, toh uski value r kabhi change nahi ho
sakti (constant ban jaata hai).
• Agar method ko nal bana do, toh subclass usko override nahi kar
sakta.
• Agar class ko nal bana do, toh usko inherit nahi kar sakte (koi child
class nahi ban sakti).
Code Example:

java
nal int x = 25; // x ab kabhi change nahi hoga

nal class Demo {} // Isko extend nahi kar sakte

class Test {
nal void show() {
[Link]("Hello");
}
}
Agar nal variable, method ya class ko modify ya override karna try karoge toh
compile time pe error aa jayega.
fi
fi
fi
fi
fi
fi
fi
ff
fi
fi
fi
fi
fi
fi
fi
fi
fi
2. nally Block
• nally ek block hai, jo try-catch ke saath use hota hai.
• Chahe exception aaye ya nahi aaye, nally block hamesha execute hota
hai.
• Iska use resource cleanup, le close, connection close jaise operations
ke liye hota hai.
Code Example:

java
try {
int a = 10/0;
} catch (ArithmeticException e) {
[Link]("Exception aayi!");
} nally {
[Link]("Yeh block hamesha chalega");
}
Yahan pe chahe exception aaye ya nahi, nally block must execute hota hai.

3. nalize() Method
• nalize() ek method hai jo garbage collector object ko destroy karne se
pehle call karta hai.
• Iska use last moment resource cleanup ke liye hota hai—jaise database
close, le close, etc.
• Modern Java mein direct use recommended nahi hai; deprecated ho
chuka hai.
Code Example:

java
class Demo {
protected void nalize() {
[Link]("Finalize method called!");
}
}
public class Test {
public static void main(String[] args) {
Demo d = new Demo();
d = null;
[Link](); // Garbage Collector ko request
}
}
Jab Demo object destroy hone wala hai tab JVM nalize() call kar sakta hai.

Hinglish Summary Table


Feature nal keyword nally block nalize() meth
od
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
Type Keyword Exception Method
handling block
Usage Variable/ Cleanup after Cleanup
Method/Class try-catch before object
restrict destroyed
Called by Java syntax Java runtime JVM/garbage
(compile time) after try-catch collector
Override Method/ Nahi (block Haan, custom
Allowed? variable/class only) class mein
only
Example nal int x = nally { ... } protected
10; void nalize()
{}
Hinglish Key Points
• nal keyword: restricts, modify nahi kar sakte—constant value, no
override, no inheritance.
• nally: try-catch ke baad hamesha execute hota hai—cleanup ke liye.
• nalize() method: object destroy hone se pehle JVM call karti hai—last
moment cleanup.
• Teeno ka use alag hai—variable/method/class restriction, error handling
cleanup, aur garbage collection se pehle cleanup mein.
Interview ke liye sabse important hai ye di erence clearly batana aur code example
dena.

Q11) what is thread and how many ways to create thread in java ?

Thread Java mein ek lightweight process hai jo ek hi program


ke andar multiple tasks ko parallel ya concurrently run karne
deta hai. Hinglish mein bolen toh: thread ek chhota alag task
hai jo aapke main program ke saath-saath independent kaam
kar sakta hai, bina poora program rokke.

Thread Ka Concept
• Jab aap koi Java program chalate ho, ek main thread automatically banta
hai (jo main() method run karta hai).
• Multithreading se aap ek saath multiple kaam kara sakte ho, jaise le
download, user input, aur data process — sab alag-alag threads mein.

Java Mein Thread Banane ke Tareeke


1. Extending Thread Class
fi
fi
fi
fi
fi
fi
ff
fi
• Apni class ko Thread class se extend karo, aur run() method override
karo.
• Fir us class ka object banao aur start() method call karo—aur aapka
thread chal padega.
Code Example:

java
// Thread class extend karke thread banana
class MyThread extends Thread {
public void run() {
[Link]("Thread chal raha hai!");
}
}

public class Test {


public static void main(String[] args) {
MyThread t1 = new MyThread();
[Link](); // Thread start hoga, run() execute ho jayega
}
}

2. Implementing Runnable Interface


• Apni class mein Runnable interface implement karo aur run() method
override karo.
• Thread object banao, Runnable object ko pass karo, aur thread
ka start() call karo.
Code Example:

java
// Runnable interface implement karke thread banana
class MyRunnable implements Runnable {
public void run() {
[Link]("Thread bhi chal raha hai—Runnable waala!");
}
}

public class Test {


public static void main(String[] args) {
MyRunnable r = new MyRunnable();
Thread t1 = new Thread(r);
[Link](); // Thread start hoga, run() execute ho jayega
}
}

3. (Advanced) Using Lambda or Callable with ExecutorService


• Java 8 ke baad threads bana sakte ho Runnable ko lambda ke form
mein pass karke ya Callable ka use karke advanced tasks (like result retrieval).
• Ye production-level code mein zyada use hota hai, especially jab thread
pool manage karna ho.
Short Example (Lambda):

java
Thread t = new Thread(() -> [Link]("Lambda Thread!"));
[Link]();

Hinglish Tips
• Thread ka use: Parallel task karne ke liye (background task, UI
responsive rakhna, le download, etc.).
• Extends Thread: Use karo jab aapke class ko sirf ek hi parent class
chahiye ho.
• Implements Runnable: Zyada use hota hai, kyunki aap already kisi aur
class ko extend kar rahe ho to bhi thread bana sakte ho.
• Always start thread using .start(), not .run(), warna multithreading nahi
milegi

Q12) explain custom exception and how to create custom exception in java?

Java mein custom exception ka matlab hai apni khud ki exception class banana, jo
speci c problem ko handle kare – jab built-in exceptions se kaam nahi chale.
Hinglish mein, yeh bahut hi useful hai jab aap apne application ke special error
conditions ko clear aur readable tarike se handle karna chahte hain.

Custom Exception Kya Hai?


Custom exception wo hai jo user khud de ne karta hai, Java ki Exception class ko
extend karke. Isse aap speci c error message, extra elds, ya custom logic de
sakte hain.
Use kab hota hai?
• Jab speci c business logic fail ho, jaise “age < 18 allowed nahi”, “invalid
user input”, “transaction failed”, etc.

Custom Exception Kaise Banate Hain?


1. Exception Class Banaiye (extends Exception)

java
// Khud ki exception class bana rahe hain
class AgeException extends Exception {
public AgeException(String message) {
fi
fi
fi
fi
fi
fi
super(message); // Parent Exception class ka constructor call
}
}
Yahan AgeException ek custom exception hai jo message accept karti hai.
2. Exception Throw Karna

java
public class TestCustomEx {
public static void checkAge(int age) throws AgeException {
if (age < 18) {
throw new AgeException("Age should be >= 18");
} else {
[Link]("Valid age: " + age);
}
}

public static void main(String[] args) {


try {
checkAge(15); // Invalid, toh custom exception throw hoga
}
catch (AgeException e) {
[Link]("Caught custom exception: " + [Link]());
}
}
}
Is example mein, agar age 18 se kam ho toh custom exception throw ho jaata hai,
aur catch block mein handle ho jaata hai.

Hinglish Summary Table


Step Explanation Code Short
Example
Custom class MyEx class MyEx
Exception extends extends
Class Exception {} Exception {}
Constructor public new
with Msg MyEx(String MyEx("Invalid
msg) ")
{ super(msg);
}
Throw Custom throw new throw new
Exception MyEx("msg"); MyEx("proble
m");
Handle in try-catch mein catch (MyEx
Catch Block handle kar e) { ... }
sakte hain
Extra Hinglish Points
• Extends Exception: Checked custom exception banti hai (handle/declare
karna zaroori hai).
• Extends RuntimeException: Unchecked custom exception banti hai
(runtime pe check hoti hai).
• Custom exception se apni application ki error handling clear, readable
aur maintainable ho jaati hai.
• Message ya extra logic constructor mein de sakte ho

Q13) Explain serialization in java ?

Java mein serialization ka matlab hai kisi object ki complete state (matlab uske
variables ki value, class info, etc.) ko ek byte stream (binary format) mein convert
karna, taki usko le mein ya kisi network par bheja ja sake ya baad mein rse
waapas object mein convert kiya ja sake. Jab byte stream ko rse object banaate
hain, use deserialization kehte hain.

Hinglish Explanation - Serialization


Koi bhi object ko le mein save karne ya network par bhejne ke liye usko binary
format (byte stream) banana zaruri hai. Ye process Java mein automatically ho
sakta hai agar aapke class ne Serializable interface implement kiya ho.
• Use case: Data ko le mein save karna, network par transfer karna,
distributed systems, cache/memory persistence.

Kaise Kaam Karta Hai?


0. Class ko Serializable Banana:
• Aapko class mein implements Serializable likhna hota hai.
• Serializable ek marker interface hai—isme koi method nahi hota, sirf
signal hai JVM ko ki object serialize ho sakta hai.
0. Serialization: Object ko byte stream bana ke le ya network par bhejna.
0. Deserialization: Byte stream se object wapas banana.

Basic Code (Hinglish Comments Ke Saath)

java
import [Link].*;

// Step 1: Apni class ko Serializable banao


class Student implements Serializable {
int id;
String name;

public Student(int id, String name) {


[Link] = id;
fi
fi
fi
fi
fi
fi
[Link] = name;
}
}

public class TestSerialization {


public static void main(String[] args) {
Student s1 = new Student(101, "Amit");

// Step 2: Object ko serialize karke le mein save karo


try {
FileOutputStream fout = new FileOutputStream("[Link]");
ObjectOutputStream out = new ObjectOutputStream(fout);
[Link](s1);
[Link]();
[Link]();
[Link]("Object serialized ho gaya!");
} catch (Exception e) {
[Link](e);
}

// Step 3: File se object ko wapas (deserialize) karo


try {
FileInputStream n = new FileInputStream("[Link]");
ObjectInputStream in = new ObjectInputStream( n);
Student s2 = (Student) [Link]();
[Link]();
[Link]();
[Link]("Object deserialized ho gaya: " + [Link] + " " + [Link]);
} catch (Exception e) {
[Link](e);
}
}
}
• [Link] le mein object save ho jaayega (serialize), aur wapas read
karoge toh (deserialize) original object mil jaayega.

Important Points
• Agar class Serializable nahi implement karegi,
toh NotSerializableException aayega.
• Transient keyword: Kisi eld ko serialize nahi karwana hai toh
usko transient bana do.
• Static elds automatic serialize nahi hote hain.
Example (transient):

java
transient int temp; // Ye variable serialize nahi hoga
fi
fi
fi
fi
fi
fi
fi
Hinglish Summary Points
• Serialization: Object -> byte stream (save ya transfer ke liye).
• Deserialization: Byte stream -> object (wapas use karne ke liye).
• Serializable Interface: Zaroori hai class mein implement karna.
• File, network par transfer, caching ya remote method calls mein bahut
kaam aata hai.
Without serialization, aap Java objects ko le ya network par directly send/receive
nahi kar sakte.

Q14) what is transient keyword ?

Java mein transient ek special keyword hai, jo kisi class ke variable ko


serialization process se exclude karne ke liye use hota hai. Matlab, agar aap object
ko le ya network par bhej rahe ho (serialize kar rahe ho), toh transient variable ka
value usme save nahi hota—woh default value (null, 0, false) ban jaata hai.

Hinglish Explanation — transient Keyword


Use Kab Hota Hai?
• Jab kisi object ke kuch data ko security reasons se (password,
authentication tokens) ya temporary elds (jo calculate ho sakte hain) ko serialize
nahi karwana ho, tab unko transient declare kar do.
• Sensitive ya con dential data jaise password, ya aise elds jo runtime pe
hi calculate ho jaate hain (jaise age), unko serialize nahi karna chahiye.

Syntax & Code Example

java
import [Link].*;

class User implements Serializable {


String name;
transient String password; // isko save nahi karna chahte
int age;

User(String n, String p, int a) {


name = n;
password = p;
age = a;
}
}

public class Test {


public static void main(String[] args) throws Exception {
User u1 = new User("Amit", "secret123", 25);
fi
fi
fi
fi
fi
// Serialize the object
ObjectOutputStream out = new ObjectOutputStream(new
FileOutputStream("[Link]"));
[Link](u1);
[Link]();

// Deserialize the object


ObjectInputStream in = new ObjectInputStream(new
FileInputStream("[Link]"));
User u2 = (User) [Link]();
[Link]();

[Link]("Name: " + [Link]); // Output: Amit


[Link]("Password: " + [Link]); // Output: null (default)
[Link]("Age: " + [Link]); // Output: 25
}
}
•Yahan password eld transient hai, isliye object serialize/deserailize
karne pe password ki value null ho jayegi, baaki sab values wapas aa jayengi.

Points to Remember
• transient sirf variables ke saath use hota hai, methods/classes ke saath
nahi.
• Default values serialization ke baad milti hain: objects ke liye null, int ke
liye 0, boolean ke liye false.
• Best practice hai con dential elds ko transient banana, especially
banking, login, ya security applications mein.
• Agar aap custom writeObject/readObject use karo to manually bhi
transient elds serialize kar sakte ho, par default behavior mein nahi hota.

Hinglish Summary Table


Feature Description
Kya hai Modi er jo
variable ko
serialization
process se
hata deta hai
Kahan use Serializable
hota classes ke
sensitive/temp
elds mein
Kaise kaam Variable ko
karta serialize nahi
karta; default
value assign
hoti hai
fi
fi
fi
fi
fi
fi
Kab use karein Jab security,
privacy ya
redundancy
avoid karni ho
In short, transient keyword aapko control deta hai ki kaun se variables ka data le/
network par nahi jaana chahiye.

Q15) Explain life cycle of thread ?

Java mein thread ka life cycle ka matlab hai: ek thread apne creation se lekar
termination tak kin kin states se guzarta hai. Yeh states thread ke execution,
waiting, block hone aur terminate hone ko represent karti hain.

Thread Life Cycle - Hinglish Mein Samjhao


1. New/Born State
• Jab aap thread object create karte ho (Thread t = new MyThread()), tab
thread "new" state mein hota hai.
• Abhi thread start nahi hua hai, kuch bhi execute nahi hua.
2. Runnable State
• Jab aap start() method call karte ho, thread "runnable" state mein aa
jaata hai.
• Is state mein thread CPU ke liye ready hota hai, aur jab scheduler usko
choose karega tab ye actually run karega.
3. Running State (JVM terminology mein Runnable hi hai)
• Jab scheduler thread ko CPU de deta hai, toh thread actually run karne
lagta hai.
• run() method execute hota hai.
4. Blocked State
• Jab thread koi shared resource use karna chahta hai, lekin wo busy hai
(lock kisi aur thread ke paas hai), toh thread "blocked" state mein chala jaata hai.
• Jab resource mil jaata hai, rse runnable ho jaata hai.
5. Waiting State
• Jab thread kisi signal ka wait kar raha hai (jaise wait(), join()), toh thread
"waiting" state mein chala jaata hai.
• Noti ed hone par ya join complete hone par rse runnable ho jaata hai.
6. Timed Waiting State
• Jab thread sleep(), wait(long ms), ya join(long ms) jaise method call karta
hai (with timeout), toh "timed waiting" mein chala jaata hai.
• Time complete hone ya notify hone par rse runnable ho jaata hai.
7. Terminated/Dead State
• Jab thread ka run() method pura execute ho gaya ya exception aa gaya,
thread terminate ho jaata hai.
• Iske baad thread wapas start nahi ho sakta.
fi
fi
fi
fi
fi
Hinglish Life Cycle Code Example

java
class DemoThread extends Thread {
public void run() {
[Link]("Thread is running - Running State");
try {
[Link](2000); // Timed Waiting State
} catch (InterruptedException e) {
[Link](e);
}
}
}

public class TestThreadLifeCycle {


public static void main(String[] args) throws Exception {
DemoThread t1 = new DemoThread(); // New State
[Link]("Thread State: " + [Link]());

[Link](); // Runnable State


[Link]("Thread State after start: " + [Link]());

[Link](100); // Main thread waiting


[Link]("Thread State while sleeping: " + [Link]());

[Link](); // Waiting State (main thread waits for t1 to die)


[Link]("Thread State after join/terminate: " + [Link]());
}
}
Is example mein aap alag-alag states observe kar sakte hain
using getState() method.

Summary Table (Hinglish)


State Matlab/ Kaise aata hai
Situation / Example
New Thread abhi Thread t =
bana hai, start new Thread();
nahi
Runnable Ready for CPU [Link]();
Running CPU mil gaya, Scheduler
run() execute allocate karega
hogi
Blocked Resource busy Synchronized
hai, wait karo blocks/locks
Waiting Kisi event ka wait(), join()
intezaar
Timed Waiting Timeout ke sleep(300), wa
saath wait it(300)
Terminated Poora run() Execution
khatam ho nish ho gaya
gaya, dead
Hinglish Key Points
• Thread start hone ke baad states change hoti hain — CPU milne,
resource na milne, wait/timeout, ya work khatam hone pe.
• getState() method har state dekhne ke liye use hota hai.
• Interview mein diagram aur code dono important hain — saari states
clearly explain karo.
Java threads ka life cycle yaad rakhna multithreading program likhne mein madad
karta hai.

Q16) explain java8 features ( optional class, stream api, functional interface, default
keyword, lambda expression) ?

Java 8 mein kai powerful features aaye hain, jo coding ko modern, readable aur
e cient banate hain. Hinglish mein aur code ke sath, sab kuch step-by-step
explain kiya gaya hai: Optional class, Stream API, Functional Interface, Default
keyword, Lambda Expression.

1. Optional Class
• Kya hai?: NullPointerException bachane ke liye, ek wrapper class hai jo
value ki presence verify karti hai. Null check karne ki zarurat nahi padti.
• Use case: Jab value ayegi ki nahi, uncertain ho (method ke result,
property, etc).
• Code Example:

java
import [Link];

public class OptionalDemo {


public static void main(String[] args) {
Optional<String> name = [Link](null);
[Link]([Link]()); // false
[Link]([Link]("Default")); // Default
}
}
Yahan agar name present nahi hai, toh default value mil jaati hai.

2. Stream API
fi
ffi
• Kya hai?: Collections (array, list, set) pe data ko functional style mein
process karne ka tarika— lter, map, reduce, sort, collect, etc.
• Use case: Large data processing, chaining operations.
• Code Example:

java
import [Link].*;
public class StreamDemo {
public static void main(String[] args) {
List<Integer> list = [Link](2, 7, 8, 1, 10, 5);
[Link]()
. lter(x -> x > 5)
.map(x -> x*x)
.forEach([Link]::println); // Output: 49 64 100 25
}
}
Data ko pipeline mein process kar sakte ho—easy and clean.

3. Functional Interface
• Kya hai?: Interface jisme ek hi abstract method hota hai (jaise Runnable,
Comparator).
• Use case: Lambda expression ka use, clean functional code.
• Code Example:

java
@FunctionalInterface
interface MyFunc {
void show();
}

public class FuncDemo {


public static void main(String[] args) {
MyFunc f = () -> [Link]("Functional Interface!");
[Link]();
}
}
@FunctionalInterface annotation ka matlab hai ki only one abstract method hona
chahiye.

4. Default Keyword
• Kya hai?: Ab interface ke methods ko default implementation de sakte ho
(optional override), pehle interface me only abstract methods possible tha.
• Use case: Backward compatibility, easy extension.
• Code Example:

java
interface Greetings {
default void hello() {
fi
fi
[Link]("Hello By Default!");
}
}

class Demo implements Greetings {}

public class DefaultDemo {


public static void main(String[] args) {
new Demo().hello(); // Output: Hello By Default!
}
}
Default method subclass mein use kar sakte ho, zarurat pade toh override bhi kar
sakte ho.

5. Lambda Expression
• Kya hai?: Functional interface ke liye ek concise way hai method ko
de ne karne ka—no need for extra class implementation.
• Use case: Anonymously function pass karna, especially stream/ lter/sort
ke sath.
• Code Example:

java
interface Square {
int get(int x);
}

public class LambdaDemo {


public static void main(String[] args) {
Square s = n -> n * n;
[Link]([Link](5)); // Output: 25
}
}
Lambda se code short aur readable ho jaata hai.

Hinglish Table — Features & Examples


Feature Use/ Code
Explanation Example
(short)
Optional Null avoid, [Link]
wrapper llable(val)
Stream API Functional [Link](). l
data pipeline ter(...).map(...).
collect(...)
FunctionalInter Single method @FunctionalIn
face interface terface ...
fi
fi
fi
Default Interface mein default void
keyword default method m() {}
Lambda Functional (a, b) -> a + b
Expression code, short
form

Q17) explain predicate, supplier, consumer and function functional interface ?

ava 8 mein Predicate, Function, Consumer aur Supplier ye 4


important functional interfaces aaye hain, jo lambda
expressions ke sath use hote hain. Hinglish mein, har ek ka
kaam, code example aur use-case detail mein diya gaya hai.

1. Predicate Functional Interface


• Kya hai?: Condition/test check karta hai—ek argument leta hai aur
boolean return karta hai.
• Use Case: Filtering (like stream. lter()), validation, search.
• Functional Method: boolean test(T t);
• Code Example:

java
import [Link];

Predicate<Integer> isEven = x -> x % 2 == 0;


[Link]([Link](5)); // false
[Link]([Link](8)); // true
Yahan isEven ek condition check kar raha hai aur true/false
return karta hai.

2. Function Functional Interface


• Kya hai?: Data ko transform karta hai—ek argument leta hai aur kuch
naya result (output) deta hai.
• Use Case: Mapping, data conversion, transformation (like [Link]()).
• Functional Method: R apply(T t);
• Code Example:

java
import [Link];
fi
Function<Integer, Integer> square = x -> x * x;
[Link]([Link](7)); // 49
Yahan input number ka square nikal raha hai.

3. Consumer Functional Interface


• Kya hai?: Kisi ek input ko accept karta hai, lekin return kuch nahi karta—
jaise print, store, log, update.
• Use Case: Processing, printing (like forEach()), actions without returning
value.
• Functional Method: void accept(T t);
• Code Example:

java
import [Link];

Consumer<String> printStr = s -> [Link](s);


[Link]("Hello Consumer!"); // Output: Hello Consumer!
Yahan message print ho raha hai, kuch return nahi hota.

4. Supplier Functional Interface


• Kya hai?: Kisi bhi input ko accept nahi karta, but result return karta hai—
matlab value ya data supply karta hai.
• Use Case: Factory, generator, caching, lambda for deferred computation.
• Functional Method: T get();
• Code Example:

java
import [Link];

Supplier<Double> randomValue = () -> [Link]();


[Link]([Link]()); // Output: Random double value (0-1)
Yahan koi input nahi, seedha value return hoti hai.

Hinglish Table — Use & Example


Interface Kya karta hai? Main Method Code Short
Example
Predicate Test/condition test(T) x -> x>10
boolean return
Function Input le, output apply(T) n -> n*n
return kare
Consumer Input process accept(T) s ->
kare, kuch [Link]
return nahi intln(s)
Supplier Input nahi, get() () ->
value supply [Link](
kare )
Hinglish Key Points
• Predicate: Mainly condition check ya ltering ke liye.
• Function: Data conversion, transformation ya mapping ke liye.
• Consumer: Actions perform karne ke liye (print, update), kuch return nahi
hota.
• Supplier: Value ya data supply karne ke liye, bina argument ke.
• Ye built-in functional interfaces lambda expressions ke sath kaa use
hote hain, especially collection processing, data pipeline ya event handling mein

Q18) what is di erence between abstract class and interface in java ?

Java mein abstract class aur interface dono hi abstraction achieve karne ke liye use hote
hain, lekin dono ka design, use-case aur rules alag hote hain. Hinglish mein, detail aur
code ke saath sab kuch bataya gaya hai.

Abstract Class
• Abstract class ek base class hoti hai jo direct object nahi ban sakti; sirf inherit ki ja
sakti hai.
• Isme abstract (sirf declare kiye gaye, bina implementation ke) aur concrete
(implementation wale) methods dono ho sakte hain.
• Abstract class ke andar variables, constructors, aur normal methods bhi ho sakte
hain.
• Inheritance sirf ek hi abstract class se ho sakta hai (single inheritance).
Code Example:

java
abstract class Animal {
String name;
Animal(String name) {
[Link] = name;
}
abstract void makeSound(); // Abstract method
void eat() { // Concrete method
[Link](name + " is eating.");
}
}

class Dog extends Animal {


Dog(String name) {
super(name);
}
ff
fi
fi
void makeSound() {
[Link]("Bhow-Bhow");
}
}

public class Main {


public static void main(String[] args) {
Animal a = new Dog("Tommy");
[Link](); // Bhow-Bhow
[Link](); // Tommy is eating.
}
}
Yahan par Dog class Animal abstract class ko extend kar rahi hai aur makeSound method
implement kar rahi hai.

Interface
• Interface ek set of completely abstract methods provide karta hai (Java 8 ke baad
default/static methods allowed ho gaye).
• Direct object nahi bana sakte, sirf implement kar sakte hain.
• Multiple interfaces ek hi class implement kar sakti hai (multiple inheritance
possible).
• Interface ke sab variables public, static aur nal hote hain by default.
Code Example:

java
interface Animal {
void makeSound();
default void eat() {
[Link]("Animal is eating (default)");
}
}

class Cat implements Animal {


public void makeSound() {
[Link]("Meow-Meow");
}
}

public class Main {


public static void main(String[] args) {
Cat c = new Cat();
[Link](); // Meow-Meow
[Link](); // Animal is eating (default)
}
}
Yahan Cat class Animal interface ko implement kar rahi hai, method ko override kar sakti
hai.

Difference Table (Hinglish)

Features Abstract Class Interface

Object bana Nahi (direct nahi) Nahi (direct nahi)


sakte?
fi
Methods Abstract + Concrete methods Sirf abstract methods (Java 8 se default/
static bhi)
Variables Kisi bhi type, access modi er public static nal (constant) by default
allowed
Constructors Haan, allowed Nahi allowed

Inheritance Sirf ek abstract class Multiple interfaces implement ho sakte

Default Methods Allowed (normal methods) Java 8 se interface mein bhi default
method allowed
Use when Common code reuse + 0-100% Pure abstraction (100%), contract
abstraction de nition
Keyword abstract class interface

Implements/ extends abstract class implements interface


Extends

Hinglish Key Points


• Abstract class: Jab aapko kuch default behavior dena ho aur kuch subclass pe
chhodna ho. Constructor, variable, normal method sab allow hai.
• Interface: Jab aapko method contract de ne karna ho, implementation baad mein
class degi. Multiple interface ek sath implement kar sakte ho.
• Java 8 se: Interface mein default aur static methods bhi aa gaye!
• Interview mein jab poochhein, use-case, code, table, aur key points—sab clear
batao.
Interface pure abstraction ke liye, abstract class partial abstraction plus code reuse ke liye
hoti hai.

Q19) explain method overloading and method overriding in java ?

Java mein Method Overloading aur Method Overriding dono


important concepts hain polymorphism ke, lekin inka use aur
mechanism alag hai. Hinglish mein in dono ko detail samjhaata
hoon, saath mein code examples ke saath.

1. Method Overloading (Compile-time Polymorphism)


Ek hi class mein ek jaisa naam ke multiple methods de ne karna, lekin

unke parameters (number, type, sequence) alag hote hain.
• Yeh compile time par decide hota hai ki kaunsa method call hoga
(method signature ke basis par).
fi
fi
fi
fi
fi
• Return type alag ho sakta hai, par bas parameters di erent hone
chahiye.
• Inheritance ki koi zarurat nahi, same class ke andar hota hai.
Example:

java
class Calculator {
int add(int a, int b) {
return a + b;
}
int add(int a, int b, int c) {
return a + b + c;
}
double add(double a, double b) {
return a + b;
}
}

public class Test {


public static void main(String[] args) {
Calculator calc = new Calculator();
[Link]([Link](10, 20)); // 30 (2 parameters)
[Link]([Link](10, 20, 30)); // 60 (3 parameters)
[Link]([Link](10.5, 20.5)); // 31.0 (double parameters)
}
}
Yahan add method ke teen alag versions hain jo di erent
parameter list ke basis par chal rahe hain.

2. Method Overriding (Runtime Polymorphism)


• Jab subclass parent class ke method ko same signature (name +
parameters) ke saath rede ne karta hai.
• Run time par JVM decide karta hai ki kaunsa method call hoga, object ke
actual type ke basis par.
• Return type parent class method ke return type ke same ya subtype ho
sakta hai (covariant return type).
• Access modi er parent se stricter nahi hona chahiye.
• Static aur nal methods override nahi kar sakte.
Example:

java
class Animal {
void sound() {
[Link]("Animal makes sound");
}
fi
fi
fi
ff
ff
}

class Dog extends Animal {


@Override
void sound() {
[Link]("Dog barks");
}
}

public class Test {


public static void main(String[] args) {
Animal a = new Dog();
[Link](); // Dog barks - runtime decide hota hai
}
}
Yahan method sound parent class mein bhi hai aur subclass
mein bhi override hua hai.

Summary Table (Hinglish)


Feature Method Method
Overloading Overriding
Location Same class Parent aur
mein child class ke
beech
Purpose Multiple Same method
methods with rede ne child
same name class mein
but di
parameters
Timing Compile-time Runtime
(Static Binding) (Dynamic
Binding)
Parameter Di erent Same
number/type/ parameter list
order
Return Type Can be Same or
di erent subtype
Access Kisi bhi tarah Parent se
Modi er ka ho sakta stricter nahi
hona chahiye
Inheritance Nahi Haan
Required
Static/Final Overload ho Override nahi
Methods sakte hain ho sakte
ff
ff
fi
fi
ff
Hinglish Key Points
• Overloading ka matlab ek class mein ek jaise naam ke methods but alag
parameters; overriding mein subclass parent class ke method ko customize karta
hai.
• Overloading compile-time polymorphism aur overriding runtime
polymorphism ka ek example hai.
• Overriding mein JVM decide karta hai ki run time pe kaunsa method use
karna hai, whereas overloading mein compiler decide karta hai compile time pe.
• Interview mein dono concepts clear aur example ke saath innovate kar
ke dikhana hota hai.
Yeh dono concepts Java ke OOP structure mein bahut
important hain aur clear understanding se e cient code likha
ja sakta hai.

Q20) what is di erence between map and atmap ?

Java Streams mein map() aur atMap() dono transformation ke liye use hote hain,
lekin dono ka behaviour (aur kaam) alag hai. Hinglish mein detail, code ke sath sab
kuch samjho.

1. map() Method
• Kya karta hai?: Har input element ko ek output element mein convert
(transform) karta hai—one-to-one mapping.
• Result: Stream mein jitne element input, utne hi output (size same rehta
hai).
• Use case: Kisi value ka square, uppercase, length nikalna, mapping
single value per element.
Simple Code:

java
List<String> names = [Link]("Amit", "Sumit", "Mohit");
// Uppercase har naam ko
List<String> upper = [Link]()
.map(String::toUpperCase)
.collect([Link]());
// Output: [AMIT, SUMIT, MOHIT]
Har element ka transformation simple hai, nested structure nahi banta.

2. atMap() Method
fl
ff
fl
fl
ffi
• Kya karta hai?: Har input element ko ek stream of elements (0, 1, or
many) mein convert karta hai aur phir sab streams ko ek single at stream mein
merge ( atten) kar deta hai—one-to-many mapping and attening.
• Result: Output streamlined ho jata hai, nested structure (List<List<>> ya
Stream<Stream<>>) single at stream ban jata hai.
• Use case: Nested collections, List of List ya String ko words/letters mein
todna.
Simple Code:

java
List<List<String>> data = [Link](
[Link]("A", "B"),
[Link]("C", "D", "E"),
[Link]("F")
);

// Sab elements ko ek single list mein atten karo


List<String> at = [Link]()
. atMap(list -> [Link]())
.collect([Link]());

// Output: [A, B, C, D, E, F]
Yahan map se each List ka stream milta, aur atMap se saare elements ek hi level
pe aa gaye, nested nahi.

Real-World Example — Words Split

java
List<String> lines = [Link]("hello world", "java code");
List<String> words = [Link]()
. atMap(line -> [Link]([Link](" ")))
.collect([Link]());
// Output: [hello, world, java, code]
Agar yahan map use hota toh Stream<Stream<String>> milta, atMap se proper
ek hi list aa jaati hai.

Summary Table (Hinglish)


Feature map() atMap()
Mapping One-to-one One-to-many
plus atten
Output Stream of Single at
values stream of all
values
Nesting Nested Nested
structure bana structure
sakta hai atten kar deta
hai
fl
fl
fl
fl
fl
fl
fl
fl
fl
fl
fl
fl
fl
fl
Use case Simple value List<list>,
transform words split,
attening
Key Points (Hinglish)
• map: Transform, lekin input aur output elements ek-to-ek hain. Nested
collection nahi hatata.
• atMap: Pehle har element ko stream banaata hai, r sabko ek at
stream mein milaata hai—nested ko one level bana deta hai.
• Interview mein jab bhi nested ya multiple output ki baat ho, atMap ka
use explain karo, otherwise map su ce hai.
Java collection ko process karte waqt jab bhi atten karna ho ya nested data
structure hai toh atMap use karo, simple mapping ho toh map su cient hai.

Q21) what is di erence between array and arraylist ?

Java mein array aur ArrayList dono hi elements ka group store karne ke liye use
hote hain, lekin inke kaam karne ka tareeka, exibility, aur features bilkul alag hain.
Hinglish mein detail, code ke saath — sab samjho.

Array (Fixed Size)


• Ye ek basic data structure hai jo ek hi type ki values ko store karta hai.
• Array ki size x hoti hai — once declare ho gaya toh uska size change
nahi ho sakta.
• Array mein primitive (int, oat, char) aur objects, dono types store kar
sakte hain.
• Array multidimensional ho sakta hai (2D, 3D).
• Array mein elements ko index se access karte hain.
• Array ka size .length property se pata chalta hai.
Code Example:

java
int[] marks = new int[5]; // Array of 5 integers
marks[0] = 90;
marks[1] = 85;
[Link](marks[1]); // 85
[Link]([Link]); // 5

ArrayList (Dynamic Size)


• Ye Java Collections Framework ka part hai — internally array par hi
based hota hai, lekin size automatically badh/ghat sakta hai (dynamic).
• ArrayList sirf objects ko hi store kar sakta hai (int, double ko store karna
ho toh Integer, Double – wrapper classes use karni hoti hai).
• Add, remove, sort, search jaise built-in methods milte hain.
• Multidimensional direct nahi ho sakta, but nested ArrayList possible hai.
• ArrayList ka size .size() method se milta hai.
fl
fl
ff
fl
fi
fl
ffi
fl
fl
fi
ffi
fl
fl
Code Example:

java
import [Link];
ArrayList<Integer> marksList = new ArrayList<>();
[Link](90);
[Link](85);
[Link]([Link](1)); // 85
[Link]([Link]()); // 2
Yahan dynamically elements add/remove ho sakte hain.

Di erence Table (Hinglish)


Feature Array ArrayList
Size Fixed (declare Dynamic (auto-
karne ke baad resize hota hai)
change nahi
hota)
Type Primitives + Objects only
Objects (wrapper
classes)
Inheritance/ Java language Java
source ka part Collection
Framework ka
part
Methods Limited Built-in (add,
(bas .length, remove, size
index based) etc.)
Syntax int[] arr = new ArrayList<Inte
int[11]; ger> list =
new
ArrayList<>();
Performance Fast (simple, Thoda slow
static size) (resize hone
par copy lagta
hai)
Generics Nahin Haan (type
safety
possible)
Multidimension Haan (direct) Nahin (nested
al ArrayLists
possible)
Hinglish Key Points
• Array: Jab xed number ke elements rakhne hain, aur primitive bhi store
karne hain, toh use karo. Fast hota hai, lekin function support kam.
ff
fi
• ArrayList: Jab exible size chahiye, built-in manipulation methods
chahiye, aur objects store karne hain, toh choose karo. Thoda heavy hota hai, lekin
zyada powerful bhi.
• Array ki length property lagti hai, ArrayList mein size() method.

Q22) what is di erence between arraylist and linkedlist ?

Java mein ArrayList aur LinkedList dono List interface ke implementation hain,
lekin inka data store aur manipulation karne ka tareeka bilkul alag hai. Hinglish
mein detail, code, aur practical use-cases ke saath—sab kuch niche diya gaya hai.

ArrayList
• Kaise Store karta hai? Dynamic array ka use karta hai. Elements memory
me continuous locations par store hote hain.
• Access (get/set): Index-based fast access (O(1) time), random access
bahut e cient hai.
• Insertion/Deletion: Middle ya beginning me add/remove karna slow hota
hai, kyunki right ke sabhi elements ko shift karna padta hai (O(n) time).
• Memory: Kam memory use karta hai (bas data store hota hai).
• Best Use Case: Jab zyada access/search operations karne hain ya read-
heavy list chahiye.
Simple Code:

java
import [Link];
ArrayList<String> list = new ArrayList<>();
[Link]("Amit");
[Link]("Sumit");
[Link]([Link](1)); // Output: Sumit

LinkedList
• Kaise Store karta hai? Doubly linked nodes ke through elements ko point
karta hai. Har node aage aur peeche do nodes ko reference karta hai.
• Access (get/set): Index-based access slow hota hai (O(n)), har call pe
start/end se traverse karna padta hai.
• Insertion/Deletion: Beginning ya beech mein add/remove bahut fast (O(1)
agar node known ho), links update bas pointers badalte hain; shifting nahi hota.
• Memory: Zyada memory lagti hai (har node ke andar data + next/prev
pointers hote hain).
• Best Use Case: Jab aapko frequent insert/delete operations chahiye,
especially start ya middle mein.
Simple Code:

java
import [Link];
ffi
ff
fl
LinkedList<String> linkedList = new LinkedList<>();
[Link]("Amit");
[Link]("Sumit");
[Link]("Mohit"); // Fast insert at beginning
[Link]([Link](1)); // Output: Amit

Di erences Table (Hinglish)


Feature ArrayList LinkedList
Data Structure Dynamic Array Doubly Linked
(contiguous List (nodes
storage) with pointers)
Access Speed Fast, O(1) Slow, O(n) (has
(random to traverse
access nodes)
possible)
Insert/Delete Slow, O(n) Fast, O(1)
(mid/start) (elements shift (pointers
honge) update hote
hain)
Insert/Delete Fast (unless Fast (tail
(end) resize needed) pointer)
Memory Usage Less (no extra More (har node
pointers, just mein extra
data) pointers)
Search Fast Slow
Use as Queue/ Not suitable/ Suitable,
Deque ine cient implements
Deque
interface
When to use Frequent Frequent add/
retrieval/search delete, queue/
stack
operations
Hinglish Key Points
• ArrayList: Jab aapko list me se jaldi value retrieve/search karni hai,
mostly read-heavy operation ho, ya kam insert/delete ho.
• LinkedList: Jab aapko list ke starting/ending/middle me bar bar insert aur
delete karna ho, ya as a queue/stack use karna ho.
• ArrayList access ke liye best hai, LinkedList manipulation/insertion/
deletion ke cases me best hai.
• Interview me yahi points, code aur O(n)/O(1) ka explanation dena most
e ective hota hai!
ff
ff
ffi
Q23) what is di erence between Hashtable and hashmap ?

Java mein HashMap aur Hashtable dono key-value pair store karte hain, lekin
dono ka kaam karne ka tareeka aur features alag hain. Hinglish mein detail, code,
aur important points niche diye gaye hain.

HashMap
• Kaise kaam karta hai?: Java Collections Framework ka part hai, map
interface implement karta hai, aur modern use ke liye recommend kiya jaata hai.
• Synchronization: Non-synchronized (thread safe nahi hai). Multiple
threads ke sath use karna ho toh external synchronization ya ConcurrentHashMap
prefer karo.
• Null Allow: Ek null key aur multiple null values allow karta hai.
• Performance: Faster than Hashtable (multi-threaded env mein aur bhi
fast ho sakta hai).
• Fail-fast Iterator: Agar map iteration ke dauraan modify hua toh
ConcurrentModi cationException mil sakta hai.
Code Example:

java
import [Link];

HashMap<Integer, String> map = new HashMap<>();


[Link](1, "Amit");
[Link](2, "Sumit");
[Link](null, "Mohit");
[Link](3, null);

[Link]([Link](1)); // Amit
[Link]([Link](null)); // Mohit
Yahan null key/value kaam karta hai, aur normal print ho jaata hai.

Hashtable
• Kaise kaam karta hai?: Legacy class hai, Java 1.0 se aayi thi, Dictionary
ko extend karti hai (not part of Collections Framework, lekin Map implement karti
hai).
• Synchronization: Synchronized (thread safe hai). Sab methods
synchronized hain, isliye single-threaded application mein thoda slow hota hai.
• Null Allow: Null key/value allowed nahi hai (agar store karte ho toh
NullPointerException aayega).
• Performance: Relatively slow because synchronisation ka overhead rehta
hai.
• Enumerator: Iterator fail-fast nahi hota, enumerator use hota hai.
Code Example:

java
import [Link];
ff
fi
Hashtable<Integer, String> table = new Hashtable<>();
[Link](1, "Amit");
[Link](2, "Sumit");
// [Link](null, "Mohit"); // NullPointerException
// [Link](3, null); // NullPointerException

[Link]([Link](1)); // Amit
Yahan null key/value pe exception aa jaata hai.

Di erence Table (Hinglish)


Feature HashMap Hashtable
Synchronizatio Non- Synchronized,
n synchronized, thread safe
not thread safe
Null Key/Value Null key & Null key/value
multiple null NOT allowed
values allow
Performance Fast (no sync Slower (sync
overhead) ka overhead)
Iterator Fail-fast Enumerator
iterator (not fail-fast)
Legacy/ Modern, Legacy,
Modern recommend for obsolete for
new code new code
Package [Link] [Link]
Use Case Single- Multi-threaded
threaded by (very rarely
default used)
Inheritance Extends Extends
AbstractMap Dictionary
Preferred ConcurrentHas Use
Alternative hMap for ConcurrentHas
thread safety hMap instead
Hinglish Key Points
• HashMap zyada use hota hai — modern projects mein, exible, null
values allow karta hai, aur fast execution deta hai.
• Hashtable legacy hai — aajkal almost nahi use karte, thread safety built-
in hai, lekin speed kam ho jaati hai.
• Interview mein null values, speed/performace, synchronization aur fail-
fast iterator ka di erence zaroor batana chahiye!

Q24) what is di erence between hashmap and concurrent hashmap ?


ff
ff
ff
fl
Java mein HashMap aur ConcurrentHashMap dono hi key-value pairs store karte
hain, lekin thread-safety aur concurrent operations ke mamle mein bahut farq hai.
Hinglish mein, detail explanation, code examples, aur practical use-case niche
diye hain.

HashMap
• Synchronization: Thread-safe nahi hai, single-threaded scenario ke liye
best hai.
• Null allowed: 1 null key aur multiple null values store kar sakte ho.
• Fail-fast: Agar map iterate karte waqt change kar diya, toh
ConcurrentModi cationException aata hai.
• Performance: Fastest choice jab sirf ek thread use kar raha ho; jab
concurrent update ho toh issues aa sakte hain.
• Usage: Jab thread-safety ki zarurat nahi ho, normal caching ya look-up
ke liye use karo.
Code Example:

java
import [Link];
HashMap<Integer, String> map = new HashMap<>();
[Link](1, "Amit");
[Link](2, "Sumit");
[Link](null, "Mohit"); // Null allowed
[Link]([Link](1));

ConcurrentHashMap
• Synchronization: Thread-safe hai, internally segment-level locking use
karta hai, jisse multiple threads ek sath safe tarike se kaam kar sakte hain (read aur
write dono).
• Null allowed: Null key ya null value bilkul bhi allow nahi hai—store karne
par NullPointerException aayega.
• Fail-safe: Iterators fail-safe hote hain—matlab, agar aap concurrent
update bhi karte raho toh ConcurrentModi cationException nahi aata.
• Performance: Thoda slow hai (compared to HashMap) because internal
locking, lekin high-concurrency mein best choice hai—zyada threads ek sath kaam
kar sakte hain bina block kiye.
• Usage: Jab aapko application multi-threaded ya concurrent access
chahiye (jaise web server cache, real-time updates).
Code Example:

java
import [Link];
ConcurrentHashMap<Integer, String> cmap = new ConcurrentHashMap<>();
[Link](1, "Amit");
[Link](2, "Sumit");
// [Link](null, "Mohit"); // NullPointerException
fi
fi
[Link]([Link](1));

Di erences Table (Hinglish)


Feature HashMap ConcurrentHa
shMap
Thread safety Nahi (not Haan (thread-
thread-safe) safe)
Synchronizatio Nahi Haan, internal
n segment
locking
Null key/value Allowed Not allowed
(throws
exception)
Iterators Fail-fast Fail-safe (no
(exception aa ConcurrentMo
sakta hai) di cationExce
ption)
Performance Fast (single- Fast under
thread) concurrency
(multi-
threaded)
Use-case Simple usage, Concurrent
caching, maps, server
single-thread cache, real-
time
Introduced in Java 1.2 Java 1.5
Hinglish Key Points
• HashMap usually use karo jab sirf ek thread kaam kare ya multi-
threading ka issue na ho.
• ConcurrentHashMap jab multiple threads ko ek hi map pe read/write
karvana ho, bina data-corruption ke—best choice hai.
• Null key/value sirf HashMap mein, ConcurrentHashMap mein try bhi mat
karo!
• Iterator fail-fast aur fail-safe ka di erence interview mein bahut important
hai—yani concurrency mein ConcurrentHashMap recomendable hai.
Summary: HashMap is for single-threaded, normal usage; ConcurrentHashMap is
for multi-threaded, concurrent environments—ye thread-safety problems solve
karta hai.

Q25) contracts between hashcode() and equals() ?


fi
ff
ff
Java mein hashCode() aur equals() methods ka contract ek set of rules hai jo
ensure karta hai ki objects correct tareeke se hash-based collections (jaise
HashMap, HashSet) mein kaam karein. Agar yeh contract break hua toh
collections me bugs, data loss, ya incorrect behavior aa sakta hai. Hinglish mein
detail aur code ke saath niche samjhao.

hashCode() and equals() Contract (Simple Points):


1. Agar do objects equals() se equal hain, toh unka hashCode bhi same hona
chahiye.
• Means: [Link](b) == true toh [Link]() == [Link]() bhi
hona zaruri hai.
2. Agar do objects ka hashCode alag hai, toh equals() de nitely false hoga.
• Means: [Link]() != [Link]() toh [Link](b) kabhi true nahi
hoga.
3. Agar do objects ka hashCode same hai, toh equals() true bhi ho sakta hai, false
bhi.
• Means: Collision allow hai, matlab di erent objects same hashCode de
sakte hain, lekin equals() true tabhi ho jab logic se match ho.
4. Jab tak object ke wo elds jo equals() mein use ho rahe hain unka value change
nahi hota, tab tak hashCode ka result bhi same aana chahiye.
• Matlab: hashCode() ka result stable hona chahiye for same object state.
5. Jab bhi aap equals() override karo, tab hashCode() bhi override karna
compulsion main hai (varnah collection proper kaam nahi karega).

Real-life Code Example

java
class Student {
int roll;
String name;

Student(int roll, String name) {


[Link] = roll;
[Link] = name;
}

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != [Link]()) return false;
Student s = (Student) obj;
return roll == [Link] && [Link]([Link]);
}

@Override
public int hashCode() {
return 31 * roll + [Link]();
fi
ff
fi
}
}
Yahan:
• Doh students ka roll aur name same hai toh equals() true.
• Agar equals() true, toh hashCode bhi same ho hi jayega due to formula.
Usage in HashMap:

java
Student s1 = new Student(1, "Amit");
Student s2 = new Student(1, "Amit");

HashMap<Student, String> map = new HashMap<>();


[Link](s1, "First");
[Link]([Link](s2)); // Output: First (kyunki contract maintain hai)
Agar only equals override hota, hashCode nahi toh yahan [Link](s2) null hota!
(problem aa jati).

Short Table (Hinglish)


Rule Kya Matlab
Hai
equals true Do equal
hashCode objects ka
must be equal hashCode
same hona
zaruri
hashCode Di ernt
unequal hashCode
equals must wale objects
be false equal nahi ho
sakte
hashCode Same
same equals hashCode
may be true/ wale objects
false alag bhi ho
sakte hain
Override both Java
together collections ka
proper
behavior zaruri
hai
Hinglish Interview Key Points
• hashCode aur equals sahi implement na karo toh, map me key nahi milti,
duplicate entry aa sakti hai, ya search fail ho sakta hai.
• hashCode e ciency (bucket division) ke liye hota hai, equals actual
equality check ke liye.
• Collision avoid karo par allowed hai, but equals ultimate judge hai
equality ka.
ff
ffi
In summary, dono methods ka contract follow karo, warna HashMap/HashSet
unpredictable ho jayega—interview ke liye bhi ye must-know hota hai.

Q26) Internal working of hashmap ?

Java mein HashMap ek powerful data structure hai jo key-value pairs ko e ciently
store aur retrieve karta hai. Iska internal kaam “hashing” principle par based hai.
Yahan sab kuch Hinglish mein, easy explanation aur code snippet ke saath diya
gaya hai.

1. Structure (Buckets & Nodes)


• Array of Buckets: HashMap internally ek array hoti hai (buckets ka array
bolte hain). Har bucket ek singly linked list ki tarah kaam karti hai.
• Node (Entry): Ek node mein key, value, hash aur next pointer (next node)
store hota hai. Agar collision hota hai toh linked list ya Java 8 se Red-Black Tree
bhi ban sakta hai.

java
static class Node<K,V> {
nal int hash;
nal K key;
V value;
Node<K,V> next;
}

2. put() Operation
• Jab aap [Link](key, value) karte ho:
• Key ka hashCode() method call hota hai.
• HashMap array size se index calculate karta hai: index = hash %
arraySize.
• Us bucket par jaa kar dekhta hai:
• Agar bucket khali hai toh naya node insert kar dega.
• Agar pehle se entry hai (equals() se check hota hai), toh value update
hoti hai.
• Agar collision hai (same index), toh new node linked list ki tarah chain me
add hota hai.
• Java 8 se agar linked list me nodes jyada (>=8) ho jaate hain, toh wo
bucket tree mein convert ho jata hai fast search ke liye (O(log n) ).

3. get() Operation
• Jab aap [Link](key) karte ho:
• Key ka hashCode() nikala jata hai.
• index = hash % arraySize hota hai.
fi
fi
ffi
• Us index par linked list/ tree traverse hoti hai, har node pe equals() se
check hota hai, jab match milta hai toh us node ki value return hoti hai.

4. Collision Handling
• Do keys agar same bucket (same index) mein aa jaate hain toh unko
"collision" bolte hain.
• HashMap me collision ka handling separate chaining (linked list)/tree ed
(Java 8+) ke through hota hai.

5. Resizing/ Rehashing
• Jab HashMap ka size (number of elements/total buckets) 0.75 (default
load factor) cross kar jaata hai, toh array double kar di jati hai aur sari entries ko
nayi jagah move kiya jaata hai (rehashing).
• Isse performance O(1) near constant hi rehti hai.

6. Key Points
• HashCode() aur equals() properly override karna isliye zaruri hai taki data
access, insertion, search sahi ho.
• Null key ek allowed hai (index 0 par store hoti hai).
• Average time O(1). Agar sab keys colliding hain toh O(n) bhi ho sakta hai
(kabhi rare case).
• Fail-fast iterator hota hai (modi cation par exception aa sakta hai).

Code Example (Demo)

java
import [Link];

public class HashMapDemo {


public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
[Link]("Amit", 100);
[Link]("Sumit", 101);
[Link]("Mohit", 102);

// Index kaise milta hai:


String key = "Amit";
int hash = [Link]();
int index = hash % 16; // Default initial size 16

[Link]("Hash: " + hash + ", Index: " + index);

[Link]([Link]("Sumit")); // Retrieval
}
}
Yahan har key ke liye hash nikal ke, index kai bucket mein entry dalti/nikalti hai.

Hinglish Short Table


fi
fi
Step Kya hota hai
put() key ka hash,
index nikal,
bucket pe
entry add/
update,
collision toh
chain ban jaati
hai
get() key ka hash
nikal, index pe
traverse,
equals se key
match, value
return
Resize Size >
0.75*capacity:
array double,
sab entries
rehash
Collision LinkedList ya
Red Black Tree
ban jaata hai
(Java 8+)
Is mechanism ki wajah se HashMap data ko fast, e cient aur scalable tariqe se
store/retrieve karta hai. Interview mein internal working, collision handling,
rehashing, aur hashCode-equals importance zarur highlight karo.

Q27) di erence between comparator and comparable ?

Java mein Comparable aur Comparator dono hi objects ko sort karne ke liye use
hote hain, magar dono ka use-case aur implementation tareeka alag hota hai.
Hinglish mein, di erence, explanation aur code ke sath sab kuch niche diya gaya
hai.

Comparable Interface
• Comparable interface ko apni class mein implement karna padta hai.
• Isme ek hi method hota hai: compareTo(Object o) – yeh current object
ko dusre object ke saath "natural order" mein compare karta hai.
• Default sorting provide karta hai (Jaise Student roll number, Name,
Employee Salary — ek hi rule rahega).
• Sirf ek sorting logic ho sakta hai — baar baar alag tareeke se sort nahi
kar sakte bina compareTo logic badle.
ff
ff
ffi
Code Example:

java
class Student implements Comparable<Student> {
int roll;
String name;

Student(int roll, String name) {


[Link] = roll;
[Link] = name;
}
@Override
public int compareTo(Student s) {
return [Link] - [Link]; // roll number ke basis pe sort
}
}
public class Test {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
[Link](new Student(3, "Amit"));
[Link](new Student(1, "Sumit"));
[Link](new Student(2, "Mohit"));
[Link](list); // compareTo() use hoga
for (Student s : list) [Link]([Link] + " " + [Link]);
}
}

Comparator Interface
• Comparator external logic provide karta hai — yeh alag class/
anonymous class/ lambda expression ke through bana sakte ho.
• Isme compare(Object o1, Object o2) method hota hai — do objects ko
compare karta hai custom rule ke basis pe.
• Multiple sorting rules possible hain (Jaise roll, name, marks, salary, etc.),
bina original class modify kiye.
Code Example:

java
class Student {
int roll;
String name;
Student(int roll, String name) {
[Link] = roll;
[Link] = name;
}
}
public class Test {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
[Link](new Student(3, "Amit"));
[Link](new Student(1, "Sumit"));
[Link](new Student(2, "Mohit"));

// Sort by name using Comparator


[Link](list, new Comparator<Student>() {
public int compare(Student a, Student b) {
return [Link]([Link]);
}
});
for (Student s : list) [Link]([Link] + " " + [Link]);
}
}
Yahan Student class ko modify kiye bina, custom sorting bhi mil gayi.

Di erence Table (Hinglish)


Feature Comparable Comparator
De nition Apni class External class/
mein logic, kisi bhi
implement class ke liye
hota hai
Package [Link] [Link]
Method compareTo(Obj compare(Obje
ect o) ct o1, Object
o2)
Sorting logic Single, default Multiple,
(natural order) custom
(runtime pe
decide)
Class change? Zaruri (class ke Nahi (original
andar code) class ko touch
nahi karte)
Use-case Default sorting, Alag-alag eld
ek hi rule ya complex
sorting, multi-
rule
Example [Link] new
areTo(Student) Comparator<S
tudent>() {...}
Hinglish Key Points
• Comparable: Jab ek hi default sorting chahiye (roll, name ya koi bhi
property). Class ke andar code add karna zaruri hai.
• Comparator: Jab multiple custom sorting chahiye ho (name, marks,
salary, time, etc.) bina class ko chhede. Best for exible logic or third-party
classes.
ff
fi
fi
fl
• [Link](list) – Comparable use karta hai. [Link](list,
comparator) – Comparator use hota hai.
• Interview mein dono ke syntax, example aur di erences zaroor highlight
karo.
Comparable class ke sath sort karo, Comparator se run time custom logic laga
sakte ho — poore code base mein exibility milti hai!

Q28) what is di erence between vector and arraylist ?

Java mein ArrayList aur Vector dono hi dynamic arrays hain jo List interface
implement karte hain, lekin unke beech kuch important di erences hote hain.
Hinglish mein, unka detail comparison, code with examples, aur use-cases niche
diya gaya hai.

1. Synchronization (Thread Safety)


• Vector synchronized hota hai, matlab thread safe hota hai. Agar ek
thread Vector ke upar kaam kar raha hai, toh doosre thread ko wait karna padta
hai.
• ArrayList synchronized nahi hota, matlab multiple threads simultaneously
access kar sakte hain, lekin thread safety ke liye aapko manually synchronize
karna padta hai.
2. Performance
• ArrayList faster hota hai kyunki wo synchronized nahi hai.
• Vector slower hota hai due to synchronization overhead.
3. Growth (Capacity Increment)
• ArrayList apni current size ka 50% extra capacity add karta hai jab array
full ho jata hai.
• Vector apni current size ka 100% yani double kar deta hai capacity ko.
4. Legacy Status
• Vector legacy class hai jo Java 1.0 se hain.
• ArrayList Java 1.2 mein introduce hua tha Collections Framework ke
sath.
5. Traversal
• Vector Iterator ke alawa Enumeration bhi support karta hai for traversing
elements.
• ArrayList sirf Iterator ka use karta hai.

Code Example

java
import [Link];
import [Link];

public class Demo {


public static void main(String[] args) {
ff
fl
ff
ff
// ArrayList example
ArrayList<String> arrayList = new ArrayList<>();
[Link]("Amit");
[Link]("Sumit");
[Link]("ArrayList: " + arrayList);

// Vector example
Vector<String> vector = new Vector<>();
[Link]("Mohit");
[Link]("Suresh");
[Link]("Vector: " + vector);
}
}

Summary Table (Hinglish)


Feature ArrayList Vector
Synchronizatio Non- Synchronized
n synchronized (thread safe)
(thread safety
nahi)
Performance Fast Thoda slow
due to
synchronizatio
n
Capacity 50% increment 100%
Growth increment
(doubling size)
Legacy Modern class Legacy class
(Java 1.2 (Java 1.0)
onwards)
Traversal Iterator Iterator and
Enumeration
support
Use-case Single- Thread-safe
threaded apps environment
(legacy usage)
Hinglish Summary
• Jab single-threaded ya manual synchronization chahiye toh ArrayList use
karo. Ye fast hai aur modern applications me popular hai.
• Agar aapko thread-safe dynamic array chahiye bina manual sync ke,
toh Vector use karo, lekin ye thoda slow hota hai.
• Generally, ArrayList zyada prefer ki jaati hai modern Java applications
mein kyunki performance better hota hai.
• Vector mainly backward compatibility ke liye hai aur naye projects mein
avoid karna chahiye.
Q29) explain static and non static method in java ?

Java mein static aur non-static method dono important concepts


hain, lekin unka use aur behavior completely alag hai. Hinglish
mein, clear explanation, difference aur code example niche diya
gaya hai.

Static Method

• De nition: Static method class ke context mein hota hai—


object/instance ki zarurat nahi hoti call karne ke liye.
• Syntax: Static method banane ke liye static keyword lagate
hain.
• Access: Static method sirf static variables/methods ko directly
access kar sakta hai (non-static ko direct access nahi).
• Usage: Jab kisi method ka kaam class-level ho ya utility/helper
task ho (example: [Link](), main() method).
• Calling: Directly class name ke saath ya bina object ke bulaya
ja sakta hai.
Code Example:
java
class Demo {
static void sayHello() {
[Link]("Hello from static method!");
}
public static void main(String[] args) {
[Link](); // Call by class name
sayHello(); // Direct call inside static context
}
}
Yahan kisi bhi Demo object ki zarurat nahi.

Non-Static Method

• De nition: Non-static method object ya instance ke context


mein hota hai—call karne ke liye object banana padta hai.
• Syntax: Method de nition mein static keyword nahi lagate.
fi
fi
fi
• Access: Non-static method static aur non-static variables/
methods dono ko access kar sakta hai.
• Usage: Jab method ko object ki state/ elds se interact karna
hai (example: [Link]()).
• Calling: Hamesha object ke reference se hi call kiya ja sakta
hai.
Code Example:
java
class Person {
String name;
Person(String name) { [Link] = name; }

void greet() { // Non-static method


[Link]("Hello, " + name + "!");
}

public static void main(String[] args) {


Person p1 = new Person("Amit");
[Link](); // Non-static method call via object

// greet(); // ERROR! Direct call not allowed without object


}
}
Yahan greet() method per-object kaam karta hai, har object ka apna
output hai.

Difference Table (Hinglish)

Feature Static Method Non-static Method

Access via Class name ya directly Only via object

Belongs to Class itself Speci c instance (object)

Access to Sirf static, non-static nahi Static & non-static dono


members (direct)
Memory Ek hi baar per class Alag-alag har object/instance
allocation ke liye
Overriding Nahi hota (method hiding Haan, subclasses override
hota hai) kar sakte hain
Common Utility, main(), math, Business logic, instance
usage helper methods kaam
Hinglish Key Points
fi
fi
• Static: Class-wide method hai, utility/constant kaam, bina
object ke call ho sakta hai, non-static cheezein access nahi
karta.
• Non-static: Object-speci c cheezon ke liye, unique instance
data chahiye ho toh use karo, hamesha object se call hoga.
• Interview me static vs non-static ka concept, code call syntax
aur memory allocation kabhi miss mat karo!
Ye difference samajhna classes/objects me kaam karte waqt must
hai, tabhi proper design aur bug-free code likh paoge.
Q30) explain access modi er in java ?

Java mein access modi ers ka use classes, variables, methods, aur
constructors ki visibility decide karne ke liye hota hai. Yani, kaun-
kaun se part code ke accessible hai, aur kis scope mein cheezein
visible hongi. Hinglish mein detailed explanation, saare types aur
code examples yahan diye gaye hain.

Types of Access Modi ers


1. Private

• Sirf apni class ke andar access ho sakte hain.


• Koi doosri class direct use nahi kar sakti, chahe wo same
package me ho ya nahi.
Example:
java
class Person {
private String name;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
Person p = new Person();
[Link]("Amit");
// [Link]([Link]); // Error: name is private
[Link]([Link]()); // Valid
fi
fi
fi
fi
}
}
Private se encapsulation ensure hota hai.

2. Default (No Keyword - Package Private)

• Jab koi modi er nahi use karte, toh default hota hai.
• Sirf same package ke andar code accessible hota hai. Outside
package, visible nahi hota.
Example:
java
class Demo {
int value = 10; // default
void show() { [Link](value); }
}
Yahan value aur show() method sirf iss package ke andar hi access
ho sakte hain, package ke bahar nahi.

3. Protected

• Same package ke andar toh accessible hain hi, plus child/


subclass mein chahe wo kisi bhi package mein ho.
• Inheritance mein useful hota hai.
Example:
java
class Parent {
protected int x = 100;
}
class Child extends Parent {
void showX() { [Link](x); } // Accessible here
}
Yahan subclass (chahe alag package mein ho) x ko access kar
sakta hai.

4. Public

• Sabse zyada open — kahin se bhi, kisi bhi class/package se


access ho sakta hai.
• Class, variable, method sab public ho sakte hain.
Example:
java
fi
public class Car {
public int speed;
public void drive() { [Link]("Driving!"); }
}
Car class, speed variable, drive method — sab kahin se bhi code
mein use ho sakte hain.

Hinglish Summary Table

Modi er Access Scope Example Syntax

private Sirf apni class ke andar private int x;

default Sirf apne package ke andar int y;

protected Same package + subclass (any protected int z;


package)
public Kahin se bhi, sab class/package public int a;

Key Points (Hinglish)

• Private: Complete encapsulation ke liye, sensitive data sirf


apni class mein rakho.
• Default: Package level sharing ke liye, teamwork/code
modularity ke liye.
• Protected: Inheritance mein parent-child sharing ke liye.
• Public: Global cheezein, jo har code mein zarurat ho sakti
hain.

Q31) difference between wait and sleep method ?

Java mein wait() aur sleep() methods dono threads ko temporarily pause karne ke
liye use hote hain, lekin inka kaam, location, aur behavior bilkul alag hai. Hinglish
mein, detail + examples niche diye gaye hain.

1. sleep() Method
fi
• Thread class ka static method hai: Directly [Link]() likh ke call kar
sakte ho.
• Kahan use hota?: Sirf current thread ko speci ed time (milliseconds) ke
liye pause karta hai, chahe synchronized block ho ya nahi.
• Lock/Monitor: Sleep karte waqt thread ka lock/reentrant monitor release
nahi hota. Dusre threads synchronized block mein nahi aa sakte.
• Resumption: Sleep khatam hote hi thread dubara runnable ho jata hai,
kisi aur thread ka noti cation nahi chahiye.
• Exception: Checked exception hai, isliye try-catch zaroori hai.
Code Example:

java
class Demo {
public static void main(String[] args) throws InterruptedException {
[Link]("Sleeping... " + [Link]());
[Link](2000); // 2 second sleep
[Link]("Awake! " + [Link]());
}
}
Yahan thread 2 seconds rukke r continue karega.

2. wait() Method
• Object class ka non-static method hai: Sirf object ke synchronized block/
method ke andar se hi call kar sakte ho.
• Kahan use hota?: Inter-thread communication ke liye—ek thread dusre ki
noti cation ka wait karta hai.
• Lock/Monitor: Wait call karte hi thread apna lock release kar deta hai, taki
dusre threads synchronized block ko enter kar sakein.
• Resumption: Wait se bahar only tab aayega jab notify()/notifyAll() kisi
dusre thread se call ho (ya time-out ho).
• Exception: Checked exception hai.
Code Example:

java
class Demo {
public static void main(String[] args) throws InterruptedException {
nal Object obj = new Object();
Thread t = new Thread(() -> {
synchronized(obj) {
try {
[Link]("Thread waiting...");
[Link]();
[Link]("Thread resumes!");
} catch (InterruptedException e) {}
}
});
[Link]();
fi
fi
fi
fi
fi
[Link](2000); // Give above thread a little time to start and wait
synchronized(obj) {
[Link](); // Notify the waiting thread
}
}
}
Yahan ek thread wait karega, dusra thread usko notify karke resume karega.

Di erence Table (Hinglish)


Feature sleep() wait()
Class Thread (static) Object (non-
static)
Synchronized? Zaruri nahi Zaruri hai (sirf
synchronized
me chalega)
Lock release? Nahi, lock hold Haan, lock
karta hai release karta
hai
Resume kaise? Time complete notify()/
hone par notifyAll() call
hone par
Inter-thread Nahi Haan
Comm?
Exception InterruptedExc InterruptedExc
eption eption
(checked) (checked)
Hinglish Short Points
• sleep(): Rukna hai thread ko thodi der ke liye, koi communication nahi,
lock bhi nahi chhodega.
• wait(): Inter-thread communication chahiye toh, monitor chhod ke dusron
ko chance milta hai, aur notify ke through wapas chalu hota hai.
• Interview question hai—kabhi mix mat karna!
Use sleep() for simple delays, wait() for thread coordination/synchronization.

Q32) explain try with resources ?

Java mein try-with-resources ek special try block hai jo resource (jaise le, stream,
socket, database connection) ko automatically close kar deta hai, bina aapko
nally mein manually close likhna padhe. Ye feature Java 7+ mein aaya, aur
resource leak (memory issues, open les) avoid karne ke liye use hota hai. Hinglish
mein full explanation, real code, aur key points yahan diye gaye hain.
fi
ff
fi
fi
Try-with-Resources — Concept
• Resource matlab koi aisa object jo system resource use karta ho ( le,
stream, socket…) aur jisko close karna zaruri hota hai.
• Mechanism: Agar resource (like FileInputStream, Bu eredReader, etc.)
AutoCloseable interface implement karta hai, toh JVM try block ke end par
automatically close() method call kar deti hai.
• Purpose: Resource leak se bachna; clean aur safe code likhna.

Syntax & Basic Code Example

java
import [Link].*;

public class Demo {


public static void main(String[] args) {
try (FileReader fr = new FileReader("[Link]");
Bu eredReader br = new Bu eredReader(fr)) {
String line;
while ((line = [Link]()) != null) {
[Link](line);
}
} catch (IOException e) {
[Link]("Error reading le");
}
// Yahan fr aur br automatically close ho jate hain, chahe error aaye ya nahi
}
}
Yahan do resources declare kiye hain, sab close ho jayenge sequence ke reverse
order mein.

Multiple Resources Example

java
try (Scanner scanner = new Scanner(new File("[Link]"));
PrintWriter writer = new PrintWriter(new File("[Link]"))) {
while ([Link]()) {
[Link]([Link]());
}
}
// Dono resources — scanner, writer — automatically close ho jayenge, koi memory
leak nahi[web:338][web:345].

Key Points
• AutoCloseable required: Sirf wahi class resource ban sakti hai jo
AutoCloseable implement karti ho (like InputStream, OutputStream, Reader, Writer,
Scanner, Connection etc.).
ff
ff
fi
ff
fi
• No need for nally: Manual [Link]() likhne ki zarurat nahi, JVM
handle karta hai.
• Exception handling: Agar exception aaye toh bhi resource close ho
jayega.
• Multiple resources: Semicolon (;) se resources declare karein, sab
automatically close ho jayenge reverse order mein.
• Java 9 se: Resource ko try ke bahar bhi declare karke block ke andar
refer kar sakte hain.

Hinglish Table Summary


Feature Kaam kya Example
karta hai? Code Part
Resource File/Stream/ FileInputStrea
Sockets that m s = ...
must be
closed
Placement Try block ke try ( s = ...)
bracket () mein { ... }
Close hota Hamesha, auto [Link]() JVM
hai? —chahe karta hai
exception ho
ya nahi
Multiple Declare with try (r1; r2)
resource? semicolon, sab { ... }
close hote hain
Interface Must InputStream,
condition implement Bu eredReade
AutoCloseable r etc.
/Closeable
Hinglish Interview Tips
• Ye feature best hai resource ko safe handle karne ke liye, less code aur
zero leak!
• Ye nally block se better hai, practical life mein hamesha try-with-
resources use karo.
• Files, DB, network resource — sab try-with-resources mein dalein.
• Coding interview mein example code, concept, aur multiple resources ka
close order zarur batao!
Try-with-resources production code ka best practice hai—simple, automatic, safe!

Q33) explain constructor and its type ?

Java mein constructor ek special method hota hai jo object create hote hi run hota
hai, aur object ki initial state set karta hai (jaise variables ko value dena).
Constructor ka naam class ke naam jaisa hota hai, koi return type nahi hota, aur ye
fi
ff
fi
fi
fi
automatic call ho jaata hai jab bhi new keyword se object banta hai. Hinglish mein,
concept, types, aur har ek ka code example niche diya gaya hai.

Constructor Basics (Hinglish)


• Constructor ka naam class ke naam jaisa hota hai.
• Koi return type nahi hota (void bhi nahi).
• Auto-call hota hai jab object banta hai.
• Mainly object ki initialization customize karte hain.
Example:

java
class Student {
int roll;
String name;
// Constructor
Student() {
[Link]("Constructor called!");
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student(); // "Constructor called!" print hoga
}
}

Types of Constructors
1. Default Constructor
• Ye tab call hota hai jab aap khud koi constructor nahi likhte—compiler
apne aap bana deta hai (no-arg, khali body).
• Object ke variables ko default value deta hai.
Example:

java
class Car {
String model;
// Koi constructor de ne nahi kiya
}
public class Test {
public static void main(String[] args) {
Car c = new Car(); // Default constructor call
[Link]([Link]); // null
}
}

2. No-Arg (No-Parameter) Constructor


• Isko khud likhna padta hai, parameters nahi hote.
• Custom initialization code likh sakte ho.
Example:
fi
java
class Car {
String model;
Car() { // No-arg constructor
model = "Default";
}
}

3. Parameterized Constructor
• Isme arguments hote hain, object create karte waqt custom values de
sakte hain.
• Flexible initialization ke liye use hota hai.
Example:

java
class Car {
String model;
int year;
Car(String m, int y) { // Parameterized constructor
model = m;
year = y;
}
}
public class Test {
public static void main(String[] args) {
Car c = new Car("Swift", 2020);
[Link]([Link] + " " + [Link]); // Swift 2020
}
}

4. Copy Constructor (Manually Implemented)


• Java built-in copy constructor nahi deta, lekin bana sakte hain: ek object
se doosra object ka state copy karne ke liye.
• Isko mostly manually implement karte hain.
Example:

java
class Car {
String model;
Car(Car c) { // Copy constructor
[Link] = [Link];
}
}
public class Test {
public static void main(String[] args) {
Car c1 = new Car();
[Link] = "Creta";
Car c2 = new Car(c1);
[Link]([Link]); // Creta
}
}

Hinglish Summary Table


Type Description/ Example
Usage Syntax
Default Auto banaata Car() {} (agar
compiler, no de ne nahi
params kiya)
No-arg Khud de ne Car() { model
kar sakte ho, = "a"; }
no params
Parameterized Custom values Car(String m,
initialize karna int y) { ... }
Copy Ek object ko Car(Car c) { ...
doosra object }
banana
Extra Hinglish Points
• Constructor overload kar sakte ho (ek class me multiple alag-alag
signatures).
• Constructor chaining: Ek constructor dusre ko call kar sakta hai
using this().
• Java mein constructor inherit nahi hote, par subclass pehle super()
parent ka constructor call karta hai.
• Constructor ke bina object create nahi ho sakta—it mandatory hota hai.

Q34) di erence between stringBu er and stringBuilder ?

Java mein StringBu er aur StringBuilder dono mutable classes hain, yani inmein jo
value hoti hai, usko bina naya object banaye modify kar sakte ho. Lekin in dono ka
main di erence unka synchronization, performance aur use-case hai. Hinglish mein
detail, example aur important points niche milenge.

StringBu er
• Thread-Safe: StringBu er ka har method synchronized hota hai, matlab
multiple threads jab ek object pe kaam karte hain, toh data corrupt nahi hoga.
• Performance: Thoda slower hota hai kyunki synchronization ka overhead
rehta hai.
• Use-case: Jab application multi-threaded hai, ya ek hi string ko multiple
threads modify kar rahe hain (banking, server requests etc).
fi
ff
ff
fi
ff
ff
ff
ff
• Introduced in: Java 1.0.
Code Example:

java
public class Demo {
public static void main(String[] args) {
StringBu er sb = new StringBu er("Hello");
[Link](" World");
[Link](5, " Java");
[Link]();
[Link](sb); // Output: dlroW avaJ olleH
}
}
Yahan sb ko modify kar rahe hain, naya object nahi bana.

StringBuilder
• Not Thread-Safe: Iske methods synchronized nahi hote, toh agar ek hi
object multiple threads se access ho toh data corrupt ho sakta hai.
• Performance: Zyada fast hota hai (single-threaded applications mein).
Synchronization nahin hone ki wajah se speed zyada hai.
• Use-case: Jab string manipulation sirf ek thread mein ho (interview code,
utility, string parsing etc).
• Introduced in: Java 1.5.
Code Example:

java
public class Demo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
[Link](" World");
[Link](5, " Java");
[Link]();
[Link](sb); // Output: dlroW avaJ olleH
}
}
Same methods hain, bas thread safety nahi hai.

Di erence Table (Hinglish)


Feature StringBu er StringBuilder
Mutability Mutable Mutable
Thread Safety Synchronized Not
(thread-safe) synchronized
(not thread-
safe)
Performance Slow (sync Fast (no sync)
overhead)
ff
ff
ff
ff
Use-case Multi-threaded Single-
app threaded app
Introduced Java 1.0 Java 1.5
Methods append, insert, append, insert,
delete, reverse, delete, reverse,
etc. etc.
Hinglish Key Points
• StringBu er: Jab safety chahiye multi-threaded work mein, thoda slow
par secure.
• StringBuilder: Jab speed chahiye aur thread ka koi issue nahi, tab use
karo—common coding problems ya single-threaded environment mein best hai.
• Dono ke methods mostly same hain (append, insert, reverse, delete).
• Interview mein di erence, performance reason aur kab kaunsa use karna
hai—ye clear samjhana zaruri hai.
Summary: Mutable string manipulation ke liye StringBu er ya StringBuilder use
karo; multiple threads ho toh StringBu er, nahi toh StringBuilder.

Q35) what is thread syncronization ?

Java mein synchronization ek important concept hai jo multiple threads ke beech


resource sharing ko control karta hai. Iska istemal tab hota hai jab multiple threads
ek shared resource (jaise le, database, variable) par simultaneously kaam kar rahe
hote hain. Agar synchronization na ho, toh data corruption, inconsistent results ya
race conditions ho sakte hain. Hinglish mein, synchronization ka poora concept,
code aur examples saath meine explain karta hoon.

Synchronization ka Concept
• Basic Point: Ek waqt me sirf ek thread hi shared resource access kare,
dusre thread ko wait karna pade.
• Lock/Monitor: Java objects ke saath ek lock hoti hai — jo thread ko lock
acquire karna padta hai, taaki koi dusra thread tab tak access na kar sake.
• Use Cases: Banking transactions, ticket booking, inventory updates,
shared le access, etc.

Synchronization Methods & Blocks


1. Synchronized Method
• Pure method ko sync karne ke liye synchronized keyword lagate hain.
• Object lock ke upar lock lagta hai, toh sirf ek thread hi method ke andar
rahega.
Example:

java
class Book {
int total = 10;
fi
ff
fi
ff
ff
ff
public synchronized void bookTicket() {
if (total > 0) {
[Link]("Booking ticket, remaining: " + (--total));
} else {
[Link]("No tickets left");
}
}
}
public class Test {
public static void main(String[] args) {
Book b = new Book();
Thread t1 = new Thread(() -> { for(int i=0; i<5; i++) [Link](); });
Thread t2 = new Thread(() -> { for(int i=0; i<5; i++) [Link](); });
[Link](); [Link]();
}
}
Yahan dono thread synchronized method ko access karte hain, ek ek karke.

2. Synchronized Block
• Sirf shared resource ke chakkar mein lock lagate hain.
• Object ya class ke lock se resource ko protect karte hain.
Example:

java
class Ticket {
int tickets = 5;
Object lock = new Object();

public void buy() {


synchronized(lock) {
if(tickets > 0) {
[Link]("Ticket bought, Remaining: " + (--tickets));
} else {
[Link]("No tickets");
}
}
}
}
Note: Isme lock object speci ed hota hai.

Why Synchronize?
• Race Conditions: Jab multiple threads same data modify karne ki
koshish karte hain.
• Data Integrity: Sahi result ke liye resource ko lock karna jaruri hai.
• Data Loss: Multiple thread simultaneously update kar rahe hain toh data
corrupt ho sakta hai.
fi
Example - Ticket Booking System

java
class TicketBooking {
private int availableTickets = 10;

public synchronized void bookTickets(int num) {


if (availableTickets >= num) {
availableTickets -= num;
[Link]("Booked " + num + ", Remaining: " + availableTickets);
} else {
[Link]("Not enough tickets!");
}
}
}

public class Main {


public static void main(String[] args) {
TicketBooking booking = new TicketBooking();
Thread t1 = new Thread(() -> { for (int i=0; i<5; i++) [Link](1); });
Thread t2 = new Thread(() -> { for (int i=0; i<5; i++) [Link](2); });
[Link](); [Link]();
}
}
Yahan dono thread safe tarike se shared resource ko access karte hain—sync ke
bina galat result aate.

Summary (Hinglish)
• Synchronization ka matlab: sirf ek thread hi shared resource ko access
kare, doosra wait kare.
• Methods: Synchronized method ya synchronized block.
• Use: Data race, corruption rokne ke liye, jaise money transfer, ticket
booking.
• Thread safety achieved karne ke liye bahut zaruri hai inka sahi use.

Interview ke liye Tips


• Real example ke sath batana, jaise ticket booking, bank transaction, etc.
• Kya lock object use hota hai, lock kis resource pe lagate hain.
• Static methods me static lock lagte hain.
• In-depth understanding se bahut aasan hota hai answer dena.
Ye understanding aapko interview me con dence se explain karna chahiye, Thread
synchronization ko achche se grasp karna coding ke sath!

Q36) how can you di erentiate between composition and aggregation ?


ff
fi
Java mein Composition aur Aggregation dono hi classes ke beech
"Has-A" relationship ko represent karte hain lekin inke beech kaa
fundamental differences hote hain. Hinglish mein, dono concepts ko
detail mein, examples ke saath samjhata hoon.

Aggregation

• Kya hai?: Weak association hai jisme ek class doosri class ka


reference rakhti hai, par dono independent hote hain.
• Lifecycles: Aggregated object ka apna lifecycle hota hai,
parent ke destroy hone pe woh object exist kar sakta hai.
• Relation: Unidirectional ya bidirectional dono ho sakta hai,
lekin dono objects alag exist karte hain.
• Example: Department has students, lekin student department
ke bina bhi exist kar sakta hai.
Code Example:
java
class Student {
String name;
Student(String name) { [Link] = name; }
}

class Department {
String name;
List<Student> students; // Aggregation (reference)
Department(String name, List<Student> students) {
[Link] = name;
[Link] = students;
}
}
Yahan department students ka reference rakhta hai, lekin students
khud se exist kar sakte hain.

Composition

• Kya hai?: Strong association hai jisme ek class doosri class ko


own karti hai, dono ka lifecycle tightly coupled hota hai.
• Lifecycles: Parent object destroy hone par sab child objects
bhi destroy ho jaate hain.
• Relation: Part-of relationship, exclusive ownership.
fi
• Example: House has rooms, Rooms bina house ke exist nahi
kar sakte.
Code Example:
java
class Room {
String name;
Room(String name) { [Link] = name; }
}

class House {
private List<Room> rooms;

House() {
rooms = new ArrayList<>();
[Link](new Room("Living Room"));
[Link](new Room("Bedroom"));
}
}
Yahan House apne Rooms ko create karta hai aur unka ownership
rakhta hai; house ke bina rooms nahi exist kar sakte.

Differences Table (Hinglish)

Feature Aggregation Composition

Relationship Weak association Strong association (part-of


type relation)
Lifecycle Independent (child object Dependent (child destroyed
survive karta hai) when parent destroyed)
Ownership Child independent of Parent owns child
parent
Representati Open diamond Filled diamond
on (UML)
Example Department and Students House and Rooms

Key Points (Hinglish)

• Aggregation mein objects loosely coupled hote hain,


composition mein tightly.
• Composition ek exclusive ownership deta hai, aggregation
nahi.
• Interview mein UML symbols, real-world examples aur lifecycle
explanations clear hona chahiye.
• Concept programming design ke samajhne ke liye important
hai, especially large applications ke architecture mein.
Summary: Aggregation mein ownership shared ya weak hoti hai;
composition mein ownership strict aur dependent hoti hai—ye dono
"Has-A" relationships ke forms hain

Q38) is it possible to create custom functional interface in java8 ?

Java 8 mein custom functional interface create karna possible


hai. Functional interface wo interface hota hai jisme sirf ek
abstract method hota hai. Lambda expressions ke saath use
karke aap concise aur readable code likh sakte hain. Hinglish
mein explanation, syntax, aur code example niche diya gaya
hai.

Custom Functional Interface Kya Hai?


• Ek aisa interface jisme exactly ek abstract method hota hai.
• Isko lambda expression ke saath implement kar sakte ho.
• Functional interface ko de ne karne ke liye
optional @FunctionalInterface annotation use kar sakte hain, jo compiler ko bhi
check karwata hai ki sirf ek abstract method ho.

Syntax

java
@FunctionalInterface
interface CustomInterface {
void display();
}

Custom Functional Interface Example

java
@FunctionalInterface
interface Calculator {
fi
int operation(int a, int b);
}

public class Test {


public static void main(String[] args) {
Calculator add = (x, y) -> x + y;
Calculator multiply = (x, y) -> x * y;

[Link]("Addition: " + [Link](5, 3)); // 8


[Link]("Multiplication: " + [Link](5, 3)); // 15
}
}
Yahan Calculator ek custom functional interface hai jisme ek
method operation hai jo do integers leta hai aur integer return
karta hai. Lambda expressions ke through alag-alag
implementation diye hain.

Key Points
• Functional interface mein default ya static methods ho sakte hain, lekin
sirf ek abstract method hona chahiye.
• @FunctionalInterface annotation optional hai, lekin use karna
recommended hai taaki compiler check kar sake.
• Lambda expressions ke saath functional interfaces concise aur clean
code likhne mein madad karte hain.
• Aap apni need ke hisaab se custom functional interfaces bana kar
reusability badha sakte hain.

Hinglish Summary Table


Feature Explanation Code
Example
Functional Interface with @FunctionalIn
Interface single abstract terface
method interface X
Abstract Exactly one void method();
Method method
Lambda Lambda (a,b) -> a+b
Implementatio expression se
n implement
hota hai
Annotation @FunctionalIn Compiler
Optional terface lagana check karta hai
recommended
Custom functional interface Java 8 ke lambdas ke sath
functional programming ko easy aur powerful banata hai,
interview mein ye concept bahut important hai
Q39) what is singleton class ?

Java mein Singleton Class ek design pattern hai jo ye ensure karta hai ki us class
ka sirf ek hi object (instance) create ho aur puri application mein wohi object reuse
ho. Iska matlab ye hai ki aap har jagah usi ek instance ko access karoge, new
object create nahi karoge. Yeh pattern mostly resource control, caching, logger ya
con guration purpose ke liye use hota hai. Hinglish mein pure concept, types of
singleton creation, aur code example niche hai.

Singleton Class ke Features


• Class ka constructor private hota hai taaki koi dusra object directly na
bana sake.
• Class ke paas apna ek static instance hota hai jise public static method
se access kiya jata hai (usually getInstance() method).
• Ye object lazy ya eager initialize ho sakta hai.

1. Eager Initialization (Object jaldi banega)


• Instance class ke load hote hi create ho jayega.
• Thread-safe hai kyunki pehle se instance bana hota hai.
Code Example:

java
public class EagerSingleton {
private static nal EagerSingleton instance = new EagerSingleton();
private EagerSingleton() {} // private constructor

public static EagerSingleton getInstance() {


return instance;
}
}

2. Lazy Initialization (Jab zarurat ho tab object banega)


• Instance rst call pe create hota hai.
• Thread-safe nahi by default, multi-threading mein problem aa sakti hai.
Code Example:

java
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {}
fi
fi
fi
public static LazySingleton getInstance() {
if(instance == null) {
instance = new LazySingleton();
}
return instance;
}
}

3. Thread-safe Singleton (Synchronized method)


• Lazy initialization ka thread-safe version.
• synchronized keyword lagake thread safety laate hain, lekin
performance slightly slow hoti hai.
Code Example:

java
public class ThreadSafeSingleton {
private static ThreadSafeSingleton instance;
private ThreadSafeSingleton() {}

public static synchronized ThreadSafeSingleton getInstance() {


if(instance == null) {
instance = new ThreadSafeSingleton();
}
return instance;
}
}

4. Bill Pugh Singleton (Recommended approach)


• Uses static inner helper class for thread safety aur lazy loading.
• Best and fast approach maana jata hai Java mein.
Code Example:

java
public class BillPughSingleton {
private BillPughSingleton() {}

private static class SingletonHelper {


private static nal BillPughSingleton INSTANCE = new BillPughSingleton();
}

public static BillPughSingleton getInstance() {


return [Link];
}
}

Hinglish Key Points


fi
• Singleton se ensure hota hai ki ek hi object har jagah chala, jaise logging
ya con guration.
• Apka constructor private hona chahiye taaki new instances na bane.
• Object static method se return hota hai jo instance create ya return karta
hai.
• Thread safety important hai multi-threading environment ke liye.
• Bill Pugh approach sabse best hai thread-safe lazy initialization ke liye.
• Interview mein singleton pattern ke pros, cons, aur implementation
zaroor discuss karo.

Summary Table
Feature Eager Lazy Thread-safe Bill Pugh
Singleton Singleton Singleton Singleton
Instance Class loading First request First request Lazy + thread
Creation pe pe pe (sync) safe (static
inner class)
Thread Safety Haan Nahi Haan Haan
Performance Fast Fast Thoda slow Fast
Complexity Simple Simple Simple Modern best
practice
Singleton design pattern Java mein commonly use hota hai for controlled object
creation and resource management
fi
Q1) Types of inheritance java support ?

ava mein inheritance ek aisa concept hai jisme ek class (child/subclass) doosri
class (parent/superclass) ke features ko inherit karti hai. Isse code reusability,
maintainability, aur OOP structure improve hota hai. Java mainly teen types ke
inheritance support karta hai (class ke through): Single, Multilevel,
aur Hierarchical. Multiple inheritance classes ke case mein direct support nahi hai,
lekin interfaces se achieve kiya ja sakta hai. Hinglish mein sab kuch with code
yahan diya gaya hai.

1. Single Inheritance
• Ek subclass ek hi superclass se inherit karta hai.
• Sabse common aur basic form hai.
• Example: Dog extends Animal
Code Example:

java
class Animal {
void eat() { [Link]("Eating..."); }
}

class Dog extends Animal {


void bark() { [Link]("Barking..."); }
}

public class Demo {


public static void main(String[] args) {
Dog d = new Dog();
[Link](); // Animal class ka method
[Link](); // Dog class ka method
}
}

2. Multilevel Inheritance
• Ek class doosri class se inherit karti hai, aur usse aage ek aur class
inherit karti hai (direct lineage).
• Example: Labrador extends Dog extends Animal
Code Example:

java
class Animal {
void eat() { [Link]("Eating..."); }
}
class Dog extends Animal {
void bark() { [Link]("Barking..."); }
}
class Labrador extends Dog {
void play() { [Link]("Playing..."); }
}

public class Demo {


public static void main(String[] args) {
Labrador l = new Labrador();
[Link](); // Animal ka
[Link](); // Dog ka
[Link](); // Labrador ka
}
}

3. Hierarchical Inheritance
• Ek parent class ko multiple child classes inherit karte hain (tree structure).
• Example: Animal ko Dog, Cat, Cow inherit karte hain.
Code Example:

java
class Animal {
void eat() { [Link]("Eating..."); }
}
class Dog extends Animal {
void bark() { [Link]("Barking..."); }
}
class Cat extends Animal {
void meow() { [Link]("Meowing..."); }
}

public class Demo {


public static void main(String[] args) {
Dog d = new Dog();
Cat c = new Cat();
[Link](); [Link]();
[Link](); [Link]();
}
}

4. Multiple Inheritance (Interfaces se)


• Ek class ek se zyada interfaces implement kar sakti hai, classes ke case
mein direct multiple inheritance Java mein allowed nahi hai.
Code Example:
java
interface A { void showA(); }
interface B { void showB(); }

class C implements A, B {
public void showA() { [Link]("A"); }
public void showB() { [Link]("B"); }
}

public class Demo {


public static void main(String[] args) {
C obj = new C();
[Link](); [Link]();
}
}
Yahan C class do interfaces ka feature le rahi hai, lekin two classes ko extend nahi
karti.

5. Hybrid Inheritance (Combination)


• Combination of single, multilevel, and hierarchical inheritance. Java
classes directly hybrid inheritance support nahi karti, but interfaces se ban sakta
hai.

Hinglish Summary Table


Type Description Example
Syntax
Single Ek class ek class B
parent se extends A {}
inherit karta
hai
Multilevel Parent-child- C extends B;
grandchild ek B extends A;
chain mein
hote hain
Hierarchical Ek parent se class B
multiple child extends A;
class C
extends A;
Multiple Ek class do Only via
parent class se interface: clas
inherit kare sD
(not implements A,
supported!) B {}
Hybrid Combination Not directly
of above supported in
(interface class, but
based) possible via
interfaces
Key Points (Hinglish)
• Java me multiple inheritance (class ke through) nahi hoti — diamond
problem avoid hoti hai!
• Interface se multiple inheritance aur hybrid structure create ho sakta hai.
• Maximum code reusability, minimum error, aur OOP ki best practices
inheritance se hoti hain.
• Interview mein types, examples, aur class vs interface di erence sab
zarur samjhao.
Java inheritance ka use, design aur limitations clear hone chahiye for strong
fundamentals.

Q2) Explain java8 features ?

Java 8 mein kai revolutionary features aaye hain jisse coding


functional, modern aur fast ho gayi hai. Hinglish mein, har
major feature ko simple language aur practical point ke saath
samjhaaya gaya hai.

1. Lambda Expressions
• Kya hai?: Anonymous function ya method, bina naam ke — concise aur
short code likhne ke liye.
• Kyuse hota hai?: Functional interface ke liye function pass kar sakte ho,
event handling, collection processing, etc.
• Syntax Example:

java
Runnable r = () -> [Link]("Hello Java 8");
• [Link]();

Yahan Runnable ka implementation one-liner mein ho gaya.


ff
2. Functional Interfaces
• Kya hai?: Interface jisme ek hi abstract method ho (default/static
allowed).
• Kyuse hota hai?: Lambda aur method references ke target ke liye, Java 8
mein prede ned bhi kaa hain (Predicate, Function, Consumer, Supplier).
• Syntax Example:

java
@FunctionalInterface
• interface MyFunc { void show(); }
• MyFunc mf = () -> [Link]("Custom Functional Interface");
• [Link]();

Isse lambda use kar sakte ho.

3. Method References
• Kya hai?: Existing method ko reference ke through use karna, lambda ki
tarah concise code.
• Syntax Example:

java
Consumer<String> printer = [Link]::println;
• [Link]("Printed via Method Reference");

Static (Class::staticMethod) aur instance (obj::method) — dono possible.

4. Stream API
• Kya hai?: Collection pe functional style mein data process karne ka tarika
— lter, map, reduce, sort, collect, etc.
• Kyuse hota hai?: List, Set, Array ko pipeline style mein transform/process
karne ke liye.
• Example:

java
List<Integer> nums = [Link](2, 3, 5, 6, 7);
fi
fi
fi
• [Link](). lter(x -> x%2==0).map(x ->
x*x).forEach([Link]::println);

Yahan even number ka square print ho gaya.

5. Optional Class
• Kya hai?: NullPointerException bachane ke liye — value present hai ya
nahi safely check kar sakte ho.
• Kyuse hota hai?: Null safe programming, safer method returns, null
checks avoid karne ke liye.
• Example:

java
Optional<String> name = [Link](null);
• [Link]([Link]()); // false
• [Link]([Link]("Default")); // Default

Yahan agar value nahi hai toh default safely mil jaata hai.

6. Default & Static Methods in Interfaces


• Kya hai?: Interface ke andar ab method ka body bhi rakh sakte ho
(default/static), backward compatibility aur enhancement ke liye.
• Example:

java
interface Greeting {
• default void hello() { [Link]("Hello from default!"); }
• static void staticMethod() { [Link]("Static hello!"); }
• }

Implementation class default/static dono call kar sakti hai.


fi
7. New Date & Time API
• Kya hai?: Old Date/Calendar ki complexity door karne ke liye modern,
immutable classes (LocalDate, LocalTime, LocalDateTime, Period, Duration, etc.).
• Kyuse hota hai?: Cleaner, bug-free date/time calculations.
• Example:

java
LocalDate today = [Link]();
• LocalDate birthday = [Link](2000, 05, 22);
• Period age = [Link](birthday, today);
• [Link]("Age: " + [Link]());

Zyada readable aur predictable API milta hai.

8. Other Features
• Base64 Encoding/Decoding: Data encryption/decryption ke liye direct
support.
• Parallel Streams: Large data ko multi-thread mein process kar sakte ho
for better performance.
• Nashorn JavaScript Engine: JavaScript directly Java app ke andar run
kar sakta hai.
• Files and Path API Updates: Files class mein nayi methods — create,
move, delete, copy ( lesystem work fast ho gaya).

Hinglish Table — Java 8 Major Features


Feature Description /
Example
Lambda Cleaner,
Expression anonymous
function, one-
line event/logic
Functional Single abstract
Interface method —
perfect for
lambdas
Method Existing
Reference method ko
lambda ki
tarah direct
use
fi
Stream API Functional
pipeline —
lter, map,
reduce, sort,
collect
Optional Class Null safe code,
no more
NullPointerExc
eption
Default/Static Interface mein
Interface code body bhi,
pehle sirf
abstract hota
tha
Date-Time API Modern,
immutable,
readable date/
time kaam
Parallel Stream Multi-core
processing,
faster large
data
operations
Key Points (Hinglish)
• Java 8 se code concise, modern aur functional ho gaya.
• Interview mein lambda, functional interface, stream API, and Optional —
sabse favorite topics hain.
• Code readability, maintainability aur error-free programming Java 8 ki
main achievement hai.
Java 8 ka har feature aapke coding ke experience ko next level
pe le jaata hai — must learn for any developer!

Q3) Can we have private variable in interface, which version of


java support ?

Java mein interface ke andar private variable banana possible nahi hai, chahe Java
ka koi bhi version ho. Interface ke andar variables hamesha public, static aur
nal (constants) hote hain by default. Matlab, agar aap variable declare karte ho to
vo public static nal hi mana jayega, aur private variable declare karne par
fi
fi
fi
compilation error aayega. Yeh cheez Java ke sabhi versions pe lagu hoti hai (Java
8, 9, 17, 21, etc.).

Private Methods Allowed, Variable Nahi


• Java 9 se private methods de ne kar sakte ho interface mein. Lekin
private variables nahi bana sakte.
• Private methods ka main purpose hai: default ya static methods ke andar
code reuse karna; implementing class ko yeh methods visible nahi hote.

Code Example (Variables)

java
interface DemoInterface {
// Valid - public static nal by default
int VALUE = 10;

// Not allowed - compilation error


// private int x = 20; // Error: Modi er 'private' not allowed here
}
Agar private variable likhne ki koshish karte ho, toh error milta hai. Sirf public static
nal members allowed hain.

Code Example (Private Method Java 9+)

java
interface MyInterface {
default void show() {
display(); // call private method inside interface
}
private void display() {
[Link]("This is a private method in interface!");
}
}

class Demo implements MyInterface {


public static void main(String[] args) {
MyInterface obj = new Demo();
[Link](); // "This is a private method in interface!" print hoga
}
}
Yahan private method interface ke andar hai, lekin private variable allowed nahi
hoga.

Hinglish Key Points


• Interface ke variables hamesha public static nal hote hain, chahe
explicitly na likho.
• Interface me private method Java 9 se possible hai, lekin private variable
bilkul allowed nahi.
fi
fi
fi
fi
fi
• Interview me yeh point kaa favorite hai—variables: constant hi ho sakte
hain, method: Java 9 ke baad hi private allowed hai.
• Interface ka design hi aisa hai ki sab implementation classes use kar
sakein, isliye state (variable/data) privatize nahi kar sakte.
Summary: Interface me private variable kabhi nahi bana sakte, sirf public static
nal (constants) hi hote hain. Private methods Java 9+ se allowed hain reusability
ke liye, lekin variables hamesha constants hi rahenge.

Q4) why java is static and OR default ?

Java 8 se interface mein default aur static methods ka concept introduce hua hai.
Dono ka kaam aur reason alag hai, lekin ek common goal hai: Java code ko
modern, backward compatible aur exible banana. Hinglish mein di erence,
reasons, aur code example yahan diya gaya hai.

1. Why default method?


• Purpose: Old interfaces mein new method add karna ho toh bina sab
existing implementing classes ko break kiye update kar sakte hain.
• Usage: Instance methods ke liye default behavior provide karta hai, class
override karna chahe toh kar sakti hai.
• Backward compatibility: Java 8 se interface mein default method add kar
doge toh purane implementers ka code bhi nahi todega, aur new code bhi chal
jaayega.
• Syntax:

java
interface Vehicle {
• default void honk() {
• [Link]("Beep!");
• }
• }

• class Car implements Vehicle {}

• public class Test {
• public static void main(String[] args) {
• Car c = new Car();
• [Link](); // Output: Beep!
• }
• }

fi
fl
fi
ff
Yahan implementing class ko kuch bhi override nahi karna pada, r bhi interface ka
default method mil gaya.

2. Why static method?


• Purpose: Utility/helper methods provide karne ke liye jo interface ke logic
se jude ho, lekin class instance se nahi (jaise Math class mein static methods).
• Usage: Interface name se directly call karte hain, implementing class ke
object se call nahi hota.
• Overriding: Static method ko implementing class override nahi kar sakti.
• Syntax:

java
interface Vehicle {
• static String getVehicleType() {
• return "Generic Vehicle";
• }
• }

• class Car implements Vehicle {}

• public class Test {
• public static void main(String[] args) {
• [Link]([Link]()); // Output: Generic
Vehicle
• // [Link](); // Error!
• }
• }

Yahan Vehicle ke static method ko direct interface ke naam se bulaya gaya.

Di erence Table (Hinglish)


Feature Default Static Method
Method
Call/Invocation Object Interface name
instance (class (not via class/
ka object) object)
Overriding Implementing Implementing
class override class override
kar sakti hai nahi kar sakti
ff
fi
Purpose Common logic, Helper/utility
backward logic,
compatibility functionality
grouping
Use Case Extend Interface
interface for scope utility
new logic functions
Key Points (Hinglish)
• Default method instance ke liye hota hai; static method class scope ya
utility ke liye hai.
• Default methods se Java 8 ne API break hone se bachaya; static
methods se modern utility patterns jot diye.
• Interview mein syntax, overriding rule, aur calling method clear batao —
confusion mat chhodo.
Java 8 ke ye dono features interface design aur coding ko next level pe le gaye —
functional programming ke liye bhi backbone hai!

Q5) How exception handled ? what will happen in basic ow ? di erent exception
starting from base class ? Hierarchy as well ?

Java mein exception handling ek mechanism hai jisse program errors (unexpected
conditions) ko handle karke program ko crash hone se bachaya ja sakta hai.
Exception handling try-catch- nally ow ke through kaam karta hai. Sabhi
exception classes ek base class (Throwable) ke niche aati hain, jiska ek
hierarchical structure hota hai. Hinglish mein, full ow, hierarchy, aur code example
niche diya gaya hai.

1. How Exception is Handled (Basic Flow)


• Step 1: Code mein agar koi exception ata hai toh JVM ek exception
object banata hai (error type, description, program ka state).
• Step 2: runtime system call stack me exception handler dhundhta hai
(try-catch block).
• Step 3: Agar handler mil gaya toh catch block execute hota hai. Nahi
mila toh default handler program ko terminate kar deta hai, stack trace print karta
hai.
• Step 4: Finally block hamesha execute hota hai, chahe exception aaye ya
na aaye (resource cleanup ke liye).
Code Example:

java
public class Demo {
public static void main(String[] args) {
try {
int a = 10/0; // ArithmeticException hoga
fi
fl
fl
fl
ff
[Link]("After exception"); // Ye line skip hogi
} catch(ArithmeticException e) {
[Link]("Exception handled: " + e);
} nally {
[Link]("Finally block always runs");
}
[Link]("Program continues...");
}
}
Output:

text
Exception handled: [Link]: / by zero
Finally block always runs
Program continues...

2. Exception Hierarchy & Base Class


• Sabse top par hai Throwable class (direct Object class ka subclass).
• Throwable ke do main branches hain:
• Error: System errors (OutOfMemoryError, StackOver owError) — recover
nahi hote.
• Exception: Application errors — handle kiye ja sakte hain.
• Checked Exception (Exception, not RuntimeException): Compile-time
par handle karna compulsory (IOException, SQLException).
• Unchecked Exception (RuntimeException): Handle optional, mostly
programmer mistakes (NullPointerException, ArithmeticException).
Hierarchy Chart (Simpli ed):

text
Object
└── Throwable
├── Error
└── Exception
├── RuntimeException (Unchecked)
└── Other Exceptions (Checked)
Common Exception Types:
• Checked: IOException, SQLException, ClassNotFoundException
• Unchecked: ArithmeticException, NullPointerException,
ArrayIndexOutOfBoundsException, IllegalArgumentException
• Error: OutOfMemoryError, StackOver owError, AssertionError

3. Try-Catch-Finally Flow
• try: Risky code yahan likhte hain.
• catch: Exception handle karne ke liye.
• nally: Resource cleanup — hamesha chalega.
Example with multiple catch:

java
fi
fi
fi
fl
fl
try {
String s = null;
[Link]([Link]()); // NullPointerException
} catch(NullPointerException e) {
[Link]("Null object accessed!");
} catch(Exception e) {
[Link]("General exception: " + e);
} nally {
[Link]("Cleanup done!");
}

Hinglish Summary Table


Class/Branch Description Example
Exception
Throwable All exceptions -
(base) & errors ka
parent
Error System issues, OutOfMemory
JVM problems Error,
StackOver ow
Error
Exception Action errors, IOException,
can be SQLException
handled
RuntimeExcept Programmer NullPointerExc
ion mistakes, eption,
unchecked ArithmeticExce
ption
Checked Compile-time, FileNotFoundE
Exception must handle xception
Unchecked Runtime only, ArrayIndexOut
Exception may skip OfBoundsExce
ption
Key Points (Hinglish)
• Exception ow: Try → Exception → Handler (catch) → Cleanup ( nally)
• Throwable ka hierarchy zarur yaad rakho, interview point-of-view se
important hai.
• Custom exceptions bana sakte ho by extending Exception.
• Exception handle na karo toh JVM program ko crash kar sakta hai aur
stack trace print karta hai.
Java exception handling robust hai — sahi se handle karo toh application crash
hone se bacha rahegi!.

Q6) Explain abstract class ?


fi
fl
fl
fi
Java mein abstract class ek aisi class hai jiska object direct
nahi bana sakte—ye blueprint ya base class ki tarah kaam karti
hai, jisme kuch methods ka implementation hota hai, aur kuch
methods abstract hote hain jo subclasses ko de ne karne hote
hain. Iska main purpose code reuse, common behavior dena,
aur partially abstraction dena hai. Hinglish mein detail aur full
code example yahan diya gaya hai.

Abstract Class Basics


• Declare karna: abstract keyword se class ko announce karte hain.
• Use-case: Jaise vehicle, shape, employee, animal—jinke kuch common
features hotay hain.
• Object Creation: Direct object nahi bana sakte, subclass bana ke object
create karna padta hai.
• Methods: Abstract (no implementation) + Concrete (with implementation)
dono ho sakte hain.
• Variables: Final, non- nal, static, non-static allowed.
• Constructor: Abstract class mein constructor ho sakta hai, subclass ke
object creation pe call hota hai.

Example Code

java
// Abstract class Shape
abstract class Shape {
String name;
Shape(String name) {
[Link] = name;
}
// Concrete method
public void showName() {
[Link]("Shape name: " + name);
}
// Abstract methods
abstract double area();
abstract void draw();
}

// Subclass: Rectangle
class Rectangle extends Shape {
int length, width;
Rectangle(String name, int l, int w) {
super(name);
length = l; width = w;
fi
fi
}
double area() { return length * width; }
void draw() { [Link]("Rectangle drawn!"); }
}

// Subclass: Circle
class Circle extends Shape {
int radius; nal double pi = 3.14;
Circle(String name, int r) {
super(name);
radius = r;
}
double area() { return pi * radius * radius; }
void draw() { [Link]("Circle drawn!"); }
}

public class Demo {


public static void main(String[] args) {
Shape s1 = new Rectangle("Rect", 5, 3);
[Link](); [Link](); [Link]("Area: " + [Link]());

Shape s2 = new Circle("Cir", 2);


[Link](); [Link](); [Link]("Area: " + [Link]());
}
}
Yahan Shape abstract class hai, direct object nahi bana,
Rectangle/Circle bana ke use kiya.

Features Table (Hinglish)


Feature Description
Declaration abstract class,
abstract
method
allowed
Object Create Direct nahi,
karna subclass se
bana sakta hai
Method Type Abstract
(implementatio
n nahi),
Concrete
(implementatio
n hota hai)
fi
Variables nal, non- nal,
static, non-
static, sab
allowed
Constructor Ho sakta hai,
subclass
instantiate
hone par call
hota hai
Inheritance Subclass
banana aur
override karna
mandatory
Hinglish Key Points
• Abstract class ka object direct nahi bana sakte; base banate hain aur
subclass se banate hain.
• Common code aur partial abstraction, reusable implementation ke liye
best hoti hai.
• Jab kuch methods ka implementation common ho, aur kuch ko subclass
par chhodna ho, tab abstract class use karo.
• Interview mein abstract method, constructor, direct object creation, vs.
interface—ye points zaroor discuss karo.
Abstract class concept Java OOP ke backbone mein important
role play karta hai, proper use karna architecture ko strong
banata hai

Q7) What is nally block ? what cases did you use it ?

Java mein nally block ek special section hai jo exception handling (try-catch)
structure mein use hota hai. Iska main purpose hai — resource cleanup ya
guaranteed execution, chahe exception aaye ya na aaye, ya program ka ow kahi
pe break ho jaye. Hinglish mein detail explanation aur code sab kuch yahan hai.

What is Finally Block?


• De nition: Finally block wo code block hai jo try/catch block ke baad
likha jata hai aur hamesha execute hota hai (even agar exception aaye ya na aaye,
return ho ya break ho).
• Placement: Directly after try/catch blocks; zaruri nahi ki har try/catch ke
sath ho.
• Purpose: Resource cleanup, les/connections close karna, important
logic execute karna — jo hammesha chalna chahiye.
fi
fi
fi
fi
fi
fi
fl
Basic Syntax

java
try {
// risky code yahan likho
} catch(ExceptionType e) {
// exception handle karo
} nally {
// always execute hone wala code
}

Practical Use Cases


• Resource cleanup: File, stream, DB connection ko close karna — leak ya
lock nahi hone dena.
• Logging: Exception ke baad koi information log karni ho.
• UI update: User ko nal message dikhana ho, chahe success ho ya error
aaye.

Code Example 1 — Exception + Finally

java
public class FinallyExample {
public static void main(String[] args) {
try {
int data = 50 / 0; // ArithmeticException hoga
[Link]("Try block code");
} catch(ArithmeticException e) {
[Link]("Exception caught: " + e);
} nally {
[Link]("Finally block always executed");
}
[Link]("Program continues...");
}
}
Output:

text
Exception caught: [Link]: / by zero
Finally block always executed
Program continues...
Yahan nally block exception ke baad bhi mandatory execute hoga.

Code Example 2 — Only Try & Finally

java
public class FinallyOnlyTry {
fi
fi
fi
fi
public static void main(String[] args) {
try {
[Link]("Inside try block");
} nally {
[Link]("Finally block executed");
}
}
}
Yahan catch nahi hai, r bhi nally block chalega.

Code Example 3 — Resource Cleanup

java
import [Link].*;

public class FinallyResourceCleanup {


public static void main(String[] args) {
Bu eredReader reader = null;
try {
reader = new Bu eredReader(new FileReader("[Link]"));
String line = [Link]();
[Link](line);
} catch(IOException e) {
[Link]("Error: " + [Link]());
} nally {
try {
if(reader != null) [Link](); // Resource cleanup
} catch(IOException e) {
[Link]("Error closing reader: " + [Link]());
}
[Link]("Finally block executed");
}
}
}
Yahan le ko close karna guaranteed hai chahe exception aaye ya nahi.

Hinglish Points & Summary


• Always execute hota hai: Agar try block me koi exception aaye, na aaye,
catch ho ya na ho, return/break ho, nally chalega hi chalega.
• Resource cleanup: Sabse common use case; le/database/socket close
karna, memory management ya logs.
• Try with resources (Java 7+) ke baad nally ki need kam ho gayi hai
resource cleanup ke liye, lekin ab bhi dusre tasks ke liye use hota hai.
• Not executed: Agar JVM terminate ho jaye ([Link]()) ya fatal error ho
toh nally block skip ho sakta hai.
Hinglish Table
fi
fi
fi
fi
ff
fi
ff
fi
fi
fi
fi
Situation Finally
Execute
hoga?
Exception aayi Haan
Exception nahi Haan
aayi
Catch block Haan
skip ho gaya
Return Haan
statement hai
[Link]() Nahi hoga
ya fatal error
Interview mein nally ka concept, cleanup use-case, aur execution
guarantee zaroor strong rakhna.

Q8) sort objects in java based on % using streams ?

Java Streams ke through objects ko unke kisi speci c eld jaise "%", ya kisi bhi
numeric eld ke basis pe sort karna bahut easy hai. Hinglish mein clear
explanation aur code example deta hoon jisme objects ko "percentage" eld ke
basis pe sort karenge.

Stream API se Object Sorting


• Stream ka .sorted() method comparator leta hai.
• Comparator ke according objects ko sort karta hai.
• Hum lambda expression ya [Link]() ka use kar sakte
hain.

Example Problem: Student class with percentage eld

java
import [Link].*;
import [Link].*;

class Student {
String name;
double percentage;

Student(String name, double percentage) {


[Link] = name;
[Link] = percentage;
}
fi
fi
fi
fi
fi
fi
public double getPercentage() {
return percentage;
}

public String toString() {


return name + ": " + percentage + "%";
}
}

public class StreamSortExample {


public static void main(String[] args) {
List<Student> list = [Link](
new Student("Amit", 75.5),
new Student("Sumit", 82.3),
new Student("Mohit", 68.9),
new Student("Rohit", 90.0)
);

// Percentage ke basis pe ascending order mein sort karna


List<Student> sortedList = [Link]()
.sorted([Link](Student::getPercentage))
.collect([Link]());

[Link]("Sorted by percentage ascending:");


[Link]([Link]::println);

// Percentage ke basis pe descending order mein sort karna


List<Student> descSortedList = [Link]()
.sorted([Link](Student::getPercentage).reversed())
.collect([Link]());

[Link]("Sorted by percentage descending:");


[Link]([Link]::println);
}
}

Output

text
Sorted by percentage ascending:
Mohit: 68.9%
Amit: 75.5%
Sumit: 82.3%
Rohit: 90.0%

Sorted by percentage descending:


Rohit: 90.0%
Sumit: 82.3%
Amit: 75.5%
Mohit: 68.9%

Important Points (Hinglish):


• [Link]() numeric eld ke liye convenient hai.
• sorted() stream ko sorted order mein convert karta hai.
• reversed() se descending order milega.
• Streams se aap concise, readable aur e cient sorting kar sakte ho.
• Lambda expression ya method reference (Student::getPercentage)
dono use kar sakte ho.

Java streams se sorting ka yeh tareeka modern aur best practice maana jata hai,
especially large datasets ya functional programming ke liye.

Q9) explain memory leaks in java ?

Java mein memory leak tab hota hai jab program memory allocate karta hai par
usko wapas free nahi karta, jis wajah se memory gradually bhar jaata hai aur
eventually OutOfMemoryError throw hota hai. Java garbage collector automatic
memory free karta hai, lekin memory leak uss case mein hota hai jab object ka
reference unnecessarily maintain kiya jaata hai, isliye GC us object ko free nahi kar
pata. Hinglish mein pura concept, causes, aur example niche diya gaya hai.

Memory Leak in Java Kya Hai?


• Jab objects ke references program mein maintained ho jaate hain, magar
unki zarurat khatam ho chuki ho.
• Garbage collector un objects ko collect nahi kar pata kyunki wo still
reachable ya referenced hain.
• Isse JVM ka heap memory gradually ll ho jaata hai aur system slow ho
sakta hai ya crash kar sakta hai.

Common Memory Leak Causes


0. Static Field mein reference: Agar static variable mein objects reference
store ho jata hai aur kabhi clear nahi hota.
0. Listener/Caches: Listeners ya caches jab properly unregister ya clear
nahi hote.
0. Inner classes: Agar outer object reference inner class ke object mein
stored rahe.
0. Unclosed resources: Streams, database connections agar close nahi kiya
jaye.
0. Incorrect equals/hashCode implementation: Collections mein duplicate
keys create kar sakte hain jo memory leak kar sakte hain.

Simple Example Code


fi
ffi
fi
java
import [Link];
import [Link];

public class MemoryLeakDemo {


public static List<Object> list = new ArrayList<>();

public static void main(String[] args) {


while(true) {
Object obj = new Object();
[Link](obj); // List mein har baar naye object ka reference add ho raha hai
// Object kaam me nahi nahi hai, par reference list mein hai, toh GC free
nahi kar payega
}
}
}
Is example mein har baar ek naya object ban raha hai aur static list mein add ho
raha hai. Kyunki list mein reference hai, garbage collector ise nahi hata deta,
memory consume hoti rehti hai.

Memory Leak Detection Tools


• VisualVM
• Eclipse Memory Analyzer (MAT)
• Java Mission Control
• JConsole
Ye tools heap dump lekar pata lagate hain ki memory kaha block ho rahi hai.

Summary Table (Hinglish)


Aspect Explanation
Memory Leak Memory
allocate hona,
par free na
hona
Causing Factor Referenced
objects jo
unnecessary
hain
Java GC GC sirf
unreachable
objects ko
clean karta hai
Symptoms Slow
performance,
OutOfMemory
Error
Common Static
Causes references,
unclosed
streams,
collections
Fix Reference
release karo,
proper
resource close
Key Points (Hinglish)
• Java automatic garbage collector ke bawajood memory leak aa sakta hai
agar aap program mein references dhang se manage nahi karte.
• Static elds aur collections mein unnecessary object references sabse
common cause hain.
• Memory leak se performance crash ya OutOfMemoryError hota hai.
• Use tools to detect leaks and properly close resources.
• Interview mein ye concept achhi tarah explain karo, memory
management aur resource handling importance samjhao.
Java memory leak ek serious issue hai jo optimized code aur maintenance ke sath
avoid kiya ja sakta hai

Q10) elaborate on polymorphism and inheritance(Types as well) concept in java?

Java mein Polymorphism aur Inheritance object-oriented programming ke


fundamental concepts hain, jo code reuse, exibility, aur better structure banane
ke liye use hote hain. Hinglish mein inka Types ke saath, code
example aur details sab kuch explain kar raha hoon.

1. Inheritance kya hai?


• De nition: Ek class (child/subclass) doosri class (superclass) ke
properties aur methods inherit karti hai.
• "Is-A" Relationship: Agar class B class A se inherit karti hai, toh B "A" ka
ek specialized version hai.
• Purpose: Code reuse, existing code ko extend karna, aur maintainability.
Example:

java
class Animal {
void eat() {
[Link]("Animal eats food");
}
}
class Dog extends Animal {
void bark() {
fi
fi
fl
[Link]("Dog barks");
}
}
public class Test {
public static void main(String[] args) {
Dog d = new Dog();
[Link](); // Animal ke method
[Link](); // Dog ke method
}
}

2. Types of Inheritance (Java supported)


Type Explanation Code
Example
Single Ek subclass class Dog
Inheritance sirf ek extends
superclass se Animal
inherit karti hai.
Multilevel Ek class doosri Animal -> Dog
Inheritance class se inherit -> Puppy
karti hai, aur
phir usse aur
next class
inherit karti hai.
Hierarchical Ek parent class class Animal;
Inheritance ke multiple class Dog;
child classes. class Cat
Multiple Interfaces ke class C
Inheritance (via through implements A,
interfaces) multiple inherit B
kar sakte ho.
3. Polymorphism kya hai?
• De nition: Ek object multiple forms follow kar sakta hai. Same method
alag-alag classes mein di erent behavior dikhata hai.
• Static Polymorphism: Method overloading.
• Dynamic Polymorphism: Method overriding.
Example of Dynamic Polymorphism:

java
class Animal {
void sound() { [Link]("Animal makes sound"); }
}
class Dog extends Animal {
void sound() { [Link]("Dog barks"); }
}
class Cat extends Animal {
fi
ff
void sound() { [Link]("Cat meows"); }
}
public class Test {
public static void main(String[] args) {
Animal a1 = new Dog(); // Animal reference, Dog object
Animal a2 = new Cat(); // Animal reference, Cat object
[Link](); // Outputs: Dog barks
[Link](); // Outputs: Cat meows
}
}
Yahan same method sound() di erent objects ke liye alag function perform karta
hai.

4. Why and When Use Polymorphism & Inheritance?


• Code Reusability: Existing code se new classes bana lo.
• Flexibility: Runtime pe object ke type ke basis pe behavior change.
• Maintainability: Code change karna easy hai, sirf base class ya interface
ko update karo.

Summary (Hinglish):
Concept Explanation Example/Use
Case
Inheritance "Is-A" Animal -> Dog,
(Types) relationship, Animal -> Cat
code reuse,
extend existing
classes
Polymorphism Ek method sound() metho
(Types) alag classes d across
mein di erent Animal, Dog,
behavior, Cat classes
runtime
selection
Major use Code Abstracts
reusability, common
exibility, code behavior;
maintenance speci c
behavior
override
Final notes:
Inheritance se hum ek common base bana sakte hain, aur polymorphism se
runtime pe di erent behaviors perform kar sakte hain. Java mein ye dono core
pillars hain, ye samajh ke implementation karo toh code clean, scalable aur exible
banega.
Agar detailed example chahiye to speci c scenario batao, main uske hisaab se
code aur explanation de dunga!
fl
fi
ff
ff
ff
fi
fl
Q11) explain static and default method in interfaces ?

Java 8 se interface mein static aur default methods ke concepts introduce hue
hain. Ye dono methods interface mein add karne ki exibility provide karte hain, jo
pehle Java ke versions (Java 7 se pehle) mein sirf abstract methods (method
signatures) ki hi limitation thi. Hinglish mein inka explanation, purpose, aur code
examples ke sath sab kuch yahan hai.

1. Default Method
Kya hai?:
Default method ek aisa method hai jiska body interface ke andar hota hai. Isko
implement karne wale classes override kar sakti hain, par override na bhi karein
toh bhi default implementation chalega.
Use-case?:
Existing interfaces ko bina purane implementation ko torde naye features add
karne ke liye. Agar koi class default method ko override na kare toh bhi chal jata
hai.
Syntax:

java
interface Vehicle {
default void honk() {
[Link]("Beep from default honk");
}
}
class Car implements Vehicle {}

public class Test {


public static void main(String[] args) {
Car c = new Car();
[Link](); // Output: Beep from default honk
}
}
Note:
• Default method ko implement karne wali class override kar sakti hai.
• Ek interface me multiple default methods ho sakte hain, aur wo multiple
inheritances ko achhi tarah handle karte hain.

2. Static Method
Kya hai?:
Static method interface me bhi de ne kiya ja sakta hai. Ye class ke static methods
jaise hota hai, jise directly interface ke naam se call kiya jata hai. Iska koi override
nahi hota implementation class me.
Use-case?:
Utility functions ya helper methods jo ki shared code ho, jise multiple classes use
kar sake.
Syntax:
fi
fl
java
interface MathOperations {
static int add(int a, int b) {
return a + b;
}
}
public class Test {
public static void main(String[] args) {
[Link]([Link](10, 20)); // Output: 30
}
}
Note:
• Static methods interface ke andar hi de ne hoti hain, class me override
nahi hoti.
• Call karna bhi sirf [Link]() se hota hai.

Di erence Summary (Hinglish)


Feature Default Static Method
Method
Call Method Object ke Interface ke
through naam se
([Link] ([Link]
()) od())
Override / Override kar Override nahi
Override nahi sakte hain hoti, sirf ek
(custom utility method
behavior) hai
Purpose Naye feature Utility
add karna, functions,
backward helper
compatibility methods
Example default void static int add()
honk()
Key Points (Hinglish)
• Java 8 ke baad interface mein default aur static methods introduce hue.
• Default methods se existing interface ke behavior mein change na karte
hue naye features add kar sakte hain.
• Static methods interface ke scope ke andar hoti hain, class ke objects se
access specify nahi hoti.
• Ye features code reusability aur backward compatibility ke liye bahut
handy hain.

Sambandhit Linked Concepts


ff
fi
Java 8 se pehle sirf abstract methods aur static nal variables hi allowed the, lekin
ab default, static aur private methods bhi interface ke under add kiye ja sakte hain,
jisse Java exible aur modern ban gayi hai.

Conclusion
Interface me default methods object ke sath call hoti hain aur override ki ja sakti
hain; static methods interface ke static utility functions hoti hain, jinhe directly
interface ke naam se call kiya jata hai. Boris simple term me: Default = object ke
through, override ye kar sakti hai; Static = class-level, override nahi hoti.

Ye concept Java programming me bahut bada step hai, aur exam/interview ke liye
bahut important hai.

Q12) explain syncronization ?

Java mein synchronization ek aisa mechanism hai jo multiple


threads ko ek shared resource ko ek samay par safe tarike se
access karne deta hai taaki data inconsistency aur race
condition na ho. Matlab, jab ek thread kisi critical section ya
shared resource pe kaam kar raha hota hai, toh doosre threads
ko us resource tak access tab tak nahi milti jab tak pehla
thread apna kaam complete nahi kar leta. Hinglish mein isko
detail aur code example ke saath samjhate hain.

Synchronization kya hota hai?


• Java mein synchronization se hum ensure karte hain ki ek samay mein
sirf ek hi thread kisi shared resource ko access kare.
• Yeh tab zaruri hota hai jab multiple threads ek hi shared variable ya
resource ko modify karne ka try kar rahe ho.
• Synchronization race condition, data corruption, inconsistency problems
se bachata hai.

Synchronized Methods and Blocks


1. Synchronized Method
• Kisi method ko synchronized banane ke liye uske declaration
mein synchronized keyword lagate hain.
• Jab synchronized method ko koi thread call karta hai, toh wo us object
(this) par lock acquire kar leta hai.
• Dusri threads ko us waqt us method ke andar chalne wali thread ke
complete hone tak wait karna padta hai.
Code Example:
fl
fi
java
class Counter {
private int count = 0;

public synchronized void increment() {


count++;
}

public synchronized int getCount() {


return count;
}
}

public class SyncDemo {


public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();

Thread t1 = new Thread(() -> {


for (int i = 0; i < 1000; i++) {
[Link]();
}
});

Thread t2 = new Thread(() -> {


for (int i = 0; i < 1000; i++) {
[Link]();
}
});

[Link]();
[Link]();

[Link]();
[Link]();

[Link]("Final Count: " + [Link]()); // Output: Final


Count: 2000
}
}
Yahan dono threads synchronized method increment() ko
access kar rahe hai, jisse nal count sahi milta hai.

2. Synchronized Block
• Sirf critical section ko synchronize karna ho toh synchronized block ka
use karte hain.
fi
• Isme lock ke liye object specify karna hota hai (object jiski lock leni hai).
Example:

java
class Printer {
private nal Object lock = new Object();

public void print(String message) {


synchronized (lock) {
[Link]("[");
try { [Link](100); } catch (InterruptedException e) {}
[Link](message);
[Link]("]");
}
}
}

Important Notes on Synchronization


• Static synchronized methods mein class level lock lagta hai, non-static
synchronized method mein object level lock lagta hai.
• Synchronization slow kar sakti hai program ko, isliye sirf jarurat padne
par hi use karna chahiye.
• Deadlocks synchronization mein common issue hai jab threads mutually
locks hold karke wait mein rahte hain.

Summary (Hinglish)
Feature Explanation
Synchronizatio Multiple
n threads ko
shared
resource safe
share karvana
synchronized Complete
method method lock
kar deta hai
synchronized Sirf speci c
block code block ko
lock karta hai
Lock Details Non-static
method ->
object lock;
static method
-> class lock
fi
fi
Use-case Data
consistency,
race condition
rokna
Downsides Performance
degrade ho
sakti hai,
deadlock risk
Interview Tips
• Real life examples dijiye jaise banking transaction, ticket booking.
• Thread se related problems samjhaiye jaise race condition, thread
interference.
• Synchronization ka impact aur alternative solutions bhi bataye (e.g.
concurrent package).
Synchronization Java ke multithreading mein bahut zaruri
feature hai jisse thread-safe programs banate hain

Q13) how will you check your log ?

Java mein logging ko check karne ke kai tareeke hote hain, aur ye depend karta
hai aap kis logging framework ka use kar rahe hain aur aapke logger ka
con guration kya hai. Hinglish mein basic Java logging setup aur log check karne
ka process samjhata hoon, simple examples ke saath.

Java Logging ka Basic Overview


• Java mein popular logging APIs hain: [Link] (built-in), Log4j,
SLF4J, Logback etc.
• Logging messages ko di erent levels pe categorize karte hain: INFO,
DEBUG, ERROR, WARN.
• Logging output console (standard output) ya le mein redirect kiya ja
sakta hai con guration ke through.

Basic Logger Setup with [Link]

java
import [Link].*;

public class LoggingExample {


private static nal Logger logger =
[Link]([Link]());
fi
fi
fi
ff
fi
public static void main(String[] args) {
[Link]("Program started");
try {
int result = 10 / 0; // ArithmeticException
} catch (ArithmeticException e) {
[Link]([Link], "Exception occurred: ", e);
}
[Link]("Program ended");
}
}

Logging Check/Output Kaise Dekhein?


0. Console Mein: Default con guration mein logs console (terminal) par
print honge.
0. File Mein Save Karna: Logger ko le handler ke saath attach karo:

java
try {
FileHandler fh = new FileHandler("[Link]", true);
[Link](fh);
SimpleFormatter formatter = new SimpleFormatter();
[Link](formatter);

[Link]("File Logger Started");


} catch (Exception e) {
[Link]();
}
Ye "[Link]" le create karega aur logs yahan likhe jayenge.
0. Real-time Tail: Agar le badi ho jaaye, toh Linux par aap tail -f
[Link] command use kar sakte hain real-time log dekhne ke liye.

Logging Framework Ka Use Karna (Log4j Example)

java
import [Link];

public class Log4jExample {


static nal Logger logger = [Link]([Link]);

public static void main(String[] args){


[Link]("Info message");
[Link]("Error message");
}
}
Yeh framework advanced con guration aur features provide karta hai, jaise rolling
les, XML/Properties con g.
fi
fi
fi
fi
fi
fi
fi
fi
Log Dekhne ke Liye Summary
Step Explanation
Console Program run
Dekhna karte time
console par
logs aate hain
File Handler File me save
Setup karne ke liye
FileHandler
use kariye
Con g XML/ Log framework
Properties con gure
karne ke liye
Linux tail -f File ka live
command view dekhne
ke liye
Key Points (Hinglish)
• Logs program ki execution ka snapshot provide karte hain.
• Important hai ki correct level (INFO, DEBUG, ERROR) use karo.
• Agar production mein ho toh logs ko le mein store karo taaki future mein
debugging ho sake.
• Logger ki con guration samajhna jaruri hai taaki pata chale logs kaha ja
rahe hain.
• Real-time monitoring ke liye tools use karo ya command line utilities
jaise tail.

Agar aapko kisi speci c framework mein logging karna hai, ya advanced
con gurations chahiye mean help ka request karo. Java logging se aap easily
bugs, errors, aur execution ka track rakh sakte hain.

Q14) explain methods in collector class ?

Java 8 ki Collectors class Stream API ka ek important part hai jo stream ke


elements ko aggregate, collect, ya reduce karne ke liye bahut saare prede ned
static methods provide karti hai. Hinglish mein, Collectors ke commonly used
methods aur unke working ko simple language, examples aur detail ke sath
samjhata hoon.

Collectors Class ke Common Methods


1. toList()
• Stream ke elements ko List mein collect karta hai.
• Duplicate elements bhi allowed hote hain.
Example:
fi
fi
fi
fi
fi
fi
fi
java
List<String> names = [Link]("Amit", "Sumit", "Mohit")
.collect([Link]());
[Link](names);
// Output: [Amit, Sumit, Mohit]

2. toSet()
• Stream elements ko Set mein collect karta hai.
• Duplicate remove ho jate hain kyunki Set unique hota hai.
Example:

java
Set<String> uniqueNames = [Link]("Amit", "Sumit", "Amit")
.collect([Link]());
[Link](uniqueNames);
// Output: [Amit, Sumit]

3. toMap()
• Stream elements se Map banata hai.
• Key aur Value supplier functions pass kar sakte hain.
Example:

java
Map<String, Integer> map = [Link]("Amit", "Sumit", "Mohit")
.collect([Link](name -> name, name -> [Link]()));
[Link](map);
// Output: {Amit=4, Sumit=5, Mohit=5}

4. joining()
• Stream elements ko string ke roop mein join karta hai.
• Separator, pre x, su x specify kar sakte hain.
Example:

java
String joined = [Link]("Amit", "Sumit", "Mohit")
.collect([Link](", ", "[", "]"));
[Link](joined);
// Output: [Amit, Sumit, Mohit]

5. groupingBy()
• Elements ko banate hain groups mein kisi classi er function ke basis par.
• Result Map<Key, List<Value>> return karta hai.
Example:

java
List<String> names = [Link]("Amit", "Sumit", "Ankit", "Mohit");
Map<Character, List<String>> grouped = [Link]()
.collect([Link](name -> [Link](0)));
fi
ffi
fi
[Link](grouped);
// Output: {A=[Amit, Ankit], S=[Sumit], M=[Mohit]}

6. partitioningBy()
• Elements ko do groups mein separate karta hai, true ya false classi er ke
basis par.
• Result Map<Boolean, List<Value>> deta hai.
Example:

java
List<Integer> numbers = [Link](1, 2, 3, 4, 5, 6);
Map<Boolean, List<Integer>> partitioned = [Link]()
.collect([Link](n -> n % 2 == 0));
[Link](partitioned);
// Output: {false=[1, 3, 5], true=[2, 4, 6]}

7. summingInt(), averagingInt(), counting()


• Collection ke numeric values ka sum, average aur count nikalne ke liye.
Example:

java
List<Integer> nums = [Link](1, 2, 3, 4, 5);
int sum = [Link]().collect([Link](Integer::intValue));
double avg = [Link]().collect([Link](Integer::intValue));
long count = [Link]().collect([Link]());

[Link]("Sum: " + sum + ", Avg: " + avg + ", Count: " + count);
// Output: Sum: 15, Avg: 3.0, Count: 5

Hinglish Summary
• Collectors stream ke elements ko collections (List, Set, Map) me convert
karne, string join karne aur statistics nikalne ke liye pre-built static methods
provide karta hai.
• Common
methods: toList(), toSet(), toMap(), joining(), groupingBy(), partitioningBy(), su
mmingInt(), averagingInt(), counting().
• Streams + Collectors se functional aur concise collection manipulation
possible hota hai.

Java streams aur Collectors class ka istemal aapke code ko simplify karta hai aur
powerful bana deta hai. Interview mein Collectors ke ye common methods
samajhna aur apply karna zaruri hai.
fi

Common questions

Powered by AI

A HashMap consists of an array of buckets where each bucket represents a linked list or a tree structure to manage collisions . Operations such as put() calculate the bucket index using hashCode and the modulus operation to determine where to store or retrieve data. If multiple keys hash to the same index, often called a collision, they are placed in a list/tree at that bucket's index . HashMap resizes (doubles in capacity) when the threshold of its load factor (default 0.75) is crossed, which triggers rehashing of all existing entries . This ensures near constant O(1) average time complexity for operations.

The contract between equals() and hashCode() ensures that two equal objects must have the same hashCode but different hashCodes must ensure inequality . This is crucial in hash-based collections like HashMap or HashSet because these structures rely on hashCode() for indexing and equals() for equality checks. Violating this contract can lead to issues like data not being retrievable or duplicates entering collections, which compromises collection integrity and retrieval efficiency .

The sleep() method belongs to the Thread class and is used to pause the execution of the current thread without releasing any locks held by the thread. It is often used for timing and delays . Conversely, the wait() method is part of the Object class and is used for inter-thread communication within synchronized block/methods, releasing the held object's lock until notified by another thread's notify() or notifyAll() call . This makes wait() critical for synchronized communication as opposed to sleep(), which interrupts execution for fixed periods without affecting synchronization.

Try-with-resources in Java ensures that each declared resource within the try statement is closed automatically at the end of the statement block, minimizing resource leaks without needing a finally block . This feature requires the resources, such as streams and files, to implement the AutoCloseable interface. It significantly simplifies code readability and safety by managing resource deallocation, reducing boilerplate for exception handling, and ensuring efficient resource management .

HashMap is not thread-safe and designed for single-threaded applications, while ConcurrentHashMap is thread-safe and ideal for concurrent, multithreaded environments . HashMap uses a simple structure which makes it fast under single-threaded conditions, but it can encounter synchronization problems and exceptions like ConcurrentModificationException in multithreaded uses . ConcurrentHashMap, however, is optimized for concurrent operations with features like lock segmentation to maintain efficiency and prevent exceptions due to concurrent modifications .

Java iterators implement fail-fast behavior by throwing a ConcurrentModificationException if the underlying collection is structurally modified at any time after the iterator is created, except through the iterator's own remove method. This occurs because iterators track modifications using a modCount that must match the expected count during an iteration process . While this mechanism provides immediate feedback on illegal concurrent modifications that can lead to errors, it also requires developers to carefully manage collection modifications during iterations to avoid runtime exceptions, reinforcing disciplined usage of collections in multithreading contexts.

Synchronization in Java ensures that only one thread at a time can access a critical section of code or a shared resource by acquiring a lock associated with the object or class. This prevents data races and inconsistencies when multiple threads attempt to modify a shared variable . Synchronization can be achieved through synchronized methods, which acquire the lock on the object method invocations, or through synchronized blocks which allow finer-grained control by synchronizing specific sections inside methods . This avoids anomalies in data and ensures thread-safe operations.

The Comparable interface is implemented in the class whose instances need a natural ordering, using the compareTo() method to define the sort logic based on instance fields like roll number or name . This approach restricts sorting to one scenario since compareTo() logic stays the same. Alternatively, the Comparator interface comes into play when multiple different sorting criteria are needed, allowing separate classes or lambdas to define custom compare() method logic external to the objects being sorted . This makes Comparator more flexible and reusable for multiple sorting strategies without altering the data types being sorted.

Static methods in Java interfaces provide utility functions that cannot be overridden and are accessed using the interface name rather than through an instance of a class that implements the interface . They are designed to offer static behavior pertinent to the interface's logical grouping, facilitating code reusability and avoiding instance method association . This contrasts with default methods in interfaces, which are invoked on objects and can be overridden by implementing classes to give various implementations and achieve backward compatibility.

The 'final' keyword in Java serves to limit modification and inheritance. For variables, 'final' makes them constants, prohibiting any further modification after initialization . When used with methods, 'final' prevents them from being overridden in subclass definitions . With classes, 'final' ensures that the class cannot be extended, ending inheritance at that class . This keyword ensures stability and security in code by preventing alterations that could lead to unexpected behaviors.

You might also like