Placement Papers

Deloitte

Deloitte Placement Paper – Surathkal

Complete placement test questions and solutions

On-Campus Placement

Placement Paper Details

Hi, my name is Rohan Mehta.
Our Deloitte on-campus placement drive was conducted at National Institute of Technology, Surathkal in January 2025.


I'm thrilled to share that I received the offer letter, and I'm posting my comprehensive experience to help freshers preparing for Deloitte placements in the current recruitment season.

The selection process included three rounds: Online Assessment, Technical Interview (with coding), and HR Interview. The online assessment had 100 questions to be solved in 100 minutes.

Updated Test Pattern (2025):

  • Quantitative & Logical Reasoning – 35 Questions (30 Minutes)
  • Technical MCQs – 40 Questions (35 Minutes)
  • English & Behavioral Assessment – 15 Questions (15 Minutes)
  • Basic Coding – 10 Questions (20 Minutes)

The test had negative marking only for Quantitative section (0.25 per wrong answer). Sectional time limits were strictly enforced. Difficulty level was moderate with emphasis on practical problem-solving.

My Preparation Strategy:

I prepared for 4 months. For aptitude, I practiced from Arun Sharma and took regular mocks on platforms like Testbook and Oliveboard.

For technical preparation, I focused on:

  • Java 11+ features (Streams, Lambda, Optional)
  • SQL with Window Functions and CTEs
  • Data Structures (Arrays, Strings, HashMaps)
  • System Design basics (for interview)
  • REST APIs and Microservices concepts

Around 1200 students appeared from our campus. Approximately 150 students were shortlisted for interviews. After rigorous rounds, 85 students received final offers. The process was challenging but fair.

Full Test Paper

DELOITTE FULL ONLINE TEST PAPER
Place of Test: National Institute of Technology, Surathkal
Date: January 20, 2025


Round 1: Online Assessment – 100 Questions (100 Minutes)

Negative marking only for Quantitative section | Sectional time limits

Round 2: Technical Interview with Coding (45-60 minutes)

Round 3: HR + Managerial Interview (30 minutes)


Written Test Pattern & Sample Questions

Part A: Quantitative & Logical Reasoning (35 Questions)

1. A mixture contains milk and water in ratio 5:3. If 16 liters of mixture is replaced with 16 liters of water, ratio becomes 3:5. Find initial quantity:
a) 40L
b) 48L
c) 56L
d) 64L

2. Find missing number: 2, 6, 12, 20, 30, ?
a) 40
b) 42
c) 44
d) 46

3. A train crosses a pole in 15 seconds and a platform 200m long in 35 seconds. Length of train?
a) 100m
b) 150m
c) 200m
d) 250m

4. If 'LEADER' is coded as 'BGZYVI', how is 'MANAGER' coded?
a) NZMZTVG
b) NZMZTVH
c) OZNZTVI
d) OZMZTVH

5. In how many ways can 5 boys and 4 girls be seated in a row so that no two girls sit together?
a) 5! × 6P4
b) 5! × 4!
c) 9! - (5! × 4!)
d) 5! × 5P4

Part B: Technical MCQs (40 Questions)

6. Which design pattern is used in Java's Collection.sort()?
a) Factory Pattern
b) Strategy Pattern
c) Observer Pattern
d) Singleton Pattern

7. What is the output of the following Java program?


public class Test {
    public static void main(String[] args) {
        System.out.println(10 + 20 + "Java");
        System.out.println("Java" + 10 + 20);
    }
}

a) 30Java Java30
b) 30Java Java1020 
c) 1020Java Java30
d) 1020Java Java1020

8. Which SQL query finds employees earning more than their department average?
a) SELECT e.* FROM employees e WHERE salary > AVG(salary)
b) SELECT e.* FROM employees e JOIN (SELECT dept_id, AVG(salary) avg_sal FROM employees GROUP BY dept_id) d ON e.dept_id = d.dept_id WHERE e.salary > d.avg_sal 
c) SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees)
d) Both b and c

9. Which is NOT a valid HTTP method?
a) GET
b) POST
c) FETCH 
d) DELETE

10. Time complexity of inserting at end in ArrayList with n elements?
a) O(1)
b) O(log n)
c) O(n)
d) Amortized O(1) 


Part C: Coding Questions

11. Write a Java program to find the first non-repeating character in a string.


import java.util.LinkedHashMap;
import java.util.Map;

public class FirstNonRepeatingChar {

    public static Character findFirstNonRepeating(String str) {
        if (str == null || str.isEmpty()) {
            return null;
        }

        Map charCount = new LinkedHashMap<>();

        for (char c : str.toCharArray()) {
            charCount.put(c, charCount.getOrDefault(c, 0) + 1);
        }

        for (Map.Entry entry : charCount.entrySet()) {
            if (entry.getValue() == 1) {
                return entry.getKey();
            }
        }

        return null;
    }

    public static void main(String[] args) {
        System.out.println(findFirstNonRepeating("swiss"));
        System.out.println(findFirstNonRepeating("programming"));
        System.out.println(findFirstNonRepeating("aabbcc"));
    }
}

12. Write a Java program to validate if a string has balanced parentheses.


import java.util.Stack;

public class BalancedParentheses {

    public static boolean isValid(String s) {
        if (s == null || s.isEmpty()) {
            return true;
        }

        Stack stack = new Stack<>();

        for (char c : s.toCharArray()) {
            if (c == '(' || c == '{' || c == '[') {
                stack.push(c);
            } else if (c == ')' || c == '}' || c == ']') {
                if (stack.isEmpty()) return false;

                char top = stack.pop();

                if ((c == ')' && top != '(') || 
                    (c == '}' && top != '{') || 
                    (c == ']' && top != '[')) {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }

    public static void main(String[] args) {
        String[] testCases = {"(){}[]", "({[]})", "(]", "([)]", "", "((()))"};

        for (String test : testCases) {
            System.out.println(test + " => " + isValid(test));
        }
    }
}

13. Write an SQL query to find the second highest salary (handle duplicates).


WITH RankedSalaries AS (
    SELECT 
        emp_id, 
        emp_name, 
        salary,
        DENSE_RANK() OVER (ORDER BY salary DESC) AS salary_rank
    FROM employees
)
SELECT emp_id, emp_name, salary
FROM RankedSalaries
WHERE salary_rank = 2;

14. Write a Java program to merge two sorted arrays.


public class MergeSortedArrays {

    public static int[] mergeArrays(int[] arr1, int[] arr2) {
        int n1 = arr1.length;
        int n2 = arr2.length;
        int[] result = new int[n1 + n2];

        int i = 0, j = 0, k = 0;

        while (i < n1 && j < n2) {
            if (arr1[i] <= arr2[j]) {
                result[k++] = arr1[i++];
            } else {
                result[k++] = arr2[j++];
            }
        }

        while (i < n1) {
            result[k++] = arr1[i++];
        }

        while (j < n2) {
            result[k++] = arr2[j++];
        }

        return result;
    }

    public static void main(String[] args) {
        int[] arr1 = {1, 3, 5, 7};
        int[] arr2 = {2, 4, 6, 8, 10};

        int[] merged = mergeArrays(arr1, arr2);

        for (int num : merged) {
            System.out.print(num + " ");
        }
    }
}

15. Design a production-ready Employee Service with advanced filtering.


import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;

class Employee {
    private final String id;
    private final String name;
    private final String department;
    private final double salary;
    private final LocalDate joiningDate;

    public Employee(String id, String name, String department, double salary, LocalDate joiningDate) {
        this.id = id;
        this.name = name;
        this.department = department;
        this.salary = salary;
        this.joiningDate = joiningDate;
    }

    public String getId() { return id; }
    public String getName() { return name; }
    public String getDepartment() { return department; }
    public double getSalary() { return salary; }
    public LocalDate getJoiningDate() { return joiningDate; }

    @Override
    public String toString() {
        return String.format("Employee[id=%s, name=%s, dept=%s, salary=%.2f, joining=%s]",
                id, name, department, salary, joiningDate);
    }
}

class EmployeeService {

    private final List employees;

    public EmployeeService(List employees) {
        this.employees = new ArrayList<>(employees);
    }

    public List getEmployeesWithSalaryAbove(double threshold) {
        return employees.stream()
                .filter(emp -> emp.getSalary() > threshold)
                .sorted(Comparator.comparing(Employee::getSalary).reversed())
                .collect(Collectors.toList());
    }

    public Map getDepartmentAverageSalary() {
        return employees.stream()
                .collect(Collectors.groupingBy(
                        Employee::getDepartment,
                        Collectors.averagingDouble(Employee::getSalary)
                ));
    }

    public List getRecentJoiners(int months) {
        LocalDate cutoff = LocalDate.now().minusMonths(months);
        return employees.stream()
                .filter(emp -> emp.getJoiningDate().isAfter(cutoff))
                .collect(Collectors.toList());
    }

    public List getTopNEarners(int n) {
        return employees.stream()
                .sorted(Comparator.comparing(Employee::getSalary).reversed())
                .limit(n)
                .collect(Collectors.toList());
    }
}

public class DeloittePlacementCode {

    public static void main(String[] args) {
        List employees = Arrays.asList(
            new Employee("E001", "John Doe", "IT", 85000, LocalDate.of(2024, 1, 15)),
            new Employee("E002", "Jane Smith", "HR", 65000, LocalDate.of(2024, 6, 20)),
            new Employee("E003", "Bob Wilson", "IT", 95000, LocalDate.of(2023, 11, 5)),
            new Employee("E004", "Alice Brown", "Finance", 75000, LocalDate.of(2024, 8, 10)),
            new Employee("E005", "Charlie Lee", "IT", 88000, LocalDate.of(2024, 3, 25))
        );

        EmployeeService service = new EmployeeService(employees);

        System.out.println("Employees with Salary > 80000:");
        service.getEmployeesWithSalaryAbove(80000).forEach(System.out::println);

        System.out.println("\nDepartment-wise Average Salary:");
        service.getDepartmentAverageSalary().forEach(
            (dept, avg) -> System.out.println(dept + ": " + avg)
        );

        System.out.println("\nRecent Joiners (Last 6 months):");
        service.getRecentJoiners(6).forEach(System.out::println);

        System.out.println("\nTop 3 Earners:");
        service.getTopNEarners(3).forEach(System.out::println);
    }
}

Interview Questions

HR Interview Questions:

  • Walk me through your resume - highlight key achievements
  • Why consulting? Why Deloitte over other Big 4?
  • What do you know about Deloitte's Global Delivery Center model?
  • How do you handle multiple deadlines and prioritize?
  • Describe a situation where you had to adapt to change quickly
  • What are your career goals for next 3-5 years?
  • How do you stay updated with technology trends?
  • Describe a time you received negative feedback
  • Are you willing to work in shifts or relocate?
  • What value can you bring to Deloitte?

Technical Interview Questions:

  • Explain SOLID principles with real examples
  • Difference between HashMap and ConcurrentHashMap
  • How does Spring Boot auto-configuration work?
  • Explain microservices architecture advantages/disadvantages
  • SQL vs NoSQL - when to use which?
  • What is eventual consistency? Give examples
  • Explain CAP theorem with practical scenarios
  • How would you design a URL shortening service?
  • Difference between REST and GraphQL
  • Explain JWT token authentication flow
  • What are database indexes? When to avoid them?
  • Explain ACID vs BASE properties
  • How does garbage collection work in Java?
  • Explain Java 8 Stream API with examples
  • What are design patterns you've used?

Additional Coding Question: Write a thread-safe Singleton class in Java to manage a database connection.


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnection {

    private static volatile DatabaseConnection instance;
    private Connection connection;

    // Private constructor to prevent instantiation
    private DatabaseConnection() {
        try {
            // Initialize database connection
            this.connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/deloitte_db",
                "username",
                "password"
            );
        } catch (SQLException e) {
            throw new RuntimeException("Failed to create database connection", e);
        }
    }

    // Thread-safe Singleton using Double-Checked Locking
    public static DatabaseConnection getInstance() {
        if (instance == null) {
            synchronized (DatabaseConnection.class) {
                if (instance == null) {
                    instance = new DatabaseConnection();
                }
            }
        }
        return instance;
    }

    // Get database connection
    public Connection getConnection() {
        return connection;
    }

    // Close database connection safely
    public void closeConnection() {
        try {
            if (connection != null && !connection.isClosed()) {
                connection.close();
            }
        } catch (SQLException e) {
            System.err.println("Error closing connection: " + e.getMessage());
        }
    }
}

Preparation Tips

Key Preparation Tips for 2026:

  1. System Design: Practice designing scalable and fault-tolerant systems.
  2. Cloud Basics: Be comfortable with AWS and Azure fundamentals, as these are frequently discussed.
  3. Agile & Scrum: Understand Agile methodology, Scrum roles, and sprint workflows.
  4. Behavioral Preparation: Prepare real-life examples using the STAR method (Situation, Task, Action, Result).
  5. Current Technologies: Have a basic understanding of AI/ML concepts and Blockchain fundamentals.
  6. Deloitte-Specific Research: Study Deloitte’s recent technology initiatives and consulting solutions.
  7. Coding Skills: Focus on writing clean, readable, and production-ready code.
  8. Testing Knowledge: Be prepared to explain unit testing strategies, test cases, and code coverage.

Note: The coding section now includes production-ready examples that demonstrate clean architecture, proper error handling, and best practices expected in enterprise-level environments.

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.