Technical Interview Resources for the Junior Dev
Published: 2020-08-20 20:07:52

During my job search post coding bootcamp, I’ve had several interviews covering a wide range of technical concepts and behavioral scenarios. Even as a junior software engineer, it’s clear to me that software engineers need a strong foundation in computer science fundamentals like data structures and algorithms, as they serve as the bedrock of technical interviews. 

I naively thought technical interviews would *always* be centered around solving a Leetcode-style problem that companies use to assess your coding ability for efficiency, readability, and completeness. Yes, you will frequently encounter this type of interview, however, technical interview questions can run the gamut beyond a programming challenge. The best way to prepare for an interview is to feel prepared for whatever may be thrown at you. Of course, this is easier said than done, but every interview will only better prepare you for the next one.

Yet, it can feel like information overload on the internet with free and paid resources alike that purport to get you learning everything you need to know before your upcoming interview. Though I can’t speak about what is considered the norm in technical interviewing, I can only provide my own following observations and resources I found helpful.

### Technical Phone Screen
Technical phone interview rounds have been more vague on what to expect, other than being told that I'll have to solve a technical coding question. As an example, I got this once from a recruiter, “(the coding question) will be in the areas of design, algorithm and/or data structure”, and the interviewer gave me a medium-level Leetcode problem to solve. Another time, a recruiter said I can anticipate “questions regarding computer science and operating system fundamentals” and I was asked to flex my object-oriented design skills with an open-ended problem on designing a library-like service. 

### Interview With Hiring Manager 
In another interview scenario when speaking with a hiring manager, it’s been my experience that there is a 50/50 chance you will be asked technical trivia questions (again, just my experience so take this percentage with a grain of salt). For an associate frontend role at a large tech company, I was peppered with JavaScript questions after several behavioral questions from the engineering manager. For a full stack role, I was asked questions about Unix, Git, and SQL, with the head of engineering acknowledging that several of the questions were “esoteric”, especially for a junior developer like me who hasn't had any work experience yet. 

### Final Round Interview
In final round interviews, the recruiter or hiring manager was generally explicit on what I should expect for each interview session during the long day, even prepping me with sample questions. Perhaps this is due to the fact you’ve made it as far as you have (congratulations!) and they want to see you succeed. 

Below, I’ve compiled resources I’ve found helpful when preparing for various types of technical interviews and resources found after the interview when I wanted to brush up more on the topic. Feel free to share any resources you’ve found helpful below in the comments! 

***resource I recommend* 
## Data Structures and Algorithms / Coding Challenges
** [Leetcode](https://leetcode.com/)
** [Interview Cake](https://www.interviewcake.com/) (*paid resource for full course*)
** [Cracking the Coding Interview](http://www.crackingthecodinginterview.com/) (*book for purchase*)
[Cracking the Coding Skills PDF](http://www.crackingthecodinginterview.com/uploads/6/5/2/8/6528028/cracking_the_coding_skills_-_v6.pdf) 
[Codility](https://app.codility.com/programmers/lessons/1-iterations/)
[HackerRank - Introducing Cracking the Coding Interview Tutorial and Practice](https://blog.hackerrank.com/introducing-cracking-the-coding-interview-tutorial-new-study-on-interview-practice/)

## System Design / Systems Architecture 
** [Grokking the System Design Interview](https://www.educative.io/courses/grokking-the-system-design-interview) (*paid course*)
[System Design Cheatsheet](https://gist.github.com/vasanthk/485d1c25737e8e72759f)
[Top 10 System Design Interview Questions for Software Engineers](https://hackernoon.com/top-10-system-design-interview-questions-for-software-engineers-8561290f0444)
[How to Succeed in a System Design Interview](https://blog.pramp.com/how-to-succeed-in-a-system-design-interview-27b35de0df26)

## Technical Knowledge and Judgement 
** [Reddit - What Are Some Essential Technical (But Non-Coding) Interview Questions That New Grads Should Know the Answer To?](https://www.reddit.com/r/cscareerquestions/comments/6wusbe/what_are_some_essential_technical_but_noncoding/)
[Cross-Site Request Forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery#:~:text=Cross%2Dsite%20request%20forgery%2C%20also,that%20the%20web%20application%20trusts.)
[What’s the Difference Between Single-Page and Multi-Page Apps?](https://rubygarage.org/blog/single-page-app-vs-multi-page-app)
[Single Page Applications: A Powerful Design Pattern for Modern Web Apps](https://medium.com/a-lady-dev/single-page-applications-a-powerful-design-pattern-for-modern-web-apps-ec3590bb7e7a)
** [W3C Accessibility Standards Overview](https://www.w3.org/WAI/standards-guidelines/)

### Ruby on Rails
[Rails Antipatterns](https://gist.github.com/dcuadraq/f63476b3048c5b76318abd28831a00d6)
[Refactoring: Clean Your Ruby Code With Design Patterns](https://www.ombulabs.com/blog/code-refactor/refactoring-with-design-patterns.html)

### JavaScript
[10 Interview Questions Every JavaScript Developer Should Know](https://medium.com/javascript-scene/10-interview-questions-every-javascript-developer-should-know-6fa6bdf5ad95)
[Why Minify JavaScript Code?](https://www.cloudflare.com/learning/performance/why-minify-javascript-code/)
[Concurrency Model and the Event Loop](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop)

### React
[Server Side React Rendering](https://css-tricks.com/server-side-react-rendering/)
[ReactJS Server-Side Rendering VS Client-Side Rendering](https://stackoverflow.com/questions/27290354/reactjs-server-side-rendering-vs-client-side-rendering)

## Systems
[List of Unix Commands](https://en.wikipedia.org/wiki/List_of_Unix_commands)
#
Things to Know:
  - How systems boot and load Linux 
  - The shell, and how it interacts with the underlying operating system 
  - UNIX file systems and storage 
  - Process management and state 
  - The Linux virtual memory model 
  - Techniques for resource control 
  - Common system troubleshooting tools and techniques

## Object Oriented Design
[How to Approach Object Oriented Design Questions in Programming Interviews?](https://www.quora.com/How-to-approach-object-oriented-design-questions-in-programming-interviews)
** [The Top 10 Object-Oriented Design Questions Developers Should Know](https://hackernoon.com/the-top-10-object-oriented-design-interview-questions-developers-should-know-c7fc2e13ce39)

## Product Thinking
[Product Managers Interviewing Engineers](https://medium.com/ketans-blog/product-managers-interviewing-engineers-511c5b4571a9)
[Product Manager](https://www.atlassian.com/agile/product-management/product-manager)

## Git
[Git Commands](https://github.com/joshnh/Git-Commands)
[Git Tips and Tricks](https://about.gitlab.com/blog/2016/12/08/git-tips-and-tricks/)

## Behavioral 
*not technical per se, but you will often get asked these questions during your technical interview, usually about collaboration and challenges, etc.*
#
[Cracking the Soft Skills PDF](http://www.crackingthecodinginterview.com/uploads/6/5/2/8/6528028/cracking_the_soft_skills_-_v6.pdf)
** [30 Behavioral Interview Questions You Should Be Ready to Answer](https://hired.com/blog/candidates/30-behavioral-interview-questions-should-be-ready-to-answer/)