Interview Experience
It is going to be rather long post, so putting the structure first, so you can jump into section if there is something specific you are looking for:
- Prev Experience
- Interview experience (per each company)
- Role and How applied
- Interview rounds (no specific questions, sorry)
- Conclusion
- Preparations
- Coding
- System Design
- Behavioral
- Final thoughts and lessons learnt
Prev Experience
============
- Masters CS degree in Medium Tier University in my country, never participated in any Compete Programming contests
- 10+ yoe, mostly Finance space, participated in various projects from Front End to complex System Integrations
- Already interviewed multiple times to Non Senior FAANG positions over last 5 years, having rejects and offers
- Interviewing a lot myself, including Java oriented (helped for Apple/Twitter) and typical DS/Algo rounds. So have a good sense of signals Interviewer is looking into
- Happy Dad of two boys, worth mentioning :) as I have a really strict timetable and low room for preparations
Interview Experience
===============
All interview rounds were Virtual, video calls, with one or more interviewers involved.
Apple
How Applied
Applied via Web Site after seeing opening on Linkedin, because of tech stack from my areas of interest. Almost forgot about this application as I received a call ~1 month later.
Interview rounds
The longest streak of 7(!) rounds:
- Phone Screening, Behavioral (40 mins, HM) - Quite informal discussion about interests, previous experiences, familiarity with Java Concurrency concepts and main Open Source Frameworks
- Phone Screening, Coding (1.5h, Senior Engineer) - Java (no choice of language) coding, related to one well known Data Structure. Expected to develop a solution, write tests and compile/run it. It took some time to fix compile errors, as was coding in a notepad-like environment, however I was able to finish right on time.
- Phone Screening, Behavioral (30 mins, TPM) - Deep dive into experience, going through CV, and how it is matched to current Role.
- Onsite, Behavioral (30 mins, TPM) - More standard situation based questions on relationship with customers, team.
- Onsite, Coding + System Design (1h 30 mins, Senior Engineer from Team) - Non standard interview, first writing code to solve the algo problem which I haven't seen before. Then moved to scale the amounts of data / frequency of invocations, wrapping it into a working system, going from abstract components to implementation details (e.g. which DB or Message Queue to choose). Ended up with a working system.
- Onsite, Technical Background (1h 15mins, Senior Engineer) - Uncommon interview, open discussion where we discussed my previous deliveries, going into design choices made, continuing to apply technologies I used before to some new problems. Mostly verbally, without typical System Design diagrams.
- Onsite, Behavioral Team Match (1h, Senior Manager) - 2 ways conversation around the Project, its roadmap, expectations from the Role and plans for nearest future. I wish all companies hiring for specific projects provide such a context.
Conclusion
I was worried only about the first Phone Screen on Coding, as code was a bit dirty and I had to fix multiple typos to make it compilable, all other rounds went smoothly. Received an informal offer within a week, having a week for consideration. Really liked the interview process, its alignment to a particular Role and balance between functional/non-functional questions.
Meta
How Applied
Reached out by recruiter, briefly discussed the teams having openings.
Interview experience
In general it were typical FB interview rounds, mentioned in various resources, looking for fast problem solving/clean coding and strong cases on behavioral round. 1 phone screening (Coding) + 4 onsite (2 codings, 1 behavioral, 1 Product Design):
- Phone Screening (45mins) - 2 medium questions on arrays and trees
- Onsite, Behavioral (45mins) - Intensive session, targeting typical topics, like main accomplishments, working with the peers and manager, conflicting situations
- Onsite, Product Design (45mins) - Design popular platform, with reduced scope. Focus was on high level design, APIs, scaling, main components and data flow between them. Finished with the working system right on time.
- Onsite, Coding (45mins) - Medium/Easy Graph and Tree related questions, came up with optimal solutions for both problems in time
- Onsite, Coding (45mins) - Medium/Medium problems on arrays and data structures design. Mentioned that recently solved one of them, the interviewer asked for an optimal solution, explained that to him, so we moved to another question. Was able to solve with optimal solutions on time.
Conclusion
Felt confident after the rounds. Received positive news a few days after finishing, that all rounds went great, extended an E5 offer few days later. Overall experience was positive, everything was on time, great involvement from interviewers, engagement of recruiter along the process.
Twitter
How applied
Reached out by Hiring Manager on Linkedin, providing specific project and Role description. Really liked the project and roadmap, so decided to give it a try.
Interview experience
The most challenging interview rounds in total for myself, compared with the other two. 2 persons on each Onsite interview, one is leading, one is taking notes, therefore whole rounds become more intensive.
- Phone Screening, Coding (1h) - Array/Hash structures based question, solving real practical problem, didn't find it on LC. Was quite confident on this one.
- Onsite, Coding (1h, 2 Senior Engineers) - building a well known Data Structure and its Concurrent Threads access Implementation as a follow up. Almost finished both on time. This was quite heavy and the most amount of code produced compared to all other rounds. Was not sure if I reached the bar on this one.
- Onsite, (1h, Domain Knowledge) - In depth open discussion of one of the most complex projects in my CV, focusing on Data Flows and bringing more requirements there. Again, I didn't know if I was deep enough in discussed concepts.
- Onsite, Behavioral (1h, 2 SDMs) - In depth discussion over my experience from most recent and following to other Roles, focusing on accomplishments, working with the customers and teams.
- Onsite, System Design (1h, 2 Senior Engineers) - Real problem from Twitter's space, with focus on all relevant attributes, like scale, components interactions, bottlenecks. This was the most difficult round for myself, as interviewers were very familiar with the topic and challenged almost every part of the system, digging into details. It felt like this round can cost me an offer.
Conclusion
In about a week I got a positive signal from Recruiter on all the rounds and received an offer week after. In general this was the most satisfying one, as I had doubts if I did well in a couple of rounds.
Preparations
==========
Was preparing along with quite extensive full time job, mostly taking 30mins-1h before work for coding/reading on System Design concepts and 1h before going to bed for Behavioral and less intensive System Design example videos. Almost removed many ditractions like tv shows/news and social feeds/alcohol/etc for couple of months to save time and energy.
Coding
Over last few years solved about 300 LC questions, using following plan/thoughts:
-
(On early stages) From topic to topic (2 pointer, graphs, trees, etc) go over multiple questions at a time, till you are fluent in coding the variations of same approach
-
Try to keep schedule, e.g. 1h before work every working day for coding
-
Take a breaks when feel exhausted, remember about sleep, sport and life being, this is important
-
Focus on approaches, not concrete problems, practice noticing which ones applied to the problem. Went through Coding course from \u201CGrocking the \u2026\u201D series from well known platform, it is focused on \u201Cgroups\u201D of questions by topic/approach
-
Focus on Medium/Easy problems, rarely took \u201Chards\u201D (especially which require a lot of coding). Usually thought through them on a paper, checked discussions later and moved further, to save time.
-
If stuck on question more than 20 mins, going through the approaches on Discussions and moving to next one, returning back in week or so and trying again
-
Close to interviews solved top 15-20 questions per company, just to have better feeling of topics asked
System Design
Previous experience was the key to my preparations. I am trying to understand every systems/projects I am working on in details, also participate in Design reviews/Tech choices reasoning of other teams. Besides that it is commonly used preparation items:
- Youtube videos of well known channels, going through designs question examples
- Blogs of Big Tech companies
- Design Data Intensive Applications book (I went through few chapters for areas I was less confident in)
- SD course of Grocking series
- SD primer Github repo
Behavioral
Took it seriously as applied to Senior Role. Listed top 15 questions and came up with strong examples from my career, choosing the most impactful when few were applied. The more mature examples you provide, then higher level you graded on such interviews.
Final conclusions and lessons learnt
==========================
- Current Role is your main asset, going into details of each system, participating in design reviews of other teams/departments makes you much more confident in System Design and Behavioral interview rounds. Delivering something you care about and learning along the way pays a lot in distance.
- Behavioral and System Design rounds are really important for Senior positions
- Interviewing and preparation is a marathon, not a sprint. I gained a lot from my previous failures.
- Sometimes Rejection is not about you, it can be various other reasons or just \u201Dnot the right time\u201D.
- Applying to multiple Roles is harder from planning perspective, however removes the pressure a lot and gives a room for negotiations when multiple offers received