Rural background, as a security guard, into the factory, college diploma of him, how to rely on their own efforts in graduation 6 years to achieve an annual salary million? As an ordinary member of the code farm, how did he get a high salary step by step
Since I am interested in software development, I have been applying for positions in the IT industry while looking for jobs. When I first stepped into this industry, I thought that I could have a good harvest by raiding all kinds of interview materials. The result is that many small companies, let alone big ones, can’t pass the pen test.
Impatient with the phase
Then I went to a small local company to do server-side development. Although it is called server-side development, it is actually a system indicator monitoring function, reading some indicator data from DB and displaying it in the browser in the form of charts. The technology used is nothing more than that of Spring MVC. This KIND of CRUD work content does for a long time, it is purely physical labor, technical vision cannot be opened.
Even though I wrote such a simple functional code, I was always criticized by the leader, who said that the quality of the code I wrote was too poor to be worth thousands of yuan of salary. In order to change this situation, I started thinking about how to do the best things in ordinary work. I started to focus on code quality. I started to really read Books like Java Programming Ideas, Effective Java, and Design Patterns.
At the same time, I forced myself to draw more architecture diagrams and data flow diagrams before code development, and I also forced myself to write code layers when writing code. After half a year of training, I was gradually able to write some loose coupling and high cohesion code, and also changed the phenomenon of full screen IF-else flying around. The leader also stopped saying that my code was bad and gave me several hundred yuan more (knowledge is money)!
Thinking this was the core of a good programmer, I worked up the courage to apply for positions at big companies, but didn’t get an invitation to interview. Later, I applied for several interviews with small companies, but received the interview but did not receive the offer, because I had no idea of some interview questions, such as:
What are the advantages of NoSQL over relational databases, and in what situations do you use it? Analysis logs are stored in account login information, about 100G a day, to find the account with the most login times in a certain period of time how many concurrent accounts do you have, how to avoid avalanche phenomenon?
These questions made me realize that syntax and design patterns are just basic programmer skills that need to be improved in data structures, high concurrency, distributed technology, etc. It was very difficult to learn at the beginning, with a weak foundation and no use scenarios for these technologies in work. Therefore, I could only read fragmentary articles in forums and blogs, making slow progress.
For systematic study, books and online courses are better choices. I bought books like Concurrent Programming in Java, Architecture Design and Timing for Large Distributed Web Sites, And Spring Cloud and Microservice Building, and read them back and forth several times. Then I watched some videos on the Internet, some free and some paid. I also spent a year or so systematically studying a set of courses that left me with a more systematic understanding of Java-related skills. At the same time, it can also play an effective role in checking and filling gaps for engineers who are not trained or have not solid basic knowledge.
After I try to use these technologies in the work, the state is “holding the hammer, see where are the nails”, learn a new technology, just want to impose on any project, leader sometimes say I’m crazy, but I think don’t despise this kind of experience, there are a cognitive process, it is also a kind of accumulation.
1. Performance tuning
Whether it’s dealing with a front-end interview or improving the product experience, performance optimization is a topic that can’t be avoided.
The purpose of optimization is to make users feel “fast”, so how to make users feel fast?
Loading speed is really fast, the user opened the input URL press enter immediately see the page
It doesn’t load faster, but your site feels fast to your users
Performance optimization depends on several factors, including garbage collection, virtual machine, and underlying operating system (OS) Settings. There are several Tools available to developers for Analysis and Optimization, and you can learn and use them by reading Java Tools for Source Code Optimization and Analysis.
It is important to understand that no two applications can be optimized the same way, and there is no perfect reference path for optimizing Java applications. Use best practices and insist on handling performance optimizations in an appropriate manner. To achieve the true highest performance optimization, you as a Java developer need to have a correct understanding of the Java Virtual Machine (JVM) and the underlying operating system.
The following five knowledge systems are based on my experience in the industry and are the most mainstream technologies. Share some senior architects recorded video: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization, concurrent programming these become architects necessary knowledge system.
If you want to know more about it, you can help to forward it. After paying attention, you can add assistant Vx: Yunduoa2019 or scan the two-dimensional code below and follow the guidance of the assistant to obtain it by yourself
The following is a summary of what I should learn and understand about performance optimization:
2. Source code interpretation
Source code analysis is a kind of critical knowledge, master this critical knowledge, can be invariable should change, source code analysis for many people is very boring, difficult to understand.
Read the source code, I think there are three core points: technical basis + strong thirst for knowledge + patience.
I think is the core driver of reading source code. The majority of programmers I’ve seen have this kind of attitude toward learning:
1. Focus only on the project itself, baidu will search if you don’t understand.
2. In addition to working on projects, I also read technical books about projects and read Wikipedia.
3. Besides reading books related to the project, I will also read books about the IT industry. For example, when LEARNING Java, I will also learn functional languages, such as LISP.
4. Look for open source projects, try out a lot of third-party frameworks, and write demos.
5. Read the basic framework, J2EE specifications, and Debug server kernel.
Most programs are type 1. Getting to type 5 requires not only intense interest, but courage: Can I read it? In fact, you can read it.
Patience is really important. Because you rarely see instructional articles or books reading the source code, you are not required or advised to read it. You’ll often get stuck, and a reader can get stuck in a maze. What you need to do, perhaps, is to pause for a moment and look at it from the outside: the API structure, the framework design.
The following is my summary of the current most should learn source knowledge:
3. Distributed
Distributed system is an old and broad topic, but in recent years because of the rise of the concept of “big data”, it is full of new youth and vitality. In addition, distributed systems is a discipline that places equal emphasis on theoretical models and engineering techniques. Compared with the research direction of machine learning, students studying distributed systems often feel that “it is easy to get started, but difficult to get deep”. Indeed, learning distributed systems requires almost no mathematical knowledge.
Distributed systems are a complex and broad field of study, and a course or two online, or a book or two, may not cover all of it.
In general, the task of distributed system is to combine and connect multiple machines organically, so that they can cooperate to complete a task, which can be a computing task, or a storage task. If I have to make a classification of distributed system research in recent years, I think it can probably be divided into three parts:
1. Distributed storage system
2. Distributed computing system
3. Distributed management system
Here is my summary of the most mainstream distributed technologies in recent years:
4. Micro services
Microservices are hot right now, and everyone claims to be using microservices architecture, but what exactly is microservices architecture? Is microservices architecture a trend? We all lack a clear understanding of these issues.
In order to solve the problems under the single architecture, the microservice architecture came into being. Better to break up services sooner rather than build a bloated monster that is hard to tame. The core idea of microservices is to split and decouple services to reduce complexity. Microservices emphasize the reasonable disassembling of functions, as far as possible to ensure the Single function of each service, and clear roles according to the Single Responsibility Principle. Make each service light, so as to be flexible and reusable, and also according to the needs of each service’s own resources, separate deployment, separate horizontal expansion.
The following is a summary of the knowledge points I need to learn about microservices:
5. Engineering
To do a good job, you must first sharpen its tools, whether it is small white, or senior development, need to choose a good tool first. Improve development efficiency and teamwork efficiency. Give yourself more time to think.
If you’re still feeling a little confused, talk to a senior engineer with years of Java development experience.
Please forward it and add assistant VX: Yunduoa2019 after following it or scan the qr code below and follow the guidance of the assistant to obtain it by yourself
Objective idea
Why do I always want to work for BAT and other large Internet companies? Not only is the salary attractive, but there is also the challenge of large-scale distributed technology.
Looking back on the road of upgrading and beating monsters in the past few years, I can’t help feeling a lot from graduating from an ordinary second school to becoming a senior Java development engineer in a top Internet company. If LET me share with you a few things, the following three points should be the most important in the past two years:
Getting out of your comfort zone and finding your purpose is the starting point. If you don’t have a lot of exposure to new technology in your current job, you can try to interview outside companies. This will help you to find out what you want to learn.
Jump ship as soon as possible, avoid becoming a frog in warm water. For students who want to move to a big company, it’s better to do it as soon as possible. Because at the same level, big companies tend to value “potential” more — the older you get, the less potential you have;
Always keep your desire to learn. For engineers, learning never ends. But hard work is not enough, you should pay attention to their own learning must be systematic, in addition to the project at hand and around the “great” guidance, reading and online courses is the most effective way, with a small amount of money for precious time, is very worthwhile.
On work Mentality
I always think for the company. When I am at work, I will not be perfunctory for the purpose of completing my own tasks. I am good at communicating with leaders frequently and providing them with the best solutions.
To dare to express themselves, the leadership is the first to raise their hands to answer questions, not afraid of shame, not afraid to say wrong, where their shortcomings on where, not because of frustration and fear.
Lying comfortably in bed today until tomorrow is to pay the price, everything is to have a long-term plan, who dare to say that finished today or this year, after it. Be prepared for danger in times of peace. No matter how good your post is, you should cherish it and be grateful.
There is a saying that the present is the best, can not get things can only use “not good” three words to describe, the work is lonely, but there will be prosperous.
“Bad birth makes up for hard work.” In addition, now is not brave, no one will describe a better tomorrow for themselves!
A set of personal learning framework video material free to share with you, I hope to help you!
Please forward it and add assistant VX: Yunduoa2019 after following it or scan the qr code below and follow the guidance of the assistant to obtain it by yourself
Please forward it and add assistant VX: Yunduoa2019 after following it or scan the qr code below and follow the guidance of the assistant to obtain it by yourself