Like title, do I need to worry about algorithms, hash map, queue, stack, heap, linked list, big o notation, time space complexity, tree, binary search, … etc for a jr web dev interview position ?

I’m not planning to apply at FAANG or something just in case, and I ask that because I see FAANG whiteboard interview seems to obsess with algorithms and data structures. Don’t know about other companies in the industry tho.

What’s everyone favorite language for whiteboard anyway ?

# Do I need to worry about algorithms and data structure for jr full stack/front-end web dev position?

Algorithms and Data Structures *is* programming. Typing syntax is the least interesting part of the job, IMHO.

I don’t really think there are ‘whiteboard languages’. Without an interperter or compiler, you just need to make the underlying logic and *algorithm* clear in something that’s close to the target language.

Hi @zypxel !

@JeremyLT is correct in saying that data structures and algorithms are part of programming.

You are already working with these in your day to day programming

But as to your question about being asked to reverse a linked list for a job interview, the answer is it depends.

Some companies will ask you leetcode type problems while others will give you a take home challenge.

This is discussed a lot on tech twitter and there are even some github repos of companies that don’t do whiteboard tests.

I have known some developers who avoid these types of interview like the plague.

But you might not be in a position to turn down interviews.

My advice would be to do a little bit of leetcode everyday.

There are also a lot of good articles and videos breaking down some common interview questions like this one

With enough practice you will start to see patterns better and develop a stronger problem solving technique.

Hope that helps!

Do you need to know how to use algorithms and data structures in order to be a developer?

Yes. Absolutely. That’s really what programming *is*. If we think of it like a language, then data structures are like words and algorithms are like sentences. You can’t write a book without them. An array is a data structure. A simple if/else block is an algorithm.

Do you need to know how to build a binary search tree (etc) from scratch?

*eh*

You don’t need to have the most efficient way to do this memorized because you aren’t going to do that. You *should* have the skills to come up with one if you needed to. And yeah, you might need to do something like that in an interview. Similarly, when students are taught Big O notation it’s because they are in a class focused on learning how to figure out how efficient their code is. Being able to figure out how efficient your code is *is* a very important skill. Remembering the notation standards or how to write complexity proofs is not.

What about interviews?

A lot of the specific examples that you mentioned are covered in the second year of a typical CS degree, so they have been classics for interviews for that reason. Sometimes an interview will ask something as straightforward as “write a function to remove the nth item of a linked list”. Other times they give you a complex task (think like a word problem in math class) and the key to solving it well is using one of these common structures. After you’ve given them a solution, they might ask you how efficient it is or if there is a way to make it more efficient. It’s not the same ask asking you to write a proof that it’s optimized, but they want to see that you’re able to think about how many loops or memory allocations you’re doing.

Whiteboarding

If you are given a “whiteboard” type of task, the reason that they are doing that is so you can show your thought process without getting caught up in language syntax. Interviewers can actually see you solve more of the problem this way because you don’t get stuck getting a line just right. The interviewer in a whiteboard session will be a developer and will 100% know that we leverage the power of our editors when writing real code. When it comes to choosing your language, just go for what you’re most comfortable in. Remember that it’s perfectly fine to say “I don’t remember the exact name of this method, but it’s something like ___”. Especially in a Covid and remote-work world, it’s become more common to do technical interviews online with a screenshare. In that case, you’ll probably have the benefit of an IDE. You can still focus on your logic by starting with comments or code that you know is likely to have syntax errors - just to get the ideas out first. Remember that a huge component of these interviews is talking through your approach.

Working at a company also means helping your colleagues.

This includes talking about problems, ideas, solutions.

A lot of problems contain data structures and algorithms, so knowing the basics is crucial to help yourself and the people around you.

You probably don’t have to implement data structures from scratch, but you should at least know what these data structures are and how they work.