Thursday 5 January 2012

Interview questions

These are few interview questions asked. The questions are based on Java and non technical. Some of the questions seems to be very simple and staight forward.

1. what is the difference between comments in java

Ans: 3 types of comments in java

a. // - which is single line comment
b. /* */ - which is to add a comment of more than one line, we can precede our comment using/*
c. /** */ -
multiple line comments. Used for documentation purpose.

2. when there is a problem with the application, as a developer where we need to look at.

Ans : error logs and application server log files

3. How do you avoid deadlocks in a multithreaded enviornment?

Ans : first approach try to avoid synchronized where ever possible. If it is unavoidable, then code in such way that each thread should get lock & unlock in the same order or squence.

4.
Write a Java program that:

- inputs a String from a user. Expect the String to contain spaces and alphanumeric characters only.
- capitalizes all first letters of the words in the given String.
- preserves all other characters (including spaces) in the String.
- displays the result to the user.

Answer : *
Approach : I have followed a simple approach. However there are many string utilities available
* for the same purpose. Example : WordUtils.capitalize(str) (from apache commons-lang)

/*****************************************************************************/
public static void main(String[] args) throws IOException{
System.out.println("Input String :\n");
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
String inputString = in.readLine();
int length = inputString.length();
StringBuffer newStr = new StringBuffer(0);
int i = 0;
int k = 0;
/* This is a simple approach
* step 1: scan through the input string
* step 2: capitalize the first letter of each word in string
* The integer k, is used as a value to determine whether the
* letter is the first letter in each word in the string.
*/

while( i < length){
if (Character.isLetter(inputString.charAt(i))){
if ( k == 0){
newStr = newStr.append(Character.toUpperCase(inputString.charAt(i)));
k = 2;
}//this else loop is to avoid repeatation of the first letter in output string
else {
newStr = newStr.append(inputString.charAt(i));
}
} // for the letters which are not first letter, simply append to the output string.
else {
newStr = newStr.append(inputString.charAt(i));
k=0;
}
i+=1;
}
System.out.println("new String ->"+newStr);
}
}
/*****************************************************************************/

5. How to reverse a string?

InputStreamReader inst = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(inst);
StringBuffer input = new StringBuffer(in.readLine());
System.out.println("Input String-->"+input);
System.out.print("reverse String-->");
System.out.print(input.reverse());

6. Palindrome program.

InputStreamReader instr = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(instr);
StringBuffer input = new StringBuffer(in.readLine());
StringBuffer reverseStr = new StringBuffer(input.reverse());
String inStr = input.toString().trim();
String outStr = reverseStr.toString().trim();
System.out.println(reverseStr);
if (inStr.equals(outStr)) {
//if (input.length() == reverseStr.length()) {
System.out.println("Palindrome");
//}
} else {
System.out.println("not Palindrome");
}

7. How does equals() method differs for String and StringBuffer classes?

String.equals() compares the 2 strings whereas StringBuffer.equals will return true only if compared with itself.

for comparision of strings we must use String.euqals() method or convert the StringBuffer to String and then compare.



No comments: