Wipro Placement Paper – Chennai, India
Complete placement test questions and solutions
Placement Paper Details
Hi, my name is Arjun Patel.
Our Wipro on-campus placement drive was conducted at SRM Institute of Science and Technology, Chennai in March 2025.
I’m excited to share my selection experience to help fellow freshers preparing for Wipro placements in the current recruitment cycle.
The selection process consisted of four rounds: Online Assessment, Technical Interview, HR Interview, and a final Project Discussion round. The online assessment had 90 questions to be solved in 120 minutes.
Test Pattern (2025 Updated):
- Aptitude & Logical Reasoning – 30 Questions (45 Minutes)
- Technical MCQs – 30 Questions (45 Minutes)
- English & Essay Writing – 20 Questions (20 Minutes)
- Coding – 2 Questions (30 Minutes)
The test had no negative marking except in the Aptitude section. The overall difficulty was moderate, with a strong emphasis on practical coding and communication skills.
My Preparation Strategy:
- Quantitative Aptitude from R.S. Aggarwal
- Technical concepts from GeeksforGeeks and Wipro’s own learning portal
- Coding practice on HackerRank and CodeChef
- Mock interviews with seniors
Around 1500 students appeared from our campus. Approximately 300 students were shortlisted for interviews. After all rounds, 120 students received final offers — including myself.
Full Test Paper
WIPRO FULL ONLINE TEST PAPER
Place of Test: SRM Institute of Science and Technology, Chennai
Date: March 10, 2025
Round 1: Online Assessment – 90 Questions (120 Minutes)
Negative marking only in the Aptitude section | Sectional time limits
Round 2: Technical Interview (30–45 Minutes)
Round 3: Project Discussion (20 Minutes)
Round 4: HR Interview (15 Minutes)
Written Test Pattern & Sample Questions
Part A: Quantitative & Logical Reasoning (30 Questions)
1. A sum of money doubles itself in 5 years at simple interest. In how many years will it become 8 times?
a) 15 years
b) 20 years
c) 25 years
d) 35 years
2. Find the next number: 2, 3, 5, 9, 17, ?
a) 26
b) 33
c) 37
d) 41
3. In a race of 600 m, A beats B by 60 m and in a race of 500 m, B beats C by 25 m. By how many meters will A beat C in a 400 m race?
a) 48 m
b) 52 m
c) 56 m
d) 58 m
Part B: Technical MCQs (30 Questions)
4. Which is NOT a valid SQL data type?
a) VARCHAR
b) NUMBER
c) BOOLEAN
d) TEXTAREA
5. What will be the output of the following Java program?
public class Test {
public static void main(String[] args) {
String s1 = "Wipro";
String s2 = new String("Wipro");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
a) true true
b) false true
c) true false
d) false false
Part C: Coding Section (2 Questions)
Question 1: Employee Management System
package com.wipro.placement;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
public class EmployeeManagementSystem {
public static class Employee {
private final String employeeId;
private final String name;
private final String department;
private final double salary;
private final LocalDate joiningDate;
private final int performanceRating;
public Employee(String employeeId, String name, String department,
double salary, LocalDate joiningDate, int performanceRating) {
if (employeeId == null || employeeId.isEmpty())
throw new IllegalArgumentException("Employee ID cannot be empty");
if (salary <= 0)
throw new IllegalArgumentException("Salary must be positive");
this.employeeId = employeeId;
this.name = name;
this.department = department;
this.salary = salary;
this.joiningDate = joiningDate;
this.performanceRating = performanceRating;
}
public String getEmployeeId() { return employeeId; }
public String getDepartment() { return department; }
public double getSalary() { return salary; }
public LocalDate getJoiningDate() { return joiningDate; }
public int getPerformanceRating() { return performanceRating; }
@Override
public String toString() {
return String.format("Employee[%s, %s, %s, ₹%.2f, %s, %d]",
employeeId, name, department, salary, joiningDate, performanceRating);
}
}
public static class EmployeeService {
private final List employees = new ArrayList<>();
public void addEmployee(Employee employee) {
employees.add(employee);
}
public List getHighEarners(double threshold) {
return employees.stream()
.filter(emp -> emp.getSalary() > threshold)
.collect(Collectors.toList());
}
}
public static void main(String[] args) {
EmployeeService service = new EmployeeService();
service.addEmployee(new Employee(
"WIP001", "Rahul Sharma", "Development",
850000, LocalDate.of(2022, 6, 15), 4));
service.getHighEarners(700000).forEach(System.out::println);
}
}
---
Question 2: Banking System
package com.wipro.banking;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class BankingSystem {
public static class BankAccount {
private final String accountNumber;
private double balance;
public BankAccount(String accountNumber, double balance) {
this.accountNumber = accountNumber;
this.balance = balance;
}
public synchronized void deposit(double amount) {
balance += amount;
}
public synchronized boolean withdraw(double amount) {
if (amount > balance) return false;
balance -= amount;
return true;
}
public double getBalance() {
return balance;
}
}
public static class BankService {
private final Map accounts = new ConcurrentHashMap<>();
public BankAccount createAccount(String accNo, double balance) {
BankAccount acc = new BankAccount(accNo, balance);
accounts.put(accNo, acc);
return acc;
}
public boolean transfer(String from, String to, double amount) {
BankAccount src = accounts.get(from);
BankAccount dest = accounts.get(to);
if (src.withdraw(amount)) {
dest.deposit(amount);
return true;
}
return false;
}
}
}
---
SQL Schema & Complex Queries
CREATE TABLE customers (
customer_id VARCHAR(10) PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100) UNIQUE
);
CREATE TABLE accounts (
account_number VARCHAR(15) PRIMARY KEY,
customer_id VARCHAR(10),
balance DECIMAL(15,2),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
SELECT
c.customer_id,
SUM(a.balance) AS total_balance
FROM customers c
JOIN accounts a ON c.customer_id = a.customer_id
GROUP BY c.customer_id
HAVING SUM(a.balance) > 100000;
Interview Questions
HR Interview Questions:
- Tell me about yourself and your background.
- Why do you want to join Wipro?
- What do you know about Wipro’s recent projects?
- How do you handle work pressure?
- What are your strengths and weaknesses?
- Where do you see yourself in 5 years?
- Are you willing to relocate or work in shifts?
- Why should we hire you?
- What are your salary expectations?
- Describe a challenging situation you faced.
Technical Interview Questions:
- Difference between abstract class and interface.
- What is polymorphism? Explain with an example.
- Explain exception handling in Java.
- Difference between ArrayList and LinkedList.
- What is multithreading?
- Explain SQL joins with examples.
- What is normalization in DBMS?
- Explain OOPs concepts.
- What is constructor overloading?
- Difference between C++ and Java.
- Explain different types of inheritance.
- What are access modifiers?
- Explain method overriding.
- What is garbage collection?
- Explain final, finally, and finalize.
Project Discussion Questions:
- Explain your final year project in detail.
- What challenges did you face during the project?
- What technologies did you use and why?
- What was your role in the project?
- How did you test your project?
- What improvements can be made to your project?
- How did you handle team conflicts?
- What did you learn from this project?
- How would you scale your project?
- What was the most difficult technical problem you solved?
Additional Production Code: REST API for Employee System
package com.wipro.api;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.*;
import org.springframework.beans.factory.annotation.Autowired;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.List;
@RestController
@RequestMapping("/api/v1/employees")
@CrossOrigin(origins = "*")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@GetMapping
public ResponseEntity> getAllEmployees(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
Page employees = employeeService.getAllEmployees(page, size);
HttpHeaders headers = new HttpHeaders();
headers.add("X-Total-Count", String.valueOf(employees.getTotalElements()));
headers.add("X-Total-Pages", String.valueOf(employees.getTotalPages()));
return new ResponseEntity<>(
employees.getContent(),
headers,
HttpStatus.OK
);
}
@GetMapping("/{id}")
public ResponseEntity getEmployeeById(@PathVariable String id) {
return employeeService.getEmployeeById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@PostMapping
public ResponseEntity createEmployee(
@Valid @RequestBody EmployeeRequest request) {
EmployeeDTO created = employeeService.createEmployee(request);
return ResponseEntity
.status(HttpStatus.CREATED)
.body(created);
}
@PutMapping("/{id}")
public ResponseEntity updateEmployee(
@PathVariable String id,
@Valid @RequestBody EmployeeRequest request) {
return employeeService.updateEmployee(id, request)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@GetMapping("/department/{dept}")
public ResponseEntity> getEmployeesByDepartment(
@PathVariable String dept) {
List employees =
employeeService.getEmployeesByDepartment(dept);
return ResponseEntity.ok(employees);
}
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity handleIllegalArgument(
IllegalArgumentException ex) {
ErrorResponse error = new ErrorResponse(
"Bad Request",
HttpStatus.BAD_REQUEST.value(),
ex.getMessage()
);
return ResponseEntity.badRequest().body(error);
}
}
// Error Response DTO
class ErrorResponse {
private String message;
private int status;
private String details;
private LocalDateTime timestamp;
public ErrorResponse(String message, int status, String details) {
this.message = message;
this.status = status;
this.details = details;
this.timestamp = LocalDateTime.now();
}
public String getMessage() { return message; }
public int getStatus() { return status; }
public String getDetails() { return details; }
public LocalDateTime getTimestamp() { return timestamp; }
}
Preparation Tips
Wipro Specific Preparation Tips 2025:
- Focus on Wipro’s WILP program details if you are applying through that route.
- Practice communication skills regularly, as this is very important for Wipro interviews.
- Learn about Wipro’s CSR initiatives, core values, and sustainability efforts.
- Prepare well for Essay Writing in the English section.
- Practice coding with proper comments and clean, readable structure.
- Be fully prepared for the Project Discussion round with clear explanations.
- Research Wipro’s recent acquisitions, partnerships, and emerging technologies.
- Prepare strong real-life examples showcasing teamwork and leadership skills.
Key Areas to Focus
Aptitude
Quantitative and logical reasoning sections
Reasoning
Verbal and non-verbal reasoning tests
Verbal Ability
Reading comprehension and grammar
Technical
Coding and technical questions
Was this paper helpful?
Help other students by rating this placement paper
Share Your Placement Paper
Your placement paper can help thousands of other students prepare better.