preface
Hello, everyone, I am a senior undergraduate majoring in computer science and technology in an ordinary university, mainly doing back-end development.
During college, the school is relatively ordinary, there are more people to play, and the learning atmosphere is also general. I began to learn technology slowly from the second volume of the freshman year, during which I expanded C++ from the textbook, and then taught myself Java, framework, group price, etc. In the summer of sophomore year, I started the first internship journey. During the study and internship, I often floated on the surface and did not get deep into a certain technology. I have made a lot of detour. I just want to write a blog at home in my spare time. I want to talk about my experience of learning technology in school in the past three years and give some suggestions on the learning path of ordinary computer major students, hoping to help some students in the community.
I will talk about it in several points. First of all, I will talk about how I went from knowing nothing to being exposed to Internet related technologies and the pits I stepped in during my college years. Then I’ll talk about the highlights of my college years. Finally, I’d like to make a few suggestions about how to arrange my study in college.
The road to college
A freshman
Our school freshman is arrangement of professional courses related to the days of the program design basis (C language), I remember after the college entrance examination, etc. At the time of admission notice, because all my major is the computer related professional (computer science and technology, software engineering, etc.), so at this stage in the Chinese college students for class WengKaiXue by zhejiang university, A school look at the schedule, I wipe C language, do not have to learn oh-yeah! And then happily went to the student organization loafing…
It wasn’t until the second semester of my freshman year that I noticed that some people around the college had started making small things. I was surprised, I suppressed the loss of the heart, in an attempt to find their own direction, tell yourself, to do how we will do well! So began to learn C++, but after a time, found C++ this thing, too f * * king demon bar… I couldn’t learn, I couldn’t learn, and I tried to write Qt in the meantime. Inside the panic of a group of people around the preschool end, I tried to go over HTML, CSS, JS, HelloWorld level. I found out how MUCH I really liked doing the front end. Although the front end is easy to feel a sense of accomplishment. Then I don’t know why I saw the career path of Android on the Internet of a class and felt it was very interesting, so I started to learn it. Coincidentally, the front part of Android is Java, yes, it is Java, because I went through C++, it is very smooth when learning Java, and it seems to be a bit bloated! I feel that step 1 of a certain course online is very fast to learn. Confidence increases and you start to feel high… But the good thing did not last long. Later, after the summer vacation, I began to go deep into some interaction levels, some system calls, network calls, data operations, etc., which made me confused and I began to doubt life… Half way through, I gave up… Yeah, I gave up.
A sophomore
The summer vacation of my freshman year passed quickly. After all, I still studied for a month. After the beginning of my sophomore year, I got a new dormitory. We studied together in a group, so I talked with my roommates about finding a lab to stay in. Because the ACM roommate already has, that is, I and another to find, there is still a roommate is not willing to go. Search for a long time, found that is not this teacher pull you to do private work, is another teacher something bad news… Finally, I was forced to find the head teacher. Our head teacher is really super Nice! He helped me find a teacher who had a learning center that could seat about 30 people… And there were still few people, just a few work-study people. The word day. Deliciously. And then I went. After consulting with the teacher, we recruited about 10 people to come to the lab. Thus, a team of us began to learn by ourselves without knowing anything. Coincidentally, the China Service Outsourcing competition started at that time, so I joined the lab with my roommates and then joined the class with three people, formed a team and signed up… The choice was a Web system, and I learned Java, so we said let’s use Java as the back end. And then the road began… Last semester, I went over Java again and learned JSP + Servlet and THEN SSM framework. Last semester, I started to work on the project during winter vacation. Later school, do it is really difficult. And MD is not taught!! Nothing can be fixed! Just do it… In the end there was no accident, collapse! Well, it did, but at least I learned something. I don’t know anything, but I know how frames work.
It may seem like nothing, ah, only their own experience to know, no one to guide how difficult… A bug tune two days, finally found is what parameter spelling error?? Or what version is not compatible? Me, too. Twinkling of an eye sophomore is coming, I am very sad in their own learning on the road no one with, and partners to discuss, we do not begin to continue… I started to go to the university to advertise, to brag about how awesome the lab people are, how awesome. In the second volume of the sophomore year, although I failed in the competition, I learned a lot of “high-end” things due to my frequent browsing of blogs (searching for bugs), so I learned SpringBoot, Dubbo, Zookeeper and Redis. But this one is really not learned. But will use, anyway on the net all sorts of tutorial, according to use is…
Not sophomore summer vacation came, and I felt like I learned something and went to a small company to practice. Then the company uses SSM+SpringCloud, ok, anyway write business, write SQL and controller still feel I have no problem. To say that the internship in a small company did not harvest is not all, at least let me understand the actual composition of a project, which areas need to pay attention to the next problem in development. Although there is no concurrency, no multi-threading, no high-end components, and it is impossible for me to write complex functions. But I still think it’s pretty good.
Junior year
Soon the junior school began, after the school began, the laboratory recruitment began, recruited a group of sophomore students. Then the routine is to occasionally learn technology, occasionally teach junior. I touched the message queue again. RocketMQ, Elasticsearch and a bunch of crap. I wasn’t interested in preparing for my interview… Until the end of my junior year… There’s a front man in the lab after an interview with a fucking company. I just realized that I have to interview companies for internships… But it was too late…
The first interview was with a big company. I remember it was January when I wanted to have an internship in Java. I remember clearly the two algorithm problems, a tree traversal and an array evaluation problem. Fortunately, I still remember the tree traversal, but I have no idea about the latter one. Violence! Before WRITING, the interviewer let me stop writing, and then began to introduce myself, after the introduction, asked me Java, do you know which Java locks? I said a synchronized. Did he say there was more? I ???? I didn’t read Lock at the time. Then he asks, do you know how to put a HashMap? I??? Don’t know!! “And he gave up on Java and started asking databases, do you know indexes? I??? To speed up the search? Do you know what his data structure is? I ???? Don’t know! Can you talk about the inverted index of ElasticSearch? I know!! I wasn’t interested. The interviewer had stopped asking. Then a few small talk ended. I didn’t realize I was cold. I hadn’t had a job interview. I went back. I realized I was cold when I waited for nothing.
As I reflected on his question and began to watch the interview process, I realized that I had been looking at the use of frameworks, the use of components, and missing a lot of the internal mechanics, and I hadn’t really looked at concurrency. I was offered an interview by a big company, so I didn’t go. Then I started frantically catching up on multithreading, JVM, principles, data structures, computer networks, and operating systems.
Time flies! Three months after my entry, I was faced with an offer in the evaluation. I asked my leader about the matter of becoming a regular employee, and he promised me 15-16K. At that time, I compared the offers with those of my friends, almost. I didn’t have any bad thoughts. To be honest, I thought the company was good and I wanted to stay! Leader says, if you are not satisfied, you can go to another company! It’s okay! To be honest, my leader treats me well. The salary he told me at that time is his estimate of my salary. And I believe it. Later, after the sharing, the boss of the R&D center discussed my salary, and MY leader talked with me, vaguely saying that it might not be that high or something. I thought, I can accept a lower price of 1-2K, after all, our lab and some friends have 14-18K, and I can accept even 14K. I was thinking 15K. But when I received the offer, I was really upset. After the offer was sent, the evaluation increased by 0-25% in three months after 12K+, that is to say, I still need to go through the evaluation in several months. I rated it as the highest among the interns at that time. The company is not big, the level of interns are general, I still calculate hard, but also willing to learn, so the score is not bad. To be honest, I can’t take it! I went to work from 9 o ‘clock to 10:30 (our group usually left at this time). I went to study on Saturdays and weekends, and occasionally I helped others write business. The gap in my heart is too big. He said he was leaving the next day. The leader of our group talked to me, and so did the boss of the backend of the company, but I was quite firm. I don’t need chicken soup, it’s simple, I think, as long as the salary is ok, everyone is happy, I will work hard, I can accept overtime. But I can’t stand it! Finally quit! Maybe I was naive.
Senior year
After quitting my job, I felt a little confused when I came back to school. It was Already November and there were not many companies recruiting, plus I didn’t have any preparation for the interview. Anaemia is! I really didn’t take the offer as a bargaining chip! Am I too simple?!
So I began to review the road, thinking that since there are not too many companies, then I go to spring recruit! Begin to arrange from data structure start system relearn! I feel the previous study is too messy! What a mess! Back to school, the new class of students in the laboratory came again, while reviewing in the laboratory, while teaching the younger students, they will re-learn data structure, SOME of the JDK source code, computer networks, multithreading, Netty and so on,
Until now, the epidemic has come, after the holiday back home, now want to go back to Hangzhou to find a job! Zhejiang this period of time is particularly serious! I’m scared…
Java learning path recommendations
At home this section of slowly thinking a few years of learning I found that I was really rubbish! Too impetuous, floating on the surface! A bad hand! Fortunately, I found it early! Or you’ll be a real loser after graduation! I want to share my views on the back-end route of computer related professional self-study in ordinary colleges and universities!
Ps: Don’t spray big guy! Thank you very much! For reference only!
A freshman
- Freshman I personally feel that the main is to learn the foundation first!
project | Advice when | Reasons or Suggestions | Recommended books |
---|---|---|---|
The C language | Freshman year – February | Some of the concepts are generic and representative. | C Primer Plus |
The data structure | Freshman year – March | It is the cornerstone of all subsequent structures that are very clear | Data Structures (C Language Edition) |
algorithm | Start after age | Use algorithms to better understand data structures and solve problems | It is recommended to brush leetcode one problem per day |
Java based | A little older – February | Now most Internet companies are Java, followed by Go | Java Core Volume 1 |
The front-end based | About half a month. – Half a month | The back end needs to know the basics of the front end | Just know what’s on the front end, right |
servlet | Summer vacation of freshman year – January | Relatively simple and useful for understanding basic engineering development | There is no |
MySQL based | Summer vacation of freshman year – January | Free and widely used | MySQL in Simple Form |
- Maybe some big guys will say that C language does not need 2 months, data structure does not need 3 months, this is in the case of a lot of classes, if there is no class, at least half of the reduction, but the beginning is more difficult, so it does not matter if slow.
A sophomore
- In my sophomore year, I thought THAT I should first understand engineering and at the same time learn theoretical knowledge and carry out in-depth study of relevant technologies
options | Advice when | Reasons or Suggestions | Recommended books |
---|---|---|---|
SSM used | On February | Enterprise development is used the most, the most popular | Spring In Action |
Linux USES | – and a half months | Enterprise servers are basically Linux | Birdman’s Linux Home Dish |
Redis | In 1 month | A masterpiece of caching | Redis Design and Implementation |
SpringBoot | In 1 month | Simplify development, improve efficiency, and enrich components | SpringBoot Programming Ideas |
The operating system | In 1 month | This is a must! | The teaching material can be |
Computer network | Under 1 ~ 2 months | This is a must too! | Computer Networking: The Top-down Approach |
Java concurrency and IO | Under 1 month | The basic part is just this is where you have to learn more | The Art of Concurrent Programming in Java |
JVM | under | Recommended long-term reading | Understanding the JVM in Depth |
Netty | Under 1 ~ 2 months | Simplify network application development and deepen the understanding of the network | Netty In Action |
Design patterns | Under – and a half months | The principle of deep learning must be known | Zen of Design Patterns |
Principle of SSM | Heat 1 month | Learning design ideas is essential | Read feature blogs |
- Sophomore year is the most important task, because sophomore year has the most professional courses, while junior year needs to prepare for the interview. Meanwhile, if sophomore year has enough time, it is suggested to learn one more language. Go also works, as do scripting languages such as Shell and Python
- There is also a suggestion to find their own tutorials at least to write a complete project, engineering thinking
- In addition to the above, there are some tools to learn, such as Git, Maven, Tomcat, etc
Junior year
- In the third year, I can expand my knowledge of micro-services and distributed
options | Advice when | Reasons or Suggestions | Recommended books |
---|---|---|---|
Microservices Framework | – 1 to 2 months | Microservices are the trend consider dubbo or Cloud | There is no |
Distributed knowledge | In 1 month | Transaction management, design principles, etc | |
Understanding message queues | In 1 month | Learn about the differences and usage scenarios of different message queues |
- Why do not do a detailed division, because junior students generally want to prepare for the interview system, it is recommended to start preparing for the beginning of the semester, because often junior internship positions are issued in November – January, winter vacation can go to interview a wave, if you can SAO operation junior class less can go to internship in advance. It’s easier to get an offer.
Important note
- Fundamentals matter! Principle is important! Systems matter!
About the recruitment time and review time of junior and senior students
- It is suggested that the junior semester begins to review. Personally, I don’t like to brush interview questions. But you can check it out.
- It is also suggested that you take notes and write a blog in your study!! What you write is easier to review. It’s okay to write badly, but do write. Follow-up can be enriched!
- From December of the first year of the junior year: Interns from big companies have been recruited one after another (the most difficult)
- From February of junior year, some factories will start spring recruitment in advance. (Difficulty is low)
- From July to August of the fourth year, some factories have started autumn recruitment in advance. (High difficulty)
- From December to April, senior make-up recruitment and spring recruitment. (Highest difficulty)
The last
- I hope the big guys spit, and the little brother is just a chicken! Also hope big guys if have better suggestion, can leave a message, I can modify!
Last last!! If the bosses have a chance to work, please save the children, hangzhou is the best, Shanghai can also be accepted!!
Email:[email protected]
- Think you can point a thumbs-up 👍 Thanks!
About me
- Majoring in Computer Science and technology, general university, Hangzhou.
- Graduated in 20 years, mainly engaged in back-end development of Java technology stack.
- GitHub: github.com/imyiren
- Blog : imyi.ren