# Frequently Asked Algorithms & Java Programs

Below are most frequently asked algorithms and programs in interview to test interviewee programming and logical skill. These question can be asked with fresher and any senior level programmers to check hands on with the code or not.

1. Write a program to print alphabet using java loop
Output:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
2. Write a program to check odd or even number.
Input:  5
Output: Odd Number
3. Write a program to convert Fahrenheit to Celsius.
Input: 50
Output: 10.0
4. Write a java program to print fibonacci series without using recursion and using recursion.
Input: 12
Output: 0 1 1 2 3 5 8 13 21 34 55 89 144
5. Write a java program to check prime number.
Input: 42
Output: Not prime number
Input: 13
Output: Prime number
6. Write a java program to check palindrome number.
Input: 349
Output: Not palindrome number
Input: 1234321
Output: Palindrome number
7. Write a java program to print factorial of a number.
Input: 4
Output: 24
Input: 5
Output: 120
8. Write a java program to check Armstrong number.
Input: 153
Output: Armstrong number
Input: 22
Output: Not Armstrong number
9. Write a program to swap numbers without using third variable.
Input: 20 30
Output: 30 20
10. Write a program to reverse of number.
Input:    123456
Output: 654321
11. Write a program to find largest of three numbers.
Input: 10 30 40
Output: 40
12. Write a program to print Floyd triangle.
Input: 7
Output:

`1`
`2 3`
`4 5 6`
`7 8 9 10`
`11 12 13 14 15`
`16 17 18 19 20 21`
`22 23 24 25 26 27 28`

# Sorting Program

1. Write a java program to sort an array elements using bubble sort algorithm.
Input:    2 6 3 8 4 1 5 0
Output: 0 1 2 3 4 5 6 8
2. Write a java program to sort an array elements using selection sort algorithm.
Input:    2 6 3 8 4 1 5 0
Output: 0 1 2 3 4 5 6 8
3. Write a java program to sort an array elements using insertion sort algorithm.
Input:    2 6 3 8 4 1 5 0
Output: 0 1 2 3 4 5 6 8
4. Write a java program to sort an array elements using quick sort algorithm.
Input:    12 24 45 56 10 9 49 30 5 15
Output: 5 9 10 12 15 24 30 45 49 56
5. Write a java program to sort an array elements using heap sort algorithm.
Input:    2 6 3 8 4 1 5 0
Output: 0 1 2 3 4 5 6 8
6. Write a java program to sort an array elements using merge sort algorithm.
Input:    12 24 45 56 10 9 49 30 5 15
Output: 5 9 10 12 15 24 30 45 49 56
7. Write a java program to sort an array elements using shell sort algorithm.
Input:    2 6 3 8 4 1 5 0
Output: 0 1 2 3 4 5 6 8
8. Write a java program to sort an array elements using radix sort algorithm.
Input:   170 45 75 90 2 802 2 66
Output: 2 2 45 66 75 90 170 802
9. Write a java program to sort an array elements using bucket sort algorithm.
Input:   0.23 0.67 0.32 0.25 0.88 0.45 0.86 0.16 0.59 0.38 0.19 0.43 0.02
Output: 0.02 0.16 0.19 0.23 0.25 0.32 0.38 0.43 0.45 0.59 0.67 0.86 0.88
10. Write a java program to sort an array elements using counting sort algorithm.
Input:    2 6 3 2 8 4 8 1 5 3 1 4 0
Output: 0 1 1 2 2 3 3 4 4  5 6 8 8

# Java : How to remove duplicate objects from List

In this below example list having duplicate object of AccountTransaction which need to remove from list. Here I am using HashSet because it always keep unique records. Now question comes how to decide uniqueness of object. As you know contract between hashcode() and equals() method deciding uniqueness and equality of object.

Here used Comparable interface to sort values based on transaction date.

hashcode() and equals() contract :

“If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. If you only override equals() and not hashCode() your class violates this contract.”

Example

```
import java.math.BigDecimal;
import java.util.Date;

public class AccountTransaction implements Comparable{
private Date date;
String transactionType;
private String reference;
private BigDecimal amount;

public AccountTransaction(Date date, String transactionType, String reference, BigDecimal amount) {
super();
this.date = date;
this.transactionType = transactionType;
this.reference = reference;
this.amount = amount;
}
//Overriding toString() method to print object
@Override
public String toString() {
return "AccountTransactions [date=" + date + ", transactionType=" + transactionType + ", reference=" + reference
+ ", amount=" + amount + "]";
}
//Overriding hashcode() and equals() method to check equality and uniqueness
//of objects
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((amount == null) ? 0 : amount.hashCode());
result = prime * result + ((date == null) ? 0 : date.hashCode());
result = prime * result + ((reference == null) ? 0 : reference.hashCode());
result = prime * result + ((transactionType == null) ? 0 : transactionType.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AccountTransaction other = (AccountTransaction) obj;
if (amount == null) {
if (other.amount != null)
return false;
} else if (!amount.equals(other.amount))
return false;
if (date == null) {
if (other.date != null)
return false;
} else if (!date.equals(other.date))
return false;
if (reference == null) {
if (other.reference != null)
return false;
} else if (!reference.equals(other.reference))
return false;
if (transactionType == null) {
if (other.transactionType != null)
return false;
} else if (!transactionType.equals(other.transactionType))
return false;
return true;
}
//Sort object by date
@Override
public int compareTo(AccountTransaction o) {

return this.getDate().compareTo(o.getDate());
}

//use getter and setter of properties
}

```

Here is the class having sample data which is having duplicate objects in list. calling removeDuplicate() method which is converting list to hashSet() to remove duplicate and then again converting to list then sorting by date.

```
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class RemoveDuplicateObjects {

public static void main(String[] args) {
List transactionList = new ArrayList();
try {
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:50 AM"), "Account Debits", "Pizza hut",new BigDecimal("0.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:52 AM"), "Account Debits", "Pizza hut",new BigDecimal("0.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:48 AM"), "Account Debits", "Burger king",new BigDecimal("0.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:38 AM"), "Account Debits", "Burger king",new BigDecimal("1.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:55 AM"), "Account Debits", "Papa Johns",new BigDecimal("2.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:35 AM"), "Account Debits", "Pizza hut",new BigDecimal("1.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:35 AM"), "Account Credits", "Chase Bank",new BigDecimal("200")));
//Duplicate record
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:52 AM"), "Account Debits", "Pizza hut",new BigDecimal("0.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:38 AM"), "Account Debits", "Burger king",new BigDecimal("1.56")));
transactionList.add(new AccountTransaction(getDate("2018-10-15 10:35 AM"), "Account Credits", "Chase Bank",new BigDecimal("200")));

System.out.println("Transactions before removing duplicate=============");
for(AccountTransaction transaction:transactionList)
System.out.println(transaction);
System.out.println("Transactions after removing duplicate=============");
transactionList=removeDuplicate(transactionList);
for(AccountTransaction transaction:transactionList)
System.out.println(transaction);

} catch (Exception ex) {
ex.printStackTrace();
}
}

private static List removeDuplicate(List transactionList)
{
//Convert List to Set
Set transactionSet=new HashSet(transactionList);
//Convert Set to Array List
transactionList=new ArrayList(transactionSet);

//Sort object by transaction date and time
Collections.sort(transactionList);

return transactionList;
}

private static Date getDate(String dateStr) throws ParseException {
return new SimpleDateFormat("yyyy-MM-dd HH:mm a").parse(dateStr);
}
}

```

Output

``````
Transactions before removing duplicate=============
AccountTransactions [date=Mon Oct 15 10:50:00 IST 2018, transactionType=Account Debits, reference=Pizza hut, amount=0.56]
AccountTransactions [date=Mon Oct 15 10:52:00 IST 2018, transactionType=Account Debits, reference=Pizza hut, amount=0.56]
AccountTransactions [date=Mon Oct 15 10:48:00 IST 2018, transactionType=Account Debits, reference=Burger king, amount=0.56]
AccountTransactions [date=Mon Oct 15 10:38:00 IST 2018, transactionType=Account Debits, reference=Burger king, amount=1.56]
AccountTransactions [date=Mon Oct 15 10:55:00 IST 2018, transactionType=Account Debits, reference=Papa Johns, amount=2.56]
AccountTransactions [date=Mon Oct 15 10:35:00 IST 2018, transactionType=Account Debits, reference=Pizza hut, amount=1.56]
AccountTransactions [date=Mon Oct 15 10:35:00 IST 2018, transactionType=Account Credits, reference=Chase Bank, amount=200]
AccountTransactions [date=Mon Oct 15 10:52:00 IST 2018, transactionType=Account Debits, reference=Pizza hut, amount=0.56]
AccountTransactions [date=Mon Oct 15 10:38:00 IST 2018, transactionType=Account Debits, reference=Burger king, amount=1.56]
AccountTransactions [date=Mon Oct 15 10:35:00 IST 2018, transactionType=Account Credits, reference=Chase Bank, amount=200]
Transactions after removing duplicate=============
AccountTransactions [date=Mon Oct 15 10:35:00 IST 2018, transactionType=Account Credits, reference=Chase Bank, amount=200]
AccountTransactions [date=Mon Oct 15 10:35:00 IST 2018, transactionType=Account Debits, reference=Pizza hut, amount=1.56]
AccountTransactions [date=Mon Oct 15 10:38:00 IST 2018, transactionType=Account Debits, reference=Burger king, amount=1.56]
AccountTransactions [date=Mon Oct 15 10:48:00 IST 2018, transactionType=Account Debits, reference=Burger king, amount=0.56]
AccountTransactions [date=Mon Oct 15 10:50:00 IST 2018, transactionType=Account Debits, reference=Pizza hut, amount=0.56]
AccountTransactions [date=Mon Oct 15 10:52:00 IST 2018, transactionType=Account Debits, reference=Pizza hut, amount=0.56]
AccountTransactions [date=Mon Oct 15 10:55:00 IST 2018, transactionType=Account Debits, reference=Papa Johns, amount=2.56]
``````