"Junior developer wanted, 1-2 years experience required" is a genuinely common posting, and it stops a lot of students from applying at all. It is worth understanding what is actually happening before letting it filter you out.
Often the number is closer to a wishlist than a strict requirement — written by someone hoping for an experienced candidate at a junior salary, but willing to hire a strong junior with none of that experience if one applies. Sometimes it is copied from a template without much thought. Occasionally it is a genuine requirement. There is usually no way to tell which from the posting alone.
A frequently useful rule of thumb from hiring research: if you meet roughly half of the listed requirements and are strong on the ones that matter most for the role, it is usually worth applying. Treating every line as a hard requirement filters out a large share of realistic opportunities for no good reason.
Employers writing these postings are often really asking "has this person built real things and dealt with real problems," not literally "has this person held a paid job for exactly this many years." That can, at least partly, be genuinely demonstrated by:
None of this is identical to a paid job, and being upfront about that is important — but it is genuine evidence of ability, which is what the requirement is usually really trying to screen for.
If asked directly about the experience gap, the strongest response is not defensive — it is confident and specific: acknowledge the gap plainly, then immediately point to what you have built and what it demonstrates. "I don't have formal work experience, but I built and deployed [project], which involved [specific real problem you solved]" is a complete, honest, strong answer.
What does not work: pretending a course project was a paid job, inflating a small personal project into something it wasn't, or getting defensive when the gap is pointed out. All three are easy for an experienced interviewer to see through, and they cost more trust than the honest gap itself ever would.
Some gaps are real and worth respecting — a role explicitly requiring deep expertise in a specific framework you have never touched at all is a poor use of your time and theirs. The judgment call is between "this asks for more polish on what I already do" (apply) and "this asks for something I fundamentally haven't learned yet" (skip, and treat it as a note on what to learn next).