EPAM Interview Questions and Answers for Automation Testing – Technical Round

I have shared my interview experience with the EPAM Software company for the QA Lead position below. The following are the technical interview questions and answers discussed during the round.

Watch YouTube Video here: EPAM interview questions for automation testing

Question 1: Please Explain yourself and Roles and responsibilities in the previous project

Answer:

This is the common question in most of the interviews. We can explain about our experience and roles and responsibilities in our recent project.

Question 2: How to find Duplicate characters in a String using Selenium and Java?

Answer:

We can find the duplicate characters of String in different ways such as using HashMap, Set or char array. I have explained scenario about using HashMap. Here I am going to provide the code using HashMap and Set below for finding duplicate characters using char array you can go through the video suggested in the description. 

Using HashMap:

import java.util.HashMap;

import java.util.Map;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.Test;

public class DuplicateCharacters {

   @Test

    public void verifyDuplicates {

        WebDriver driver = new ChromeDriver();

        driver.get(“https://example.com”);

        // Get text from a web element

        String text = driver.findElement(By.id(“sampleText”)).getText();

        // Remove spaces and convert to lowercase (optional)

        text = text.replaceAll(“\\s”, “”).toLowerCase();

        // HashMap to store character count

        HashMap<Character, Integer> charCount = new HashMap<>();

        for (char ch : text.toCharArray()) {

            charCount.put(ch, charCount.getOrDefault(ch, 0) + 1);

        }

        // Print duplicate characters

        System.out.println(“Duplicate characters are:”);

        for (Map.Entry<Character, Integer> entry : charCount.entrySet()) {

            if (entry.getValue() > 1) {

                System.out.println(entry.getKey() + ” : ” + entry.getValue());

            }

        }

        driver.quit();

    }

}

Using Set:

import java.util.HashSet;

import java.util.Set;

String text = “selenium”;

Set<Character> seen = new HashSet<>();

Set<Character> duplicates = new HashSet<>();

for (char ch : text.toCharArray()) {

    if (!seen.add(ch)) {

        duplicates.add(ch);

    }

}

System.out.println(“Duplicate characters: ” + duplicates);

Question3: What is the use of Lamda expression how to use it in previous scenario from Question 2?

Answer:

I have explained use of Lamda expression as part previous program with HashMap for duplicate characters

A lambda expression is used to write cleaner, shorter, and more readable code by providing an implementation of a functional interface without creating a separate class or method.

import java.util.HashMap;

import java.util.Map;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.Test;

public class DuplicateCharacters {

    @Test

    public void verifyDuplicates {

        WebDriver driver = new ChromeDriver();

        driver.get(“https://example.com”);

        // Get text from a web element

        String text = driver.findElement(By.id(“sampleText”)).getText();

        // Remove spaces and convert to lowercase

        text = text.replaceAll(“\\s”, “”).toLowerCase();

        // HashMap to store character count

        HashMap<Character, Integer> charCount = new HashMap<>();

        for (char ch : text.toCharArray()) {

            charCount.put(ch, charCount.getOrDefault(ch, 0) + 1);

        }

                System.out.println(“Duplicate characters are:”);

        charCount.forEach((key, value) -> {

            if (value > 1) {

                System.out.println(key + ” : ” + value);

            }

        });

        driver.quit();

    }

}

Question 4: What is the difference between Post and PUT methods? – Api Testing

Answer:

Difference Between POST and PUT Methods (REST / HTTP)

FeaturePOSTPUT
PurposeCreate a new resourceUpdate or replace an existing resource
Resource URIServer decides the URIClient specifies the URI
Idempotent❌ No (multiple requests create multiple resources)✅ Yes (multiple requests give same result)
Data HandlingAdds new dataReplaces existing data completely
Repeat Request EffectCreates duplicatesNo duplicate creation
ResponseUsually returns 201 CreatedUsually returns 200 OK or 204 No Content
Example URL/users/users/101

Question 5: When do we receive 401 and 500 status codes in api testing?

Answer:

🔹 401 – Unauthorized

✅ When it occurs

You receive 401 when the client is not authenticated or authentication is invalid.

Common reasons

  • Missing Authorization header
  • Invalid username/password
  • Expired or invalid JWT / OAuth token
  • Incorrect API key
  • Token format is wrong

Example

GET /users
Authorization: Bearer invalid_token

Response

401 Unauthorized

Interview Line

401 means the request is not authenticated. The server refuses access because credentials are missing or invalid.

🔹 500 – Internal Server Error

✅ When it occurs

You receive 500 when the server fails to process a valid request due to an internal issue.

Common reasons

  • Null pointer or unhandled exception in backend code
  • Database connection failure
  • Server crash
  • Incorrect server configuration
  • Code bug

Example

POST /users
Body: 
{
  "name": null

}

Question 6: Explain one scenario for API test automation?

Answer:

I have explained an API automation scenario for verification with Get request as below

🔹 API Details

  • Method: GET
  • URL: {{baseUrl}}/users/{{userId}}
  • Authorization: Bearer Token
  • Headers:
    • Content-Type: application/json

1. Verify Status Code

pm.test(“Status code is 200”, function () {

    pm.response.to.have.status(200);

});

2. Verify Response Time

pm.test(“Response time is less than 2000ms”, function () {

    pm.expect(pm.response.responseTime).to.be.below(2000);

});

3. Verify Content-Type Header

pm.test(“Content-Type is application/json”, function () {

    pm.response.to.have.header(“Content-Type”);

    pm.expect(pm.response.headers.get(“Content-Type”))

        .to.include(“application/json”);

});

4. Verify Response Body is not empty

pm.test(“Response body is not empty”, function () {

    pm.expect(pm.response.json()).to.not.be.empty;

});

5. Verify User ID

pm.test(“User ID is correct”, function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.id).to.eql(parseInt(pm.environment.get(“userId”)));

});

6. Verify Mandatory Fields

pm.test(“Mandatory fields are present”, function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData).to.have.property(“name”);

    pm.expect(jsonData).to.have.property(“email”);

});

7. Verify Data Types

pm.test(“Verify data types”, function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.id).to.be.a(“number”);

    pm.expect(jsonData.name).to.be.a(“string”);

    pm.expect(jsonData.email).to.be.a(“string”);

});

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Subscribe to our YouTube Channel: Testing Talks Latest
Testingtalkslatest.com - A project by CreativeHub IT Solutions.
Contact Us At: support@testingtalkslatest.com
Our Partner websites - Classified Hub , CodesToolbox
Scroll to Top
0
Would love your thoughts, please comment.x
()
x