My 3-month plan to higher put together for Sr. Software program Engineer interviews.
First, I’ve to say that this preparation plan is predicated by myself expertise and won’t essentially work for others, nevertheless, there are basic suggestions that may be helpful to anybody within the course of.
Right here’s somewhat background story about myself. I labored at Amazon for 7.5+ years. On the time of my departure from the corporate, greater than 97% of Amazonians have been subsequently employed. The choice to go away got here because of desirous to search for alternatives elsewhere, discover new challenges, and enhance my whole revenue. I used to be a semi-active interviewer at Amazon, however other than that, I haven’t ready for technical interviews in a number of years. After a few months of preparation and interviews with some software program corporations, I acquired a number of gives. Then, after some negotiations, I signed a suggestion and accepted a senior engineer place at Meta (previously Fb).
In case you do a fast Google search, you’ll discover many articles speaking in regards to the definition of seniority for software program engineer positions. Nevertheless, years of expertise don’t essentially translate to a seniority degree. For instance, in case you have finished any of the next, contemplate your self a senior engineer:
- Led a mission with a bigger scope than your instant group which included a considerable amount of communication with exterior groups.
- Are acquainted with System Design ideas and independently designed a semi-complicated system.
- Your code is clear, well-documented, and with correct take a look at instances.
- Mentored different engineers/interns. Mentorship can have completely different types and vary from reviewing others’ code, lively participation in design conferences, or establishing studying periods to totally mentoring engineers from the start until the ramp-up aim is reached.
- Proactively search for methods to resolve an issue with out being informed
Personally, I contemplate the above gadgets to be the essential or the minimal necessities a senior engineer ought to possess. In case you are lacking a number of of the above gadgets in your expertise, you need to actively plan to achieve that priceless expertise earlier than making use of for any senior place. Touchdown a senior place at different corporations additionally requires a preparation technique in addition to consistency and dedication. Here’s a breakdown of what my preparation plan regarded like.
1. Decide how a lot preparation you want
Step one I took was fixing popular easy questions on LeetCode with out timing how lengthy it took to resolve every downside. I solved about 70% of the questions with out listening to the time. This additionally supplied an ideal refresher course for sure knowledge constructions like PriorityQueue (Heap) that I by no means utilized in my every day job. Based mostly on the result, I seen that not less than 3 months have been required for me to cross the onsite interviews.
2. Discover out the goal corporations
It’s essential to analysis and compile an inventory of corporations that you simply need to apply for. For every firm, I learn descriptions for obtainable positions to find out in the event that they have been aligned with my pursuits and examine whether or not I met the necessities. This step may be additionally finished weeks earlier than your preparation and offers you a greater concept of what to anticipate from sure corporations and positions.
1. Deal with Algorithms/Coding
In my former place, I used to be already designing large-scale techniques. The difficult half is the coding questions that required extra time for apply. When it comes to the problem of the questions, I spent 20% of my time on straightforward, 70% on medium, and 10% on well-liked, onerous questions (e.g. Word Ladder 2, Alien Dictionary, Minimum Window Substring, and Word Break 2). Once more, I didn’t time myself however made positive I totally did my finest to resolve the issues earlier than leaping to the options. To make extra use of the restricted preparation time, I created a 10 Not-To-Do list when fixing questions on LeetCode.
One other technique was reserving mock interview periods on TechMockInterview to higher perceive which areas I wanted to enhance from knowledgeable’s standpoint. I booked coding periods with Google and Meta interviewers which ended up being fairly helpful.
2. Apply for the positions
I utilized to my focused positions through the first 2 weeks. The response time diversified with some corporations responding in a matter of days, some in 1–2 weeks, just a few by no means responded and others despatched rejections throughout the resume analysis part.
Throughout this era, I took the initiative to arrange the telephone screening across the sixth week with the recruiters. As soon as the telephone screening dates have been finalized, I created a doc for every firm and gathered all coding, system design, and behavioral questions I might through searches on Glassdoor, LeetCode dialogue part, and preparation supplies that these corporations had supplied.
The telephone screens are closely centered on coding and maybe just a few behavioral questions. It’s good apply to have a margin of not less than 2–3 days between every interview and use it for studying the company-specific docs talked about within the earlier part. This time, I timed myself through the coding preparations.
An essential however generally ignored half is the behavioral questions. An organization like Snap mentions that one of many must-know questions can be “Why Snap?” and truthful sufficient this was the primary query requested. I additionally gathered an inventory of behavioral questions and tried to reply every exactly in a STAR method.
I managed to cross all of the telephone screens apart from one. Sarcastically, it was the identical interview I felt most assured about. It’s essential to notice that you’ll encounter disappointments through the course of. Nevertheless, as a substitute of attempting to investigate the explanations behind any rejection, it’s extra possible to shift your focus to the remainder of the interviews that you’ve got lined up.
1. System Design
For the senior place interviews, you need to count on not less than one system design spherical. This performs a major function in figuring out your seniority degree within the remaining supply. Be aware that
In case you do a commendable job in coding however carry out mediocre within the system design spherical, they could reject you or supply an intermediate place.
In case you contemplate your self a senior engineer primarily based on the minimal necessities beforehand talked about, then try to be acquainted with fundamental system design ideas and have led design periods in your present place. For system design, I studied the next supplies:
Tech Dummies Youtube Channel: His movies are primarily based on his analysis on many technical blogs. The designs that he explains are very near the structure of real-world providers. Some movies may look prolonged however there are lots of ideas to be discovered (e.g. Rely–min sketch) from watching the movies.
Gaurav Sen Youtube Channel: The reason fashion of this specific channel could be very shut to what’s anticipated in a system design interview. One draw back for me, nevertheless, was that he sped up the voice on some movies which can be somewhat irritating to some viewers.
Grokking the System Design Interviews: My private choice is movies over textual content so the tutorials have been a job for me to endure. Additionally, they’re extremely centered on gathering a number of numbers and calculations which isn’t actually mandatory. Until you’re particularly requested about one thing just like the variety of wanted servers, you merely simply want a tough concept in regards to the scale of the system from the gathered numbers. As an example, you need to know whether or not storing knowledge in reminiscence is a possible choice contemplating the requirement or should you want one other manner or perhaps a hybrid method to retailer your knowledge. It’s solely depending on the query and the interviewer’s choice.
I adopted a quite simple construction in my system design interviews except the interviewer needed to steer me in a distinct course. In a nutshell, these are the strategies that labored for me:
- Clarifying questions, gathering useful, and non-functional (e.g. availability, consistency, latency, sturdiness, numbers associated to the utilization of the system, and so on.): 10 minutes
- API Design: 5 minutes
- Excessive-level design (a lot of the instances following a micro-service structure): 10 minutes
- Knowledge Mannequin (e.g. desk designs): 5 minutes
- Answering follow-up questions or going into particulars of a part: 10–15 minutes
No matter your place, the software program engineer interviews are closely centered on coding. It’s best to count on on-site inquiries to be considerably harder than telephone screens. At this stage, extra focus ought to be positioned on timing.
Throughout my preparation, I seen 6 really popular topics within the questions requested by the interviewers. I spent additional time pursuing the related questions to those matters.
There are additionally algorithms/ideas which might be extremely advisable to evaluate in case they seem in onerous questions, these embrace Dijkstra shortest distance, Bellman-Ford, Prim algorithm on MSP, Fisher-Yates Shuffle, Fast Choose, Graph Coloring, Interval Tree, and Phase Tree.
By no means underestimate the significance of behavioral questions. Failure on this part is a failure within the interview no matter your efficiency within the technical half. At Amazon, I noticed many candidates (though they carried out effectively within the technical half) bought rejected solely as a result of they didn’t present acceptable situations within the behavioral part.
4. Mock Interviews
There are some mock interview platforms on-line. As talked about earlier than I used TechMockInterview.com and was fairly proud of it. Earlier than the onsite spherical, I booked a few extra periods with Google/Meta interviewers and acquired priceless suggestions on my efficiency. It ought to be famous that their questions have been extra attention-grabbing and tougher than what performed out in my real-life interviews. They have been so environment friendly that I felt extra pressured within the mocks in comparison with the actual interviews! Because of this having mock interviews with mates or periods with skilled providers are important to evaluate your efficiency in actual interview conditions.
My private aim was to get a number of gives from the businesses I admired and needed to work for. Multi-offer scenario offers you extra energy to barter and select your joyful path extra confidently. In the long run, getting place just isn’t all in regards to the cash. It’s about what makes you are feeling glad within the new function. In case you flip down a suggestion simply because one other firm provided you the next wage, you may find yourself working in a task you don’t like. This might probably result in working in an surroundings that’s irritating and misaligned along with your profession objectives. Suppose deeply about what you need (progress alternative, work-life stability, studying new tech stacks, and so on.) and negotiate till you attain a remaining resolution that presents the closest illustration of your expectations.