Hi all, just though I'd give back to the leetcode community by sharing my interview experiences in Canada. I was applying for positions in Canada (Vancouver and Toronto), but most of my interviews were either fully remote or let you be remote from their other office locations as long as you are based in Canada.
Also, I've signed NDAs for all the interviews, so while I can't give you the exact questions, I can offer some direction on what to expect. Also all of these had an initial call with the recruiter where they discussed my background, timeline/deadlines, pay scale etc. which were all pretty much the same so I haven't included that below.
Doordash (Reject)
Phone Screen: Got a hard question (it's a very common question in leetcode top 100 or you can find it in Doordash questions if you have premium). This was a mess-up on my part, as it was the exact leetcode question with no changes, and I had even solved it 3 days before, but I guess I got nervous and got it wrong within the 45 minutes I had for it. The interviewer was silent most of the time and didn't say much except asking me to write print statements to see where I'm going wrong with the logic. Got an email 5 hours after this saying they're not moving on. Position is based out of Toronto.
Dialpad (Reject)
Phone Screen: Got a simple graph question which could be solved either via DFS or BFS. I think most people could do it. I didn't have to execute any code but I was given a blank editor and a picture of the graph, and had to write everything from scratch, including the classes and what the inputs would look like. I think I came up with a reasonable solution. The interviewer was interactive and asked me to walk them through the logic, how I would design the classes, and edge cases. There was two way communication throughout, but I was leading most of the discussion. I think it wasn't the best interview but went reasonably well. I was ghosted after this and received no communication from the recuiter.
Electronic Arts (Offer | Declined):
Phone Screen: So for EA the recruiter didn't really mention what to expect in the interview so I went in blind. This interview was for a backend services developer and not for one of their game studios. I met with the hiring manager who discussed some of my background and the rest of the interview was just Java questions. No coding. It went fairly well.
Virtual Onsite: The 'onsite' had 3 rounds, 1 hour each, spread between 3 days.
Round 1: This was the coding round. The question is not on leetcode but similar style. Involved designing a class according to their specifications and OO principles. I had two interviewers, both were very interactive and questioning be about my design and data structure choices. I think there was a optimal data structure to use for this question which I was struggling to find, but I was explaining my thought process all throughout. In the end, since time was running out, the interviewers asked me to go for the brute force solution. I did this, and optimized it a little bit, although it was still not the most optimal solution. I wasn't required to execute the code but they were very thorough in discussing my code and my thought process. Communication is key and I was expected to clearly explain everything and they would stop me and question me again if they didn't follow.
Round 2:
This was very similar to my phone screen but very intense. There were a lot more questions which covered data structure knowledge, Java, some system design concepts on a high level. The interviewers had many follow up questions about each topic they asked me about and did not move on to the next until they were satisfied with my answer. There was no coding or system design involved, but this was still the hardest round IMO because the follow up questions really required you to think and dive deep. Again, clear communication was critical. I'd say I answered 80% of their questions correctly.
Round 3: Behavioral/culture fit round. Asked me about my past work experiences and how I approach certain situations. Also asked me some personal questions about how I handle remote work and so on. This round went well.
Offer: Got an offer 2 days later. Worked out a timeframe with them to accept or reject the offer because I was waiting for another company's offer.
Yelp (Offer | Accepted):
OA: Unlike other interviews this one didn't started with the recruiter call but with an OA. The question would be close to a leetcode Easy/Medium, but not a typical leetcode style question in the sense that it didn't require you to do a specific algo or find the right data structure to get the optimal solution. It was very Yelp specific and seemed like a simplified version of a problem you would face at the actual job (note that this is true for the coding questions in the rest of the Yelp interview as well, so I will skip mentioning this below). It was solvable using list and set and I cleaned up the code since I had time left. Got an email response from the recruiter saying it looked good and the phone screen is up next.
Phone Screen: I had a really pleasant recruiter who was very interactive. The coding question was very similar to above, but it had two parts. The first was very simple and the second was an iteration of this -- I would say somewhere between medium/hard difficulty. Initially, I vocally brainstormed how I approach this problem and suggested various approaches. Eventually, I explained why a heap/priority queue solution would be best and the interviewer agreed. What made this interview stand out from the rest was that the interviewer was really polite, very interactive, and helped me go in the right direction when I made mistakes -- apart from technical pointers they did their best to make sure to help me when I was visibly nervous on the video. It felt like they genuinely wanted me to do my best and helped me in that direction (if you ever read this post, shoutout to you, this was the best tech interview I ever had!). In the end I executed the first part, but ran out of time to finish the second, although the interviewer said I was on the right track and got pretty far. They asked me to explain how I would finish up and handle a couple of edge cases which I did, and they said they were happy with how I went about this interview. A week later, I got an email from the recruiter saying I will move to onsite and also scheduled a call with the recruiter similar to the initial recruiter calls above.
Virtual Onsite: This had 4 rounds, 45 min each. 1 coding, 1 design, 2 behavioral. Have to mention this because it was common to all 4 rounds -- the interviewers are all very polite and interactive, like the previous round. In the tech rounds they were never looking for a perfect solution, but if I can work through the problem in the right direction while communicating with them as if they were my teammates at work. Of course they still expect you to have good coding and design skills, but they actively discuss all the approaches with you, help you when you're headed in the wrong direction. I think it makes a huge difference. Make sure you do the same and communicate clearly.
System Design: Pretty standard design question. As long as you've crammed all the system design tutorials/videos you should be fine. I was slow in my approach, clarified the requirements, built the high level design step by step and gave a short explanation about what I was gonna do with each component, and after that was done went into depth with each -- in the in-depth design phase I reiterated the requirements specific to that component and worked with the interviewer to improve my design. The most useful tip I have here is to build slow, keep it vocal, regularly ask the interviewer for feedback and if they have any questions. They might ask why you did something a certain way, or give you suggestions of what you could do.
Coding: Similar to phone screen but the question was slightly easier (I successfully solved it with heaps once again -- this DS is really popular!). Had two parts, second part was an iteration of the first one. Didn't have time to clean up my messy code but had a working solution and walked my interviewer through every bit.
Behavioral: They ask you questions about your past experiences, conflict resolution with coworkers, your most memorable projects etc. -- pretty standard stuff. They might ask you a few Yelp specific questions (Example: What would you improve at Yelp? -- this question is really popular and you will find a few others mentioning this on leetcode as well)
Offer: I was told offer usually takes 1-2 weeks, but I let them know that I have deadlines with other companies so they expedited the process and got it to me in 4 days. I decided to take the offer because the team I told I would be joining had good work, plus the culture/WLB at Yelp seems good (friends working at Yelp and all my interviewers also said the same) and compensation wise this was the best offer I got. It is also 100% remote so this sealed the deal for me.
Additional points to all the Yelp interviewers for being good interviewers. Tech interviews are difficult and nerve-wracking and they made it a great experience.