Since I’ve attended several job interviews recently, I’ve decided to share some experience with you. Why hard part? Because this article is going to be about technical stuff. I’m going to write something about soft part later. Technical interview will probably look a bit different depending on your programming background. If you are new, expect more core language / programming questions. Later on emphasis probably shifts more towards your actual work experience, technologies, frameworks and practical problem solving skills. I’m not going to answer questions (I’m lazy), just provide list of topics you might want to review if you are going to a Java interview.
General object oriented programming / design core
- Explain polymorphism, encapsulation, cohesion, coupling.
- Difference between inheritance and aggregation.
- What does “clean code” and “technical debt” mean to you?
- Describe some refactoring techniques.
- Explain SOLID principles.
- Other principles like KISS, DRY, YAGNI, law of Demeter etc.
- What design patterns do you know, explain some.
- What design anti-patterns do you know?
- How would you design an amphibious vessel / math expression evaluator / a dragon?
- What sorting algorithms do you know and what’s their computational complexity? Which would you choose having some knowledge about the data you are given?
- Write a code that:
- calculates a factorial of given number
- does a Fizz Buzz
- inverts order of letters in words of given sentence.
- checks if given string is a palindrome.
- enumerates all permutations / variations of given set of characters