Personal advice from going on and giving a total of at least a hundred job interviews in my years:
- no matter how desperate the situation, always treat an interview as a date -- you might meet some really interesting people, you might hear some interesting things, learn how different people think about problems. Or it might really suck and you can't wait to leave. This attitude works amazingly well. If you are happy to be there and talk, you'll have a good time, they'll have a good time, they'll like you, you win.
- always think about how would YOU interview yourself. What info is useful for you to interview someone for 30 minutes and make a decision. Shadow some interviews. Your literal job as an interviewer is to get an understanding of the candidate. If you know what they want to know, just focus every word on giving them that answer. Any interview I ran where everything I was gonna follow up the interviewer mentioned intentionally, I was like "wow, okay cool you really answered everything I wanted to know, let's move on" and those interviews are really the best with time to just chit chat and get to know the person. This is also useful for understanding why they ask you questions, asking clarifying questions to make sure that you understand what they're looking to get out of you. There's nothing worse than losing 5 minutes to someone talking about something completely pointless during a 30 minute interview. "Tell me about a time you failed." "Oh I have plenty of those, but are you looking for say a failure with my team, or a time I crashed production, or when a project got really late" doing such a prompt instantly makes the question easier for you AND makes you look 100x better.
- coding is a tricky one. 90% of the companies want you to code an okay solution, but they mainly want to see how you _think_. Like who cares if I can sort a billion numbers in memory in O(1) time, write a paper and move on with life, if I can't explain it to anyone I am useless to the team. Code out loud, just slowly solve whatever problem, and talk about the problems you're trying to tackle, what is important, what is not. If you mumble make sure to create "okay, I have a solution, I can walk you through it" because mumbling = they disengage. If you explain your strategy, it makes you look better AND if your strategy is flawed, the interviewer will often help or prompt "I really want to help but this is what I really want you to solve" and now their cards are on the table, you know what they want (see previous point).
- learn to whiteboard at least a bit. You need to be able to explain your thoughts to other engineers. Sometimes pulling out a whiteboard is an amazing way to do it. Yeah its cliche but it really is a practical skill.
- If the interview requires you to solve a complex mathematical problem perfectly on the spot or get out, you're either interviewing for FAANG (and have studied for a month or 3) or you probably don't wanna work there.
- no matter how desperate the situation, always treat an interview as a date -- you might meet some really interesting people, you might hear some interesting things, learn how different people think about problems. Or it might really suck and you can't wait to leave. This attitude works amazingly well. If you are happy to be there and talk, you'll have a good time, they'll have a good time, they'll like you, you win.
- always think about how would YOU interview yourself. What info is useful for you to interview someone for 30 minutes and make a decision. Shadow some interviews. Your literal job as an interviewer is to get an understanding of the candidate. If you know what they want to know, just focus every word on giving them that answer. Any interview I ran where everything I was gonna follow up the interviewer mentioned intentionally, I was like "wow, okay cool you really answered everything I wanted to know, let's move on" and those interviews are really the best with time to just chit chat and get to know the person. This is also useful for understanding why they ask you questions, asking clarifying questions to make sure that you understand what they're looking to get out of you. There's nothing worse than losing 5 minutes to someone talking about something completely pointless during a 30 minute interview. "Tell me about a time you failed." "Oh I have plenty of those, but are you looking for say a failure with my team, or a time I crashed production, or when a project got really late" doing such a prompt instantly makes the question easier for you AND makes you look 100x better.
- coding is a tricky one. 90% of the companies want you to code an okay solution, but they mainly want to see how you _think_. Like who cares if I can sort a billion numbers in memory in O(1) time, write a paper and move on with life, if I can't explain it to anyone I am useless to the team. Code out loud, just slowly solve whatever problem, and talk about the problems you're trying to tackle, what is important, what is not. If you mumble make sure to create "okay, I have a solution, I can walk you through it" because mumbling = they disengage. If you explain your strategy, it makes you look better AND if your strategy is flawed, the interviewer will often help or prompt "I really want to help but this is what I really want you to solve" and now their cards are on the table, you know what they want (see previous point).
- learn to whiteboard at least a bit. You need to be able to explain your thoughts to other engineers. Sometimes pulling out a whiteboard is an amazing way to do it. Yeah its cliche but it really is a practical skill.
- If the interview requires you to solve a complex mathematical problem perfectly on the spot or get out, you're either interviewing for FAANG (and have studied for a month or 3) or you probably don't wanna work there.