Global economic downturns, opportunities dried up, amidst these troubling times I shared the same fate as many others. Laid off during the 2nd round after 3 wonderful years at Ninja Van with Driver team, I was on a work visa timer, searching for a new spot in Singapore during Fall of 2024. This blog post provide a summary of my searching and interviewing experiences for Backend Software Engineer roles after around 150 applications, 96% rejection rate, 30 technical rounds, 5 final rounds and 2 offers.

Laid off

The laid off didn’t come as a surprise for many as it had been the global trend for the past few years.

The first round was a bit more shocking since the timing was much later than other tech companies, while the 2nd round had been looming ever since, hence everyone seemed more prepared. My severance package was decent and provided a runway for the next job search. Ninja Van was also active in helping those affected, through referrals, recommendations, resume feedback, mock interviews. My lovely colleagues offered plenty of support which helped immensely.

Resume building

Time to dust out the old resume and freshen it up. Originally I used a 2 column, 1-page resume. However, I wanted to highlight more of my projects and opted for 2 page with the most important part condensed into first page, while the second highlights projects and opensource contributions.

I also included a generic cover letter to all applications but honestly not sure if anyone ever read it.

I’d recommend applying at a slower rate in the beginning to get a feel of how well your resume is doing and revise as needed.

During interviews, I’ve had quite a few questions about the projects on the 2nd page, so in my opinion it has some values. Helps if your projects are interesting, mine was about building a cache and web server, which closely relates to the role, hence a good conversation topic.

I used NodeFlair’s Resume Checker and Resume Builder to get feedbacks, they’re both free tools and I found their suggestions useful. There’s already tons of advice out there on how to write resume, key point being focus on business values, real world impact so I won’t dive deeper into it.

Interview process

The hardest part of our job as software engineer, is funny enough, how to get a job. Nothing I do during the job can compare in terms of difficulty but pay-off is well worth it for me.

Tech hiring process has been the same for a long time, well maybe even more difficult in recent years with extra surge in supplies. It consists of 3-5 rounds, excluding the HR resume screening:

Applying and studying

Since there is no job to distract me, I treated interviewing as a job and spent the days following the cycle of applying, studying, interviewing, and back to studying. Woke up at 10AM and worked till around 7pm, taking rests in between.

Based on previous experience, I expected it would take at least one to two weeks to get a callback if any, from the time of application. Therefore, the first two weeks, I mainly focused on studying, and only applied around 10 applications a day. My line of thinking is applying too much too early, and not having enough time to study, there’s no way I could pass the interview.

With so much material to cover, having proper priorities is crucial. I focused on subjects in this order:

One important aspect I wished I had spent more time on, is picking out the best story and tell it well.

All rounds start with an introduction and quick background inquiries. Interviewers only have a short period to determine your abilities, so first impression, bringing out your best version, matters a lot.

It’s no surprise algorithm is the main focus. After all, it’s considered the trickiest part of interviews. So much so that we have sites and courses dedicated to it.

The dreaded algorithm and data structure questions

First thing I did on the coding journey is buying LeetCode premium subscription. I’m not advocating everyone to buy it, but personally, the return of investment is well worth it. I used it mainly to unlock the learning course, read editorials and filtering problems by company. What worked for me 3 years ago was studying their courses such as this (costs money) and this (mostly free). Problems are grouped by types, it’s formally introduced, and you start with easy problems before moving on to harder ones. This way, our brain has time to commit these new problem patterns into memory. It’s similar to how math is taught, we start with single digit numbers then 2 digit, then multiple digits. We start with counting, plus, minus, and so on. So for algorithm, we start with arrays, then strings which are an array of characters, the all the special tricks you can do with arrays, then move on to linked list, and later, more complex data structure like trees and graphs.

From anecdotal experience, most companies asks arrays questions, making use of sliding window technique and hashmaps. Some top companies ask difficult questions involving dynamic programming and graphs. Difficulty levels are easy to medium, mostly medium but in context of a stressful interview, they can feel very hard to do. One way I try to gauge my performance is trying to solve a medium question under 15 minutes, while talking, explaining each steps.

My strategy was to spend no more than 45 minutes on a problem, reason being if I can’t solve it quickly enough, I’m either never exposed to this type before or there is an insight in the problem that requires more practice to spot.

To help internalize, I commented every solution with reasoning, stored in this repo. If I failed to solve it, I would read the editorial and implement their ideas step by step.

Another feature I liked about LeetCode is their mock assessment which gives you a random set of 2-3 questions that needs to be solved under time constraint. This is a great way to solidified learnings because now we need to recognize what we’ve learned in the wild.

Overall I’ve solved around 100 problems in one and a half month, combined that with those solved during job search period 3 years ago, I’ve solved around 250 problems. Yet during interviews, it still feels so difficult, even when I’ve faced the same problem or pattern before. But often times I would just straight up ask for hints if I couldn’t find the insight within reasonable time. As long as the thought process is communicated properly, and you’re stepping slowly in the right direction, the interviewers I’ve met have been happily and proactively offered help. However, I don’t know how good or bad it might affect the performance score.

One thing I noticed also is product companies asks more algorithm while consultancy asks more ‘build this small app based on these requirements’ type of questions.

Most commonly seen problems in coding, both online assignment and interview:

Most surprising problem:

Knowledge, things from your computer science courses

In all rounds, it will usually start with a quick introduction and on to knowledge questions before other exercise, there’s plenty of books and online resource regarding these, here I’ll simply list the ones I faced a lot:

A quick reminiscent of ACID principles in databases, this question was asked a lot 3 years ago, but I haven’t encountered this time around. Which is honestly a good thing because answering it feels like a ChatGPT word vomit.

Be prepared for at least 3 levels deep into all these concepts, as well as anything you’ve written on resume

A simple progression would go:

Most surprising question: What is a socket? What is a port? what is a shell? These really made me stop for a moment to think about despite using them daily.

Art class

Though technically less difficult than coding questions, system design comes with its own twists and turns.

System design rounds is like painting: requires you to draw, requires experience and creativity, has a lot of principles and theory involved, and last but not least, subjective.

Different interviewers will focus on different things and have their own opinions which we can’t influence. I’ve had engineers focused on estimation process, a few would ask about your current company’s system, some focused on the database schemas, while others wants to improve general reliability and performance.

Best thing we can objectively prepare is learning fundamentals and explanation skills, being able to justify each decision of our design.

For this subject, Hello Interview has been godsend for me. They go into details, provide easy to follow but concrete frameworks for thinking. I read as much as their blogs as I could. Watched their explanation videos and try to practice using their AI powered mock tool. Same idea as coding practice, i’ll try to solve a problem on my own, draw out the design while talking, then come back to read their solutions and compare.

Another popular and great material are ByteByteGo’s videos and their books, compared to Hello Interview, they have more breadth than depth which helps exposes you to more types of problems and what’s unique them.

Even with good preparations, you can still be caught off guard by interesting questions, combined with the time pressure, opinionated and fear of judgement factors, the system design round is still a challenge even if you’re exposed to complex systems before. Best if you could do mock interviews to get practical feedbacks. I asked for help from old colleagues (shout out Baron and Tu) which they gladly offered and the insights from one session with them alone is worth tens of hours self studying.

Most frequently seen problems: Design a url shortener. This is supposedly one of the simplest question, yet after the 3rd time I still struggle with it.

Mindset for background and behavioral questions

Honesty. That’s it.

It’s harder to lies than truths. Getting caught in a lie, which is likely to happen, leaves a far worse impression. If you’re an empathetic and team oriented person, behavioral part should be a breeze. There will likely be a few questions that requires having an opinion, might need to be careful how you express them without coming off too strong or controversial.

Expect knowledge questions in the final round as well. All engineering managers and directors I’ve met have asked technical questions, and they were even a level deeper than previous rounds which I was a bit surprised by, as most online advice said this round usually don’t involve these types of questions.

An important aspect to this round as well as all rounds, is your ability to tell a good story that highlights your skills and experience. Mock interview is key, having someone else to judge and directly tell you how your story sounds is crucial as we tend to get stuck in our own head. For this round I asked help from my previous manager (shout out Jan) and refined a lot of key points based on his feedbacks.

Which leads to my next point: don’t be afraid to ask for help. This goes for practice as well as in interview. Don’t know how well you’re explaining? Find mock interview on Exponent (previously Pramp), or friends and colleagues. Missing a bit of insight on the coding or design question? Ask the interviewer for small hints. Knowing how and when to ask for help is also a good sign of teamwork abilities.

Job search is mentally exhausting, so allow yourself some rests as well while your brain digests all that information. It takes time, do your best, trust the process.

Most common questions:

Moment of truth

As time went on, I’ve applied to almost every job listing. Some interviews didn’t go well which resulted in rejection, thus my stress level rose. Anxiety was high waiting for results after each interview. There was only a few chances left and if those failed I was ready to pack up. Luckily, after around 1 and a half month, I managed to secure an offer and ultimately joined Rakuten Viki in Multimedia team, working with video encoding pipeline and user playback experience. I was reaching final rounds for a few companies but pulled out since the timing was a bit tight. I didn’t really want to accept one offer only to rescind later for a different one. The opportunity was great, and I was honestly tired and stressed out, securing the offer was a huge relief. I don’t have much salary negotiation experience to share. For me, it depends on how much one wants or needs the other. Having managed expectations, a bit of research and open communication is how I approached it.

Conclusion

Overall, this was my first experience looking for a new job in Singapore. These were everything I did and went through during that period, it had helped me secure a position so hopefully it would help anyone who’s reading this as well. Good luck y’all.