2020 March Madness: Alto | Triplebyte | Palantir | Point | Facebook [2 offers]
Anonymous User
16695

About Me

  • B.A. in Computer Science from a Midwest university that isn't on any academic "Top N" list from any reputable news source that I'm aware of
  • I've programmed personally for about 15 years (with a few 1yr+ breaks where I didn't code at all), and have held variety of a generalist programming jobs on and off for about the last decade. I tend to get bored and move between careers a bit, so I've spent at least 4 of the last 10 years doing non-software engineering stuff. The largest organization I've worked with had a team of around 10 engineers. All Midwest, no one you've ever heard of.
  • I've done mostly small projects by Silicon Valley standards - line of business & B2B stuff, ranging from Android apps to web apps to the random Electron desktop app.
  • No buzzwords on my resume, no big data / AI experience.

Status
Currently employed as a generalist engineer

Application process
Start of Search - February 2020
Accepted Offer - Facebook Android Engineer (E5) April 2020
Total companies applied to - ~40
Companies that called me back - ~10
Total onsites - 5
Total offers - 2

My application process started when I was working on a personal project on a Sunday afternoon in late February. I was browsing StackOverflow to see if I could find some code to copy/paste, when I saw an ad for Triplebyte. I clicked on it, and decided to take the Generalist quiz. I passed, which was good enough for me to proceed to their technical phone screen to see if I qualified for their FastTrack program.

Had the phone screen the following Friday. Consisted of

  • 1 programming question (30 minutes)
  • A rapid-fire general knowledge / programming wisdom Q&A section (30 minutes)
  • A debugging section (30 minutes)
  • A system design section (30 minutes)

The interviewer was very friendly, well prepared and seemed like he had done this all before. The programming section was basically "build a console app version of minesweeper" (you choose the language) and had a few specific requirements that it had to meet. The GK section consisted of a mixture of questions about algorithms, data structures, and basic web questions, like "How do you control caching using HTTP headers". The debugging section consisted of trying to fix issues with some sample code that they provided (you choose the language). The system design question ended up looking a lot like "Design Twitter", which gets posted here all the time.

I found out later that day that I had been accepted into the FastTrack program, and then I received a phone call from an in-house recruiter from Triplebyte to explain the rest of the process.

Triplebyte essentially functions as a more focused version of Indeed. Once you take the quiz and get accepted into the program, they send you a questionnaire about your background, you upload your resume, answer questions about salary expectations, tech you like, etc. and then they present you with a list of companies they think would be a good match. Now, this probably works great when you have a very specific skillset that you've been honing for multiple years, but with my eclectic background their "matching algorithm" matched me up with about 300 companies, many of whom I'd never heard of and a lot of whom were very small startups. There are certainly top companies on Triplebyte, like Facebook and Apple, but I'd say overall about 10% of the companies I matched with were publicly traded or Series D startups, about 20% were Series B or C, and the other 70% were Series A or smaller with only seed or angel investments. Obviously YMMV.

Out of the list of 300 or so matches, I sent an personalized note to around 40. Over a period of 3 weeks, 10 or so of the companies responded and I had phone conversations with each. They weren't tech phone screens, but each ended up being a mini leadership/behavioral/cultural interviews. Out of the 10, I ended up accepting onsites for Alto, Triplebyte, Palantir, and Point. During this process Facebook reached out separately through LinkedIn and I accepted an invitation for a phone screen with them.

Prep
I haven't applied for a tech job in about 5 years, and prior to this had never applied to a company from Silicon Valley.

None of the companies from the Triplebyte bunch had good guidance for prep, and Triplebyte itself doesn't provide much in the way of specific guidance. Facebook has excellent guides for prepping for both their phone screens and onsites, so I ended up using those as the primary means of guiding my prep. They specifically call out LeetCode and a few other sites as good resources for the coding interviews.

I paid for a LeetCode premium subscription and tried to do 1-2 problems per day. My initial focus was on Medium level problems, and I slowly branched out into both Easy and Hard level questions. I didn't work through any of the company-specific prep guides, but I started out by working on all the problems tagged "Facebook" sorted by frequency. Once I had worked through most of the more frequent problems tagged "Facebook", I switched over to working through the list of most globally frequent problems.

Over the course of a month I did 62 problems (7 Hard / 36 Medium / 19 Easy). I'd say that I did 95% of the "Easy" problems on my own without looking at the solutions, 70% of the "Medium", and maybe 30% of the "Hard".

My advice - don't spend too much time trying to find the solution on your own - it's perfectly acceptable to look at the answer and code a solution using that as your guide, as long as you understand why the posted solution works, and are confident you could reproduce the code + explain it in an interview setting. There are a lot of smart people on this site who have taken time to solve and explain the problems - let them help you. Your goal should be to expose yourself to as many problems and solutions as possible to give you the best chance of nailing the technical interview. No one cares if the best solution to a problem isn't one you came up with 100% on your own.

Interview experiences

@Alto (front-end engineer) [Reject] - Converted to a virtual onsite due to COVID-19. My first Silicon Valley interview ever. 4 rounds of interviews

  1. Behavioral (1 hr) - Interviewed with an engineering manager, they presented about the company and asked me questions about my background, why I wanted to join, etc. followed by preferred communication strategies, engineering challenges, what I would do as a leader, etc. I thought I clicked well with my interviewer.
  2. Tech team chat (30 minutes) - Talked to a couple of new hires about their experiences so far at Alto. No programming questions or anything like that.
  3. Coding #1 (1 hr) - Something like "Design a search interface for a list of products" (provided by interviewer), using ReactJS + other technologies. Didn't do great on this. Spent a lot of time just getting the data into a usable format, asked the wrong question and got restricted on my choice of technologies, and just generally treated it like a list of tasks as opposed to a coherent feature.
  4. Coding #2 (1 hr) - Something like "Figure out how to send pills to customers at the lowest cost possible". This was from a 2 page design document detailing a bunch of company-specific stuff and phrased very strangely. I spent too much time trying to understand and extract the actual coding problem, and didn't interact with my interviewer enough. Honestly it wasn't that hard in the end, but I spent way too much time spinning my wheels and getting super nervous.

Received a callback the next day saying they weren't going to offer. I wasn't surprised at all.

@Facebook Phone Screen (Android Engineer) - Started off with basic questions about Android knowledge, moved on to a question similar to LeetCode #953, "Verify Alien Dictionary", with some additional wrinkles and constraints. Ended with Q&A about life at Facebook. Seemed to click well with my interviewer.

Received a call back later that day that they wanted to proceed to an onsite.

@Triplebyte (Full-stack engineer) [Reject] - Cancelled due to COVID-19.

@Palantir (Product engineer) [Reject] - Converted to virtual on-site due to COVID-19. 3 part interview

  1. Coding (1 hr) - Started off with a rather involved string manipulation problem (probably would be LeetCode Hard). Completely bombed. Didn't even get to a sub-optimal, brute force solution by the end of the hour. Got stuck on a bunch of edge cases that I probably could have avoided if I just talked things through with my interviewer. Would probably have received more points on the interview if I had simply slept in and showed up an hour late.
  2. System Design (1 hr) - Something along the lines of "Design an application that allows users to find new outfits using clothes they already have in their closet". Had a chance to discuss different strategies and technology tradeoffs. I don't have any experience with Big Data or scaling, and I hadn't done much studying on architecture/design questions up to this point. I think it probably showed, but compared to the first interview of the day it went amazingly well.
  3. Coding (1 hr) - A LeetCode Medium level question about flattening a list of users & groups into just a list of users. Made sure to discuss things with my interviewer, talked through edge cases, came up with a pretty decent solution with time left over at the end. The interviewer seemed pleased with my solution.

Althought #3 went well, #1 and #2 were enough to sink me. Received an email back a few days later that they weren't going to offer. Again, I wasn't surprised.

@Point (Full-stack engineer) [Offer] - Converted to virtual on-site due to COVID-19.

After going 0/3 on the on-sites up to this point, I figured there was nowhere to go but up. Maybe that's what helped the day go better - I was able to get out of my own head a little bit and just relax. Multi-part interview

  1. Coding (45 minutes) - LeetCode medium level problem - something like "Given a log file that contains a list of pages visited by customers, find the most common paths that users take through the site". Talked everything through with my interviewer, he made a few clarifications and offered some suggestions, and ended up solving and testing in about 30 minutes. The last 15 minutes were chitchatting about general client/server architecture and the company.
  2. Coding (45 minutes) - LeetCode medium problem - A variation of LeetCode #322 - "Coin Change". Started off as a somewhat more basic problem with just U.S. coins, and added constraints (i.e. non-infinte coins, etc., other denominations) as I solved it. Tried to think out loud and ask questions as much as possible. Clicked well and communicated a lot with my interviewer.
  3. System Architecture (1 hr) - A pair of questions like "Design a system to handle bounced emails" and "Design a system that can do analytics for page views". Much more conversational than most of my other interviews at any other company. Hard to whiteboard virtually, but everything turned out all right. Once it was clear that the chosen architectures would work reasonably well, the interviewer just picked one feature at random from each architecture to deep dive on.

Break for lunch, then interviews with non-technical people in the afternoon. I received a call back the next day saying that they were going to make an offer.

@Facebook (Android Engineer) [Offer] - Converted to virtual on-site due to COVID-19.
Happened about 2 weeks after the rest of the interviews had concluded. 4 part interview

  1. Coding (45 minutes) - LeetCode Medium, 2 coding questions, although I didn't find out that we were doing 2 questions until after I had solved the first one and assumed I was done. #1 was finding the intersection of two arrays without using any built-in Set or Hash classes. I discussed a variety of solutions with my interviewer, and we settled on a mutually agreeable solution. Once that was done, we discussed the runtime complexity. #2 was very similar to LeetCode #199, "Binary Tree Right Side View". I talked about basic tree traversal strategies, chose one, implemented a solution and discussed runtime complexity. No time for personal Q&A due to the next interviewer showing up.
  2. Behavioral (45 minutes) - Chatted with an engineering manager about my resume and experiences. Talked about hardest challenges I've faced and the solutions that I'm most proud of. They asked me why I was looking to move to Facebook and how I thought I could contribute once I was there. They also asked other general behavioral questions that I honestly don't remember.
  3. Architecture (45 minutes) - Android-specific architecture question. This one was hard to prep for because most of the videos you see posted go through web architecture, so I wasn't quite sure how to visually lay an architecture for an Android app, or what level of detail I should go into when talking about specific features. I ended up focusing a lot of my time on developing basic use cases and talking about how mobile specific constraints like inconsistent network, finite battery, finite storage would affect the implementation. I was able to answer most of the questions the interviewer asked about specific Android technologies I would use when building the app, which probably helped a lot in the end.
  4. Coding (45 minutes) - A couple of (maybe?) LeetCode medium/hard level problems. One was a string manipulation problem, the other was a sparse array problem. Hard to say exactly what difficulty level the questions would be at, as we spent a lot of time talking about what parameters we would need as inputs to solve either of the problems and how the parameters we chose would affect the solutions. I ended up coming up with solutions to both, and we discussed the runtime and space complexities of each. Ended the interview with some extra time to chat about life at Facebook.

Received a phone call the next week saying that they were going to make me an offer for Android Engineer (E5), and I accepted shortly thereafter.

Overall thoughts

  • How you do in the interview matters way more than your resume
  • Keep studying between interviews
  • Don't get bogged down when you're studying. It's a numbers game - the more problems + solutions you see, the better you'll do
  • The biggest thing you'll learn from doing problems and reading the posted solutions from LeetCode problems is how to think about problems and solutions
  • Some interviewers want to see what solutions you come up with, and others have specific solutions they want to see and will give you hints to help. Figuring out which type of interviewer you have will help you be successful.
Comments (20)