Section 1: The Non-Technical Part of an Interview
The objective of this section consists of covering the non-technical part of an interview. This includes interview idioms and the patterns of big companies, such as Amazon, Microsoft, Google, and so on. You will become familiar with the main non-technical interview questions and their meaning (how the interviewer interprets the answers).
This section comprises the following chapters:
- Chapter 1, Where to Start and How to Prepare for the Interview
- Chapter 2, What Interviews at Big Companies Look Like
- Chapter 3, Common Non-Technical Questions and How To Answer Them
- Chapter 4, How to Handle Failures
- Chapter 5, How to Approach a Coding Challenge
Chapter 1: Where to Start and How to Prepare for the Interview
This chapter is a comprehensive guide that tackles the preparation process for a Java interview from the very start, to getting hired. More precisely, we want to highlight the main checkpoints that can ensure a smooth and successful career road ahead. Of course, at the time you read this book, you might find yourself at any of these checkpoints:
- Start your interview preparation as early as possible
- Get the right experience
- Show your work to the world
- Prepare your resume
- Take the interview
By the end of this chapter, you’ll have a clear picture of how to achieve the preceding checkpoints depending on your current status. So, let’s start by covering the first checkpoint and take a look at the novice interview roadmap.
The novice interview roadmap
Let’s start from a fundamental truth that is absolutely necessary, but not sufficient, to become a successful developer: the best Java developers are passionate about their work, and, in time, true passions become professions. Over the long term, passion is priceless and it will make you stand out of the crowd of skilled but dispassionate people.
Since you bought this book, you want to invest some time and money in a Java software development career. Mainly, you want to become part of the amazing Java ecosystem! You already feel the power and the energy that comes from focusing on working with Java, therefore, even if you haven’t yet actively thought about it, you’ve already started to prepare yourself for a Java interview.
Most probably, you are a student or you’ve just got a bachelor’s degree in IT, computer science, or you’ve simply discovered your propensity for the Java language. Nevertheless, since you are here, you have a lot of questions and doubts about how to get the dream job in the Java ecosystem.
It is time to bake a plan for success! The following flowchart represents the interview roadmap for a student or Java novice who wants to be part of the Java ecosystem:
Figure 1.1 – Novice interview roadmap
In this chapter, we will cover each item of the preceding diagram. Let’s get started with the first item, Know yourself.
Know yourself
Before searching for a job, it is important to know yourself. This means that you should know what kind of developer you are and what kind of job you want.
This is crucial to getting the right experience, evolving your package of skills, and finding the right employer. Most probably, you can cover a wide range of Java programming tasks, but do you find all of them equally engaging? Doing something that you don’t like for a short period of time is OK, but it will not work for the long term.
Ideally, in the long term, you must focus on what you like to do the most! This way, you maximize your chances of becoming a top Java developer. But, doing what you like the most should be considered in the context of what the IT market offers (in both the short term, and most importantly, the long term). Some Java technologies are widely covered by job offers, while others may require a lot of time to find a job or must make some really unpleasant trade-offs (for example, relocation). It is strongly advisable to periodically consult and participate (every vote counts) in the most relevant Java surveys conducted by websites such as blogs.oracle.com, snyk.io, jaxenter.com, codeburst.io, jetbrains.com, and dzone.com. Having a wide range of companies to choose from statistically maximizes the chances of finding the right company for you. This is half of the problem, while the other half is to prepare yourself to make sure that the company with the job you want will want you.
Now, let’s examine 10 questions that will help you to identify what kind of developer you plan to become. Look inside yourself and try to overlap your personality and skills in considering the following questions and explanations:
- Are you interested in developing user interfaces or the heavy business logic that is executed behind the scenes? Developing great user interfaces is an extremely important aspect of a graphical interface. After all, the graphical interface is what the end user sees and interacts with. It requires creativity, innovation, vision, and psychology (for example, developing multi-device interfaces is quite challenging). It requires knowledge of Java AWT, Swing, JavaFX, Vaadin, and so on. On the other hand, the business logic that is executed behind the scenes and answers to end user actions is the engine behind the interface, but, for the end user, most of the time it is a black box. The business logic requires strong coding skills and solid knowledge of algorithms, data structures, frameworks (such as Spring Boot, Jakarta EE, and Hibernate), databases, and so on. Most Java developers opt for coding the business logic behind the scenes (for desktop and web applications).
- What kind of applications do you find most engaging (desktop, mobile, web, or others)? Each type of application has specific challenges and dedicated suites of tools. Today, companies target as many consumers as possible, therefore, modern applications should be available for multi-platform devices. Most of all, you should be able to code in the knowledge that the application will be exposed on different devices and will interact with other systems.
- Are you especially interested in testing, debugging, and/or code review? Having strong skills in writing valuable tests, finding bugs, and reviewing the code are the most important skills for guaranteeing a high-quality final product. Of these three areas, we should focus on testing, as almost any Java developer job description requires the candidate to have strong skills in writing unit tests and integration tests (the most commonly preferred tools are JUnit, TestNG, Mockito, and Cucumber-JVM). Nevertheless, trying to find a dedicated Java tester job or Java code reviewer is quite challenging and is usually encountered in big companies (especially in companies that provide remote jobs, such as Upstack or Crossover). Most companies prefer pair code review and each Java developer should write meaningful tests that provide high coverage for the code that they wrote. So you have to be able do both: write astonishing code, and write the tests for that code.
- Are you interested in applications that interact with databases or do you try to avoid such applications? Most Java applications use a database (a relational database or a NoSQL database). A wide range of Java developer jobs will imperatively require you to have strong knowledge of coding against a database via Object Relational Mapping frameworks (such as Hibernate), JPA implementations (such as Hibernate JPA or Eclipse Link), or SQL-centric libraries (such as jOOQ). Most Java applications interact with a relational database such as MySQL, PostgreSQL, Oracle, or SQL Server. But NoSQL databases such as MongoDB, Redis, or Cassandra are also encountered in a significant number of applications. Trying to avoid developing applications that interact with a database may seriously limit the range of jobs on offer. If this is your case, then you should reconsider this aspect starting today.
- Do you have a predilection for code optimization and performance? Caring about the performance of your code is a highly appreciated skill. Such actions will catalog you as a perfectionist with great attention to detail. Having solutions that optimize the code and increase its performances will place you pretty quickly in the position of getting involved in designing and archi...