Skip to content

A complete daily plan for studying to become a Google software engineer.

Notifications You must be signed in to change notification settings

yuvraj2987/interview-university

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Interview University

What is it?

This is my multi-month study plan for practice. I am a software engineer turned Site Reliability Engineer.Though as an SRE I get to work on scalability and system problems, coding parts has reduced a lot. Most of my coding has been in ansible and packer. Which even though applies same principles doesn't feel like proper coding. So I am going to build on original plan. I will add my own resources and pratice repos.

Coding at the whiteboard - from HBO's Silicon Valley

This long list has been etracted and epanded from Google's coaching notes, so these are the things you need to know. There are etra items I added at the bottom that may come up in the interview or be helpful in solving a problem. Many items are from Steve Yegge's "Get that job at Google" and are reflected sometimes word-for-word in Google's coaching notes.


Table of Contents


Why use it?

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 my progress.

I check each task bo at the beginning of a line when I'm done with it. When all sub-items in a block are done, I put [] at the top level, meaning the entire block is done. Sorry you have to remove all my [] markings to use this the same way. If you search/replace, just replace [] with [ ]. Sometimes I just put a [] at top level if I know I've done all the subtasks, to cut down on clutter.

Once I move past the learning phase (in a couple days), I'll remove the checks from all the checkboes.

More about Github flavored markdown: https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown

I have a friendly referral already to get my resume in at Google. Thanks JP.

Get in a Googley Mood

Print out a "future Googler" sign (or two) and keep your eyes on the prize.

future Googler sign

Don't feel you aren't smart enough

About Video Resources

Some videos are available only by enrolling in a Coursera or Ed class. It is free to do so, but sometimes the classes are no longer in session so you have to wait a couple of months, so you have no access. I'm going to be adding more videos from public sources and replacing the online course videos over time. I like using university lectures.

Interview Process & General Interview Prep

Prerequisite Knowledge

This short section were prerequisites/interesting info I wanted to learn before getting started on the daily plan.

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

  • C++
  • Java
  • Python

You need to be very comfortable in the language, and be knowledgeable. Read more (rescued from the lost web): - https://web.archive.org/web/20160204193730/http://blog.codingforinterviews.com/best-programming-language-jobs/

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

The Daily Plan

Each day I will take a subject from the list. After understanding Gist will move for the implementation. Not all day will be stubject understanding. Other's I will be solving problem from the selected subject. Problem Solving/Implementation

  • Whiteboard / Notebook coding
  • Code walkthrough using examples
  • Actual coding and testing

I will try to follow Test Driven Coding philosophies.

Why code in all of these? Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) Work within the raw constraints (allocating/freeing memory without help of garbage collection (ecept Python)) Make use of built-in types so I have eperience using the built-in tools for real-world use (not going to write my own linked list implementation in production)

I may not have time to do all of these for every subject, but I'll try.

You can see my code here:

You don't need to memorize the guts of every algorithm.

Write code on a whiteboard, not a computer. Test with some sample inputs. Then test it out on a computer to make sure it's not buggy from synta.

Algorithmic compleity / Big-O / Asymptotic analysis

Data Structures

More Knowledge

Trees

Sorting

Graphs

Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.

You'll get more graph practice in Skiena's book (see Books section below) and the interview books

Even More Knowledge


Final Review

This section will have shorter videos that can you watch pretty quickly to review most of the important concepts.
It's nice if you want a refresher often.
(More items will be added here)

General:

Sorts:

Books

Mentioned in Google Coaching

Read and do eercises:

Read first:

Read second (recommended by many, but not in Google coaching docs):

Additional books

These were not suggested by Google but I added because I needed the background knowledge

If you have time

Coding eercises/challenges

Once you've learned your brains out, put those brains to work. Take coding challenges every day, as many as you can.

Once you're closer to the interview

Your Resume

Be thinking of for when the interview comes

Think of about 20 interview questions you'll get, along the lines of the items below.
Have 2-3 answers for each
Have a story, not just data, about something you accomplished
  • Why do you want this job?
  • What's a tough problem you've solved?
  • Biggest challenges faced?
  • Best/worst designs seen?
  • Ideas for improving an eisting Google product.
  • How do you work best, as an individual and as part of a team?
  • Which of your skills or eperiences would be assets in the role and why?
  • What did you most enjoy at [job / project y]?
  • What was the biggest challenge you faced at [job / project y]?
  • What was the hardest bug you faced at [job / project y]?
  • What did you learn at [job / project y]?
  • What would you have done better at [job / project y]?

Have questions for the interviewer

Some of mine (I already may know answer to but want their opinion or team perspective):
  • How large is your team?
  • What is your dev cycle look like? Do you do waterfall/sprints/agile?
  • Are rushes to deadlines common? Or is there fleibility?
  • How are decisions made in your team?
  • How many meetings do you have per week?
  • Do you feel your work environment helps you concentrate?
  • What are you working on?
  • What do you like about it?
  • What is the work life like?


Additional Learnings (not required)

Everything below is my recommendation, not Google's, and you may not have enough time to
learn, watch or read them all. That's ok. I may not either.

--

Additional Detail on Some Subjects

I added these to reinforce some ideas already presented above, but didn't want to include them
above because it's just too much. It's easy to overdo it on a subject.
You want to get hired in this century, right?

Video Series

Sit back and enjoy. "netfli and skill" :P

Maybe

http://www.gainlo.co/ - Mock interviewers from big companies



Once You've Got The Job

Congratulations!

Keep learning.

You're never really done.

About

A complete daily plan for studying to become a Google software engineer.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published