Preparing for the Interview
Before the Interview
- Non-technical tips:
- Do your research!!! You should know about the company and the role you’re applying for
- Hone your research - find talking points, recent news events, and specific information related to your skills and interests
- Feel free to bring out printed articles that interest you
- Technical tips:
- Utilize sites like Glassdoor to see if anyone has advice for interviewing at the company.
- Get familiar with the types of technologies the company uses
- Get familiar with the different (technical) projects and products the company offers
- Get comfortable with your strongest language, most typical include C, C++, C#, Java, Python, Javascript
- Review data structures, common algorithms, and syntax
Key Tips
- PRACTICE CODING IN THE SAME ENVIRONMENT YOU’LL BE TESTED IN.
- Get used to the coding environment, whether it’s a Google Doc or in-person on a whiteboard.
- Know what technical skills and projects are on your resume - any information there is fair game!
- Order langauges / technologies in decreasing proficiency
- Practice the STAR method when talking about your projects
During the interview
Key Tips
-
If you’ve seen a question before, tell your interviewer the truth and he or she will decide how to proceed
-
Be comfortable and relaxed, have fun and rememeber your interviewer is a person too!
1. Clarify - Make sure you know what is being asked! Paraphrase or rephrase the question until you and your interviewer are on the same page.
- A lot of people get tripped up and end up solving a different problem.
- Ask about constraints and different combinations of inputs, runtime, space, etc.
2. Examples - One of the most important steps! Write tests cases / create examples.
- Try to find all edge cases satisfying the constraints (from step 1)
3. Brute Force - Use the brute force approach for your initial solution. A solution that answers the question is better than no solution at all.
- Walk the interviewer through your approach out loud and ask if the proposed idea would be a good start
- Make sure to cover all the test cases, use your examples from step 2.
- It may seen counterintuitive to start with the brute force approach, especially if you’ve been asked to write code within a certain time complexity, but you can optimize your code later on.
4. Optimization - There are five different ways to optimize
4.1. Follow BUD and ask yourself the following questions:
* Bottlenecks: What is the slowest part of the code? Is there a better way to accomplish this task?
* Unnecessary Work: Is the code checking for anything that doesn’t need to be checked?
* Duplicate Work: Is the code calculating anything twice?
* If this is the case, save the value under a variable so it is only calculated once.
4.2. Use the DIY approach * If I were a machine, how would I run this code? Can I implement that to make the code more efficient?
4.3. Simplify and generalize * Try to reduce the constraints then afterwards attempt to generalize your solution
4.4. Analyze the base case * Identify the base case, and build upon it.
4.5. Brainstorm data structures * Test a few and list drawbacks and benefits. Choosing the right data structures could be the key to completing the problem.
5. Code the Solution (and use good coding practices)
- 5.1 Syntax should be written out; don’t use abbreviations.
- Unless told otherwise, demonstrate a strong attention to detail.
- 5.2. Do not pseudo code for your solution
- Unless told otherwise, produce an executable solution in code.
- Only use psuedo for quick testing during step 3 or for general planning.
- 5.3. Meaningful names for variables (you can shorthand them later)
- This is a good opportunity to show that you are organized and creative.
6. Test using examples from step 2 - If you’ve gotten this far, make sure your interviewer is on the same page as you.
- Use your examples/tests from step 2 and edge cases to test your code in real-time.
- It’s important to let your interviewer know what you’re doing, which tests you’re using, and what goes wrong if the tests fail.
- Check constraints first, then come up with new ones. Ask the interviewer if they have any constraints of their own that they would like to test.
7. Walkthrough and overview your solution - Similar to the previous step, explain your code
- Go from top to top to bottom and detail and explain decisions you’ve made along the way.
- Talk about runtime, space, and any other relevant qualities of your solution.
- Finally, ask if the interviewer is satisfied with the solution and if they have any questions.
After the Interview
- Non-technical tips:
- Thank your interview for their time and ask questions you prepared beforehand about their company and position.
- Ask about next steps and the rest of the recruiting process.
- Some interviewers might be willing to give feedback on how you did and give advice if you ask.
- Technical tips:
- Go home and take notes! Even if the interview didn’t go as well as you had hoped, it’s still a great learning opportunity.
- If you didn’t successfully solve a question or did so but not to the best of your ability, try solving it on your own time.
- This will be especially helpful if you receive a similar question in the future.
- Solve the question on a whiteboard, Google Doc, or wherever you solved it during the interview.
Here’s a detailed version with additional information of above
Want Practice?
- Schedule a mock interview at SICE
- Appointments can be scheduled through SICE Career’s website for students.
- Schedule a mock interview with me!
- Contact me at tcitrin@indiana.edu
- [Not currently offered, contact SICE admins for details] Come to our PLTL Sessions, find more information here