Looking for an internship as a CS student in the US? You really need to start thinking about it at least a year in advance. I know a few upperclassmen who began practicing coding problems and refining their resumes during the summer of their sophomore year.
The recruitment cycle at big companies is quite interesting. Last year, Facebook posted its internship positions in August, and by October, they were mostly filled. One of my friends applied at the end of September, and HR told him directly, "We've already hired enough." Companies these days are basically in a race to grab talent, so the earlier you start, the better.
You must attend your school’s career fairs. At a recruiting event at UC Berkeley last year, I met an engineer from Amazon. After chatting for half an hour, he asked me to send my resume to his email. Later, I found out that face-to-face interactions are ten times more effective than online applications. The career center at my school is also very reliable. They reviewed my resume three times, and the final version looked far more professional.

LinkedIn is getting more competitive by the day. I recommend setting aside regular time each week to update your profile and project experience. A little tip: engage with alumni's posts by liking and commenting. After you become a familiar name, it’s much easier to get a referral. Be sure to read through the interview experiences on Glassdoor as well—half of Google’s algorithm questions last year could be found there.
Industrial-level projects can make a difference. I worked on a machine learning project with Drillinsight, and during my interview, the interviewer spent 20 minutes talking about it. Compared to students who only know how to solve coding problems, those with hands-on project experience are clearly in a better position. Nowadays, if your GitHub doesn’t have some solid projects, it’s hard to even think about submitting your resume.
When it comes to practicing coding problems, LeetCode usually starts at 150 problems. I know a guy who got into Google, and he had solved at least 300. But just solving problems isn’t enough—you need to be able to explain your thought process. I once solved a problem in an interview, but I couldn’t explain my approach clearly, and I ended up failing.
Your resume is critical. My first version was criticized by a senior who said it looked like something a high school student would write. Later, I learned to present my coursework as professional project experience and quantify the results. For example, saying "Improved processing speed by 40% through algorithm optimization" sounds much better than just saying "Worked on a project."
Lastly, here’s a real-life example: A CS friend of mine last year prepared 20 different versions of his cover letter, each tailored to a specific company. As a result, he landed 8 interviews and eventually interned at Microsoft. What does this teach us? Mass applications don’t work as well as targeted ones—paying attention to the details makes a difference.