What is Operating system ?
An Operating System (OS) is a system software that acts as an interface between the user and the
computer hardware. It manages the hardware resources, controls file systems, handles processes,
memory, and input/output operations. Without an OS, we can't interact with the computer in a
meaningful way. Examples include Windows, Linux, and Android.
List some operating systems. Which one stands out to you the most, and why?
Some of the most popular operating systems that are currently in use include Windows, macOS,
Linux (with distributions like Ubuntu and Fedora), Android, and iOS. These are widely used across
desktops, servers, and mobile devices.
Among these, the operating system that stands out the most to me is Linux. The reason is its open-
source nature, which gives developers and users the flexibility to modify and customize it based on
their needs. It’s also known for its stability, security, and performance, which is why it's commonly
used in servers, cloud infrastructure, and supercomputers.
On the other hand, Windows offers a user-friendly interface, facilitating multitasking with its clear
and organized UI.
1. Process Management
What is a process vs. a thread
Process states (ready, running, waiting, etc.)
Context switching
Inter-Process Communication (IPC)
Threads (user-level vs. kernel-level)
Process scheduling algorithms:
o FCFS, SJF, Round Robin, Priority Scheduling
o Preemptive vs. Non-preemptive
2. Memory Management
Logical vs. physical memory
Paging and segmentation
Virtual memory
Page replacement algorithms:
o FIFO, LRU, Optimal, etc.
Thrashing
3. Deadlocks
Necessary conditions for deadlock
Deadlock prevention, avoidance, and detection
Banker's Algorithm
4. File Systems
File concepts: types, attributes, access methods
Directory structures
File allocation techniques: contiguous, linked, indexed
File permissions
5. Concurrency & Synchronization
Race conditions
Critical section problem
Semaphores, Mutex, Monitors
Classic problems:
o Producer-Consumer, Readers-Writers, Dining Philosophers
6. CPU Scheduling
Types of scheduling
Gantt charts
Calculating turnaround time, waiting time, etc.
Multilevel queue scheduling
7. Disk Scheduling
FCFS, SSTF, SCAN, LOOK, C-SCAN, C-LOOK
Seek time, rotational delay
8. System Calls & Kernel
What is a system call?
User mode vs. kernel mode
Types of system calls (process control, file management, etc.)
9. I/O Management
I/O devices and interrupt handling
DMA (Direct Memory Access)
10. Real-Time & Distributed OS (Optional/Advanced)
Concepts of real-time systems
Basics of distributed systems
Cloud-based OS principles (basic)
A process is an independent program in execution. It has its own memory space, code, data, and
resources. For example, if I open two Chrome windows, each one can be a separate process.
A thread is the smallest unit of execution within a process. Threads of the same process share the
same memory, so they are more lightweight and faster to create than processes. For example, within
a Chrome window, each tab might be a separate thread.
Threads help in performing multiple tasks simultaneously inside a single process — this is useful for
multitasking and improving performance.
Process States
1. New – Process is being created.
2. Ready – Process is waiting to be assigned to the CPU.
3. Running – Instructions are being executed.
4. Waiting – Waiting for I/O or some event.
5. Terminated – Process has finished execution.
Process Control Block (PCB)
A data structure maintained by the OS for each process.
Stores:
o Process ID (PID)
o Process state
o Registers, Program Counter
o Memory info
o Scheduling info
o I/O status
Context switching is the process where the CPU switches from one process or thread to another. It
happens when the operating system decides to pause a running process and resume or start
another one.
During this switch, the OS saves the current state (context) of the running process (like registers,
program counter, etc.) and loads the saved state of the next process.
Context switching enables multitasking, but it also adds a little overhead, because saving and
loading context takes time.
IPC, or Inter-Process Communication, is a way for processes to communicate with each other and
share data. Since processes run independently and have separate memory, IPC is used when they
need to exchange information or coordinate.
There are several IPC mechanisms, like:
Pipes – for one-way communication.
Message Queues – send and receive messages between processes.
Shared Memory – allows processes to access common memory.
Sockets – used for communication over a network or between unrelated processes.
Semaphores – mainly used for synchronization.
A race condition occurs when two or more threads or processes access shared data at the same
time, and the final result depends on the timing of their execution. If proper synchronization is not
used, it can lead to unexpected or incorrect behavior.
What is DNS used for?
The Domain Name System (DNS) is used to translate human-readable domain names into IP
addresses understandable by computers. Since computers communicate using IP addresses, DNS
helps users access websites by just typing the domain name like google.com instead of remembering
the numerical IP address.
Finally ?
The **finally** block in Java is used in exception handling. It contains code that always executes,
whether an exception is thrown or not, and whether it is caught or not.
Final ?
final is a keyword which can be used with variable, method, classes.
In make variable as constant. Method cannot be overridden. And Class cannot be overridden.
Finalize ?
finalize() is a method in Java that was used by the Garbage Collector to perform cleanup operations
before reclaiming the memory of an object. In other word it given the final opportunity for the object
to perform its necessary cleanup operation before it reclaimed by the Garbage Collector. This
cleanup may involve releasing resources, closing connections, or other necessary tasks.
How can you explain multiple inheritances in Java?
When a class inherits from more than one parent class it is called multiple inheritance. In C it is
possible to achieve. But java doesn’t support the multiple inheritance which lead to ambiguity
problem mean if two parent have the same method and overridden will lead to ambiguity problem.
But it can be achieved through the interface in java.
Definition of Cloud Computing:
Cloud computing is the delivery of computing services—like servers, storage, databases,
networking, software, and more—over the internet (“the cloud”). It allows users to access and
store data or run applications without managing physical hardware directly.
Advantages of Cloud Computing:
1. Cost-Efficient – No need to buy and maintain expensive hardware.
2. Scalability – Easily scale resources up or down based on demand.
3. Accessibility – Access data and services from anywhere with internet.
4. Disaster Recovery – Backup and recovery are easier and faster.
5. Automatic Updates – Cloud providers manage software and security updates.
6. Collaboration – Multiple users can work on the same data in real-time.
7. Security – Leading cloud providers offer strong security features.
In IaaS, the cloud provider offers virtualized computing resources like:
Virtual machines (VMs)
Storage
Networking
Servers
Load balancers
These resources are delivered over the internet, and the user manages the OS, applications,
runtime, and data, while the cloud provider manages the hardware, virtualization, and networking.
Software as a Service (SaaS):
SaaS is a cloud computing model where software applications are delivered over the internet. Users
can access the application using a web browser without installing or maintaining it on their local
machines.
The cloud provider manages everything — from infrastructure to data, updates, and security. The
user just uses the software, typically through a subscription model.
Platform as a Service (PaaS):
PaaS is a cloud computing model that provides a platform for developers to build, run, and manage
applications without having to deal with the complexity of managing the underlying infrastructure.
The cloud provider takes care of everything like servers, storage, networking, OS, and runtime, so
developers can focus only on the application code and logic.
🔸 Key Features of PaaS:
Pre-configured environments for development
Supports continuous integration and deployment (CI/CD)
Built-in tools for database management, testing, and scaling
Simplifies application development
What is Big Data?
Big Data refers to extremely large and complex datasets that traditional data processing software
cannot manage efficiently. It involves collecting, storing, processing, and analyzing massive volumes
of data to extract useful insights, often in real-time.
🔑 Key Characteristics of Big Data (known as the 5 V's):
1. Volume
o Refers to the huge amount of data generated every second.
o Example: Facebook generates terabytes of data daily from posts, messages, images,
etc.
2. Velocity
o The speed at which new data is generated and needs to be processed.
o Example: Stock market data updates in milliseconds.
3. Variety
o Data comes in many formats: structured (databases), semi-structured (XML/JSON),
and unstructured (videos, social media posts).
o Example: Tweets, emails, images, and sensor logs.
4. Veracity
o Refers to the uncertainty or reliability of data. Big data can be messy, incomplete, or
inaccurate.
o Example: User-generated content might have slang or typos.
5. Value
o The most important ‘V’: Can you extract useful, actionable insights from the data?
o Example: E-commerce sites analyzing customer behavior to recommend products.
What do you understand about nested classes in
programming languages?
The nested classes can be defined inside other classes in object-oriented
programming. These nested classes have the same privileges as other class
members and act as a part of the outer class they are contained within.
Encapsulation :
Bundling of data variable and methods that operate on the data into single unit, typically class. It
prevent outer classes from accessing and modifying the data and method of a class using access
specifier which helps to achieve data hiding.
Abstraction :
Abstraction in Java is a fundamental concept in Object-Oriented Programming (OOP) that focuses on
hiding the complex implementation details and exposing only the relevant and essential features of
an object.
It allows the user to focus on what an object does, rather than how it does it.