Today, I would like to share a question from a follower: a second-year graduate student in Integrated Circuits at Sun Yat-sen University wants to transition to Linux C++ to enter a major company. After applying for nearly a hundred internships without success, how can they optimize their projects and skills?
Next, I will share the specific question from the follower and my response, hoping to provide some inspiration and help to others in similar situations.
Student’s Question:
Hello, YT. I am currently a second-year graduate student in Integrated Circuits at Sun Yat-sen University. My project is related to device processes, and I am facing employment difficulties. Therefore, I want to switch to the Linux C++ direction to enter a major company. I have self-studied C++, data structures, computer networks, and operating systems. I have also followed online courses to create a web server on the Linux platform, gaining some understanding of C++ network programming. Six months ago, I completed a three-month software development internship, where my work involved performance testing for the company’s self-developed kernel algorithms, mainly writing scripts and processing data. My goal is to secure a position related to backend networking at a major company. In the past two weeks, I have applied for several backend development internships, and I have also learned Go and familiarized myself with the Gin and Gorm frameworks. However, after contacting nearly 100 companies, I have not received a single interview. After reviewing your analysis, I feel that my projects and experiences are merely reinventing the wheel and using open-source libraries, leaning more towards business without solving specific problems. What should I learn next, and what projects should I undertake to secure an internship at a major company this summer and successfully apply in the fall?

YT’s Response:
This learning experience is typical of self-study, reflecting a certain learning atmosphere. We can see that as a second-year graduate student in Integrated Circuits at Sun Yat-sen University, which is a 985 university, combined with a computer-related major, even though it is called device processes, it is important to note that transitioning to pure software is also possible, similar to mechanical engineering. However, it is crucial to recognize that you have the capability to transition to coding and qualify for a major company.
But what have you learned? You self-studied C++, data structures, computer networks, and operating systems, and followed online courses to create a web server on a Linux system, gaining some understanding of C++ networking. Six months ago, you had a three-month internship, which we will not discuss for now. This is a typical self-study path: learning C++, then data structures, then computer networks, then operating systems, and finally creating a web server. This learning route is common; even your interviewers likely followed a similar path. Overall, you may find that you lack unique contributions. If you complete this learning path, you will find it challenging to incorporate your own innovations, and such innovations are non-existent. It is not just about learning for the sake of learning; you may not understand the significance of what you are learning, and after completing it, you only know that you have learned a lot, but you are unsure of its utility.
Having completed a three-month software internship six months ago, you already have some internship experience. Although the company is not mentioned, it is involved in self-developed kernel algorithms and performance testing. I believe this company is not too small, as it should have a certain level of recognition in its industry. In the past two weeks, you have applied for several routine backend internships, and you have also learned Go, Gin, and Gorm frameworks, yet you have not received any interview opportunities. Have you ever doubted whether your learning approach has some issues? You can take this time to extend your project; can you make it live and usable by others? If you are looking for C/C++, I suggest you avoid writing another web server. Instead, consider creating something that can solve specific problems. For example, you could conduct a survey in your dormitory to gather statistics on the employment decisions of second-year graduate students at Sun Yat-sen University. This is a valid project that can address a specific issue, allowing you to demonstrate how you can apply technology to solve real problems. Through the statistical process, you will arrive at a conclusion, which is also valuable. However, if you are merely learning for the sake of learning, you will accumulate a plethora of technical points without knowing how to solve specific problems.
I believe you meet the threshold for a major company. During your self-study, you will inevitably follow this path, learning many knowledge points. However, when you apply, you may encounter a phenomenon where you find no interview opportunities because your resume lacks distinctive features. If you choose C/C++, I recommend a few technical terms to include in your resume. First, you can familiarize yourself with DPDK, VPP, OVS, and in storage, SPDK, Ceph, or RocksDB, LevelDB. For audio and video, you can explore options like FFmpeg, WebRTC, and SRS. You can also delve into kernel-related topics such as ext4, VFS, BPF, eBPF, and netfilter. Including these in your resume will enhance your chances of getting interviews. At least you will have tangible projects listed in your resume. If the companies you are targeting use these technologies, you will likely receive interview opportunities. However, if you follow the current approach, your resume will lack distinctive features. I reviewed the content of your resume, and the terms QT, OpenCV, Redis, MySQL, Protobuf, and OpenSSL are quite generic. They do not represent a solution; they are libraries. How should we understand libraries? They are not specific to any industry; they can be used across all industries. For instance, Redis, MySQL, and OpenSSL are foundational tools that can be utilized in any field. However, technologies like SPDK, Ceph, and RocksDB are specific to storage, and you can highlight these in your resume to give your technical profile a distinctive edge. This is what I wanted to convey.
Summary:
1. Academic Advantage but Weak Projects
- 985 Master’s Degree as a Ticket: Sun Yat-sen University + Integrated Circuits major is sufficient to pass the resume screening for major companies, but your projects are too common. For example, a student used the same Linux web server project last year and applied to 60 companies, barely securing one interview.
- Deep Dive into Internship Experience: Don’t just write “wrote scripts for performance testing”; frame it as “optimized self-developed kernel scheduling algorithms, reducing memory fragmentation by 30%” (quantify results using the STAR method).
2. Lack of Distinctive Tech Stack
- C++ Backend Core Trio: You must master DPDK for network acceleration (network byte order optimization), SPDK for storage solutions, and LevelDB/RocksDB database engines.
3. Project Transformation Guidelines
- Discard the Web Server: Major company interviewers are tired of such toy projects; I suggest transforming it into:
- “Container Network Traffic Monitoring Based on eBPF”
- “Refactoring Company Scheduling Algorithms Using C++20 Coroutines” (in conjunction with existing internship experience).
- Let Data Speak: For example, in the project description, write “Through lock-free queue optimization, single-machine throughput increased from 5k QPS to 12k”.
4. Resume Pitfall Guidelines
- Technical Stack Writing:
- Incorrect Example: “Familiar with C++, MySQL, Redis”
- Correct Example: “Proficient in C++20 coroutine implementation for high-concurrency scheduling | Optimized NVMe storage performance based on SPDK | Used eBPF to trace container network latency”
- Project Ordering: Place the most challenging projects in the first section.
Merely learning these technical points is not enough; you must learn and apply them to solve real problems. For instance, you should have your own code projects or be very familiar with certain source codes and have solved practical application problems. You need to give your technical level a unique aspect; avoid being too broad in claiming to have learned everything.
Appendix: 25 Latest Learning Paths for Advanced Linux C/C++ Full-Stack Development:

Computer-related majors: Employment/Job Seeking/Learning Paths/Offer Selection/Career Planning Advice/Learning Material Acquisition
Add WeChat: yt558998 Note【Public Account】
