journal.md
Day 0 (2024-01-11)
- Submitted applications:
- Software Engineer III, Google Cloud Storage (L4)
- Senior Software Engineer, Google Cloud Storage (L5)
Day 1 (2024-01-12)
- Contacted by recruiter
- Completed brief questionnaire
- Created this repository (originally it was called interview-grind)
In the past, I have done technical interviews in Go. Since Go is a less forgiving language (in that it is statically typed), I am opting to use Python this time around.
Day 2 (2024-01-13)
- Called brother
My brother, Stefan Kraus, is a Software Engineer (L4) at Google. We talked about the interview process and areas I should focus on. Since he recommended focusing on the Software Engineer III role (as opposed to the Senior Software Engineer role, which has a far more rigorous interview process), my preparation should focus mainly on algorithms and data structures.
- Developed a study plan
Since the L4 (or Software Engineer III) interview is focused mainly on one's ability to solve technical problems, this is where the bulk of my preparation will focus. This includes reviewing Grokking Algorithms by Aditya Y. Bhargava and completing LeetCode problems.
- Read 14 Patterns to Ace Any Coding Interview Question. My notes on this article can be found here.
Day 3 (2024-01-14)
- Completed Two Sum
Warmed up with an easy one. It took longer than expected, but, as I've learned, it takes a little bit of time to get the LeetCode flow back.
- Completed Best Time to Buy and Sell Stock
Another easy one (sliding window). Again, it took longer than expected and I should keep in mind that a sliding window can also look backwards. I was able to quickly find the O(n^2)
solution, however, this will not cut it for Google. If ever a solution runs in O(n^2)
time, you will probably need to rethink the problem and find a better solution.
After lunch I plan to read through some documentation on the Tech Interview Handbook.
- Read this: https://www.techinterviewhandbook.org/grind75/about
- Read this: https://www.techinterviewhandbook.org/grind75/faq
Day 4 (2024-01-15)
-
MLK Day. Planning to study for 5-6 hours. Starting by getting organized, then diving into some problems.
-
Focusing on dynamic programming today
Day 5 (2024-01-16)
- Spent over 4 hours studing today. Mostly dynamic programming. Finally getting the gist of how to solve these problems, though I still find the iterative approah (bottom-up approach) difficult to come to intutively.
Day 6 (2024-01-17)
- Heavy work day. Only got in 45 minutes of study.
Day 7 (2024-01-18)
- Wrapped up dynamic programming and completed the following problems:
It looks like Google is moving me forward with the L5 interview. RIP
Thank you for your response! Our team has reviewed all of your information and would like to move forward with next steps, including scheduling an initial screening using Google Meet.
Congratulations!
I was provided the following preparation materials:
Start by familiarizing yourself with what to expect in the Google interview process. Additionally, here are some resources that will help guide your preparation. Many of these resources come highly recommended from recently hired Google Engineers.
General Technical Screening Resources - Software Engineer
- Explore our products
- Tech Dev Guide for brushing up on CS fundamentals
- Videos: How We Hire, How to Prepare, Example Coding Interview, Interview Tips for Software Engineers
- Books: Cracking the Coding Interview by Gayle Laakmann, Clean Code by Robert C. Martin
Additionally, I was asked to schedule an initial virtual technical screen. This will last 45 minutes and be in a Google Docs document.
Note: You will not have access to an editor or compiler
Day 8 (2024-01-19)
- Completed an additional application:
Employment Application (This form is different from the application you may have used to apply to Google and contains a non-disclosure agreement.)
I plan to spend the full day studying heaps and priority queues.
- Did the following easy problems for fun:
Interview has been scheduled:
- Date: Monday, January 29th, 2024
- Interview Time: 1:00pm - 1:45pm CST
Day 9 (2024-01-20)
- Starting off with an easy warm-up problem:
(Fuck, took me 1.5 hours)
- Scheduled a mock interview with my brother:
- Did Longest Common Subsequence and Number of Islands
His advice:
- They might ask warm-up questions
- Look into domain specific information (Google Cloud Storage)
- Possibly a system design problem
- Domain specific knowledge
Day 10 (2024-01-21)
-
Feeling a little down–like I am going to fail, like I'm not good enough. I just need to keep pushing through.
-
Cleaning up a few tasks from the mock interview I did with Stefan yesterday.
Day 11 (2024-01-22)
- The Google recruiter reached out:
I wanted to reach out since your initial screen is confirmed and see how you're feeling. :)
Kind of a nice touch. It also cleared up some questions I had regarding the phone screen. It was probably automated.
I really need to finish up the following questions:
Day 12 (2024-01-23)
- Completed two (relatively) easy ones:
Day 13 (2024-01-24)
- Completed two (relatively) easy ones:
Day 14 (2024-01-25)
I submitted my application two weeks ago. So far, I've completed 13 LeetCode problems and spent a bit under 40 hours studying.
Day 15 (2024-01-26)
- Completed two (relatively) easy ones:
Day 16 (2024-01-27)
- Crunch time. Really need to hit heaps today.
Day 17 (2024-01-28)
One more day before my interview with Google. Whatever happens, happens. I've been studying consistently for over two weeks. I am still not where I should be in terms of preparedness, but this is just one step in my journey. This process has lit a fire in me to continue to improve my knowledge of algorithms and data structures, the true bedrock of computer programming. I have a year to get as good as possible.
- Bought the following books:
- Introduction to Algorithms, 3rd Edition by Thomas H Cormen, Charles E Leiserson, Ronald L Rivest, Clifford Stein
- Programming Pearls, 2nd Edition by Jon Bentley
- Art of Computer Programming by Donald Knuth
Day 18 (2024-01-29)
- Today's the day. I put a lot of preparation into this interview–if I fail, iiwii. I'll just study more.
Day 19 (2024-01-30)
- Took a rest day today to get caught back up with my actual job.
Day 20 (2024-01-31)
- Same as yesterday.
Day 21 (2024-02-01)
- As I kinda expected, got that flush today:
Hi Nick,
I've received your initial screening feedback, and unfortunately the recommendation is not to move forward in the hiring process at this time.
I also started a new project: grind.rip
This project is meant to document my job interview preparation journey. It's meant to be serious, but also a little tongue-and-cheek. Grinding kinda sucks, but it's good for you. Have you ever worked with a Software Engineer who couldn't code worth shit? They probably never had to grind. They probably never spent nights and weekends learning algorithms and data structures. They probably never failed a coding interview because the company they work for doesn't believe in coding interviews. Fuck that soft shit.