Journal for my interview grind
journal.md
2024-01-11
- Submitted applications to Google:
- Software Engineer III, Google Cloud Storage (L4)
- Senior Software Engineer, Google Cloud Storage (L5)
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 (it is statically typed), I am opting to use Python this time around.
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.
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
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
2024-01-16
- Spent over 4 hours studying today. Mostly dynamic programming. Finally getting the gist of how to solve these problems, though I still find the iterative approach (bottom-up approach) difficult to come to intuitively.
2024-01-17
- Heavy work day. Only got in 45 minutes of study.
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 Google Docs.
Note: You will not have access to an editor or compiler
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.
- Completed the following easy problems for fun:
Interview has been scheduled:
- Date: Monday, January 29th, 2024
- Interview Time: 1:00pm - 1:45pm CST
2024-01-20
- Starting off with an easy warm-up problem:
(Fuck, took me 1.5 hours)
- Scheduled a mock interview with my brother:
- We 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
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.
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:
2024-01-23
- Completed two (relatively) easy ones:
2024-01-24
- Completed two (relatively) easy ones:
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.
2024-01-26
- Completed two (relatively) easy ones:
2024-01-27
- Crunch time. Really need to hit heaps today.
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 data structures and algorithms, 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
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.
2024-01-30
- Took a rest day today to get caught back up with my actual job.
2024-01-31
- Same as yesterday.
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-in-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 data structures and algorithms. They probably never failed a coding interview because the company they work for doesn't believe in coding interviews. Fuck that soft shit.
2024-12-24
Back from the dead. After getting flushed from Google, I decided to try to make the most of my situation at Workiva. I worked extremely hard throughout 2024, delivering multiple high-impact projects in order to reach Staff Software Engineer. If I could get recognition for my hard work and dedication, I'd consider staying. For reasons I won't get into–at least right now–my promotion was rejected. In the end, I came to the conclusion that there is just a fundamental misalignment between me and Workiva and that it's time to move on.
- Submitted an application to Netflix:
- Distributed Systems Engineer (L5) - Compute Abstractions
Back to the grind...
2024-12-25
- Completed Binary Search. Rusty, but the muscle memory is still there. Added the algorithm as well: Binary Search.
2024-12-26
- Implemented Breadth-first Search (BFS)
2024-12-27
- Implemented Depth-first Search (DFS) and completed Flood Fill. It was surprisingly easy.
2024-12-28
- Basically just got organized. I stopped my interview prep at the end of February 2024, so I'm trying to pick back up from where I left off.
2024-12-29
- Damn. I had a lot of unfinished LeetCode problems. What's interesting though, is even after 10 months of zero studying, I'm still much better than when I started back in January 2024. For example, I have a much better intuition around dynamic programming. Case in point, completed House Robber.
2024-12-30
- Completed String Compression
2024-12-31
- Picking up steam. I've been rotating between studying (/docs), algorithms (/algorithms), and solving LeetCode problems (/leetcode). I'll expand on this framework later...
2025-01-01
- New year, same grind. Studying arrays (gotta start somewhere).
2025-01-02
- Completed the following:
- Product of Array Except Self
- LeetCode: Maximum Subarray
- Algorithm: Maximum Subarray
After studying specific topics I reinforce what I've learned by applying the knowledge to related LeetCode problems.
2025-01-03
- Studying strings
2025-01-04
- Grindin' on the weekends again. Started Reorganize String, then realized I needed to refresh my knowledge of heaps...
2025-01-05
- More heaps...
2025-01-06
- Cleaning up some old LeetCode solutions:
Updated my resume to make it more ✨ATS-friendly✨
2025-01-07
- Heavy meetings day.
I'm just a happy-go-lucky, lobotomized IC doing my little tickets, making no noise and pretending I'm not there.
2025-01-08
- Applied to PushPress (Senior Software Engineer, Core) and ProsperOps (Senior Software Engineer). I didn't even get a confirmation email from ProsperOps. LMAO. This is probably why:
Date Posted: August 9th, 2024
Shit's stale.
2025-01-09
- Studying trees:
Trees are easy.
Applied to Upstart (Senior Software Engineer, Delivery). I have no intentions of working here, but I need to get some interview reps.
2025-01-10
- Even more trees:
Damn. Subtree of Another Tree was a LeetCode easy and it took me over an hour to get the solution. Confidence at an all-time low.
Hi Nickolas,
Thank you so much for applying to Senior Software Engineer, Core at PushPress. We truly appreciate the time and effort you put into your application.
After careful consideration, we’ve decided to move forward with other candidates who more closely align with our current needs for this position.
...
Holy shit, not even a phone screen. That's rough.
2025-01-11
- Cleaning up some of my previous solutions.
2025-01-12
- Cleaning up some of my previous solutions.
2025-01-13
Literally zero return emails apart from the flush from PushPress. What the fuck is up with the job market?
- Applied to the following companies:
- Raft (Senior Software Engineer)
- SentinelOne (Senior AI Platform Engineer - NLP | LLM)
Completed Linked List Cycle
2025-01-14
- Applied to the following companies:
- Monarch Money (Software Engineer, Infrastructure & Platform (Senior / Staff))
Got sucked down the rabbit hole of edit distance after looking into Longest Common Subsequence. Implemented Levenshtein Distance.
2025-01-15
Applied to Ramp (Staff Software Engineer | Backend). Heard about them on a podcast. Why the fuck not?
Finished the algorithm and LeetCode problem for Longest Common Subsequence:
- LeetCode: Longest Common Subsequence
- Algorithm: Longest Common Subsequence
2025-01-16
- Cleaning up some of my previous solutions.
This is my workday:
- Pick up Jira ticket in the morning.
- Complete ticket before standup.
- Spend the rest of the day grindin'. Easy bag 😎💰
"Show me the incentives, and I'll show you the outcome."
2025-01-17
- Added my solutions for the Amazon online assessment in 2022. I was pretty shit at coding back then. Probably still am. Well maybe less shit. Also, monotone priority queues!? How was I supposed to come up with that?
2025-01-18
- Coded up a quick implementation of merge sort, since it was included in the Amazon OA and I'd been meaning to add it.
- Added my solutions for the Architect.io technical interview in 2022.
2025-01-19
- Grinded for 28hr 15min this week. Worked my job for 7hr 15min (including meetings). I spent literally 1hr 15min doing actual, ticketed work. Who cares about how much work I actually do, I'm good vibez guy now 😎.
- Fuck. Spent over 4 hours on a recursive and memoization solution to Longest Increasing Subsequence. Was it worth it? I don't know. The 'tism took over and I couldn't stop working on it until I found a solution.
2025-01-20
- Finished adding my solutions for the Architect.io online assessment in 2022.
- It's MLK Day again and I'm back to where I was last year. Grinding.
- Off to a good start. Gotta beat my high score of 28hr 15min from last week.
- Wrote a lot of journal entries...
2025-01-21
- Created a YouTube account: https://www.youtube.com/@grind-rip
- Focusing on linked lists.
- Taking a different approach this week. Instead of covering the topic for a day, I am going to spend the entire week mastering the topic and completing all the recommended LeetCode problems:
2025-01-22
- Created a Discord server: https://discord.gg/KgdQCYpZ
- Organized roadmap.md
- Working on the following:
I decided to do these from easiest to hardest.
2025-01-23
- Finalized roadmap.md.
- Reviewed and removed
notes.md
(this seemed redundant). - Flushed from Ramp:
Hi Nickolas,
Thank you for your interest in joining Ramp. We greatly appreciate you considering us in your job search. We've reviewed your application and, unfortunately, will not be moving forward with your candidacy for the Staff Software Engineer | Backend opening.
...
I was going through my notes and found this:
When prepping for the technical interview, it is important to balance priorities. You should spend probably 50% of your time studying and 50% of your time doing problems. This balance should be complimentary, as studying provides the foundational knowledge for solving problems, and solving problems reinforces what you've learned.
Couldn't agree more.
- Added the following, since it is a prerequisite for Reorder List:
2025-01-24
- Feeling good today. Fridays are always good days to grind.
- A man of my word. Completed linked lists.
2025-01-25
- 100% done with linked lists...at least for now.
- Created a new repository grind-rip/data-structures
- Put together my plan for heaps:
- Review/update documentation: Heaps.
- Review/update documentation: Priority Queues.
- Implement heap data structure: Heap.
- Implement heapsort algorithm: Heapsort.
- Implement k-way merge algorithm: k-way Merge.
- Merge k Sorted Lists
- Top K Frequent Elements
- Find Median from Data Stream
- I have 23 topics to master. I've completed linked lists, so that makes 22. If I devote a week to each topic, that is 22 weeks, or slightly over 5 months. The key will be not giving up and not getting distracted. By July, I should be a master of data structures and algorithms.
2025-01-26
- Starting heaps. Heaps a hard.
2025-01-27
- OK, let's implement a heap and heapsort.
2025-01-28
- Finished heapsort algorithm.
2025-01-29
- Finished heap data structure.
2025-01-30
- Added kth smallest (largest) to Heaps section in the roadmap.
2025-01-31
- Finished heaps. Whew, lad. Now just need to finish the LeetCode problems.
2025-02-01
- First full month of interview grinding complete. 107hr 15min. Dwamn. Gotta try to beat it in Feb., even though I lose 3 days.
2025-02-02
- Sunday, 11AM, working through 'Find Median from Data Stream'. First time I've started to feel burnt out.
- Running out of steam. I'll have to finish these tomorrow:
- I'll finish up with 'Find Median from Data Stream', which is a good primer for trees, which I'll tackle next week.
2025-02-03
- Found this interesting research paper while studying heaps:
2025-02-04
- 100% done with heaps...at least for now.
- Put together my plan for trees:
- Review/update the following documentation: Trees
- Review/update the following algorithm: Breadth-first Search (BFS)
- Review/update the following algorithm: Depth-first Search (DFS)
- Implement the following algorithm: Tree Traversal
- Maximum Depth of Binary Tree
- Invert Binary Tree
- Same Tree
- Subtree of Another Tree
- Validate Binary Search Tree
- Binary Tree Level Order Traversal
- Lowest Common Ancestor of a Binary Search Tree
- Binary Tree Right Side View
- Construct Binary Tree from Preorder and Inorder Traversal
- Kth Smallest Element in a BST
- Binary Tree Maximum Path Sum
- Serialize and Deserialize Binary Tree
Bird by bird, buddy. Just take it bird by bird.
As of today, I've been studying for 6 weeks.
2025-02-05
- Working on tree traversal.
2025-02-06
tfw all you want to do is grind, so you try to churn out some AI slop as fast as possible for your job, but it doesn't work, so you end up having to read documentation and actually learn some shit.
2025-02-07
- Got a phone interview with some dust company. Beggars... Choosers... all that jazz. Never mind, rescheduled to Monday.
2025-02-08
- Added Google interview. The flush that started it all!
2025-02-09
- Add Workiva interview. Finished tree traversal.
2025-02-10
- Phone interview with Kingland. TC is ~$150k, base + bonus (LMAO). Also requires 2-3 days in office. I'm just going to go through the interview process for the reps.
2025-02-11
- Focusing on doing more LeetCode. I think I've been too theory heavy. Practice how you play!
2025-02-12
- Literally grinded all day.
2025-02-13
- 'Binary Tree Right Side View' took me 10 minutes. Am I becoming not trash? Nah, still trash, 'Construct Binary Tree from Preorder and Inorder Traversal' took me over an hour.
- Had a call with a recruiter about an opportunity at Seek AI. Also, had an Amazon recruiter reach out. Are the SWE job market Dark Ages over?
2025-02-14
- OK, just need to finish 'Tree Operations' and the last three LeetCode problems, then I'm done with trees.
2025-02-15
- Why am I doing this?
2025-02-16
- Once I hit around 35 hours of studying / work, I totally run out of steam.
2025-02-17
- OK, finishing up trees.
2025-02-18
- Created a login page for grind.rip... Got a little distracted...
- Completed 'Kth Smallest Element in a BST' in about ten minutes.
2025-02-19
- Completed Binary Tree Maximum Path Sum and Serialize and Deserialize Binary Tree. Both were pretty hard.
2025-02-20
- Took PTO today. Finally finished all my open tasks on my roadmap for trees. Moving on to arrays, then strings...
2025-02-21
- I have 20 topics left. Of the 20, I've already started 5 (arrays, strings, searching, sorting, dynamic programming). The major milestones will be graphs and dynamic programming.
- Circling back to arrays. Here is my plan:
- Review/update the following documentation: Arrays
- Review/update the following algorithm: Maximum Subarray
- Two Sum
- Best Time to Buy and Sell Stock
- Contains Duplicate
- Product of Array Except Self
- Maximum Subarray
- Two Sum II - Input Array Is Sorted
- Maximum Product Subarray
- Search in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- 3Sum
- Container With Most Water
- I should be able to finish all of this by next Friday. It's just arrays.
2025-02-22
- Studying every weekend is kinda a drag.
2025-02-23
- Around 35 hours of dedicated, focused work per week is about where I tap out.
2025-02-24
- Ripping through sliding window.
2025-02-25
- SSDD
2025-02-26
- I honestly work maybe 1-1.5 hours per day. Absolutely nuts.
2025-02-27
- More of the same.
2025-02-28
- "Sorry, babe, I can't celebrate your birthday–I have to Merge Strings Alternately..."
2025-03-01
- February stats: 91 hours of studying.
2025-03-02
- Down the rabbit hole: Palindromic Substrings -> Manacher's Algorithm. Why am I doing this? Is it even worth it?
2025-03-03
"Can I have an extra [obscure coding problem]?" [I] asked Mr. [LeetCode]. "It's my birthday." To everyone's surprise, Mr. [LeetCode] gave it to him.
2025-03-04
'Cause sometimes you just feel tired
Feel weak, and when you feel weak
You feel like you wanna just give up
But you gotta search within you
Try to find that inner strength and just pull that shit out of you
And get that motivation to not give up
And not be a quitter
No matter how bad you wanna just fall flat on your face and collapse
- Ayyy. A recruiter reached out from Assured. Scheduled a call for Friday, March 7th @ 10:00.
2025-03-05
- Upstart got back to me. Absolutely no interest in joining this company, but I need interview reps.
2025-03-06
- A recruiter reached out from Stytch. Set up a call for Monday, March 10th @ 11:00.
- Applied to American Express (Senior Engineer - Cloud APIs & Orchestration).
2025-03-07
- Phone interview with Assured (@ 10:00) and Upstart (@ 13:15) today.
- Wow. I really need to tighten up my elevator pitch–just started rambling.
- This is why you have to practice interviewing. I've been focusing 100% on the technical portion and just fumbled a phone screen with a recruiter.
I am a Senior Software Engineer on the Platform Operations team, where I lead a
team of 5 engineers that is responsible for the software development lifecycle
at Workiva.
I build software that allows engineering teams to deploy code to production
safely and reliably 1000s of times per day.
Some of the projects I've led recently are a distributed caching and storage
system, Workiva's first AI platform, that allows teams to deploy LLM-based
solutions to production.
I am currently leading a project to enable advanced deployments at Workiva for
canary deployments, blue-green deployments, and fast rollbacks.
- Interview with Upstart was better, though I need to write down all my STAR examples.
- My wife, Megan Kraus, listened in. Her feedback:
- Don't say "stuff like that" at the end of every sentence.
- Don't be self-deprecating. There was a point in the interview where I said "frontend isn't my strong suit...". Just don't even say that.
- Ask thoughtful questions that demonstrate your knowledge and interest in the company.
2025-03-08
- Completed the following:
- On second thought, maybe Upstart could be a good option. I guess we'll find out.
- Applied to Datadog (Software Engineer - Distributed Storage). Seems like a ghost req...
2025-03-09
- Completed the following:
2025-03-10
- Flushed from Datadog. Suspicion confirmed that that req was a honey pot.
- Hiring manager interviews scheduled with Assured (3/12 @ 13:00) and Stytch (3/17 @ 16:00).
2025-03-11
- Moving forward with Upstart.
2025-03-12
- Purchased LinkedIn Premium. Watch out world!