Java is a widely used programming language. In a recent article, it ranks as the second most coveted programming skills by employers, just behind SQL.
We interviewed Anupam Mishra, a software engineer at Amazon and a long time Java developer to get some tips on what companies expect in Java software engineer candidates.
Q: What do you expect a junior level Java developer to know?
A junior level Java developer should know how to design classes and use interfaces, understand what abstract classes are and when they should be used. They also should know exception handling, using try-catch-finally blocks, the different types of exceptions, and the corresponding actions that should be taken.
Q: How about for a mid-level Java developer?
Mid-level Java developers should know Java collections frameworks well, such as the classes and interfaces for list, stack, set, hash map, tree map, etc. They should also be familiar with the algorithmic efficiency of using each of these common data structures and know when is appropriate to use each of them.
Additionally, a good understanding of the inner working of Java Virtual Machine is expected of a mid-level Java programmer. The necessary JVM knowledge we expect includes: the loading and initializing of classes, when static methods are called, when to make classes final, and what final objects mean.
Q: Finally, what makes an advanced-level Java developer?
Advanced Java developers would understand generics, which allows different object types to use the same implementation.
They would also have done multi-threaded programming in Java. Multi-threaded programming are important for many real-world software systems. They should know how multiple threads work on the same date, the concurrency issues, such of locking, multi-threads would create, managing the life cycle and priority of threads, etc. It’s fairly complex to implement and manage multi-threaded programming. It requires significant amount of experience to understand how things could possible go wrong and ways to prevent them from happening.
Senior-level Java developers would stay on top of the changes in Java. In other words, they know the differences and new features in each version of Java. For example, Java 8 was recently released, which includes Lambda expressions, new APIs and concurrency features. It’s good to understand the values of new Java language updates and how to take advantage of them.