Posts Tagged ‘ Java ’

Interview/Exam tips for Java developers in Australia

I have some modest experience in job searching in Australia as a Senior Java Developer. I would like to share some of my experiences which might help you within similar context. You will need some special considerations when you are trying to get jobs in Australia. Here, market is very much influenced by job agencies.

Within an organization, usually when someone leaves, or company has some new tasks to be done, it looks for the resource who has the specific skill sets. Now, problem is, in reality, you don’t get exactly what you want. And, so it should be OK if someone has most of the skill sets, but one or two is missing. In Australia, job agencies, will be looking for exact match, even though sometimes it is highly unlikely to be found!

This primary filtration which is done by these non-technical (they have no clue about the difference between java and javascript) agents, usually creates a special challenge for the job seekers in Australia. So, what you can do?

Cover Letter
Go through the job description very carefully. Pick ALL the keywords they used to describe the skill sets that they are looking for in prospective candidates. Prepare a cover letter where you will write separate paragraphs for each keyword explaining how much you know and your experience with the technology/tool.

You might also have to re-arrange your CV to highlight your experience on the required skill sets. Now, there is a format for CVs in Australia. Basically, it includes a section where you state your ‘Key Transferable Skills’ – that is something valuable and readily usable by your prospective employer. So, in one job, having experience with ‘Financial technologies’ might be very important to include, where as in another job you might highlight your experience and certifications as SCRUM Master.

Talk and impress
Another important thing is, talk to the agents and better be confident when you do it. It is very important that you impress them first. When they are impressed, only then they will send your CV to the actual clients, otherwise you are not even in competition.
But, if you are applying for jobs which are advertised by the company itself – equation is different. But, still I would suggest to follow the usual rules that I mentioned above.

Now, you got the call. How do you prepare?

1. You should have good understanding of most of the Design Patterns (GOF) and specific experience using a few by yourself. Should be able to explain where and how these patterns have been used in Java ecosystems (within JDK, Spring, Hibernate, etc.) Here is a relevant discussion > What design patterns are used in Spring Framework?

2. Should know some common best practices for OO development. Like SOLID principlesSOLID Principles in Wikipedia

3. Should be able to write code using at least with some common searching and sorting algorithms.

4. Should be able to code without internet but with reasonable references if needed to produce basic things that you claimed in your CV. Like, some crud with an ORM (jpa/hibernate), some rest/web service, etc. It could be some bug fixing as well in a given code base.

5. SQL queries. Like joining (inner or left outer, self-join, etc), performance tuning for SQL, etc.

6. Should be apt on most popular java frameworks like spring and hibernate (yes, I know, you know – these are basics, and that’s why everyone will try judging these skills and you better be prepared well on these). And, for web frameworks ideally you should have experience with Spring MVC, JSF and optionally with Struts.

7. Javascript. Yes, even Java developers should know Javascript. Do not assume you know this language. Do not depend on your copy-paste experience. You should learn it well. Try some advanced topics (i.e., Advanced JavaScript Fundamentals Video) and most importantly try to learn and work with AngularJS 🙂 – it’s a hot cake!

And then, there are some special skills like, Message Queues, JVM tuning, etc. Well, the list is actually endless 😦 ..But, all I wanted to do is to put together that is very common, and if you are prepared with these, you should be benefited almost surely 🙂

From .NET to JVM – a cultural shock

World was limited when I was with .NET,  with Windows. It was controlled by Microsoft. Waited for newer versions, and whenever it came out, I was like a ecstatic child, overwhelmed by Microsoft’s Santa Claus like role.
So when I moved to Java, my first cultural shock was absence of any Godlike authority. Nobody will say do this and this is the [only?] way.
My first problem was where to start? I wanted to do a web application. Now, which framework to choose? What is the difference between Java EE and Spring? Its like a whole new world.. Eclipse or Netbeans or Idea? Maven or Ant or Gradle? Why am I pushed to take a decisions about everything? If you say, one can always choose a framework where he will get everything he wants for his tiny to mid sized solution, but then, choosing that suitable thing is itself another big decision to make.
In Java world, they have something called community process. Very much democratic, participatory and lengthy. There are different groups of people. Some like standards, some don’t wait for community, just create something easy and powerful. Lots of opinions.
Biggest bunch I see are the people who mix and match. And so considering the various options at every point one has, it is highly likely to find oneself in the middle of a very weird mix. And you poor user end up with some unsolvable dead-ends. After a while you might find out it was a silly version mismatch. As a good JVM user, you should be a good problem solver and a very good Google user.
This Java world is very enterprisy. When I see projects like Drools, Camel, Akka, JPos, Axon Framework… wow! That shows the wideness and variety and also overall maturity of the ecosystem.
After a certain period, I too, thought about the best mix. For me, it will be written in Scala, on Play Framework. There will be Akka actors to solve concurrency and fault tolerance. Drools to externalize complex and ever-changing business rules. And for storage it will be a mix. Probably Mongodb and Oracle/MySql. The project I am thinking about will solve problems of a  financial domain.