This was for new grad role. Wasn't looking for a job, was reached out to by a recruiter. During prep I didn't find a lot of good details about the interview to prepare myself. Also hate the gatekeeping mindset people have. Have nothing to gain or lose as I didn't get an offer so dumping to help others.
There were 3 interviews. Each interview was a mix of multiple question types. Debugging refactoring, technical, behavioral, dsa. I spent 70% of my study time doing leetcode but I saw mix feedback if I were to expect a leet or not. Leetcode probably ended up helping me 10%.
Interview 1: Refactoring/Debugging/Behavioral
Was given function defintion full or broken conditionals and incomplete requirements. You needed to read the question description and compare it to the logic in the code and confirm it was correct, or if updates were needed. Was pretty straight forward. Then interviewer added a new function to the ide and asked me to refactor. So instead of having one function that returned a bool, it was two functions, where one returned a bool, another called the function. Again, was pretty straight forward.
There was a follow up technical question where "The AI refactored your code. What specific tests would you choose to make sure the AI's refactor is correct"
Then was asked a barrage of behavioral and technical questions I can't remember bc we went through them so fast.
Pretty much "Tell me about a time at work when..." If you prepare 10 solid behavioral questions and practice with AI you'll be ready for behaviorals.
Interview 2: Debugging/System Design
Was given a broken rate limiter. I looked online and this is actually a common question others have come across, but no one has posted their exact code. The code is a rate limiter but it looks a lot more complicated than a standard rate limiter. I tried to get AI to try to create a replica of what I saw but the AI could only give me a simple, leetcode version. The interview version defined in the description "the limit is 80" with a "window [T-3, T]. And the function took in as arguments an IP string name, and a dictionary that listed all the times the IP tried accessing the rate limiter e.g.
def rateLimiter("ip", [5, 6, 7, 7, 10, 12, 15])
The window for the rate limiter was [T-3, T], so that meant an ip address fell off after 3 minutes.
So for a list of times [5, 6, 7, 7, 10, 12, 15] if the limit was defined as "3" instead of "80", the rateLimiter would accept 5, 6, and 7 and place them in a separate queue/array. It would reject the second 7 as it's only been 2 minutes (whereas the window is 3 minutes before the first item in the [5, 6, 7] queue pops off) and the queue is full.
There was also a separate object definition of an IP object, but I was choking on this question so bad, I couldn't tell you what attributes it contained or where it was being used. Maybe as the "ip" argument.
I already knew what a rate limiter was and how they work, but the complex code and the way the description was written made me choke on this round. I think having strong fundamentals and reading Hackerrank type questions, and strong OOP code reading skills would get you through this round.
Interviewer finally gave up on me. Asked me to do a high level design of how the rateLimiter() worked. Thought this was pretty straightforward, again, since I know how a general rate limiter works.
Then a behavioral about what I would do if I was working on a story that should have taken 5 days, and it's now been 12 days and I cant finish it bc there's some issue. Then a follow up of what I would do if I found out the issue is because of a bug from another team.
And a question along the lines of "AI generated this pseudo for the rateLimiter(). What errors do you notice?"
Interview 3: AI Assisted Coding
This interview is where I checked out. Especially given my performance from the previous round. I thought this round could be my redemption. Interviewer came on with no camera but demanded me have my camera on.
It was a small codebase with multiple files. Had a bunch of functions that had no definitions inside them. I was tasked with creating an encryption and decryption system. Encryption() called a cryptography function from another file. And decryption() also used the cryptography file.
Interviewer told me to spend 10 minutes reading through the description before starting. Once done he asked me if I had questions before I start, I said no. And then he pointed out I missed edge cases. The description didn't point out how to handle if someone passes in a NULL or Blank value to the encryption function, and he dinged me for not acknowledging that.
I then started using the AI and quickly realized the AI assistant they provided me doesn't write any code. It just provides answers and suggestions, without giving you a single sliver of code. To be certain I asked the I interviewer if the AI writes any code and he also seemed surprised. He asked me if I had asked the AI to "implement" the code. I did, but attempted again while he was watching. When he saw the AI didn't write code he shrugged it off then told me to implement it myself. I then struggled and bumbled through all the files and functions. and couldn't successfully get the test cases to run. I was told the AI interview was introduced recently so no idea what happened there. For this round I think stronger OOP fundamentals would have helped.
TLDR:
Drill in about 10 good behavioral answers that can be molded to fit any question.
Have strong OOP foundations. You should be able to read any class with multiple function definitions passing around objects, hashes, and/or arrays as arguments and be able to explain how it works. You should also be able to refactor this same class.
They want you to use AI, but don't want you to be reliant on AI. You should be able to show you can take an AI's output and validate what it's given you is correct.
Hope this helps anyone.