Job hunting is quite a physically and emotionally exhausting affair, especially in the current job market(now with Coronavirus, it's become even crazier). I'm gonna talk about job hunting solely in the case of frontend/backend/fullstack developers/engineers.
So a little background about me:
I'm a 24 year old final year Masters in CS student. We're done with theory; out of 4 semesters in 2 years of Masters, 3 semesters are theory-oriented semesters, and the last is an "internship" semester, wherein campus placements take place. For you American folks, it's the Indian equivalent of career fair(s). We were supposed to intern for 3-4 months in a company, and then submit a documentation about a project that we would supposedly work on, while interning.
It was a rough period for me, as the semester started in December last year, and I quit my startup "internship" due to extreme pressure, stress, no code reviews & no seniors to guide us interns. We were interns for name sake, but we built production-ready applications, however with horrible coding practices. The experience did prove somewhat valuable, but back then, I didn't get the opportunity to develop good practices & was underpaid & overworked.
Our college had given us roughly a couple of months as a deadline.
I had to fight back the system, and skipped these campus placements, because most companies were shitty IT services mass recruiters, where most of the work was support work, and rarely did one get a chance to write code from scratch. The salary was also quite low; it has been the same since 2 decades! Majority of software companies in India are IT services firms; i.e most of the grunt work is outsourced to companies here.
Not appearing for these placements meant that I was taking a big risk, as I had to somehow bag an internship or a full-time offer before the deadline. My anxiety was through the roof. Some companies even began selling paid internship certificates! You can pay around 3000 rupees & get a three-month internship certificate mailed to you, along with certain generic projects. The job industry is a freaking business these days.
Anyways, back to the point; most of my time was spent on Angellist & LinkedIn, applying to tons of companies, and getting rejections left and right.
The software engineering interview process is flawed - on one hand, you have companies where grinding Leetcode will atleast get you through some rounds, and others where they get work done for free by you(yes, this has happened with me too, when a company asked me to build something for them, and it was very evident that they were getting free work done from me, because they were understaffed).
It's even more frustrating when you're a frontend, backend or a fullstack dev, because you never know if you'll be asked CS heavy questions or JS heavy questions.
I started the standard way; grinding Leetcode & Hackerrank. I did get decent at it, and actually started enjoying it after a while. That's when I realized that there's something rewarding about solving puzzles.
But that's when I also realized that I suck at implementing a binary tree from scratch(just an example), and even though you won't have to do any such thing when working as a dev(atleast in most cases), it's an unfortunate consequence of interview prep.
One fantastic free resource I would recommend is:
It's an open-source resource originally written by Russian devs.
By far, the most comprehensive resource I found on the web, along with MDN.
I used to spend hours reading through it, then consulting MDN, as well as watching Youtube tutorials on the same topic that I was reading.
I realized that learning from different resources, rather than constraining yourself to one is a very efficient way to learn.
After a while, stop browsing tutorials. Go build something, and then spend on Stackoverflow, either browsing questions or asking them, if you couldn't find a solution for the problems that you most certainly will face, when building everything by your own, without the help of spoon-feeding tutorials. It even forces you to think solutions for tough problems, rather than being fed the solution instantly.
After all this insanity, I had finally bagged a full-time job (job title is Software Development Engineer, but I currently am a frontend engineer) in March, far beyond the deadline, but my college let it slide, as they were in awe that I got a job by myself, instead of appearing for campus placements.
My interview process was a rigorous one; I was given a 7-day time window to build a front-end app in Vue(they gave Vue tasks to devs experienced in React & vice versa!) exactly as per the given design and specs. I was guaranteed a 1-1 interview at their HQ if I could atleast finish 90% of the specs. How much did I finish? 40% ! Yet, I got called. They told me that the task they gave me was for a senior-level dev, but they wanted to see how well I could face a challenging problem & they were surprised that I could finish even 40% of it.
In the 1-1, I was asked everything from JS fundamentals, OOP questions, Data Structures & Algorithms basics (run time complexity, space time complexity & common DS like arrays, stacks, queues, etc), CSS fundamentals like the box-model, flexbox, positioning, and surprisingly also the event loop. I was also asked to solve Flexbox Froggy (they wanted to see how many I could solve. I could solve 23/24 (due to prior practice) within 10 minutes.)
Philip Robert's talk on the event loop actually helped me explain this to my interviewer on the whiteboard!
Nonetheless, after a 4 hour rigorous interview, I bagged the job. It was an extremely valuable learning experience.
I hope I could be of some help. I know the current situation is quite challenging, but going beyond the average job applicant will put you leagues ahead. Rejections suck hard, but don't let them demotivate you. There was a period when I used to be depressed and anxious, worrying about my situation, but hardwork paid off. Keep fighting!