Oracle Interview Questions 2026
Oracle Interview Questions 2026 - DBMS, Java & Cloud Focus
Oracle Overview
| Attribute | Details |
|---|---|
| Founded | 1977 |
| Headquarters | Austin, Texas (India HQ: Bangalore, Hyderabad) |
| Employees in India | 40,000+ |
| Core Products | Oracle Database, Cloud Infrastructure, ERP |
| India Operations | R&D centers, Support, Sales |
| Hiring Focus | Database, Java, Cloud Technologies |
Oracle is the world's largest database company and a major player in cloud infrastructure and enterprise software. Oracle India hires heavily for database administration, Java development, and cloud engineering roles.
Oracle Interview Process 2026
Selection Stages
| Stage | Duration | Format |
|---|---|---|
| Online Assessment | 120 mins | Aptitude + Technical + Coding |
| Technical Round 1 | 45-60 mins | Core CS, Database concepts |
| Technical Round 2 | 45-60 mins | Advanced SQL, Java, System Design |
| Managerial Round | 30-45 mins | Project discussion, Scenarios |
| HR Interview | 20-30 mins | Behavioral, Salary discussion |
Assessment Pattern
| Section | Questions | Time | Topics |
|---|---|---|---|
| Aptitude | 20 | 25 mins | Quant, Logical, Verbal |
| DBMS/SQL | 15 | 20 mins | Queries, Normalization, Transactions |
| Java/C++ | 15 | 20 mins | OOPs, Collections, Exceptions |
| Coding | 2-3 | 45 mins | Data Structures, Algorithms |
| Cloud/Unix | 10 | 20 mins | AWS basics, Linux commands |
DBMS & SQL Interview Questions
Question 1: Find Nth Highest Salary
-- Method 1: Using LIMIT/OFFSET
SELECT DISTINCT salary
FROM employees
ORDER BY salary DESC
LIMIT 1 OFFSET N-1;
-- Method 2: Using subquery (Oracle specific - ROWNUM)
SELECT salary
FROM (
SELECT DISTINCT salary, ROWNUM as rn
FROM employees
ORDER BY salary DESC
)
WHERE rn = N;
-- Method 3: Using DENSE_RANK (Oracle)
SELECT salary
FROM (
SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) as rnk
FROM employees
)
WHERE rnk = N;
-- Method 4: Using correlated subquery
SELECT DISTINCT e1.salary
FROM employees e1
WHERE N-1 = (
SELECT COUNT(DISTINCT e2.salary)
FROM employees e2
WHERE e2.salary > e1.salary
);
Question 2: SQL Query for Department-wise Top 3 Salaries
-- Oracle solution using ROW_NUMBER()
SELECT department_id, employee_name, salary
FROM (
SELECT
department_id,
employee_name,
salary,
ROW_NUMBER() OVER (
PARTITION BY department_id
ORDER BY salary DESC
) as rank
FROM employees
) ranked
WHERE rank <= 3;
-- Alternative using RANK()
SELECT department_id, employee_name, salary
FROM (
SELECT
department_id,
employee_name,
salary,
RANK() OVER (
PARTITION BY department_id
ORDER BY salary DESC
) as salary_rank
FROM employees
)
WHERE salary_rank <= 3;
Question 3: Find Employees with Same Salary in Different Departments
SELECT e1.employee_id, e1.name, e1.department_id, e1.salary
FROM employees e1
JOIN employees e2 ON e1.salary = e2.salary
AND e1.department_id != e2.department_id
AND e1.employee_id < e2.employee_id
ORDER BY e1.salary DESC;
-- Alternative using EXISTS
SELECT e1.*
FROM employees e1
WHERE EXISTS (
SELECT 1 FROM employees e2
WHERE e2.salary = e1.salary
AND e2.department_id != e1.department_id
);
Question 4: Pivot Table Query
-- Convert rows to columns (Sales by month)
SELECT
product_id,
SUM(CASE WHEN month = 'Jan' THEN sales ELSE 0 END) as Jan_Sales,
SUM(CASE WHEN month = 'Feb' THEN sales ELSE 0 END) as Feb_Sales,
SUM(CASE WHEN month = 'Mar' THEN sales ELSE 0 END) as Mar_Sales
FROM sales_data
GROUP BY product_id;
-- Oracle PIVOT syntax
SELECT *
FROM (
SELECT product_id, month, sales
FROM sales_data
)
PIVOT (
SUM(sales) FOR month IN ('Jan' AS Jan, 'Feb' AS Feb, 'Mar' AS Mar)
);
Question 5: Database Normalization
Explain 1NF, 2NF, 3NF, BCNF with examples:
UNF (Unnormalized Form):
Student(StudentID, Name, Subjects)
Subjects: "Maths, Physics, Chemistry" - Not atomic
1NF - Atomic values:
Student(StudentID, Name, Subject)
1, "John", "Maths"
1, "John", "Physics"
2NF - Remove partial dependencies (for composite keys):
Student(StudentID, SubjectID, SubjectName) - SubjectName depends only on SubjectID
Split to:
Enrollment(StudentID, SubjectID)
Subject(SubjectID, SubjectName)
3NF - Remove transitive dependencies:
Student(StudentID, Name, DeptID, DeptName) - DeptName depends on DeptID
Split to:
Student(StudentID, Name, DeptID)
Department(DeptID, DeptName)
BCNF - Every determinant is a candidate key:
Student(StudentID, Subject, Professor)
If Professor determines Subject, split:
Teaching(Professor, Subject)
Enrollment(StudentID, Professor)
Question 6: ACID Properties with Examples
-- Atomicity: All or nothing
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE id = 2;
-- If any fails, entire transaction rolls back
COMMIT;
-- Consistency: Data integrity maintained
-- Constraints, triggers ensure valid state
-- Isolation: Concurrent transactions don't interfere
-- Isolation levels:
-- READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE
-- Durability: Committed data persists
-- Write-ahead logging, redo logs
Question 7: Indexing and Query Optimization
-- Create indexes
CREATE INDEX idx_emp_dept ON employees(department_id);
CREATE INDEX idx_emp_salary ON employees(salary DESC);
CREATE COMPOSITE INDEX idx_emp_name ON employees(last_name, first_name);
-- Explain plan
EXPLAIN PLAN FOR
SELECT * FROM employees WHERE department_id = 10;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
-- Covering index
CREATE INDEX idx_covering ON employees(department_id, employee_id, name);
-- Query only needs index, no table access
Java Interview Questions
Question 8: Explain Java Collections Framework
import java.util.*;
public class CollectionsDemo {
// ArrayList vs LinkedList
public void listComparison() {
// ArrayList - Dynamic array, fast random access O(1)
List<String> arrayList = new ArrayList<>();
arrayList.add("A"); // O(1) amortized
arrayList.get(0); // O(1)
arrayList.add(0, "B"); // O(n) - shifts elements
// LinkedList - Doubly linked list, fast insertion O(1)
List<String> linkedList = new LinkedList<>();
linkedList.add("A"); // O(1)
linkedList.add(0, "B"); // O(1) - no shifting
linkedList.get(0); // O(n) - traversal
}
// HashMap implementation details
public void hashMapInternals() {
// Default: 16 buckets, load factor 0.75
Map<String, Integer> map = new HashMap<>();
// Hashing: hashCode() -> index = hash & (n-1)
// Collision resolution: Separate chaining (Linked List -> Tree)
// Java 8: Treeify threshold = 8, Untreeify = 6
// Converts linked list to RB tree for O(log n) lookup
map.put("key", 100);
Integer value = map.get("key"); // O(1) average
}
// Concurrent collections
public void concurrentCollections() {
// Thread-safe alternatives
Map<String, Integer> concurrentMap = new ConcurrentHashMap<>();
List<String> syncList = Collections.synchronizedList(new ArrayList<>());
// CopyOnWriteArrayList - read-heavy scenarios
List<String> cowList = new CopyOnWriteArrayList<>();
}
}
Question 9: Multithreading in Java
import java.util.concurrent.*;
import java.util.concurrent.locks.*;
public class ThreadingExamples {
// Ways to create threads
class MyThread extends Thread {
public void run() {
System.out.println("Thread running");
}
}
class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable running");
}
}
// Thread pool
ExecutorService executor = Executors.newFixedThreadPool(5);
// Synchronization
class Counter {
private int count = 0;
private Object lock = new Object();
private ReentrantLock reentrantLock = new ReentrantLock();
// Method synchronization
public synchronized void increment() {
count++;
}
// Block synchronization
public void incrementBlock() {
synchronized(lock) {
count++;
}
}
// Lock interface
public void incrementLock() {
reentrantLock.lock();
try {
count++;
} finally {
reentrantLock.unlock();
}
}
}
// Producer-Consumer problem
class Buffer {
private List<Integer> list = new ArrayList<>();
private int capacity = 5;
public synchronized void produce(int value) throws InterruptedException {
while (list.size() == capacity) {
wait();
}
list.add(value);
notifyAll();
}
public synchronized int consume() throws InterruptedException {
while (list.isEmpty()) {
wait();
}
int value = list.remove(0);
notifyAll();
return value;
}
}
}
Question 10: JVM Architecture & Garbage Collection
public class JVMExplanation {
/*
JVM Architecture:
1. Class Loader Subsystem
- Loading: .class files loaded
- Linking: Verification, Preparation, Resolution
- Initialization: Static variables initialized
2. Runtime Data Areas:
- Method Area: Class metadata, static variables
- Heap: Objects, arrays (shared by all threads)
- Stack: Method frames, local variables (per thread)
- PC Register: Current instruction (per thread)
- Native Method Stack: Native method execution
3. Execution Engine:
- Interpreter: Line-by-line execution
- JIT Compiler: Hotspot compilation
- Garbage Collector: Memory management
Garbage Collection:
Heap Structure:
- Young Generation (Eden, Survivor 0, Survivor 1)
- Old Generation
- Permanent Generation (Metaspace in Java 8+)
GC Algorithms:
- Serial GC: Single thread
- Parallel GC: Multiple threads for young gen
- CMS: Concurrent Mark Sweep (low pause)
- G1 GC: Region-based, predictable pauses
- ZGC: Ultra-low latency (Java 11+)
*/
// Memory leak example
public static List<Object> leak = new ArrayList<>();
public void potentialLeak() {
// Static collections can cause leaks
leak.add(new byte[1024 * 1024]); // 1MB never freed
}
}
Cloud & Infrastructure Questions
Question 11: Explain Cloud Service Models
| Model | Description | Examples | Use Case |
|---|---|---|---|
| IaaS | Infrastructure as a Service | AWS EC2, Azure VMs | Full control over OS |
| PaaS | Platform as a Service | Heroku, AWS Elastic Beanstalk | Focus on code only |
| SaaS | Software as a Service | Gmail, Salesforce | End-user applications |
| FaaS | Function as a Service | AWS Lambda, Azure Functions | Event-driven computing |
Question 12: Oracle Cloud Infrastructure (OCI) Basics
# OCI CLI Commands
# List compartments
oci iam compartment list
# Create compute instance
oci compute instance launch \
--availability-domain "Uocm:PHX-AD-1" \
--compartment-id ocid1.compartment.oc1..xxx \
--shape VM.Standard2.1 \
--subnet-id ocid1.subnet.oc1..xxx \
--image-id ocid1.image.oc1..xxx
# List buckets
oci os bucket list --compartment-id ocid1.compartment.oc1..xxx
# Create bucket
oci os bucket create --name my-bucket --compartment-id ocid1.compartment.oc1..xxx
Question 13: Container Basics (Docker & Kubernetes)
# Dockerfile example
FROM openjdk:11-jre-slim
COPY target/app.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
# Kubernetes deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: oracle-app
spec:
replicas: 3
selector:
matchLabels:
app: oracle-app
template:
metadata:
labels:
app: oracle-app
spec:
containers:
- name: app
image: oracle-app:latest
ports:
- containerPort: 8080
System Design Questions
Question 14: Design a Cache System
import java.util.LinkedHashMap;
import java.util.Map;
// LRU Cache using LinkedHashMap
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final int capacity;
public LRUCache(int capacity) {
super(capacity, 0.75f, true); // accessOrder = true
this.capacity = capacity;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > capacity;
}
}
// Design considerations:
// 1. Eviction policy: LRU, LFU, FIFO
// 2. Storage: In-memory, distributed (Redis)
// 3. Consistency: Write-through, Write-behind
// 4. Scaling: Sharding by key hash
Question 15: Design a Rate Limiter
import java.util.concurrent.*;
public class RateLimiter {
private final int maxRequests;
private final long windowMillis;
private final ConcurrentHashMap<String, LinkedList<Long>> userRequests;
public RateLimiter(int maxRequests, long windowMillis) {
this.maxRequests = maxRequests;
this.windowMillis = windowMillis;
this.userRequests = new ConcurrentHashMap<>();
}
public boolean allowRequest(String userId) {
long now = System.currentTimeMillis();
LinkedList<Long> timestamps = userRequests.computeIfAbsent(
userId, k -> new LinkedList<>()
);
synchronized (timestamps) {
// Remove old timestamps
while (!timestamps.isEmpty() &&
now - timestamps.peekFirst() > windowMillis) {
timestamps.removeFirst();
}
if (timestamps.size() < maxRequests) {
timestamps.addLast(now);
return true;
}
return false;
}
}
}
HR Interview Questions
Q1: Why Oracle?
Sample Answer: "Oracle is the gold standard in database technology, and I've always been passionate about data systems. Working at Oracle would give me exposure to enterprise-scale databases that handle millions of transactions. I'm particularly excited about Oracle's cloud transformation - moving from traditional on-premise databases to autonomous cloud databases shows the company's innovation mindset. I want to be part of building the next generation of data infrastructure."
Q2: Explain a challenging database optimization you did
STAR Format:
- Situation: Application queries taking 10+ seconds
- Task: Optimize to under 1 second
- Action: Added composite indexes, rewrote subqueries as joins, implemented caching
- Result: Query time reduced to 200ms, 50x improvement
Q3: How do you handle conflicts in a team?
Sample Answer: "I believe in addressing conflicts directly but respectfully. In my last project, there was a disagreement about technology choice. I scheduled a meeting where both sides presented pros/cons with data. We created a proof-of-concept for both approaches and measured performance. The data helped us make an objective decision. The key was focusing on the problem, not personalities."
5 Frequently Asked Questions (FAQs)
Q1: What is the salary for freshers at Oracle in 2026?
A: Oracle offers ₹6-12 LPA for freshers, depending on the role (Database, Java, Cloud).
Q2: Does Oracle focus only on database questions?
A: While databases are emphasized, Oracle also tests Java, cloud concepts, and data structures.
Q3: Is Oracle certification helpful for placement?
A: Oracle certifications (OCA, OCP) add value but aren't mandatory. Strong fundamentals matter more.
Q4: What is Oracle's work culture like?
A: Oracle has a mature, enterprise-focused culture with emphasis on work-life balance and long-term career growth.
Q5: How should I prepare for Oracle technical rounds?
A: Focus on: Advanced SQL, DBMS concepts, Java collections, multithreading, and basic cloud knowledge.
Last Updated: March 2026 Source: Oracle Careers, Interview Experiences, Glassdoor
Explore this topic cluster
More resources in Interview Questions
Use the category hub to browse similar questions, exam patterns, salary guides, and preparation resources related to this topic.
More in Interview Questions
More from PapersAdda
Top 30 HR Interview Questions with Best Answers (2026)
Top 30 System Design Interview Questions for 2026
Top 40 React.js Interview Questions & Answers (2026)
Top 50 Data Structures Interview Questions 2026