- read

How I Got Into Google Without a CS Degree

Megan Chang 68

The Syllabus and Homework Schedule

The syllabus is the roadmap in any college course that laid out a calendar for the semester with two important things:

  • Topics covered
  • Homework assignments

In my opinion, creating a syllabus (and sticking to it) is the single most important part of studying. It’s also one of the most difficult because there are so many methods, data structures, and algorithms to study that it can be challenging to keep it all organized and manageable. And it can get overwhelming if you don’t have a plan.

How do you know what topics to study? How do you know what kind of problems to practice? How do you know if you’re wasting your time studying something that would never ever be asked of you? What is going to be on this gosh darn test?

Imagine going to a class where your entire grade is based on one final exam, but they don’t give you any lectures or homework. That’s a little bit what it felt like going into Google. What I needed was a course of action to follow that thoroughly covered all relevant topics to the extent that I needed to know them.

Introducing AlgoExpert!

Now that I had my study guide, it was pretty easy to break up my calendar. I allocated more time for topics I was less familiar with and less time for topics I had a firm grasp on. That’s up to you. For me, I gave myself two weeks to learn dynamic programming, two weeks for binary trees, one week for tries/heaps, one week for graphs, and so on. But the important thing is to…

Set deadlines for yourself to keep you on track

Deadlines are helpful because they offer important check-in points. A deadline pushes you to finish topics on time if you’re falling behind. And if you master a topic faster than expected, you can celebrate this milestone. Either way, a deadline helps you stay on track so that you don’t run out of time.

You might have to adjust if you find that you struggle with one topic more than anticipated, so give yourself a couple of extra weeks at the end to account for this.

Practice explaining your approach

Once you’ve mastered a topic or problem, don’t forget to practice answering questions in REACTO format. Remember coding is not enough. Your interviewer is also assessing your ability to communicate and collaborate. And this requires just as much practice as the coding portion of your interview. So practice discussing your approach before you code. Think of examples and edge cases you want to test. Discuss space and time complexity. And so on. For a more detailed guide check out this article.

The Step-by-Step Guide to Answering a Technical Question in a Coding Interview

Repeat, examples, approach, code, test, and optimization

betterprogramming.pub

The Textbook

In school, I used my textbook only in the context of trying to finish my homework. So with homework in hand, I would find the excerpts from the textbook that allowed me to finish my homework problem. A true scholar might baulk at this, but there’s simply not enough time to learn everything, so you have to prioritize.

In this case, the textbook was a culmination of several resources (AlgoExpert’s video explanations, YouTube videos, Leetcode articles, Geeks for Geeks articles, etc.). Some of these resources you have to pay for, but I found that they were worth every penny.

Some people learn better by reading, some people learn by listening, some visually. Figure out what works best for you. For me, it was primarily watching YouTube videos, with a little bit of reading articles and practicing additional Leetcode problems.

YouTube

A couple of channels that I really enjoyed were the following:

Kevin Naughton Jr.

Hey guys, I’m Kevin, and I’m a software engineer at Amazon in New York City! I make videos about coding interviews and…

www.youtube.com

Back To Back SWE

This channel is my initiative to add to the community of programming interview preparation. When I prepared for my…

www.youtube.com

Kevin Naughton Jr. is great if you have a short attention span like me. I learn more by doing, so I just want someone to explain things really quickly, and then I’ll jump in and try myself.

Back to Back SWE was sort of my backup plan because his videos are a bit longer. But if concepts weren’t really clicking, sometimes it helped to watch this guy. For instance, he helped me understand binary trees a lot better.

So find whatever works for you. If you like it quick and snappy, try Kevin. If you like longer explanations, try Back to Back SWE. I also found a bunch of one-off videos based on specific questions I searched for. For example, when studying the maximal rectangles problem, I found this gem:

Leetcode

Pay for the premium package to unlock amazing solution articles with diagrams and examples. These articles can be hit or miss, they but generally give you a sense of where to start, and often if the solution itself is confusing, the comments from other Leetcoders will be enlightening.

You’ll also get access to company modules. For example, the Facebook module had a bank of 50 questions (grouped by categories) that you might see during the interview. These questions are voted upon by users and always kept up to date. And they were actually very accurate (especially the FB one).

Geeks for Geeks

K'th Smallest/Largest Element in Unsorted Array | Set 1 - GeeksforGeeks

Given an array and a number k where k is smaller than size of array, we need to find the k'th smallest element in the…

www.geeksforgeeks.org

If reading is more your thing, then I highly recommend Geeks for Geeks. What I liked about this website is the thorough solution breakdown. You can type in a problem like “kth largest element” and it’ll give you a detailed breakdown of three different solutions, including a time complexity analysis and the corresponding code.

If you were asked this question in an interview and could quickly speak to all three methods before coding up the most efficient one, you would get major bonus points.

Another great resource is Cracking the Coding Interview. I’ll confess, I didn’t use it because personally, I learn more quickly when I can type things into a search console, but if you prefer a physical book as your textbook, this is a great resource. In fact, I know many people who used this as their textbook instead of AlgoExpert, and that works just fine, too,

Cracking the Coding Interview: 189 Programming Questions and Solutions

Cracking the Coding Interview: 189 Programming Questions and Solutions [McDowell, Gayle Laakmann] on Amazon.com. *FREE*…

www.amazon.com

General Advice

  • Don’t burn out, but also don’t cram and run out of time. Find your Goldilocks amount of time. Not too long. Not too short. Give yourself the right amount of time to master all the different areas.
  • Focus and don’t go down rabbit holes. It’s easy to get distracted when learning. One minute, you’re learning how to use breadth-first search to count islands, but then you’re wondering why not depth-first search? I can use both, but which one is better? And the next thing you know, you’re on YouTube learning which Google cafeteria has the best Chinese food and how many free massages a month you get.
  • Stay focused. One trick I found super helpful was jotting down all these questions as they came up, to remember to come back to them later. And I mean quick jotting — just a three-to-five-word bullet point, max. That way you can dedicate 100% of your focus to the task at hand and then go back to the details later. Remember, details are important, just not as important as the foundation. Prioritization, my friend!
  • Have fun. Don’t feel bad about playing sports, grabbing dinner with a friend, or watching TV or movies. Taking breaks while you study is essential. It helps with the whole not-burning-out thing. Just make sure to keep a good, balanced schedule.
  • Exercise. I found that starting my day off with a two-mile run was super helpful for me to be more productive during studying. There are plenty of books and articles that go into why exercise is good for the brain, so I won’t go into it, but I will say it works. Try to do something to get the blood flowing before you study. And eat healthy. It helps more than you think.
  • Don’t spin your wheels. It’s good to try problems first, but if you truly have no idea at all after ten minutes, just read the answer. For example, there’s no way I would ever have figured out DFS or BFS intuitively. So it wouldn’t have helped to stare at the problem for an hour.
  • Reach out to your network. They say it takes a village, and they’re right. When I found out I got the Google phone interview, I told my old college professor/research advisor the good news. And guess what? He just so happened to have some students who were at Google. He connected me with one who ended up giving me some stellar advice and doing some mock interviews with me. The same thing happened when I reached out to an old college friend who was working at Facebook. And he even offered to refer me to Facebook!
  • Don’t forget behavioral questions, too. You may be focused on the tech questions because they’re unfamiliar, but don’t forget to practice for the behavioral interview.
  • Relax and remember this isn’t your only shot. If you’re nervous, that’s awesome. It means you want it, you care, and that you’re putting yourself out there — all good things, so yay! But remember, if you don’t get it, you can try again. Unlike applying to college, you actually do get another chance. And each time you interview, that’s one step closer to your goal. Because hopefully, every time you’re getting better.

Thanks for reading. I hope this helps you build your own syllabus/study guide to stick to. And remember, you got this!

sign with the words “You got this” on it
Photo by Prateek Katyal from Pexels