Java language and JVM
- Describe access modifiers (private, protected, public) and differences between them.
- What is inheritance?
- Describe difference between interface and abstract class.
- Is it possible that one class can be both abstract and final at the same time?
- Describe how does Garbage Collector works.
- What types Garbage Collector do we have? When to use which?
- Describe structure of Java Heap.
- Describe structure of JVM.
- What is the difference between Stack and Heap?
- Tell something about
hashCode()andequals()methods. What contract they need to satisfy? - Can
hashCode()return constant value? Explain your answer. - Can two objects have the same hashCode?
- When
obj1.equals(obj2)is true, then is it possible thatobj1andobj2have different hashCodes? - Describe
StringBuilderandStringBufferclasses. What are differences between them? - Do you know
java.util.concurrentpackage? Tell something about its contents. - Do you know any frameworks for concurrent programming?
- Describe
volatilekeyword. - Describe overriding and overloading. What are differences between them?
- Describe keywords
final,finallyandfinalize(). - What is immutable object and how can you create it?
- Does all properties of immutable object need to be final?
- What is the difference between creating
Stringwithnewoperator and literal? - Describe checked and unchecked exceptions. What are differences between them? When can we use specific type of exception and why?
- How does
substring()works inside? - Which method you need to implement to use object as key in a
HashMap? - Where do equals and hashcode come in the picture during
get(...)operation? - What's the difference between
Executor.submit()andExecutor.execute()method - Can you write thread-safe Singleton?
- Write code iterating over
HashMap - Is it better to synchronize critical section of
getInstance()or wholegetInstance()method? - What's wrong with using
HashMapin multithreaded environment? - How to create, start, destroy and block Threads in Java?
- Do you know any thread-safe collections?
- How would you prevent client from directly instantiation your concrete class?
- What's the difference between
HashMapandHashTable? - How does
HashMapworks? - Describe shortcuts: JNI, JNDI, JAAS
- Describe differences between
FilterandServlet - Does
LocalDateTimehave information about time zone? If not, then how to define time zone? - What are differences between
ArrayandArrayList? - When should we use
LinkedListand whenArrayList? - How to change a value of the final class with immutable attributes?
Spring
- What bean scopes do we have?
- What's default bean scope?
- How many instances bean has by default?
- How can we wire beans and components?
- How can we inject components?
- How Spring wires components and beans under the hood?
- What's new in Spring Boot when we compare it to Spring Core
- What
@SpringBootApplicationannotation has under the hood? - When we explicitly call a method without any annotation, which calls internally a method with
@Transactionalannotation, then the whole operation will be transactional? Explain why? - Why injecting components via constructor (with
@Autowiredannotation) is better than injecting them via annotations on class attributes? - When should we use aspects?
- How to create aspect and what should it have?
- How to create async operations?
- How to schedule operations?
Design Patterns
- What design patterns do you know?
- Describe facade/adapter/builder/{any} pattern.
- What's the difference between factory and abstract factory pattern?
- What is Singleton?
Good software development practices
- What good practices of software development do you know?
- When you take a look at the code how do you recognize if it's clean and well written?
- How would you design method in the right way?
- What is loose coupling?
- What is recommended maximum number of lines in the method?
Programming Paradigms
- Describe structural programming paradigm
- Describe Object-Oriented Programming paradigm
- Describe functional programming paradigm
- Describe reactive programming paradigm
Multi-threading & Concurrency
- What problems can we solve with multi-threaded programs?
- What problems do we have during writing multi-threaded programs?
- How to deal with problems occurring in multi-threaded programs?
- What multi-threaded programming models do you know?
- How do you implement different multi-threaded programming models in Java?
- How to deal with shared data model in multi-threaded environment?
Version Control Systems
- What kind of Version Control Systems do you know?
- Do you think Git is better than other systems? Why?
- Can you work offline with Git?
- Can you work offline with SVN?
Continuous Integration
- What types of Continous Integration Servers do you know? Have you used any?
- How did you used Jenkins or other CI Server in your work?
Software development methodologies
- In what methodologies did you work?
- Do you know scrum? Describe it.
- Can you describe kanban model?
- Can you describe waterfall model?
Testing
- What types of tests do you know?
- What is the difference between mock and stub?
- Do you know any libraries for mocking? Describe them.
- Do you know any libraries for testing? Describe them.
- What annotations of JUnit do you know and what is their purpose?
- How would you test method, which has to use implementation of method from another class, which is not ready yet?
Web Services
- Describe SOAP.
- Describe REST.
- What request methods can you use for getting/inserting/updating/deleting data?
- What is common protocol for REST
- How good RESTful end-point should look like?
- What are principles of designing good RESTful API?
Others
- What operating system do you prefer and why?
- What are news introduced in Java 8/9/10/11?
- What technical book did you read recently?
- What are your methods for learning new things?