Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Typo fixes #31

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
2 changes: 1 addition & 1 deletion behavioral/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ A lot of hypotheticals will involve conflict with another individual. Empathy is

### Example hypothetical questions

Here are some hyopothetical questions I have heard asked over the years:
Here are some hypothetical questions I have heard asked over the years:

1. How would you handle someone who seems disengaged with work and is not carrying their weight on the team?
2. What would you do if your manager wanted to go with a technical approach that you disagree with?
Expand Down
18 changes: 9 additions & 9 deletions docs/leetcode.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Leetcode-style interviews are probably the most infamous type of software development interview out there. In these interviews, you're given an algorithm/data structure challenge that you have to solve either on a whiteboard or computer. The interviewer is judging your coding, critical thinking, communication, and problem solving skills. Often, you're expected to communicate decisions and tradeoffs you're making and discuss the time and space complexity of your solution.

While many companies (especially big tech companies) conduct Leetcode-style interviews, it's important to recognize that many other companies _don't_ perform these kinds of interviews. [This Github repo](https://github.com/poteto/hiring-without-whiteboards) has a list of companies that don't perform Leetcode-style interviews. Additionally, if you're interested in a company and are curious as to whether the do Leetcode-style interviews, be sure to check out the interview section of their [Glassdoor](https://glassdoor.com) page. If you're really uncomfortable with the idea of algorithm and data structure challenges, you can definitely find great jobs where you don't have to solve these puzzles.
While many companies (especially big tech companies) conduct Leetcode-style interviews, it's important to recognize that many other companies _don't_ perform these kinds of interviews. [This Github repo](https://github.com/poteto/hiring-without-whiteboards) has a list of companies that don't perform Leetcode-style interviews. Additionally, if you're interested in a company and are curious as to whether they do Leetcode-style interviews, be sure to check out the interview section of their [Glassdoor](https://glassdoor.com) page. If you're really uncomfortable with the idea of algorithm and data structure challenges, you can definitely find great jobs where you don't have to solve these puzzles.

## How you're evaluated

Expand All @@ -18,10 +18,10 @@ While it's impossible to generalize this _too_ much (companies vary), you're usu

- **Coding ability.** Do you have a good grasp of control flow and logic? Can you write code relatively quickly and is it well-formated? Do you name variables logically?
- **Algorithms/data structures.** Do you use algorithms and data structures appropriately? How optimal was the space and time complexity of your solution? Did you correctly assess the space and time complexity?
- **Communication.** Did you explain your work well? Did you ask clarifying questions? Did you talk to tradeoffs? Can you explain technical concepts? Were you closed off or rude?
- **Communication.** Did you explain your work well? Did you ask clarifying questions? Did you talk about tradeoffs? Can you explain technical concepts? Were you closed off or rude?
- **Problem solving skills.** Did you take time to understand the question and ask the right clarifying questions? Did you give the interviewer the impression that you'd be rigorous in approaching new challenges?

As you can see, the algorithms and data structure part is just a small piece of the puzzle. At least for me, this was a big load off my mind: of course you should try to do your best to come up with an optimal solution, but you can get pretty far by honing you skill in some of these other areas.
As you can see, the algorithms and data structure part is just a small piece of the puzzle. At least for me, this was a big load off my mind: of course you should try to do your best to come up with an optimal solution, but you can get pretty far by honing your skill in some of these other areas.

## How to prepare for Leetcode-style interviews

Expand Down Expand Up @@ -57,7 +57,7 @@ As you do each problem, make sure to try to assess the space and time complexity

For each problem, I recommend trying to solve the problem on your own for at least 30 minutes. If it's a "hard" problem, go for 45 minutes to an hour.

Inevitably, you'll get stuck. In fact, if you haven't done a lot of Leetcoding, you'll probably get stuck on "easy" problems (I certainly did). What helped me the most is the NeedCode tutorial video associated with each problem. They're very well done, usually whiteboarding the theory behind the solution before writing the actual code. The official Leetcode-provided solutions can also be a big help: they typically start with a "brute force" solution and then work up to smarter and smarter solutions with improved space and time complexity.
Inevitably, you'll get stuck. In fact, if you haven't done a lot of Leetcoding, you'll probably get stuck on "easy" problems (I certainly did). What helped me the most is the NeetCode tutorial video associated with each problem. They're very well done, usually whiteboarding the theory behind the solution before writing the actual code. The official Leetcode-provided solutions can also be a big help: they typically start with a "brute force" solution and then work up to smarter and smarter solutions with improved space and time complexity.

Once you understand the approaches, go back to LeetCode and write the solution yourself without the video. This was extremely important to me—watching a video of the solution and actually writing that solution out are very different things.

Expand All @@ -79,7 +79,7 @@ It's going to feel strange at first, but it's really good practice to describe w

Use [Glassdoor](https://glassdoor.com) to look at a company's interview page. Often, people will write about the kinds of questions they're asked. You may find they focus on a specific category of Leetcode problem (or maybe they don't even ask Leetcode-style questions).

### Use whatever language you're know best
### Use whatever language you know best

There are a lot of takes on what the best language is for Leetcoding (hint: it's Python). But the truth is you should just use whatever language you're most comfortable with. I have had a front-end focus most of my career, so I used JavaScript. If you have no best language, then use Python (it's terse, readable, and has some nice built-in data structures).

Expand All @@ -92,19 +92,19 @@ This is a very hard question to answer! I did somewhere around 220 total questio
There are a couple of realities here:

- Quality of your practicing is more important than quantity. If you complete a ton of questions but only because you look at the answer every time, you're not really developing your problem-solving skills.
- There's a good bit of luck when you interviewing. Practicing more problems increases the likelihood that you'll have success in an interview, but there's always a decent chance even the most practiced person will be stumped.
- There's a good bit of luck when you're interviewing. Practicing more problems increases the likelihood that you'll have success in an interview, but there's always a decent chance even the most practiced person will be stumped.

The truth is I never felt truly ready to interview for Leetcode-style questions, but I did a couple hundred questions and just went for it.

## Hone your soft skills

I've talked a lot of solving Leetcode problems, but in reality there's another piece of the Leetcode-style interview process that's comparably important: you should aim to leave the interviewer thinking, "wow, I'd love to work with that person."
I've talked a lot about solving Leetcode problems, but in reality there's another piece of the Leetcode-style interview process that's comparably important: you should aim to leave the interviewer thinking, "wow, I'd love to work with that person."

I (think) I have had success in this area by doing the following:

- **Overcommunicate.** The interviewer has no way of knowing what you're thinking unless you tell them. This is especially important if you haven't figured out a solution yet and you're thinking through options.
- **Be friendly.** Leetcode-style interviews are stressful. By default, when we're stressed, we are not very happy. Interviewers see _a lot_ of candidates who are all business triyng to crank away at these coding challenges. You can stand out a lot if you smile and are conversational/friendly.
- **Ask questions checking your logic.** Interviewers mostly want you to succeed, especially if you seem like a good person. My favorite question to ask during a Leetcode-style interview is, "does that make sense?" I'll use this after I have propsed an approach to the problem and explained its time and space complexity. If you're on the money, the interviewer will often say, "yeah, that sounds great to me!" If they want to see something different (e.g., there's a flaw in your logic or your solution won't be efficient enough for them), they'll often tell you that. That's a huge benefit to prevent you going down the wrong path!
- **Be friendly.** Leetcode-style interviews are stressful. By default, when we're stressed, we are not very happy. Interviewers see _a lot_ of candidates who are all business trying to crank away at these coding challenges. You can stand out a lot if you smile and are conversational/friendly.
- **Ask questions checking your logic.** Interviewers mostly want you to succeed, especially if you seem like a good person. My favorite question to ask during a Leetcode-style interview is, "does that make sense?" I'll use this after I have proposed an approach to the problem and explained its time and space complexity. If you're on the money, the interviewer will often say, "yeah, that sounds great to me!" If they want to see something different (e.g., there's a flaw in your logic or your solution won't be efficient enough for them), they'll often tell you that. That's a huge benefit to prevent you going down the wrong path!

You can't necessarily control whether you get a Leetcode problem you'll be able to solve optimally, but you _can_ control your demeanor/soft skills during the interview. This could be the difference between getting the job and not getting the job!

Expand Down
16 changes: 8 additions & 8 deletions leetcode/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Note: If you enjoy this write-up, please star the repo and/or share with colleag

Leetcode-style interviews are probably the most infamous type of software development interview out there. In these interviews, you're given an algorithm/data structure challenge that you have to solve either on a whiteboard or computer. The interviewer is judging your coding, critical thinking, communication, and problem solving skills. Often, you're expected to communicate decisions and tradeoffs you're making and discuss the time and space complexity of your solution.

While many companies (especially big tech companies) conduct Leetcode-style interviews, it's important to recognize that many other companies _don't_ perform these kinds of interviews. [This Github repo](https://github.com/poteto/hiring-without-whiteboards) has a list of companies that don't perform Leetcode-style interviews. Additionally, if you're interested in a company and are curious as to whether the do Leetcode-style interviews, be sure to check out the interview section of their [Glassdoor](https://glassdoor.com) page. If you're really uncomfortable with the idea of algorithm and data structure challenges, you can definitely find great jobs where you don't have to solve these puzzles.
While many companies (especially big tech companies) conduct Leetcode-style interviews, it's important to recognize that many other companies _don't_ perform these kinds of interviews. [This Github repo](https://github.com/poteto/hiring-without-whiteboards) has a list of companies that don't perform Leetcode-style interviews. Additionally, if you're interested in a company and are curious as to whether they do Leetcode-style interviews, be sure to check out the interview section of their [Glassdoor](https://glassdoor.com) page. If you're really uncomfortable with the idea of algorithm and data structure challenges, you can definitely find great jobs where you don't have to solve these puzzles.

## How you're evaluated

Expand All @@ -20,10 +20,10 @@ While it's impossible to generalize this _too_ much (companies vary), you're usu

- **Coding ability.** Do you have a good grasp of control flow and logic? Can you write code relatively quickly and is it well-formated? Do you name variables logically?
- **Algorithms/data structures.** Do you use algorithms and data structures appropriately? How optimal was the space and time complexity of your solution? Did you correctly assess the space and time complexity?
- **Communication.** Did you explain your work well? Did you ask clarifying questions? Did you talk to tradeoffs? Can you explain technical concepts? Were you closed off or rude?
- **Communication.** Did you explain your work well? Did you ask clarifying questions? Did you talk about tradeoffs? Can you explain technical concepts? Were you closed off or rude?
- **Problem solving skills.** Did you take time to understand the question and ask the right clarifying questions? Did you give the interviewer the impression that you'd be rigorous in approaching new challenges?

As you can see, the algorithms and data structure part is just a small piece of the puzzle. At least for me, this was a big load off my mind: of course you should try to do your best to come up with an optimal solution, but you can get pretty far by honing you skill in some of these other areas.
As you can see, the algorithms and data structure part is just a small piece of the puzzle. At least for me, this was a big load off my mind: of course you should try to do your best to come up with an optimal solution, but you can get pretty far by honing your skill in some of these other areas.

## How to prepare for Leetcode-style interviews

Expand Down Expand Up @@ -57,7 +57,7 @@ As you do each problem, make sure to try to assess the space and time complexity

For each problem, I recommend trying to solve the problem on your own for at least 30 minutes. If it's a "hard" problem, go for 45 minutes to an hour.

Inevitably, you'll get stuck. In fact, if you haven't done a lot of Leetcoding, you'll probably get stuck on "easy" problems (I certainly did). What helped me the most is the NeedCode tutorial video associated with each problem. They're very well done, usually whiteboarding the theory behind the solution before writing the actual code. The official Leetcode-provided solutions can also be a big help: they typically start with a "brute force" solution and then work up to smarter and smarter solutions with improved space and time complexity.
Inevitably, you'll get stuck. In fact, if you haven't done a lot of Leetcoding, you'll probably get stuck on "easy" problems (I certainly did). What helped me the most is the NeetCode tutorial video associated with each problem. They're very well done, usually whiteboarding the theory behind the solution before writing the actual code. The official Leetcode-provided solutions can also be a big help: they typically start with a "brute force" solution and then work up to smarter and smarter solutions with improved space and time complexity.

Once you understand the approaches, go back to LeetCode and write the solution yourself without the video. This was extremely important to me—watching a video of the solution and actually writing that solution out are very different things.

Expand Down Expand Up @@ -92,19 +92,19 @@ This is a very hard question to answer! I did somewhere around 220 total questio
There are a couple of realities here:

- Quality of your practicing is more important than quantity. If you complete a ton of questions but only because you look at the answer every time, you're not really developing your problem-solving skills.
- There's a good bit of luck when you interviewing. Practicing more problems increases the likelihood that you'll have success in an interview, but there's always a decent chance even the most practiced person will be stumped.
- There's a good bit of luck when you're interviewing. Practicing more problems increases the likelihood that you'll have success in an interview, but there's always a decent chance even the most practiced person will be stumped.

The truth is I never felt truly ready to interview for Leetcode-style questions, but I did a couple hundred questions and just went for it.

## Hone your soft skills

I've talked a lot of solving Leetcode problems, but in reality there's another piece of the Leetcode-style interview process that's comparably important: you should aim to leave the interviewer thinking, "wow, I'd love to work with that person."
I've talked a lot about solving Leetcode problems, but in reality there's another piece of the Leetcode-style interview process that's comparably important: you should aim to leave the interviewer thinking, "wow, I'd love to work with that person."

I (think) I have had success in this area by doing the following:

- **Overcommunicate.** The interviewer has no way of knowing what you're thinking unless you tell them. This is especially important if you haven't figured out a solution yet and you're thinking through options.
- **Be friendly.** Leetcode-style interviews are stressful. By default, when we're stressed, we are not very happy. Interviewers see _a lot_ of candidates who are all business triyng to crank away at these coding challenges. You can stand out a lot if you smile and are conversational/friendly.
- **Ask questions checking your logic.** Interviewers mostly want you to succeed, especially if you seem like a good person. My favorite question to ask during a Leetcode-style interview is, "does that make sense?" I'll use this after I have propsed an approach to the problem and explained its time and space complexity. If you're on the money, the interviewer will often say, "yeah, that sounds great to me!" If they want to see something different (e.g., there's a flaw in your logic or your solution won't be efficient enough for them), they'll often tell you that. That's a huge benefit to prevent you going down the wrong path!
- **Be friendly.** Leetcode-style interviews are stressful. By default, when we're stressed, we are not very happy. Interviewers see _a lot_ of candidates who are all business trying to crank away at these coding challenges. You can stand out a lot if you smile and are conversational/friendly.
- **Ask questions checking your logic.** Interviewers mostly want you to succeed, especially if you seem like a good person. My favorite question to ask during a Leetcode-style interview is, "does that make sense?" I'll use this after I have proposed an approach to the problem and explained its time and space complexity. If you're on the money, the interviewer will often say, "yeah, that sounds great to me!" If they want to see something different (e.g., there's a flaw in your logic or your solution won't be efficient enough for them), they'll often tell you that. That's a huge benefit to prevent you going down the wrong path!

You can't necessarily control whether you get a Leetcode problem you'll be able to solve optimally, but you _can_ control your demeanor/soft skills during the interview. This could be the difference between getting the job and not getting the job!

Expand Down