As you've probably gathered from this course, we're aiming high, prepping you for serious, big-company interviews, or maybe even shooting straight for a Middle Developer position. In most companies, potential Java Juniors first pass an HR interview, followed by a technical one.

Livecoding isn't always a thing for juniors, but a technical interview is an unavoidable milestone. If there was no Livecoding, chances are, its elements might pop up in the technical interview. We've covered how to prepare for the "practical" part in a previous lecture, so now let's talk about gearing up for those technical questions.

What is a Technical Interview?

Basically, it’s a test of your understanding of programming and your Java knowledge, plus other technologies mentioned in the job listing, like SQL, databases in general, Spring, Git, and so on.

Interviews might include various types of tasks:

  • Theoretical Questions: Expect a lot of these. They could be about anything, really – Java fundamentals like classes, inheritance, interfaces, exceptions, collections, or even Spring, testing... anything.
  • Practical Programming Tasks: Basically, LiveCoding. If you didn't have a separate test assignment or LiveCoding interview, it's likely to be part of your technical interview. You'll probably get a couple of simple tasks.
  • Code Understanding Questions: You might be asked to analyze some code, explain what it does, or spot errors. The approach here? Whenever you see a piece of code, analyze it! Dive into official Java libraries, read the pros' code. Do it regularly.

What Might They Ask in a Technical Interview?

We've already discussed tasks in the LiveCoding lecture, and code understanding is pretty straightforward. But technical questions are a bit trickier. The problem is, every company has its own set of questions.

During such an interview, they might cover a variety of topics, including Java basics, object-oriented programming principles, data structures and algorithms, multithreading and streams, functional programming, SOLID and design patterns, databases and SQL, web technologies... In short, they might ask anything within the scope of the job requirements. So, what to learn, how to prepare if they can ask anything? Of course, we have a plan.

How to Prepare for the Technical Interview

Option one: go in with what you've learned during your studies. This might work, but rarely. Exams and tests are a peculiar thing. You can know your stuff and still bomb an exam for various reasons. Taking an exam is an art in itself, and it tests not just your knowledge, but also how you handle stress and being observed by strangers who are often more skilled and experienced than you.

So, option one isn't for us. We'll prepare. Remember, it's not about memorizing; it's about understanding questions and communicating your thoughts. Rote learning is useless in tech; lack of preparation often shows in your inability to articulate your thoughts. An experienced interviewer might see that you know but can't express it. But they might not. Preparing for a technical interview is about practicing how to communicate your thoughts clearly. If you can do that, you’re engaging, and that's a plus. But if it feels like pulling teeth to get info out of you, the interviewer might feel they want it more than you do.

Convinced you need to prepare? Here's how

The simplest way is to find a few resources with questions and go through them.

  • First and foremost, revisit CodeGym. Go through the university materials, especially the slides and presentations. It’s a quick way to refresh the main points. Use them to identify your gaps and fill them in.
  • Then, move to interview question sites like InterviewBit – a structured resource with technical interview questions. Go through all topics, focus on what’s important to you, and give those questions special attention. Besides text answers, there are diagrams and code examples that aren’t overly simplified. If an explanation seems lacking, turn to Google for a more detailed understanding, then formulate your own answers.
  • Feel free to explore a few more such sites and arm yourself with their insights.
  • Remember, job hunting, especially your first one, is a slow process. Go through a few questions daily (at least 5), thoroughly, with detailed analysis, writing answers in a special file, and verbalizing them aloud. Don’t cram it all in the day before the interview. In a month, you'll see significant progress.
  • Prepare in doses; trying to cover 100 questions in a day means you'll quickly forget most of them and likely burn out and stop preparing altogether.

What You Need to Know to Be a Java Developer

You probably know this already... But let's revisit. Here are the main topics to focus on for aspiring Java Developer/Junior Java developers:

  • Java Core
    • OOP in Java
      • Classes (nested \ inner)
      • Inheritance
      • Interfaces (polymorphism)
      • Static context
    • Collections \ Streams
    • IO
    • Exceptions
    • Garbage collector
  • SOLID \ KISS \ DRY \ YAGNI
  • Patterns
  • Testing
  • DB
    • Transactions
  • Spring
  • Additional Topics:
    • Docker \ Docker-compose \ Kubernetes - generally
    • CI \ CD
    • Microservices