I have been a Java developer for more than 10 years and the last 4 years I have been focused on micro services architecture with Spring boot, hibernate and Oracle for a consultancy company where we have to deal with the full release process until we put the code in production, every month approximately.
Last month I applied to a selection process for a company who has an on-line application (not a consultancy) and they were looking for Senior developers in Java. After some interviews with the recruiter and a team lead I started the second phase, which was a code challenge. I spent the weekend implementing the solutions, trying to cover the acceptance criteria, building tests and trying to apply all my advanced knowledge about java 8 and Spring Framework.
I am not entirely satisfied with the final solution but I think I did a good job. I passed to the next phase which was a live coding with some members of the company. We reviewed the code and they were asking me questions about the followed approach and about java. Besides my nerves (blocking my mind) I realised that I am not able to answer basic questions about Java, things like: "how does the garbage collector work"; "differences between ArrayList and LinkedList"; "Why is it required to implement Equals() and HashCode()", etc. They had also proposed to use java inheritance to create a baseDTO and despite being able to surf The Internet I was too nervous that I failed, and therefore I was out of the process.
Now I have some doubts about what to do with my future. Some days I think that I should become a Java certified and review all the java stuff while I am preparing for the exam. But other days I think it is better to have some rest of Java and try something new, like Ruby/Rails or Golang, which will allow me to have different perspective about the ways of implementing a solution.