Skip to main content

Tricky questions or puzzles in JAVA part-1

In this post i am going to share some tricky questions in JAVA which is often asked in technical interviews in campus placements.




1. What is the output of below Threads code snippet?

class ThreadA extends Thread{
public ThreadA(Runnable r) {
super(r);
}
public void run(){
System.out.println("Thread A is called");
}
}

class ThreadB implements Runnable{
public void run(){
System.out.println("Thread B is called");
}
}

class Caller{
public static void main(String args[]){
new ThreadA(new ThreadB()).start(); 
}
}

Answer : Thread A is called

Explanation : Here Thread B is not called because when we initialize thread A class and pass the instance of Thread B class to the constructor of A, the run method of Thread A does not call the run method of Thread B class and hence Thread B run () method never gets called and so the "Thread A is called" gets printed.

Correct Code to print "Thread B is called":

class ThreadA extends Thread{
Runnable runnable;
public ThreadA(Runnable r) {
runnable = r;
}
public void run(){
System.out.println("Thread A is called");
runnable.run();
}
}

See my Blog post on Threads in Java:

Theads Basics in Java
Thread Synchronization in JAVA

2. What is the output of below Thread code snippet?

class ThreadA implements Runnable{

public void run(){
System.out.println(Thread.currentThread().getName() );
}
}

class ThreadB implements Runnable{
public void run(){
new ThreadA().run()
new Thread(new ThreadA(), "thread2").run();
new Thread(new ThreadA(). "thread3").start();
}
}

class Caller{
public static void main(String args[]){
new Thread(new ThreadB(), "thread1").start();
}
}

Answer is thread1thread1thread3.

Explanation: We know that when we call run() method on thread instance it does not create a new thread but it just call run() method on the current thread.

So when in the main function new thread is created using an instance of Thread B class and calling start () method, it will create a new thread name "thread1" and call the run() method of class Thread B. When the run() of class Thread B is called it will create the instance of Thread A class and call its run() method in turn resulting in printing the current thread which is "thread1".

Now again in class Thread B run () method a new thread is created using instance of Thread A class and calling the run() method of class Thread A . But as run() method is called and not start() method no new thread will created and again it will print the current thread in class Thread A run () method. So again "thread1" will get printed.

Again,  in Thread class B run() method we again create new thread using Thread A instance and calling the start method this time. Thus creating a new thread "thread3" and printing the same.

So the output will be thread1thread1thread3.

I will post few more blog post about the tricky questions in JAVA. So keep watching!!

Also see my posts on

Tricky Questions or puzzles in C Part-1
Tricky Questions or puzzles in C Part-2
Tricky Questions or puzzles in C Part-3

Good Luck for Interviews.




Comments

Popular posts from this blog

Tricky Questions or Puzzles in C ( Updated for 2026)

Updated for 2026 This article was originally written when C/C++ puzzles were commonly asked in interviews. While such language-specific puzzles are less frequent today, the problem-solving and logical reasoning skills tested here remain highly relevant for modern Software Engineering, Data Engineering, SQL, and system design interviews . Why These Puzzles Still Matter in 2026 Although most Software &   Data Engineering interviews today focus on Programming, SQL, data pipelines, cloud platforms, and system design , interviewers still care deeply about how you think . These puzzles test: Logical reasoning Edge-case handling Understanding of execution flow Ability to reason under pressure The language may change , but the thinking patterns do not . How These Skills Apply to Data Engineering Interviews The same skills tested by C/C++ puzzles appear in modern interviews as: SQL edge cases and NULL handling Data pipeline failure scenarios Incremental vs ...

Program to uncompress a string ie a2b3c4 to aabbbcccc

Below is the program to uncompress a string #include<stdio.h> #include<conio.h> #include<stdlib.h> int main() { char str[100]="a2b3c4d8u7"; for(int i=0;str[i]!='\0';i++) { if(i%2!=0) { for(int j=0;j<atoi(&str[i]);j++) { printf("%c",str[i-1]); } } } getch(); } Want to become a Data Engineer? Check out below blog posts  1.  5 Key Skills Every Data Engineer needs in 2023 2.  How to prepare for Data Engineering Interviews 3.  Top 25 Data Engineer Questions

Programs and Puzzles in technical interviews i faced

I have attended interview of nearly 10 companies in my campus placements and sharing their experiences with you,though i did not got selected in any of the companies but i had great experience facing their interviews and it might help you as well in preparation of interviews.Here are some of the puzzles and programs asked to me in interview in some of the good companies. 1) SAP Labs I attended sap lab online test in my college through campus placements.It had 3 sections,the first one is usual aptitude questions which i would say were little tricky to solve.The second section was Programming test in which you were provided snippet of code and you have to complete the code (See Tricky Code Snippets  ).The code are from different data structures like Binary Tree, AVL Tree etc.Then the third section had questions from Database,OS and Networks.After 2-3 hours we got the result and i was shortlisted for the nest round of interviews scheduled next day.Then the next day we had PPT of t...