Here's a list of common behavioral questions to prepare for. If you prepare well for the general questions and apply the STAR format along with demonstrating qualities, you will be fine.
Practicing is the best way to prepare for coding interviews. Years ago, I curated a list of the most important 75 questions on [LeetCode](https://leetcode.com). Many other LeetCode questions are a mash of the techniques from these individual questions. I used this list in my last job hunt to only do the important questions.
@ -33,7 +33,7 @@ In week 1, we will start off easy and do a mix of easy and medium questions on a
- [Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/)
## Week 2 - Data Structures
## Week 2 - Data structures
The focus of week 2 is on linked lists, strings and matrix-based questions. The goal is to learn the common routines dealing with linked lists, traversing matrices and sequence analysis (arrays/strings) techniques such as sliding window.
@ -49,7 +49,7 @@ The focus of week 2 is on linked lists, strings and matrix-based questions. The
- [Pacific Atlantic Water Flow](https://leetcode.com/problems/pacific-atlantic-water-flow/)
## Week 3 - Non-Linear Data Structures
## Week 3 - Non-linear data structures
The focus of week 3 is on non-linear data structures like trees, graphs and heaps. You should be familiar with the various tree traversal (in-order, pre-order, post-order) algorithms and graph traversal algorithms such as breadth-first search and depth-first search. In my experience, using more advanced graph algorithms (Dijkstra's and Floyd-Warshall) is quite rare and usually not necessary.
@ -70,7 +70,7 @@ The focus of week 3 is on non-linear data structures like trees, graphs and heap
- [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/)
- [Encode and Decode Strings (LeetCode Premium)](https://leetcode.com/problems/encode-and-decode-strings/)
## Week 4 - More Data Structures
## Week 4 - More data structures
Week 4 builds up on knowledge from previous weeks but questions are of increased difficulty. Expect to see such level of questions during interviews. You get more practice on more advanced data structures such as (but not exclusively limited to) heaps and tries.
@ -93,7 +93,7 @@ Week 4 builds up on knowledge from previous weeks but questions are of increased
- [Graph Valid Tree (LeetCode Premium)](https://leetcode.com/problems/graph-valid-tree/)
- [Number of Connected Components in an Undirected Graph (LeetCode Premium)](https://leetcode.com/problems/number-of-connected-components-in-an-undirected-graph/)
## Week 5 - Dynamic Programming
## Week 5 - Dynamic programming
Week 5 focuses on Dynamic Programming (DP) questions. Personally as an interviewer, I'm not a fan of DP questions as they are not really applicable to practical scenarios and frankly if I were made to do the tough DP questions during my interviews I'd not have gotten the job. However, companies like Google still ask DP questions and if joining Google is your dream, DP is unavoidable.
After pass the interviews and if have received multiple offers, congratulations on the feat! Now you're faced with yet another problem (albeit a good one!) of choosing between companies. Here we will provide some insights into the factors you should be considering when deciding on the company to join. Everyone is different and certain factors matter more/less to others, so only you can decide what is best for you.
If you have passed the interviews and received multiple offers, congratulations on the feat! Now you are faced with yet another problem (albeit a good one!) of choosing between companies. Here we will provide some insights into the factors you should be considering when deciding on the company to join. Every individual is different and certain factors matter more/less to others, so only you can decide what is best for you.
Do your due diligence by researching on the companies before deciding!
@ -21,7 +21,7 @@ What does the company work on and is the company working on a domain you are int
That said, each tech company is uniquely known for something and it's in their DNA. So if you are interested in specific areas and you are sure you can be able to work on them, the choice should be clearer:
- Meta - Social networks (FB, IG), Chat (WhatsApp, Messenger), VR stuff (Oculus)
- Meta - Social networks (Facebook, Instagram), Chat (WhatsApp, Messenger), VR stuff (Oculus)
- Google - Search, Browsers, Maps, Cloud infrastructure (Google Cloud Platform), Google Suite
- Amazon - Cloud infrastructure (Amazon Web Services), e-commerce
- Microsoft - Operating Systems, Microsoft Office Suite
@ -29,32 +29,32 @@ That said, each tech company is uniquely known for something and it's in their D
Personally I feel more motivated and productive if I'm working on products which I use as an external user as well, as I have a better understanding of the product from a user perspective which can potentially lead to better engineering and product decisions.
### Prospective Teams
### Prospective teams
While a company can be working on various products, some products are only worked on in certain offices.For example, Google Singapore primarily works on Payments and if you're only interested in working on search, Google Singapore wouldn't be that great of a fit (although it is definitely a possibility to transition to another part of the company in future).
While a company can be working on various products, some products are only worked on in certain offices.For example, Google Singapore primarily works on Payments and if you're only interested in working on search, Google Singapore wouldn't be that great of a fit, although it is definitely a possibility to relocate to another country in future while still remaining as a Google employee. More on that on the [Transfers and mobility](#transfers-and-mobility) section below.
Do find out what products and teams your intended location works on so that you have a better idea of how your potential working life looks like if you were to join that company.
## Company Prospects
## Company prospects
If you are awarded stocks, the company's prospects will affect your compensation! Is the company poised to be successful in the coming years or are there factors hindering the company's progress?
## Career Growth
## Career growth
How fast does the company promote its employees and does the company provide opportunities for its employees to grow? In smaller companies, you will get to wear multiple hats and build many products from 0 to 1. It's great for people who like to grow their product building skills and launch products quickly. However, technical growth might be limited due to the company's focus on product work and less on building infrastructure, which is usually only needed at scale. There's little need for a Principal Engineer in a small startup of 10 people where everyone is scrambling to build products. Career growth might be limited by the size and scope of the company and its suite of products.
How fast does the company promote its employees and does the company provide opportunities for its employees to grow? In smaller companies, you will get to wear multiple hats and build many products from 0 to 1. It's great for people who like to grow their product building skills and launch products quickly. However, technical growth might be limited due to the company's focus on product work and less on building infrastructure, which is usually only needed at scale. There's little need for a Principal Engineer in a small startup of 10 people where everyone is scrambling to build products. Career growth might be limited by the size and scope of the company and its product offerings.
Some companies promote their employees faster than the others. There's a saying that go to Google to rest and vest, go to Meta if you want to accelerate your career. I've found this to be quite accurate from what I experienced and looking at my peers at Google. At Meta, engineers are required to get from E3 to E4 within 2 years and E4 to E5 within 3 years. On the other hand, Google has a slower promotion cycle - the average engineer at Google takes more than 2 years to get from L3 to L4, more than 3 years to get from L4 to L5 and more than 4 years to get from L5 to L6. At Google the terminal level is L4 so there's no pressure to promote. None of my peers are L6 at Google but a few are already E6 at Meta and it is quite achievable. I think Google is a great place to learn to be excellent engineers. They require everything to be well-engineered, with design docs and full test coverage.
Some companies promote their employees faster than the others. There's a saying that go to Google to rest and vest, go to Meta if you want to accelerate your career. I've found this to be quite accurate from what I experienced and from looking at my peers at Google. At Meta, engineers are required to get from E3 to E4 within 2 years and E4 to E5 within 3 years. On the other hand, Google has a slower promotion cycle - the average engineer at Google takes more than 2 years to get from L3 to L4, more than 3 years to get from L4 to L5 and more than 4 years to get from L5 to L6. At Google, the terminal level is L4 so there's no pressure to promote. None of my peers are L6 at Google but a few are already E6 at Meta and it is quite achievable. In my opinion, Google is a great place to learn to be excellent engineers. They require everything to be well-engineered, with design docs and high test coverage. Meta is a great place for career-driven folks who don't mind working harder to accelerate their career path.
## Work-Life Balance
## Work-life balance
How long are employees required to work each week? How fast does the company move? How stressful is it to work at the company? Some Chinese companies famously [require employees to work 6 days a week](https://www.reuters.com/world/china/chinese-tech-workers-disclose-working-hours-criticism-996-2021-10-14/).
While the common practice is for employees to work 40 hours a week and 8 hours a day, some places are infamous for being more stressful and asks more time from their employees. Some Chinese companies famously [require employees to work 6 days a week](https://www.reuters.com/world/china/chinese-tech-workers-disclose-working-hours-criticism-996-2021-10-14/). Most tech employees do not get paid when they work overtime, so sometimes a more accurate way of calculating your salary is dollars per hour instead of the raw annual total compensations
Google is famous for being a company for moving slower and more senior folks to go rest-and-vest (your stocks) while [Microsoft scores a C+ for Work Life Balance](https://www.comparably.com/companies/microsoft/work-life-balance) in an employee survey.
Google is famous for being a company for moving slower and a place where people go to rest and vest (their stocks) while [Amazon scored a C- for work-life balance](https://www.comparably.com/companies/amazon/work-life-balance) in an employee survey.
## Company Culture
## Transfers and mobility
TODO
Does the company have offices around the globe where employees can possibly relocate to? This is obviously out of the question for smaller companies where there is only one headquarters, but some companies allow employees to be remote and some are even entirely remote! Meta, Google, Apple, and Stripe are examples of companies which have global presence and regional headquarters. At Meta and Google, mobility is extremely high given there are large engineering offices all across US, in London, Tel Aviv, and more recently, in Singapore. One of my managers at Meta has worked at **four** offices! Personally, I relocated from Meta/Facebook Menlo Park to Meta/Facebook Singapore right before COVID hit and a few of my Meta/Googler friends have done similar moves, some even moving from Singapore to the US.
The point of interviews is for interviewers to extract signals from certain candidate behaviors. In coding interviews, the signals can be broadly classified into the following categories: Problem Solving, Technical Competency, Testing, and Communication.
Congratulations, you are ready to put your skills into practice! In a real coding interview, you will be given a technical question (or questions) by the interviewer, write code in a real-time collaborative editor (phone screen/virtual onsite) or on a whiteboard (onsite) to solve the problem within 30–45 minutes. This is where the real fun begins!
@ -11,7 +11,7 @@ This section is still WIP. Feel free to contribute ideas at [our GitHub issue](h
Understanding the various career levels for engineers is crucial because it helps to determine the compensation you should be receiving and also helps you to understand what is expected of you at that level. In most companies where the career levels have been defined, it would resemble something along the lines of: Junior → Software Engineer → Senior → Staff → Senior Staff → Principal → Fellow
Interviewing is a skill that you can get better at. The steps mentioned above can be rehearsed over and over again until you have fully internalized them and following those steps become second nature to you. A good way to practice is to find a friend to partner with and the both of you can take turns to interview each other.
If you've received an offer (or even better, offers), congratulations! You may heave a huge sigh of relief and think that the toughest parts are over. Well yes, but not entirely! For most people, the reason they're finding a new job is to increase their salary, and salary negotiation is the last stretch in achieving that goal.
@ -29,7 +29,7 @@ Get paid more. Receive salary negotiation advice from [**Moonchaser**](https://w
If you are not keen on paying for negotiation services and are a fan of courses, here's something for you - the [Grokking Comp Negotiation in Tech](https://www.educative.io/courses/grokking-comp-negotiation?aff=x23W) course, a text-based course where you can get information on each aspect of negotiation. **Disclaimer: I haven't tried this course before.**
## Ten Rules of Negotiation
## Ten rules of negotiation
Key points extracted from "Ten Rules for Negotiating a Job Offer" [Part 1](http://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/) and [Part 2](https://haseebq.com/how-not-to-bomb-your-offer-negotiation/) by Haseeb Qureshi.
Before anything else, you need to pick a programming language to do your interviews in. Most companies will let you code in any language you want, the only exception I know being Google, where they only allow candidates to pick from Java, C++, JavaScript or Python for their algorithmic coding interviews.
Here are some good questions to ask at the end of the interview, extracted from various sources. The ones in **bold** are the ones that tend to make the interviewer go "That's a good question" and pause and think for a bit.
import TeikjunResumeOldURL from '@site/static/img/teik-jun-resume-old.png'; import TeikjunResumeNewURL from '@site/static/img/teik-jun-resume-new.png';
If you have been out of college for a while, it is highly advisable to review CS fundamentals—Algorithms and Data Structures. Personally, I prefer to review as I practice, so I scan through my college notes and review the various algorithms as I work on algorithm problems from LeetCode and Cracking the Coding Interview.
The objective of system design interviews is to evaluate a candidate's skill at designing real-world software systems involving multiple components. System design questions are typically given to more senior candidates (with a few years of experience). Interns aren't typically given system design questions as it is hard to expect interns to have sufficient and relevant industry experience to answer this type of questions well.
@ -24,7 +24,7 @@ System design content is still work-in-progress, but the following are some reso
:::
## Quality Courses
## Quality courses
- ["Grokking the System Design Interview" by Educative](https://www.educative.io/courses/grokking-the-system-design-interview?aff=x23W) - This is probably the most famous system design interview course on the internet and what makes it different from most other courses out there is that it is purely text-based, which is great for people who refer reading over watching videos (such as myself!). It contains a repository of the popular system design problems along with a glossary of system design basics. I've personally completed this course and have recommended many others to use this. Highly recommended!
- ["System Design Interview Course" by Exponent](https://www.tryexponent.com/courses/system-design-interview) - This course by Exponent covers system designs basics and has a huge database of popular system design questions with video explanations. Use this [referral link to get 10% off](https://www.tryexponent.com/refer/abdlb). In my opinion, Exponent is one of the most credible interview preparation resources out there as their resources are high quality and goes beyond Software Engineering roles.
Compensation is one of the largest factors when it comes to deciding between job offers. This section gives you a breakdown of the common components of compensation in the tech industry.