Introduction
A student from the community has created a plan for learning computer technology and asked for opinions.
There are many common issues faced by students in their learning plans, and I would like to share my thoughts and suggestions.
Discussion
The student asks:
“Brother Gan, this is my previously set C++ backend learning plan:
First Year, First Semester + Winter Break (Almost finishing “C Primer Plus”, expected to complete): Operating Systems: Book “How Computers Work”; Computer Networks: Book “How Networks Connect”; Databases: Books “SQL for Beginners” and “How MySQL Works”; C++: “C Primer Plus”.
First Year, Second Semester: Operating Systems: Video “Nanjing University Computer System Basics (1)(2)”; Computer Networks: Book “Computer Networking: A Top-Down Approach” (first six chapters); Databases: Video “Redis Tutorial by Shanguigu on Bilibili”; C++: Video “Teacher Hou Jie’s C++ Course” (STL generic programming, C++11 new features, memory management and analysis); Data Structures: Book “Data Structures in a Nutshell” + solving leetcode Hot100.
First Year Summer: The teacher offers an internship opportunity, hoping to secure two chances. If possible, I will look for an internship at a small to medium-sized company this summer; if not, I will send out resumes to gain interview experience.
Second Year, First Semester: Operating Systems: Book “Computer Systems: A Programmer’s Perspective”; Computer Networks: Review book “Computer Networking: A Top-Down Approach”; Databases: Book “Redis: Design and Implementation” (optional).
…………………………
Brother Gan replies:
“Seeing that your plans are all about reading books, let’s not even talk about whether you can finish them. Just regarding what you are currently reading, do you feel that you understand it once you finish reading, or that you will be able to apply it?”
“I saw you check in saying you finished reading the networking book. Let me ask you a simple question: for example, if some service processes on the computer start automatically and send network requests, consuming bandwidth, can you analyze which processes are involved?”
In fact, computer development is more about practical experience and hands-on work. Blindly reading a book from cover to cover does not improve oneself. It lacks focus.
Seeing that you are learning C++ and still need to read so many books, I estimate that before you finish, the opportunity will be gone. The focus of learning a language is programming; practice more and be flexible in application. You can refer to the suggestions below on how to read books and at what stage to read them. It is best to read with questions in mind, for example, after you understand what a certain protocol does, but are unclear about how it communicates externally, and what each protocol packet means. When you have questions and want to understand the underlying principles, reading with questions is the most effective.
The student questions:
“Brother Gan is right; I have read many books, but I lack practical experience, and I read quite slowly. However, I want to ask Brother Gan a question: if I don’t read these books (or systematic knowledge), how do I handle the common interview questions? Especially conceptual questions; I can’t just research every single question and then memorize them if I can’t figure them out, right?”
Brother Gan replies:
“What value does understanding the implementation of syntax have? Can it help you in your future work?”
“Instead of that, it would be better to look at the implementation ideas of some features in open-source operating systems, such as the network part of Android. Which implementation architecture does it use?”
“Discussing this is more relevant to interviews than discussing syntax implementation. Syntax knowledge is only asked during job interviews because students like you often have little else to discuss.”
The student questions:
“Indeed, it is true, but there is no way to avoid the common interview questions during campus recruitment.”
Brother Gan replies:
“We have talked a lot about the topic of common interview questions; you can refer to the career planning document for more information.
First, what do you think common interview questions are? Is it a summary of all these computer knowledge points? In fact, I believe the term ‘common interview questions’ should have a qualifier.
It should be ‘my common interview questions.’ What are the common knowledge points that are frequently asked by interviewers during interviews with me?”
“The only link between you and the interviewer is your resume. The interviewer sees your resume and believes that if you know what is written on it, they can offer you a position. Therefore, the questions will definitely be based on your resume.”
“Everyone’s resume is different, so the questions asked will definitely vary. If the resumes are different but the questions are the same, it indicates that the interviewer is asking based on their own materials, and such an interviewer and company are not worth pursuing.”
“Therefore, learning should be based on your resume, or you can say it should be based on specific knowledge points. There is too much computer knowledge; it is unnecessary to learn everything. Each point in a large company may represent a direction.”
“The above answers do not mean that you should not read books; those good books have been passed down for a reason. However, you should read with a purpose. When you have a good understanding of a skill point but are still unclear about its underlying implementation, and you are particularly curious, that is when you will gain the most from reading.”
“Moreover, while learning, pay attention to summarizing documentation. The documentation you summarize is your common interview questions, not just a random PDF you find online with hundreds of pages.”
“If you just pick up a book and read it from start to finish without a purpose or your own thoughts, the gains will be minimal. For these issues, you can take a good look at the zero-based employment learning path, which has explanations, as well as the learning suggestions compiled by community members, which will help with your career thinking and learning suggestions.”
Let learning return to technology (technology !=== rote memorization).
Two images of learning suggestions: 

In fact, the theme is two ideas:
1. Do not blindly memorize common interview questions, as it severely dampens everyone’s interest in learning technology and affects career development.
2. Learning method suggestions: when doing technology and programming, it is essential to practice more and gain practical experience.
Introduction to Knowledge Community
Running C++ / C++ Knowledge Community (Learning programming, high-paying employment, job hopping, and career planning to find the optimal solution for your life)
Community Name: Running C++ / C++
The services inside will not change, and we currently adhere to four principles:
1. I will review everyone’s check-in content daily and provide reasonable suggestions.
2. If anyone needs resume guidance or feels confused and needs counseling, they can make an appointment for one-on-one tutoring on Saturdays.
3. The Q&A chat every Friday night at 9 PM will remain unchanged.
4. Once you join the community, if there are any other activities or services in the future, they will be free (reasonable fees may be charged for community expenses, but we will not exploit members and will maintain our original intention).
(Also includes exclusive private materials that have stood the test of time)