Since the past 6 years, I have been coding majorly in JavaScript. Based on the requirement in the company, I have also extensively worked on Java, databases and many other programming languages.
Due to my knowledge of both Frontend and Backend technologies, I had many options when I was looking for a job change. I could apply for full stack developer role (Java, node.js, and databases) or web developer (JavaScript, HTML, and CSS).
I realized later that it is a bit difficult to clear full stack developer interview when you have not worked on design and scalability of the application. Since I also wanted to learn scalability and design in the process, I gave multiple full-stack interviews as well.
So here, I will discuss how did I prepare for web development interview and full stack interviews separately.
Web developer interview:
JavaScript is the most important thing to learn while preparing for web development interviews. Each company has a different interview process. Few major companies like Flipkart and Amazon focus on vanilla JavaScript while smaller companies focus on JavaScript libraries too (React and Angular).
Here are some of the resources, I referred:
Object-oriented Javascript Stoyan Stefanov: This book covers basics of JavaScript very well. It does not cover ES6, but still, this is one of the best books to learn fundamentals of JavaScript.
Blogs: John Resig is the inventor of JQuery and I found his blog very useful to clear some of the basic concepts of JavaScript.
https://johnresig.com/apps/learn/
Toptal has also a very good set of questions for JavaScript.
https://www.toptal.com/javascript/interview-questions
ES6: Stephen Grider is the top writer in JavaScript on Udemy and I found his all the courses very useful while preparing for interviews.
https://www.udemy.com/javascript-es6-tutorial
Design patterns: Addy Osmani’s blog covers design patterns in JavaScript very extensively.
https://addyosmani.com/resources/essentialjsdesignpatterns/book/
React and Redux: Some of the companies ask basics of React and Redux. Stephen Grider‘s courses are very useful in that respect.
https://www.udemy.com/react-redux/
https://www.udemy.com/react-redux-tutorial/
My gist: Based on my interviews, I have also created a gist covers some of the advanced questions of JavaScript:
https://gist.github.com/gs-ysingh/733832f9b23de5dabe7bc6c921d22abc
Basically, in every JavaScript interview, interviewer tweaks questions majorly on following topics:
- Inheritance
- Closure
- Events
- Design patterns
- Scope
Full stack developer Interview:
I observed that the meaning of Full stack developer in the industry is slightly mistaken. Most of the companies consider the Full stack developer as Backend developer who knows little bit frontend. Only a few companies give more focus on frontend than backend while looking for full stack developer. So, candidates need to be prepared for such interviews and should ask questions to HR about this before the interview.
So, I will discuss, how did I prepare for backend interviews though I am not expert in this field.
1.GitHub repository:
I found GitHub repository of John Washam while preparing the interview. And, it covers almost all the important resources to prepare for the interview. It’s very difficult to complete all the resources provided in this repository. I have majorly focused on design, algorithms, and data structure resource from this repository.
https://github.com/jwasham/coding-interview-university
2.Preparation of Algorithm and data structure:
- I referred ‘Data Structures and Algorithms from Made Easy’ by Narasimha Karumanchi. This book covers almost all the important topics for interviews. Since I solved problems from different sources, all the important algorithms were very clear to me. I could write these algorithms very easily on paper.
- Online Judge: It’s very important to make sure that you run your code on multiple test cases and make sure that you’re covering all the corner cases. Solving problems on InterviewBit helps you solve problems in a constrained time environment. Also, the problem set is very curated so you only solve the kind of problems which would be asked in interviews.
- Practice on paper/whiteboard/google doc: It’s very important not to use IDE first. Since, companies use collabedit, google-doc or whiteboard in the interview, I practiced on paper or whiteboard or google-doc first then I coded on IDE to get the more confidence.
- Design problems: InterviewBit design problems are good to start. Apart from that, I followed my resources:
https://www.hiredintech.com/system-design/
https://github.com/jwasham/coding-interview-university
Interview process:
Round 1: In this round, my problem-solving abilities were tested. There were two medium difficulty level problems given by interviewer. We used collabedit to share the code. The interviewer asked me to optimize the code further and also asked me to handle the edge cases. I also explained the code while executing one of the test cases.
Round 2: This round was to check basic understanding of computer science. The interviewer asked me to explain the internal process that takes place when we enter a URL in the browser. They also asked me questions related to scalability, distributed architecture etc.
Round 3: Basic questions of JavaScript were asked in this round and, also some behavioral questions.
Round 4: A problem of Graph was asked in this round. The problem was an extension of dfs and finding the cycle in the graph.
Round 5: A design problem was asked in this round. And I was asked to write code in collabedit.
Few other tips:
Here are some other tips that might be useful:
- Asking right questions rather than assuming.
- Explaining the solution clearly.
- Spend some time to prepare about your projects. If you are explaining any problem that you solved, be ready for any cross questions.
- Don’t use debugger, use your mind instead 🙂