DEV Community

Cover image for Cracking The Frontend Interview, Part 1: Overview

Cracking The Frontend Interview, Part 1: Overview

ageekdev profile image πŸ…°οΈ GEEK Originally published at ・Updated on ・7 min read

After having a job at your dream company, you often realise that tackling the interview is more difficult than working at real projects. Let's take an overview look at what to focus when preparing for the frontend (front-end / front end) developer interview.

This series is quite language agnostic except the framework when I only cover React. One reason is I'm working on React and quite good at it. Other reason is that we can both achieve client-side and server-side rendering with JavaScript and React.

It's personal preference to pick other JS frameworks like Vue or Angular, server-side languages like PHP, Ruby, Python, Java, C#, etc. Just pick one and being good at it, there's alway open jobs out there for you.

By failing to prepare, you are preparing to fail. (Benjamin Franklin)

The expectation

Different job levels require different responsibilities and minimum qualifications. Different companies establish different expectations to filter candidates who fit well with their cultures. Whatever situation is, here are 5 factors that may have an influence on your way looking for a job:

Technical proficiency: I strongly believe that skills beat experiences. If you're good at what you're doing then you'll have all the confidence in this world. You'll create your own luck. You can even build your own products if no one hires you.

Years of experiences: Many companies filter candidates by number years of experiences! It may not be effective, but it's a simple mechanism when hiring senior or manager level! A matter of fact that many of us are mediocre engineers. It sounds debatable but it's true. You'll see many engineers who actually stack years of experiences without advancing at all in big companies.

Personal projects: Anything like hobby projects, side projects or open-source projects will count. These make you stand out from the rest. Invest on these as soon as possible, especially fresh graduates who don't have previous working experiences.

Former employers: Who doesn't like a candidate previously worked at Google or Facebook (Unless companies don't have enough money to pay πŸ€‘)! Having a list of former prestigious employers (relative to your market) will give you a huge advantage position in the interview process.

Interviewing skills: Competition at prestigious companies is fierce with thousands applications from good engineers around the world. You need extra gear like interview skills to be the chosen one.

Technical proficiency

You may have heard stories people somehow got a decent job by luck with tips and tricks, focusing solely on problem solving skills. But at the end of the day, you'll be working with these technologies day in and day out, being a decent engineer is always your north star.

Basics: having basic understanding of computer science including problem solving, design patterns, system design, networking, database, etc.

Whether you love or hate Data Structures & Algorithms, you have to take considerable amount of time to practice. Majority companies are using it and it's not going to change anytime soon.

There are many self-taught frontend developers these days who don't have time to learn computer science fundamentals properly. It's okay as long as you can do the job and make enough money for your life. But it doesn't mean it's safe to skip this, I mean it's a shame to call yourself a software engineer who doesn't know about computer science.

HTML: Quite easy to pick up, not any fancy things here. Expected to know at least available HTML elements, how DOM works, Semantic HTML and HTML web storage.

CSS: Learn proper raw CSS, how CSS engine works and Responsive Web Design. You may only use CSS frameworks all the time but a frontend engineer doesn't know to layout using raw CSS seems a bit shamed to me. Check css-tricks to cover event more.

JavaScript: A decent knowledge of JavaScript ES6 is required. Fluent data structures & algorithms coding in JavaScript is perfect. You can do almost anything with this language nowadays so don't hesitate to put a lot of effort on it.

React: (or Vue/Angular) Just pick one and never look back, knowing only one is going to be just fine. Pick the exact one your dream company is using would be a huge advantage.

Browser: Having a basic knowledge of Standard JavaScript APIs, XMLHttpRequest and other browser special-purpose APIs like runtime, storage, notifications, window, socket, file system, etc.

There are many more web technologies to learn that I can't cover here. Check frontend roadmap for the exhausted list. The more you know, the more advantages you have compare to other candidates.

Try not to get lost in the maze of frontend technologies.

Cultural fit

Your dream company is a living entity which has standards and principles, trying so hard everyday to deliver their core values. You both should have a good match, or you could end up working miserably months later.

Know yourself: This is so important but underrated. You should define your own principles. What you really want. Who you really are. What you've done. What you can offer.

Know your dream company: This is when you respect the open internet. Things are much more open these days with the rise of community like forums, groups, twitter, etc.

Practice telling stories to meet the cultural fit: When you find a good match between a company and yourself, adjust your life stories and working experiences to emphasize that you are a good fit to that company. I'm not talking about lying. I talk about telling your stories in different ways.


It doesn't take much time to write a good resume by following tons of tips around the net.

Research the market: Look around, track all open positions you want to apply into an excel file. Give them a priority order.

Revise your resume: No one forbids you from submitting the same resume to all open positions ! Many do that πŸ‘Ή. But revising resume a bit to fit the position (frontend engineer, fullstack engineer, software engineer, etc) is recommended.

Submit job application: There are many strategies here (one at a time, multiple at a time, dream companies first, dream companies last, etc) and via referrals, recruiters or job boards. Do whatever you want. I found submitting via referral is the best to guarantee you an interview slot.

Interview process

An interview process at a company starts when you receive an email or phone call from recruiter to setup the interviews. Recruiters often follow your decisions on date and time of interviews, so buy some time if you need to. Following are 5 common steps you'll encounter for technical positions. Interviews at different companies may differ in terms of order and number of interviews, you better prepare all these 5 types when applying multiple at the same time.

Having phone interview w/ hiring manager: Undoubtedly the easiest one. One reason is hiring manager is often professional and conventional so you can predict what will be asked and prepare for it. Other reason is most questions are behavioral questions, we all assume behavioral questions are easier than technical questions, right? πŸ˜‹. Hard to fail if you know the company well and align your answers to fit the expectation.

Having phone interview w/ team member (1-3): Normally you'll have from 1 to 3 phone/video technical interviews with your potential teammates. Some companies focus on data structures & algorithms. Others focus on frontend technologies only. Better ask recruiters before these rounds to have better preparation.

Having take home assignment (sometimes): Some companies may ask you to deliver an assignment in couple of days. I had experiences at this step as interviewer who reviewed candidates' assignments, I can tell you I was always very harsh because I had plenty of time to look at the code πŸ˜‚. So please try your best to code beautifully and test appropriately. A little investment in UI/UX design would be awesome. Some people may think about cheating at this step. Don't! You may end up very embarrassing later at onsite interview.

Having onsite interview: Regardless of how many interviews I took, I found myself very nervous and tired at this step. You simply can't cover your lack of knowledge after many 1-on-1(2) interviews all day long. You're better good at what you're applying for or this could give you a damage on your confidence later.

Negotiate the offer: It's awesome to finally get here, you're almost there, don't screw it up πŸ˜…. Try to balance between what you know about the market, working environment, project status, career development and compensation package.


Be a professional candidate. Sound cliche but never hurts if you are. Fresh graduates might not know how to do this. Experienced engineers sometimes are arrogant and act like a 🀬.

Unprofessional interviewer exists. Not many companies have seminars to train their employees how to conduct a professional interview. Software engineers often asked to do the technical interviews without a solid understanding what the company actually looking for. You may encounter some interviewers who are very technical bias, looking for someone similar to them, asking personal questions, humiliating candidates, etc.

Good enough is good enough. I can guarantee that you can never cover all technologies need for your upcoming technical interviews. The more you learn, the more you know you don't know! Better to set a deadline and go for it.

Be patient with hiring process. One-shot interviews are rare these days unless you're exceptional and invited to work by companies. Most of us will go through very long and grueling interview which might come in vain if we fail any step of it. This is especially true applying to small non-prestigious companies when we're constantly questioning ourself whether the efforts will pay off or the offers end up very disappointing.

Calm, compose and collect. Don't stress out, prepare seriously and you'll be doing just fine. Wish you all reading this post to have very successful interviews in the future.

It’s also important to note that if it doesn’t work out the first time, it’s not the end of the world.

Discussion (6)

Editor guide
emmabostian profile image
Emma Bostian ✨

Hi nice article! Looking forward to the rest of it! One quick comment:
"It's a shame to call yourself a software engineer who doesn't know about computer science."

Software Engineer is a title that many jobs give to employees, and while having Computer Science knowledge is helpful, we have to remember that not everyone has the privilege of learning these skills. So I wouldn't say it's a shame :).

ageekdev profile image
πŸ…°οΈ GEEK Author

😬 yeah a little harsh when I say that πŸ™ƒ what I really mean is trying to fill that gap if we can!

blazephoenix profile image
Tanmay Naik

This is good stuff. Looking forward to the next part!

ageekdev profile image
πŸ…°οΈ GEEK Author

Thanks :) happy reading.

blindfish3 profile image
Ben Calder

Good article; but "skills beat experiences" seems a little simplistic to me: you don't really define what you mean by "skills". Technical ability is of course important; but sometimes seemingly complex problems are solved with a single line of code - you just have to know where to put it. That knowledge often comes with experience. I've also seen code that demonstrates excellent technical knowledge that should never be used in practice because it's unnecessarily complex - e.g. needless condensing of code that renders it difficult to read by others. Again experience of working in a team environment can help identify problematic code structures.

If you have good technical skills but not so much work experience you need to demonstrate how you've applied those skills, especially in a collaborative environment - e.g. in personal projects; contributing to Open Source etc.

I think you should also mention:

  • soft skills: ability to communicate; properly understanding problems as defined by non-engineers; explaining concepts to non-engineers; project/time management etc. will be welcome to prospective employers. Experience of these needn't be specific to a front-end development environment.
  • Version control (Git etc.) - a basic working knowledge is absolutely essential!
  • being open, flexible and enthusiastic about learning new skills; and being comfortable working outside your comfort zone. When I started my current senior front-end dev role the first task I was assigned involved working with PHP!
ageekdev profile image
πŸ…°οΈ GEEK Author

"skills beat experiences" is more a belief than a fact. Also I only cover core points and assume many basic common skills, feel free to explore more :v