1. Tell me how much time it take to retrieve an element if stored in HashMap, Binary tree and a Linked list? how it change if you have millions of records?

In HashMap it takes O(1) time, in binary tree it takes O(logN) where N is number of nodes in tree and in linked list it takes O(n) time where n is number of element in list. Millions of records doesn't affect the performance if data structure are working as expected e.g. HashMap has no or relatively less number of collision or binary tree is balanced. If that's not the case then their performance degrades as number of records grows.

2. Can you please explain the difference between Overriding and Overloading?

Overriding is resolved at runtime while overloading is compile time. Also rules of overriding and overloading is different, for example in Java, method signature of overloaded method must be different than original method, but in case of overriding it must be exactly same as overriding method.

3. Can you please explain the difference between forking a process and spawning a thread?

When you fork a process, the new process will run same code as parent process but in different memory space, but when you spawn a new thread in existing process, it just creates another independent path of execution but share same memory space.

4. Explain about critical section?

critical section is the part of a code, which is very important and in multi-threading must be exclusively modified by any thread. Semaphore or mutex is used to protect critical section. In Java you can use synchronized keyword or ReentrantLock to protect a critical section.

5. Can you please explain the difference between value type and a reference type?

A value type is more optimized type and always immutable e.g. primitive int, long, double and float in Java, while a reference type points to a object, which can be mutable or Immutable. You can also say that value type points to a value while reference type points to an object.

6. Explain heap and stack in a process?

They are two separate areas of memory in same process. Talking about Java, stack is used to store primitive values and reference type to object but actual object is always created in heap. One critical difference between heap and stack is that, heap memory is shared by all threads but each thread has their own stack.

7. Explain revision/version control?

Version control are software which is used to store code and manage versions of codebase e.g. SVN, CVS, Git, Perforce and ClearCase. They are very effective while comparing code, reviewing code and creating build from previous stable version. All professional development use some sort of revision or version control tool, without it you cannot mange code effectively, especially if 20 developers are working in same code base at same time. Version control tool plays very important role to keep code base consistent and resolving code conflicts.

8. Explain strongly typed programming language?

In a strongly typed language compiler ensure type correctness, for example you can not store number in String or vice-versa. Java is a strongly typed language, that's why you have different data types e.g. int, float, String, char, boolean etc. You can only store compatible values in respective types. On the other hand, weakly typed language don't enforce type checking at compile time and they tree values based upon context. Python and Perl are two popular example of weakly typed programming language, where you can store a numeric string in number type.

9. Can you please explain the difference between DOM and SAX parser?

DOM parser is a in memory parser so it loads whole XML file in memory and create a DOM tree to parse. SAX parser is a event based parser, so it parses XML document based upon event received e.g. opening tag, closing tag, start of attribute or end of attribute. Because of their working methodology, DOM parser is not suitable for large XML file as they will take lot of space in memory and your process may ran out of memory, SAX is the one which should be used to parse large files. For small files, DOM is usually much faster than SAX.

10. Can you please explain the difference between threads and processes?

A process can have multiple threads but a thread always belongs to a single process. Two process cannot share memory space until they are purposefully doing inter process communication via shared memory but two threads from same process always share same memory.

Download Interview PDF

11. Explain create a mock object?

Mock object are very useful to test an individual unit in your Software, in fact stud and mocks are powerful tool for creating automated unit tests. Suppose you write a program to display currency conversion rates but you don't have a URL to connect to, now if you want to test your code, you can use mock objects. In Java world, there are lot of frameworks which can create powerful mock objects for you e.g. Mockito and PowerMock.

12. Explain Immutable class mean?

A class is said to be Immutable if its state cannot be changed once created, for example String in Java is immutable. Once you create a String say "Java", you cannot change its content. Any modification in this string e.g. converting into upper case, concatenating with another String will result in new object. Immutable object are very useful on concurrent programming because they can be shared between multiple threads without worrying about synchronization. In fact, whole model of functional programming is built on top of Immutable objects.

13. Can you please explain the difference between valid and well-formed XML?

A well-formed XML is the one which has root element and all tags are closed properly, attributes are defined properly, their value is also quoted properly. On other hand, a valid XML is the one which can be validated against a XSD file or schema. So it's possible for a XML to be well-formed but not valid, because they contain tags which may not be allowed by their schema.

14. Explain about SQL injection?

SQL injection is a security vulnerability which allows intruder to steal data from system. Any system which take input from user and create SQL query without validating or sanitizing that input is vulnerable to SQL injection. In such system, intruder can inject SQL code instead of data to retrieve more than expected data. There are many instances on which sensitive information e.g. user id, password and personal details are stolen by exploiting this vulnerability. In Java, you can avoid SQL injection by using Prepared statement.

15. Explain V in MVC stand for, and what does it signify?

V stands for View in MVC pattern. View is what user sees e.g. web pages. This is a very important design pattern of web development which is based upon segregation of concern, so that each area can be modified without impacting other areas. In Java world, there are lots of open source framework which provides implementation of MVC pattern e.g. Struts 2 and Spring MVC. By the way, M stands for model and C stands for controller. Modes are actual business objects e.g. User, Employee, Order while controller is used to route request to correct processor.

16. Can you please explain the difference between class and an object?

A class is a blue print on which objects are created. A class has code and behavior but an object has state and behavior. You cannot create an object without creating a class to represent its structure. Class is also used to map an object in memory, in Java, JVM does that for you.

17. Explain loose-coupling?

Loose coupling is a desirable quality of software, which allows one part of software to modify without affecting other part of software. For example in a loosely coupled software a change in UI layout should not affect the back-end class structure.

18. Can you please explain the difference between composition, aggregation and association?

Association means two objects are related to each other but can exists without each other, Composition is a form of association where one object is composed of multiple object, but they only exists together e.g. human body is composition of organs, individual organs cannot live they only useful in body. Aggregation is collection of object e.g. city is aggregation of citizens.

19. Can you please explain the difference between an interface and an abstract class?

This is the most classical question of all programming interviews. An interface is the purest form of abstraction with nothing concrete in place, while an abstract class is a combination of some abstraction and concrete things. The difference may vary depending upon language e.g. in Java you can extend multiple interface but you can only extend on abstract class. For a more comprehensive discussion see the detailed answer.

20. Explain inner join and a left join in SQL?

In SQL, there are mainly two types of joins, inner join and outer join. Again outer joins can be two types right and left outer join. Main difference between inner join and left join is that in case of former only matching records from both tables are selected while in case of left join, all records from left table is selected in addition to matching records from both tables. Always watch out for queries which has "all" in it, they usually require left join e.g. write sql query to find all departments and number of employees on it. If you use inner join to solve this query, you will missed empty departments where no one works.

21. Describe three different kinds of testing that might be performed on an application before it goes live?

Unit testing, integration testing and smoke testing. Unit testing is used to test individual units to verify whether they are working as expected, integration testing is done to verify whether individually tested module can work together or not and smoke testing is a way to test whether most common functionality of software is working properly or not e.g. in a flight booking website, you should be able to book, cancel or change flights.

22. Can you please explain the difference between iteration and recursion?

Iteration uses loop to perform same step again and again while recursion calls function itself to do the repetitive task. Many times recursion result in a clear and concise solution of complex problem e.g. tower of Hanoi, reversing a linked list or reversing a String itself. One drawback of recursion is depth, since recursion stores intermediate result in stack you can only go upto certain depth, after that your program will die with StackOverFlowError, this is why iteration is preferred over recursion in production code.

23. How to get the last digit of an integer?

By using modulus operator, number % 10 returns the last digit of the number, for example 2345%10 will return 5 and 567%10 will return 7. Similarly division operator can be used to get rid of last digit of a number e.g. 2345/10 will give 234 and 567/10 will return 56. This is an important technique to know and useful to solve problems like number palindrome or reversing numbers.

24. Explain the result of 1 XOR 1?

Answer is zero, because XOR returns 1 if two operands are distinct and zero if two operands are same, for example 0 XOR 0 is also zero, but 0 XOR 1 or 1 XOR 0 is always 1.

Download Interview PDF

25. Explain test-driven development?

Test driven is one of the popular development methodology in which tests are written before writing any function code. In fact, test drives the structure of your program. Purists never wrote a single line of application code without writing test for that. It greatly improve code quality and often attributed as a quality of rockstar developers.