10000 GitHub - CompSci-Learning-Repository/coding-interview-university: A complete computer science study plan to become a software engineer.
[go: up one dir, main page]

Skip to content

CompSci-Learning-Repository/coding-interview-university

 
 

Repository files navigation

Coding Interview University

I originally created this as a short to-do list of study topics for becoming a software engineer, but it grew to the large list you see today. After going through this study plan, I got hired as a Software Development Engineer at Amazon! You probably won't have to study as much as I did. Anyway, everything you need is here.

I studied about 8-12 hours a day, for several months. This is my story: Why I studied full-time for 8 months for a Google interview

The items listed here will prepare you well for a technical interview at just about any software company, including the giants: Amazon, Facebook, Google, and Microsoft.

Best of luck to you!

Translations:
Translations in progress:

What is it?

This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company.

Coding at the whiteboard - from HBO's Silicon Valley

This is meant for new software engineers or those switching from software/web development to software engineering (where computer science knowledge is required). If you have many years of experience and are claiming many years of software engineering experience, expect a harder interview.

If you have many years of software/web development experience, note that large software companies like Google, Amazon, Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge.

If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security).


Table of Contents

---------------- Everything below this point is optional ----------------

Additional Resources


Why use it?

When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. Every data structure I've ever used was built into the language, and I didn't know how they worked under the hood at all. I've never had to manage memory unless a process I was running would give an "out of memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and thousands of associative arrays, but I've never created data structures from scratch.

It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time.

How to use it

Everything below is an outline, and you should tackle the items in order from top to bottom.

I'm using Github's special markdown flavor, including tasks lists to check progress.

Create a new branch so you can check items like this, just put an x in the brackets: [x]

Fork a branch and follow the commands below

git checkout -b progress

git remote add jwasham https://github.com/jwasham/coding-interview-university

git fetch --all

Mark all boxes with X after you completed your changes

git add .

git commit -m "Marked x"

git rebase jwasham/master

git push --force

More about Github-flavored markdown

Don't feel you aren't smart enough

About Video Resources

Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. Sometimes the classes are not in session so you have to wait a couple of months, so you have no access.

I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos.
I like using university lectures.

Interview Process & General Interview Prep

Pick One Language for the Interview

You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices:

  • C++
  • Java
  • Python

You could also use these, but read around first. There may be caveats:

  • JavaScript
  • Ruby

Here is an article I wrote about choosing a language for the interview: Pick One Language for the Coding Interview

You need to be very comfortable in the language and be knowledgeable.

Read more about choices:

See language resources here

You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom.

Book List

This is a shorter list than what I used. This is abbreviated to save you time.

Interview Prep

About

A complete computer science study plan to become a software engineer.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0