Recently, I have met many juniors and peers especially from non-computer Science related backgrounds asking me about securing a job as a fresh graduate especially in this area of software engineering. Here's my take and some tips and tricks to get started.
Before I share my resources and how to get a gentle start on this handbook, let me warn you that you would need to allocate a minimum of 6 months to get really good and confident with some of the LeetCode questions. Do not neglect the behavioral questions too! I am not going to repeat some of the things that are mentioned in this handbook but rather help everyone with some useful shortcuts of mine to navigate this resource to ease your preparations.
Crafting your resume
In most companies, the resume stage is the most important as it is the first stage that you will need to clear! For undergraduates, most hiring managers would only look at resumes that are within one page. The moment the second page is seen, they will not tend to consider. Hence, here are some tips that can help you to prepare your resume in under an hour to reduce your agony.
Use a career hiring tool like Kinobi. Kinobi saves you time in having to fix alignments unlike word as this career tool formats everything for you. Furthermore, they help you to score your resume so that you know where you stand when applying for a job.
As far as possible, attend career talks by your favorite companies because hiring managers are there and you can get some feedback about your resume. It is indeed helpful because you know what to look out for when applying.
Keep your sentences short and sweet, else you are out of the game.
- Good example: "Developed a full-stack website that garnered positive responses from faculty and administration about course visualization." You need not provide tech stacks and let alone, links here. The sentence here is short and sweet and all in past tense.
- Bad example: "Was a project manager for two projects- AI_ducation as well as the lift project for ALEF. Helped day-to-day operations by communicating with clients in Mandarin to map business requirements to technical requirements.". Over here, the sentence is long and things can be separated out into points. Furthermore, it does not describe the outcome of the project enough to say "Why should you be hired?".
To save time, while building your projects, apply good practices and also think of various optimizations in terms of algorithmic design, not forgetting system design. You can also show this off and this saved me a lot of time especially when it comes to grinding LeetCode.
Your LinkedIn stands out the most and less of your personal website unless it's design related or frontend related. Write more things that are still succinct on your LinkedIn. Show your work there and let recruiters interact with your work.
ATS-friendly resumes are the most important ones as recruiters screen high volumes of candidates everyday so they have less than even 5 seconds to look at your resume. Some companies use ATS to scan for good keywords.
How to use the Tech Interview Handbook easily
I am about to recommend relevant sections to go in sequentially and how to systematically use them to your advantage especially in being real productive. This stage is normally faced when the resume stage has passed. Even then, months of prior preparation has to be done. However if you only have one month to prepare, I suggest the following tips:
Know your interview process. Ask your recruiter about the interview process.
Go to your Glassdoor page and pick out some of the past relevant interview questions that your company has done to get a gauge of what to expect. If you are unable to do those past questions, I suggest revising a good amount about the common topics. One common topic is array and hash table design. You can refer to the coding interview rubrics section get to know your interview rubrics. It helps and you know what to do.
Know and try various techniques for each LeetCode question. It's not purely about variety but more about if you were to even come back to the same question, will you be able to give a more optimal solution? If you don't know where to get started especially when solving problems in general refer to this coding interview techniques section.
- Start with a whiteboard or pen and paper. Show your thought process.
- In most companies, if you were to show your thought process while doing, interviewers tend to favour candidates who do this. If you are not confident, start thinking that you are explaining and teaching a 12 year old child about how to solve this question.
- Code it out and write your own test cases. Get used to the HackerRank or LeetCode IDEs.
- Now with virtual interviews, some companies tend to use HackerRank live to conduct whiteboard interviews. Prepare a pen and paper beside you as you work along. Prepare to remote desktop protocol (RDP) into your computer to show step-by-step workings.
- Do not blurt out the solution straightaway as interviewers can tell that you memorize.
Last but not least for algorithms heavy interviews, you might really want to save your time looking at Grind 75. It's a useful curated source of questions to note how much you can prepare for your interview.
Always be prepared for even system design questions! You will never know what comes your way and this is where your projects come in and how much of good practices you apply in them and what do you learn. The System Design Primer is a good start.
Do not neglect behavioral interview questions
Most candidates at least from what I know, tend to neglect this section. As a result, they pass up good opportunities because of this section.
I suggest reading Cracking the Coding Interview, which explains this section very well in detail. Here are some preparations that you can do before the interview.
Draw up a table in this format. This is so that you know what to say when a question about your projects come up.
Project 1 Project 2 Strength 1 Strength 2 Weakness 1 Weakness 2 Improvement 1 Improvement 2
For those with portfolio websites, do be prepared to answer "What do you think can be done better to improve your website?" I highly suggest inspecting your console and using UI/UX principles to state the improvements. It would be also good for front end engineering roles to state how you can better engineer your website.
When preparing, do not focus your answers heavily on your team. Instead, the interviewers want to see how you have grown as an individual and the difficulties that you encounter. Be also prepared to stand strong on your answers and do not give an "I think" vibes to the interviewer. They will tend to have a bad impression.
Certain companies go by rubrics for this and they do not disclose this! However, always be humble and thank the interviewers for helping even if you are unable to justify.
As always, have a goodnight sleep before and adjust your sleep cycle at least 3 days prior. If you do not know where to start form, start from a brute force solution and manipulate the data structure to your advantage.
Most interviewers like optimized solutions but they like how you can design a simple solution to the problem!
All the best in your preparations! Hope my shortcuts help for those of you who are extremely busy!