What Is Ideal Interview

What Is Ideal Interview?

Ideal interview is when both interviewer and interviewee have an opportunity to determine is the open position a good match between candidate skills and requirements of the job. What about the ideal javascript interview? It is the same as Ideal Interview when participants are finding out if the position is a good fit.

So you may have a question how to achieve it?

Javascript Interview can have multiple variations - you can ask theoretical questions, you can ask to complete home assessment and discuss it during the interview, or it can be some pseudo code algorithm.

As for me, the best javascript interview is about live coding. When candidates are presented with interesting and close to real life tasks to solve and have a freedom of how to get to the working solution. Theoretical chatting about javascript is ineffective as you would not be able to assess candidates code writing skills, how they approaching tasks and how they resolving challenges.

Ideal Javascript Interview Structure

Intros (5 minutes)

Interview structure: Provide an overview of how the interview will be structured.

Introduce yourself: Talk about your role in the company, projects you’re working on and time with the company.

Candidate introduction: Ask candidate to have a quick intro about themselves by following the same structure: current role and project.

Experience (10 minutes)

Experience and CV: Ask questions about their experience, challenges they’ve resolved, project contributions, processes etc.

Coding (40 minutes)

User CoderPad like tools for live coding: Share one task at a time, so candidate won’t be distracted or stressed. Have tasks ready, so you can quickly paste them. Every task should have a text description and examples, so candidate can read through.

Open Questions (5 minutes)

Time to answer questions: Always leave some time in the end of the interview, so candidate can ask any questions related to this role, company etc.

Coding Session

20-30 minutes task can help to identify candidate strong sides, also, it is a great starting point for 5-10 minutes discussion that can cover theoretical part after. Use close to real life examples, the existing code base that you work with should have dozens of them already. You can always ask about balancing trees or binary search implementation but do you really write it daily?

Spend some time on selecting coding tasks and avoid coding challenges that can be completed in one line.

❌ Bad Example

  • Write a method to reverse a string.
const reverse => (s: string){
    return s
}

This task can be completed in 2 minutes in one line and you would not have any opportunities to talk about this code. Nothing to improve and nothing to fix.

const reverse => (s: string){
    return s.split("").reverse().join("");
}

Note: Avoid artificial limitations. Please do not try to limit creativity during the interview. The worst follow up request to the code above - Please rewrite it without using built-in functions. The main goal of the interview is to demonstrate how candidate can complete the task on time using all available tools.

✅ Good Example

Use existing code from “your” company code base. For sure you have a data transformation methods - use them as interview questions.

Try to find a method that uses multiple transformations steps. It could be something like a list of all transactions per month. Code challenge can be to calculate monthly spending per user and return top 10 sorted by spending.

Candidate would have an opportunity to implement it in different ways and you can discuss it later.

const internalBusinessLogic => (transactions: SomeType[]){
// Possible implementation #1:
// - loop over transactions and build <data type> of spending per user
// - sort by spending
// - slice top 10 accounts by monthly spending

// or

// Possible implementation #2:
// - loop over transactions and build <data type> of spending per user
// - loop and find top 10 accounts by monthly spending
// - sort by spending

// etc
}

Do not try to reinvent the wheel by introducing unrealistic tasks that hard to understand. You have a code base full or great examples and challenges that you’ve resolved recently. Use it!

Test It

Try to complete it yourself and also ask couple of colleagues to do it as well so you know that this task can be done during the interview on time. Keep in mind under stress it can take longer, so 20 minutes task should be good for 30-40 minutes interview. You can always introduce a second coding challenge in case if candidate moving fast.

Alternative: Also I quite like variation of combining two tasks during the interview where the first one is trivial to warmup and can be done in minutes and the second one standard coding challenge. Small task can be helpful for candidate to get familiar with coding tool like CoderPad, gain extra confidence and in general bring positive energy. (We’re people, aren’t we?)

Inspiration: LeetCode is full of great examples and a lot of companies use it LeetCode style questions during the interview. Use it for inspiration; also you can find a lot of good examples there and re-use them during the interview.

Follow Up

Once task is completed it can be a nice opportunity to discuss implementation and ask follow up questions. Some conversation examples:

  • How this code can be improved:
    • First: candidate can self review code and identify areas that can be changed.
    • Second: use follow up questions on how to improve algorithm e.g. nested for loops can be eliminated or early return can be added.
    • Third: can be a nice topic about BigO.
  • Some follow up questions if you still want to learn more about theoretical part:
    • Why you’ve decided to use new Map() / new Promise() / etc.
    • What test cases will you add to guarantee that method working as expected.

Final Thoughts

Adjust

Be ready to adjust and evolve coding tasks with a time. Don’t forget to adjust tasks to the open position levels: intern vs senior should have a different complexity.

Consistency

Keep tasks variations to the minimum. By using the same task for every interview you can easily compare candidate levels. Asking random questions every time complicates assessment process.

I Believe In Closures

If you still believe that Closures and Curring are important topics and it is a deal breaker for you - just ask them as a warm up coding tasks. Candidates can complete them in minutes and you can safely tick this box.

Be Honest To Yourself

Would you prefer to work with someone who can read assigned tasks, write code, communicate solutions, have a freedom to think outside of the box OR have a theoretical answer to irrelevant question like: '1' + + 77++ - new Map()?

Support

If you see that candidate struggles for some time, than try to help. Interview process is not about finding weak spots. Even if you see it is going to be “No” help to complete task to some working state. Candidate will leave this call with a feeling that this company has a nice team to work that can alway happy to help.

Be Prepared

Check CV, check cover letter. Do not ask questions that already has been answered in CV, questionary, cover letter.

Check You Believes

Before saying that someone is “wrong” be sure that you understand and know this topic well.

Don’t Be Late

When you’re late it is adding additional pressure as candidate think this interview is not important to you + they will have less time to complete assigned challenge.

Be Positive

It always helps. 🙂