30 Java Coding Interview Questions That Keep Showing Up in Product Based Companies
Master the Java coding patterns most frequently asked in product company interviews with clean, beginner-friendly solutions.
If you are preparing for Java interviews in product companies, coding rounds are something you simply cannot avoid.
Whether you’re targeting:
- Amazon
- Adobe
- Walmart
- Oracle
- PayPal
- Atlassian
- Flipkart
- Razorpay
- Or any strong backend engineering role
You will almost always face coding problems focused on problem-solving fundamentals.
Here’s the interesting part most developers eventually realize:
Top companies rarely ask completely random questions.
Most interview problems revolve around a small group of patterns:
- Arrays
- Strings
- HashMaps
- Sliding Window
- Stack & Queue
- Two Pointers
- Basic Data Structures
The difference between average candidates and strong candidates is not intelligence.
It’s pattern recognition.
In this article, we’ll go through 30 Java coding interview questions that repeatedly appear in product company interviews, along with clean and beginner-friendly solutions.
If you truly understand these problems, you will already be ahead of most candidates.
1. Reverse a String Without Using Built-in Functions
One of the oldest and most common Java interview questions.
Problem
Reverse a string manually without using StringBuilder.reverse().
Solution
public class ReverseString {
public static void main(String[] args) {
String str = "Java";
char[] arr = str.toCharArray();
int left = 0;
int right = arr.length - 1;
while (left < right) {
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
System.out.println(new String(arr));
}
}What Interviewers Actually Test
This question looks simple, but interviewers are checking:
- Two-pointer understanding
- In-place swapping logic
- String manipulation basics
- Clean coding style
2. Find the First Non-Repeated Character
A classic HashMap problem.
Problem
Find the first character that appears only once in a string.
Solution
import java.util.*;
public class FirstUniqueChar {
public static char firstUnique(String str) {
Map<Character, Integer> map = new LinkedHashMap<>();
for (char c : str.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1) {
return entry.getKey();
}
}
return '_';
}
public static void main(String[] args) {
System.out.println(firstUnique("swiss"));
}
}Why This Question Matters
This problem tests whether you understand:
- Frequency counting
- HashMap usage
- Order preservation
- Iteration efficiency
3. Check if a String is Palindrome
This appears everywhere from beginner interviews to backend screening rounds.
Problem
Check whether a string reads the same forward and backward.
Solution
public class Palindrome {
public static boolean isPalindrome(String str) {
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
public static void main(String[] args) {
System.out.println(isPalindrome("madam"));
}
}Concepts Tested
- Two-pointer technique
- Edge-case handling
- String traversal
4. Find Duplicate Elements in an Array
One of the most frequently repeated array questions.
Solution
import java.util.*;
public class DuplicateElements {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 2, 5, 1};
Set<Integer> set = new HashSet<>();
for (int num : arr) {
if (!set.add(num)) {
System.out.println("Duplicate: " + num);
}
}
}
}Why Interviewers Love This
It quickly reveals whether candidates understand:
- HashSet behavior
- Time complexity
- Efficient lookup operations
5. Find the Largest Element in an Array
Solution
public class LargestElement {
public static int findMax(int[] arr) {
int max = arr[0];
for (int num : arr) {
if (num > max) {
max = num;
}
}
return max;
}
}Hidden Interview Goal
Interviewers often use simple problems to evaluate:
- Confidence
- Code clarity
- Handling of corner cases
6. Find the Second Largest Number
Solution
public static int secondLargest(int[] arr) {
int first = Integer.MIN_VALUE;
int second = Integer.MIN_VALUE;
for (int num : arr) {
if (num > first) {
second = first;
first = num;
} else if (num > second && num != first) {
second = num;
}
}
return second;
}What Makes This Important
Strong candidates solve this in:
- One traversal
- O(n) time
- Without sorting
That’s exactly what interviewers want.
7. Count Frequency of Characters in a String
Solution
import java.util.*;
public class CharFrequency {
public static void main(String[] args) {
String str = "programming";
Map<Character, Integer> map = new HashMap<>();
for (char c : str.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
System.out.println(map);
}
}Concepts Being Tested
- Frequency mapping
- HashMap operations
- Iterative logic
8. Check if Two Strings are Anagrams
Solution
import java.util.Arrays;
public class Anagram {
public static boolean isAnagram(String s1, String s2) {
char[] a = s1.toCharArray();
char[] b = s2.toCharArray();
Arrays.sort(a);
Arrays.sort(b);
return Arrays.equals(a, b);
}
}Why This Appears Often
Because it tests:
- Sorting
- Arrays
- String processing
- Clean decomposition
9. Fibonacci Series
Solution
public class Fibonacci {
public static void main(String[] args) {
int n = 10;
int a = 0;
int b = 1;
for (int i = 1; i <= n; i++) {
System.out.print(a + " ");
int c = a + b;
a = b;
b = c;
}
}
}What Companies Observe
Even small problems reveal:
- Loop understanding
- Variable transitions
- Logical thinking
10. Check Prime Number
Solution
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}Optimization Insight
Using Math.sqrt(num) avoids unnecessary iterations.
Get Sanajit Jana’s stories in your inbox
Join Medium for free to get updates from this writer.
Interviewers notice these optimizations immediately.
The Real Secret Behind Product Company Interviews
Most developers prepare incorrectly.
They jump from one random problem to another without understanding the deeper patterns.
But interviews are usually pattern repetition in disguise.
If you deeply master:
- Arrays
- Strings
- HashMaps
- Sliding Window
- Stack
- Queue
- Recursion
- Binary Search
You can solve a massive percentage of interview problems.
This is exactly how strong candidates become fast problem solvers.
Not by memorizing solutions.
By recognizing patterns quickly.
What Interviewers Actually Care About
A lot of developers think interviews are about writing genius-level algorithms.
Most of the time, they are not.
Interviewers usually evaluate:
- Problem-solving approach
- Code readability
- Communication
- Optimization awareness
- Edge-case handling
- Confidence under pressure
A clean simple solution often beats a complicated clever solution.
Every single time.
Takeaways
You do not need to solve 5,000 problems to crack Java interviews.
You need:
- Strong fundamentals
- Pattern recognition
- Consistent practice
- Clean coding habits
That’s it.
Start with these 30 questions.
Practice them properly.
Understand why each solution works.
And over time, coding interviews will stop feeling random.
They’ll start feeling predictable.
If you found this article helpful, please give it a clap 👏, drop a comment and share it with friends who may find it useful, and follow for more updates.
Thanks for reading -see you in the next story! 💗








