YOE: 4 years full-time + university internships
Current job: Non-FAANG (Yandex)
Recruiter originally reached out over email and offered an interview for a tech lead in Machine Learning, which I accepted.
Phone Interview:
Given two sorted integer arrays, return their intersection - solved via a simple Mergesort modification. Made a minor bug during implementation but fixed it myselfAfter a few days after that recruiter reached out to inform me that it was a good interview, but they won't be considering my application further right now due to business needs - unsure if that was actually the case or a nice way to phrase rejection.
Exactly one year later same recruiter reached out again with an offer to continue the interview process, to which I agreed. This time I went straight to the onsite, since that previous phone screen counted as a success.
Onsite: 1 behavioral interview, 2 coding sections, 1 system design and 1 ML system design.
Behavioral:
Coding 1:
Given a sorted array and a target integer, find two numbers in array whose sum is closest to target - iterating over first number in pair, binary search for the other number - nearest points to binary search results will be the candidates. Have to be careful not to find the same index twice. Near the end of the problem started manually implementing binary search but the interviewer stopped me there.Coding 2:
Given an integer array and a target number, find whether there exists a contiguous subarray with sum equal to target - struggled here a bit. First came up with an idea to compute cumulative sums, then hash them and then iterate over the possible starts of subarrays. Halfway through realised that it'd be hard to ensure that i'll actually find a subarray in the correct order (not "reversed"). Interviewer gave a hint that with a correct data structure I don't even need a second pass over the hashed cumsums. I then decided to maintain a running hashset of cumulative sums and use it for a single-pass solution. Finished right before time was up.System design:
Was asked to design a service to suggest a few POI's (from a predefined constant set) for a user to rate which are reasonably close to him. I think I lucked out here because I've seen much harder system design questions. Suggested to split the whole map in blocks that contain a reasonable amount of POI's and maintain a database which outputs all POI's in a given block. We then discussed some finer details (how would we make such a split? how will we map a user's location to a block? how would we scale it?) etc, but overall concept was quite simple.
ML system design:
Basically was given the same problem setting as above but was asked to come up with a way to rank the possible POI's. Lucked out again since I've lots of experience in recommender systems so had no problems here.
Recruiter reached out after around 5 days and confirmed that I'll be getting an IC5 offer.