In a previous article I wrote about the 2 types of software engineering interviews. My point there was to distinguish between the two primary types of interviews you can expect from software engineer hiring managers. There’s the data structures and algorithms approach and there’s the build something or talk about what you’ve built approach. It’s not completely binary and in some interviews you may be asked to do both. There are also system design and behavioral questions to account for.
Technical interviews are hard. Investing in software engineers can be trying. Hiring, employee retention and business costs all factor in to who gets picked. As software engineers we need to know what to expect. Each person is taking their own path to career growth. My intention with listing out these resources is to provide for those navigating the job market terrain and to hold these resources up as a reflection for the industry. These are some study resources that you many find helpful in your journey.
This post is based on an open source GitHub repo maintained here.
Side Projects
Side projects are a great way to test out your skills and try new things in a low to no pressure environment. Sometimes interviewers will be even more interested in your side projects than the work you did at your 9-5 job! If you don’t have any traditional work experience in the tech industry making a web project from scratch is a great way to demonstrate what you’re capable of. Below are a few sites and articles to reference when building a side project:
- Indie Hackers: is a community for people looking to build online projects that generate revenue. It’s a vibrant, supportive community where you can share your projects and progress.
In the article How to build a startup — without quitting your day job Aytekin Tank, founder of JotForm outlines a few tenants to live by with side projects:
- Side projects increase creativity
- Find the time
- Finding the need: deliver extreme value
- Make it fun
- Relax with imperfection
In this post Tanner Christensen outlines How to Talk About Your Side Projects. Snippet from the article: “Talk about your side projects whenever you get a chance”.
- Start with the problem
- Define your approach
- Share the challenges you faced
- End with the results
- Follow-up with what you would do differently
If you’d like to dive more into storytelling and strategic narrative I highly recommend following Andy Raskin for tips :)
Data Structures and Algorithms questions
There doesn’t seem to be any shortcut for learning data structures and algorithms besides grinding it out. The problems are not always easy but the solutions generally do follow defined patterns. Learning the patterns takes a lot of work and practice. My favorite blog posts about the tech interview prep process come from Ali Mir, Software Engineer at Facebook. They’re not long articles; they’re straight to the point without a lot of fluff.
-
Read this before you start solving problems on Leetcode (Prep Work)
-
How to solve problems on Leetcode to prepare for technical interviews
These are some commonly agreed data structures it’s helpful to know going into technical interviews:
- Dynamic Array
- Linked List
- Stack & Queue
- Hash Tables
- Binary Search Tree
- Binary Heaps & Priority Queue
- Graphs
- Trie
This itsy-bitsy-data-structures repo contains a guided code walkthrough of many of these data structures types implemented in Javascript.
Searching and Sorting
These are searching and sorting processes to be aware of in technical software engineering interviews..
-
Binary Search
-
Breadth First Search (BFS)
-
Depth First Search (DFS)
-
Counting Sort
-
Quicksort
-
Merge Sort
Programming Paradigms and Concepts
-
Recursion: JS interview prep: Recursion (has runnable code examples)
-
Dynamic Programming: Dynamic Programming - Rithm School, video
-
Greedy Algorithm
-
Sliding Window
-
Divide and Conquer
-
Big-O Analysis (time complexity, space complexity): Khan Academy, video, MIT
Learning Guides
-
Grokking Algorithms - Free book designed to be easy to follow explaining common computer science algorithms.
-
HackerRank Interview Prep Kit - Curated list of exercises from the HackerRank team organized around key concepts you'll need to know.
-
Rithm School Computer Science Fundamentals with JavaScript - I've been following along with some of this as I don't have a comp sci degree. They explain the concepts and then point you to additional resources for learning the material (like youtube videos and specific codewars problems) Very helpful.
-
Pathrise - Compiled list of guides to help you find a software engineering job.
-
Coderbyte - Lots of programming challenges, access 10 for free otherwise $30 per month
-
yangshun/tech-interview-handbook - GitHub repo with helpful non-technical tips. Additionally has section covering Algorithm, Front End and System Design questions
-
mr-mig/every-programmer-should-know - Don't let the title scare you. This repo covers at a high level things ranging from Career Tips to Data Structures, Security, Architecture and Algorithms. It's a lot but can be helpful to overview concepts and find new things to learn
-
jwasham/google-interview-university - One man's somewhat crazy task to become a google software engineer. 48k+ stars. I believe he ended up working at Amazon. go figure
-
30 second interview questions - A list and website of common interview questions you're bound to encounter during tricky JS interviews.
Services
These are some free and paid services dedicated to helping you improve at interviews and in your tech career.
-
Interview Cake - Interview Cake is a thoroughly documented site on programming interviews and concepts. It can be expensive for the year membership but if you're serious about buckling down to learn the fundamentals can be worth it. They also offer a money-back gaurantee.
-
Daily Coding Questions - Coding question emailed to you everyday for free. If you want the answer emailed to you the following day it's $8/month.
-
exercism - Level up your programming skills with 2,629 exercises across 48 languages, and insightful discussion with our dedicated team of welcoming mentors. Exercism is 100% free forever.
-
codewars - Codewars has thousands of questions generated by the community. You'll never run out of practice problems. They're organized by difficulty, concept and programming language.
-
codesignal - Really great user interface and user experience. I like the gamification and points system they have going on.
-
Irfan Baqui: ace coding interviews - get one free problem to practice each week and get the solution next week
-
interviewing.io - Anonymously practice coding interviews with engineers from prominent tech companies.
-
Pramp - Real practice with actual engineers. Book a time and practice interviewing with real human beings
-
LeetCode - Pick from an expanding library of more than 190 questions, code and submit your solution to see if you have solved it correctly.
-
Coderbyte - Lots of programming challenges, access 10 for free otherwise $30 per month
-
HackerRank - Very popular platform for practicing coding questions. HackerRank is used by companies to evaluate candidates also
-
InterviewBit - Practice Coding Interview Questions. Give us time and we get you the job you deserve.
-
Codility - Become a better programmer. Develop your coding skills with our lessons. Take part in our challenges.
-
Codility Solutions - One engineer's solutions to the codility.com problem sets.
-
Testdome - Get certified and prove your knowledge
to potential employers. Score well on one of our public tests, and you will get a free certificate of achievement. -
CodeEval - Find out how you rate against top coders. Unlock awesome startup jobs and hacker deals.
-
Outco.io - 1 month interview prep bootcamp in San Francisco
Javascript
-
amilajack/js-algorithms - A collection of algorithms written in javascript
-
benoitvallon/computer-science-in-javascript - Computer science reimplemented in JavaScript
-
lukehoban/es6features - Overview of ECMAScript 6 features (21k+ stars)
-
romyilano/Learning-JavaScript-Data-Structures-and-Algorithms - Solutions to Learning JavaScript Data Structures and Algorithms by Loiane Groner (book pdf)
-
nzakas/computer-science-in-javascript - Collection of classic computer science paradigms, algorithms, and approaches written in JavaScript.
-
JacopoDaeli/algorithmic-challenges - Solutions to algorithmic challenges written in C, Python, Java and JavaScript.
-
Hack Reactor Prep - free course and practice problems from Hack Reactor
-
JS: Interview Algorithm - JS: Interview Algorithms questions and solutions
PHP
-
Efficient data structures for PHP 7 - Medium article about implementing data structures with modern PHP
-
30-seconds-of-php-code - A curated collection of useful PHP snippets that you can understand in 30 seconds or less.
-
SOLID Principles in PHP - SOLID represents a series of guidelines that developers can use to, if done well, simplify and clarify their code.
-
Object Oriented Bootcamp in PHP - covers fundamentals of OOP in PHP, including tricky concepts like difference between Interfaces and Abstract Classes
SQL
-
Khan Academy SQL course - Great course covering SQL principles. Highly recommended.
-
Udemy MySQL Bootcamp - Course by ex-Galvanize instructor. beginner to expert.
Laravel
Eloquent Performance Patterns - Learn how to drastically improve the performance of your Laravel applications by pushing more work to the database, all while still using the Eloquent ORM.
-
Diving Laravel - A deep dive into laravel core, packages, and technologies by @themsaid
-
Advanced Eloquent - Sure, you've learned the essentials of using Eloquent in your applications, but do you really understand what's going on under the hood?
-
unicodeveloper/laravel-exam - A Laravel exam with questions from beginner to expert curated by @unicodeveloper
Git
-
Git flow - a git workflow that some companies follow to manage their deployments.
-
Git Game - The git-game is a terminal based game that teaches both new and advances users some pretty cool features of the git scm (source control management) system.
Webpack
- webpack: The Core Concepts - less than an hour long course on webpack fundamentals from core team member
Python
Introduction to Computer Science and Programming Using Python from EdX.
Ruby
- Haseeb-Qureshi/Algorithms-Study-Group - Study group for algorithms in Ruby, hosted at App Academy
Books
-
amilajack/reading - list of computer science readings with book pdfs
Algorithm visualization
Articles
-
I just got a developer job at Facebook. Here’s how I prepped for my interviews
-
Top 8 Mistakes to avoid in Technical Interviews According to Data
-
Jeff Atwood, How to Hire a Programmer
-
Joel On Software, The Guerrilla Guide to Interviewing (version 3.0)
-
Coding Interview Tips, How to get better at technical interviews without practicing
-
Guide to interviewing your future manager before deciding where to work
More Questions
-
50 Coding Interview Questions - "In this guide, I’ve organized all of the interview questions we’ve ever covered on Byte by Byte into a convenient PDF for you to reference whenever you like. Over the years, I’ve been careful to select only problems that are directly relevant to your interviews. This guide combines them all in one place and is completely free for you to download."
-
500 Data Structures and Algorithms practice problems and their solutions - these are good because they are grouped by topic such as array, BST, Dynamic Programming etc
-
Project Euler - The classic
-
Epic List of Interview Questions - a list of software engineer skills or areas that can be tested and evaluated in an interview context
-
MaximAbramchuck/awesome-interview-questions - A curated awesome list of lists of interview questions.
Technical blogs
This is tangentially related to interviews. Below is a list of companies that feature blog posts from guest authors. Blogging and teaching others can be a powerful way to comprehend new material, fine tune your writing skills, gain exposure and potentially even make money! If you have a technical blog open to new contributors please submit a PR
-
Scotch.io - this has been my go to source for web development tutorials for years. Code on the rocks
-
Snipcart - company interested in Vue.js, eCommerce, Javascript and the JAMstack. There is some really great writing and code samples on here
-
JScrambler - company interested in Javascript tutorials. I wrote a post for them on using Vue.js and Vuelog to make a static blogging app. Check out the full article here
Words of wisdom
Charlie Munger, Warren Buffett’s partner, has three rules for a career:
1) Don’t sell anything you wouldn’t buy yourself
2) Don’t work for anyone you don’t respect and admire
3) Work only with people you enjoy
We've also written about 3 ways to get better at interviews:
- Practice your story.
- Speak to your experience and strengths.
- Do your research.
Finding companies to apply to
The job market can move pretty fast. Companies expand and contract at rapid pace. The hot startup today could be laying everyone off tomorrow. The below links can help you discover companies and places to apply to. There's a whole world out there. Sometimes it takes work to find your place in it :)
-
https://employbl.com/companies - Employbl is a directory of tech companies and startups in the Bay Area. Find companies by type or location, upload your resume and find a company right for you :)
-
https://whoishiring.io/ - Most impressive job site aggregator I've ever seen in my life. Scrapes all the boards and has a map of where every company is located.
-
https://huntr.co/ - Tool for keeping your applications and search organized on a Trello-style board. they also have a chrome extension for quickly adding jobs from various sources.
-
https://breezy.hr - I used this one as a recruiter. It is actually built for HR departments but has a chrome extension and can be helpful for adding people and specific individuals you're reaching out to. This way you remember to follow up and can find like-minded people. One catch is that you need a custom email address like @your-domain.com. Signing up with your gmail account won't work.
-
https://betalist.com/jobs/collections - companies and jobs grouped by category like female led startup or decentralize all the things for blockchain related jobs.
-
https://github.com/connor11528/tech-companies-and-startups - shameless plug here. I've got another repo going with companies located in downtown San Francisco. The data is available as a CSV file and includes company addresses.
Tech Internships
We've shared some notes about how to land a technical internship in the Bay Area. Tbh though I've never done an internship and the competition seems fierce. I think a lot of the same rules apply to finding internships as finding jobs, though more focus on deadlines and internship-focused positions. Looking forward to learning and sharing more about the tech internship process in the Bay Area. 📈