Skip to main content

How to Succeed in Java/J2ee Interviews...



Are technical skills alone or just being a quiet achiever
sufficient to boost your career?
The answer is no. The technical, analytical and problem solving skills must be complemented with:
  • Effective marketing skills to promote your skills, knowledge, and achievements along with ability to negotiate your promotions, salary or contract rates. Now days it is a rarity for management to pro-actively recognize or reward their staff unless there is an immediate vacancy to fill. If you cannot determine your net worth, how the management can?
  • Effective communication, interpersonal, presentation, mentoring, being a team player and business skills. I have seen candidates with technical, analytical and/or problem solving brilliance getting either sacked or failing to make a mark in their careers due to lack of one or more of the above mentioned skills.
There are myriad of books and online articles that can help you on the second bullet point, so let me elaborate on the first bullet point based on my experience and observations. If you want to market a merchandise successfully, you must know the merchandise. The same is true in marketing personal services in Java/J2EE.
When and where do you market your technical, analytical and problem-solving skills?

  • Team meetings and design/technical sessions.

  • Pro-actively providing either verbal or written recommendations or suggestions on improving the quality of the software, development process, fixing design and/ or development flaws etc.

  • Demonstrating your work and achievements via team/stake holder presentations, conferences, training, hand-over sessions and/or road shows.

  • Casual chats/conversations.

  • Code review sessions.

  • Interviews and CV.
Note: Take care not to over do and not to point fingers or undermine others. You should have your facts and know what you are talking.
What is required to effectively market your technical, analytical and problem-solving skills?

  • Ability to look at the big picture and drill down as a when required.

  • A good understanding of the key areas of software design/development.

  • Ability to look at things not only from a technical perspective but also from a business/stakeholder perspective.
In early stages of my Java/J2EE career I was in a position to impress my team leads and architects by pro-actively pinpointing some of the critical performance issues, transactional issues, memory issues and threading/concurrency issues and more recently on design flaws, scalability issues, software development process and best practices. I call these the key areas in my book entitled “Java/J2EE Job Interview Companion”. Let me illustrate with some Java/J2EE related examples:

Technical:

  • Struts action classes and Servlets are not thread-safe.

  • Valuable resources like database connections, file handles and sockets must be closed properly.

  • Throwing an application exception will not rollback transactions in EJB.

  • Web search functionality that can return large result sets should consider using true pagination.

  • Improper implementation of equals(..) and hashCode( ) methods can cause indeterministic behavior that is hard to debug/reproduce.
Analytical:
This requires ability to think outside the square and analyze (i.e. What If scenarios) and think of exceptional conditions.

  • What if an exception is thrown or customer cancels the transaction? Will the transaction be rolled-back?

  • What if 100 concurrent clients access this search functionality? Will it be thread-safe? Will it scale well without any performance or memory issues? [Consultants/contractors spend lot of time fixing these types of problems]

  • What if these critical messages are published to the live system with some inappropriate and/or sensitive messages? Do we need an approval or work flow process to prevent any human error?

  • What if a JMS message is lost? Do we require a guaranteed delivery mode? Or is performance more important than reliability? Can this message be consumed by more than one consumer?
Problem Solving:
This requires ability to identify and fix root cause of the problem.

  • “Account” objects are not getting added properly to HashMap. A possible cause is that the equals(..) and hashCode() methods are not implemented properly in “Account” class.
Cannot retrieve the stored objects from the HashMap. The possible causes are that the equals(..) and hashCode() methods are not implemented properly or mutable objects are used as keys.

  • CPU usage is very high. Possible causes are an endless while loop, never ending recursive method call, spawning a new thread every time instead of using a thread-pool, over-working the thread scheduler, memory starvation, improperly sized heap memory, inefficient Garbage Collection (GC) or GC alogorithm inefficiency etc

  • OutOfMemory exception is thrown. Possible causes are not enough memory allocated for the working of the application, unintentional object retention causing the heap to grow and grow, not making unused objects grabge collectible, memory leak in the JVM etc.
The analytical and problem solving skills can be business requirements or use cases related in addition to being technical.
When do you engage in negotiations on your promotions/remunerations?Everyone wants more money, but it is something entirely different to be worth more!. Your value is established entirely by your ability to render useful service or ability to induce others to render such service. Before you even start to negotiate your salary be sure that you are worth more than you now receive.

  • After having proved and promoted your abilities and worthiness (say 6 months to 1 year).

  • After having an alternative job offer that is more attractive but you are happy where you are.

  • After having multiple job offers if you have decided to move on. Do not rush in to accepting the first offer you get while you have more interviews to attend or waiting on other interview outcomes.
Note: Study the market rates, demand for your skills etc. Do not be unrealistic.
So, shape up your Java/J2EE career by learning and applying the key areas & core-concepts and subsequently selling your personal sevices more effectively.

How to choose from multiple Java/J2EE job offers?

In Java/J2EE career forums, interview candidates often ask how to choose from multiple job offers? This is not an easy decision to make and often this dilemma is made worse due to not asking the right questions about the position or role at the interview. Interviews are two way process where the interviewer(s) assess the suitability of the candidate to the position or role while the candidate assesses the suitability of the position or role to their interests and career aspirations. Asking the right questions can not only help you make an informed decision to choose the job of your dreams but also can help you negotiate your remuneration and market your skills & strengths more effectively based on the answers.Some of the questions you can ask are:

  • If I am successful, what type of projects will I be involved in and what type of technologies/frameworks will I be exposed to? Will this role involve liaising with the business users and/or mentoring opportunities?

  • What types of candidates succeed in your organization?
    Is this a mission critical project? How big is the team? What is the budget for this project?
    What are the key tasks and responsibilities involved with my role? Does this involve new development, enhancement or support work?
How would you go about choosing from multiple job offers?
It is not an easy decision to make but some of the things to consider are:

  • Remuneration and other benefits: This is an important criteria but not the only one. You need to look long term. [E.g. weight = 30%]

  • Opportunity to learn and/or work with popular, emerging and sought after technologies like (e.g. Spring, Hibernate, JSF, Ajax4jsf etc) and opportunity to acquire new skills like integration technologies (e.g. JMS, Web Service, SOA), new frameworks, business skills, team leading and/or mentoring skills (i.e. one can learn more from mentoring others). By acquiring emerging and sought after skills, you can stand out from your competition and by getting more interview calls next time you start hunting for job [E.g. weight = 25%].

  • Type of project (new project, enhancement to existing project, support): You tend to learn more on new projects. [E.g. weight = 15%]

  • Brand, company culture, business acumen etc. Brand does matter - it helps you to get more interview calls next time you start hunting for job - but again what skills & experience you will be acquiring matters more. You may get more interview calls but may find it difficult to get through your interview stages. [E.g. weight = 10%]

  • Type of role and opportunities (mentoring role, liaising with the business, travel etc): Would this role have active involvement with business users etc? You can learn more by mentoring and also will look good on your CV. [E.g. weight = 5%]

  • Type of organization (Insurance, Finance, Software house, multi-national etc). In some types of organizations like finance, insurance etc you tend get better remuneration. In some software houses and consultancy roles you tend to acquire wider range of skills. [E.g. weight = 5%]

  • How comprehensive the interview was. The more comprehensive the interview the better chance of working with high calibre staff. [E.g. weight = 5%].

  • Location and lifestyle choices. [E.g. weight = 5%] .
    Total weight should be 100%.
Note: Weights are for illustration purpose only and may vary from individual to individual.
You can analytically work it out as follows:You can give some weight to each of the criteria as shown above. The weight needs to add up to 100%. Now say you have offers from company A, B and C. You give some points out of say 10 to each of the above criteria and then multiply each point by the weight (i.e. importance to you) and then add them all up. If the difference is negligible or not conclusive enough then go with your heart. Otherwise you know which one(s) to choose or pursue with salary negotiations.


Have you got 4-year Java/J2EE experience or one year repeated 4 times?
Some employers and recruitment agencies seem to put more emphasis on quantity (i.e. number of years of experience) than quality (i.e. calibre of the candidate). Some candidates are more pro-active and passionate about their achievements, skills and widening their horizons while the others get into a comfort zone performing repetitive tasks.
So the point I am trying to make is that the recruitment process (at least the initial screening) should be qualitative not quantitative. For example:

  • Initial assessment should be via phone screening, written tests and/or coding, aptitude test of all the applicants.

  • Followed by face to face technical & culture fit interview of the short-listed candidates. Written code can be reviewed in addition to other technical interview questions.
Q. What are the benefits of the above approach?

  • Lieing or exaggerating: Candidates won’t be tempted to lie or exaggerate in their CVs.

  • Nature of the experience: Employers can potentially identify who has 4 year experience and who has 1 year experience repeated 4 times in the earlier stage of the interviewing process.

  • Effective CV: High calibre candidates won’t be penalized for lacking marketing skills i.e. failing to write effective CV. I can hear some of you saying that isn't that important part of any job hunting process? Yes that is correct but CVs can lie or exaggerate also look at my next point.

  • Large vs. Small Company? Also CVs can be assessed not based on achievements but based on the number of years of experience and the type of the organization (e.g. large multi-national). It shouldn't matter, which company you worked for but what matters is what you did there and your achievements. For example: My first Java/J2EE role was in a large financial institution (i.e. a stock exchange) where I was screened via a technical test, a technical interview and a HR interview. The type of project I worked on and skills I gained there was more like repeating 1 month 6 times. So I decided to move on after 6-7 months (lucky me it was the Internet boom time). I moved on to a small software development house where I was fortunate enough to work with some of the top-notch Java/J2EE developers & architects. It was a mission-critical project for a telecom client and was like acquiring 2 years worth of skills & experience in 6-8 months. This assignment not only boosted my career prospects but also my confidence. But when I applied for my future jobs, my experience with the large finance company (i.e. a stock exchange) stood out to my prospective employers & recruitment agencies. That is when I decided to change my CV to more skills & achievements driven.

  • Peaking at the right time: Some employers and recruitment agencies put more emphasis on your past academic (e.g. grades in your degree, high school etc) achievements, which is not a bad thing but I have worked with talented Java/J2EE professionals who peaked at the right time in their career. These are the candidates who get through their schooling and degree as an average student and develop a passion for their chosen career. These candidates will be pro-active, hard-working, studious and take pride in their achievements.
Finally, in my opinion all come down to whether employers want to hire the top-notch Java/J2EE professional or someone who can just do the job. This can make a big difference to the quality of the code written, ability to meet deadlines and achieving the project goals. For example there are companies like ThoughtWorks who take recruitment process very seriously to hire the top-notch Java/J2EE developers.
So how do you stay ahead of your competition?

  • Learn to market your skills, achievements and experience through an effective CV. Also never under estimate the power of networking.

  • Acquire the knowledge, skills and experience in sought after Java/J2EE related technologies & frameworks. Highlight those skills and experience in your CV.

  • For example, I saw an online banner advertisement saying "Java/J2EE developers required Spring & Hibernate a plus." Free tutorials on sought after technologies/frameworks

  • Get certified if they are well received by your prospective employers in your country or if you thing it can add value to you. Do your research first.
    Prepare for your interview. Brush-up/learn/familiarize yourself with Java/J2EE fundamentals and FAQs.400+ Java/J2EE interview Q&A



Comments

Popular posts from this blog

Asynchronous Vs. Synchronous Communications

Synchronous (One thread):   1 thread -> |<---A---->||<----B---------->||<------C----->| Synchronous (multi-threaded):   thread A -> |<---A---->| \ thread B ------------> ->|<----B---------->| \ thread C ----------------------------------> ->|<------C----->|

WebSphere MQ Interview Questions

What is MQ and what does it do? Ans. MQ stands for MESSAGE QUEUEING. WebSphere MQ allows application programs to use message queuing to participate in message-driven processing. Application programs can communicate across different platforms by using the appropriate message queuing software products. What is Message driven process? Ans . When messages arrive on a queue, they can automatically start an application using triggering. If necessary, the applications can be stopped when the message (or messages) have been processed. What are advantages of the MQ? Ans. 1. Integration. 2. Asynchrony 3. Assured Delivery 4. Scalability. How does it support the Integration? Ans. Because the MQ is independent of the Operating System you use i.e. it may be Windows, Solaris,AIX.It is independent of the protocol (i.e. TCP/IP, LU6.2, SNA, NetBIOS, UDP).It is not required that both the sender and receiver should be running on the same platform What is Asynchrony? Ans. With messag...

Advantages & Disadvantages of Synchronous / Asynchronous Communications?

  Asynchronous Communication Advantages: Requests need not be targeted to specific server. Service need not be available when request is made. No blocking, so resources could be freed.  Could use connectionless protocol Disadvantages: Response times are unpredictable. Error handling usually more complex.  Usually requires connection-oriented protocol.  Harder to design apps Synchronous Communication Advantages: Easy to program Outcome is known immediately  Error recovery easier (usually)  Better real-time response (usually) Disadvantages: Service must be up and ready. Requestor blocks, held resources are “tied up”.  Usually requires connection-oriented protocol