every single time I’ve gotten past the first round I am rejected for someone who was recommended internally/someone with job experience
Sounds like unfortunate timing. Unfortunately, there's no way to know how far along in the hiring process other people might be, so sometimes you're interviewing for a job that's right about to be filled by someone else. My only advice on that side would be to make sure to be responsive to recruiters and try and get your interviews scheduled quickly.
Getting to first-round interviews is a good sign, especially with so much of the interview process being sloppified by AI tools. Your resume is catching eyes and someone thinks you're worth talking to. Give yourself some credit then: you've set yourself up for success. The beginner career market is always going to have tough competition, so getting your resume on the desk of a real human is very important.
My only other advice would be to focus on getting past those first interviews, and that might require you to examine your shortcomings on that stage. Are you failing the coding challenge? Find opportunities to practice and improve. Are you failing technical questions? There are github repos with common interview questions (eg "Tell me the difference between private and protected keywords in C++"). If you're failing while talking about your technical/school experience, find some time to refine your thoughts and practice selling your strengths.
The more times you get past introductory interviews, the more chances you have to be the first candidate who "checks all the boxes". Sometimes that's all it takes.