I heard that programming languages , What is often used is 20％ Technology . stay Java In this language , this 20％ What is included ？ I've been training for two months , There are still two months to go , In two months' time , Find one Java The job of a junior programmer , What must be mastered , What can I learn and sell now ？ A complete Javaweb project , What are the specific modules , What are the technologies used in each module ？
Suggestions from Xiaobian
It is suggested that we should not pay attention to these problems which are often not used frequently ！ The technology is constantly updated , There is no end to learning , Although each technology stage has corresponding common technology to learn , But learning a few individual technologies is not enough . If you want to find a job, you have to learn to be honest ,
operating system 、 The basic knowledge of computer network , After work, I almost forgot . however , I think I have to learn from myself . Many people say that data structures and algorithms are like the internal skills of a programmer , You may not be able to see it earlier , When you wait until later, you will be dwarfed by those who are good at algorithms and data structures . therefore , Besides looking for a job, I think . Do a good job in basic knowledge . If you have to learn the commonly used , Personally, I think ：Spring、Hibernate、Mybatis Other framework 、Dubbo、Zookeeper、 Common message queues （ such as Kafka、RocketMq） Use 、 cache Redis、MySQL It should be everything Java Junior and intermediate programmers must have the necessary skills ！
JAVA What techniques should be learned ？
Many beginners or experienced developers will fall into this quagmire ：“ I don't know what I should learn ？”.
I think the easiest way is to go to the recruitment website and see what skills the company requires , For example, elementary Java The recruitment requirements of engineers are affirmative and senior Java The recruitment requirements for engineers are different , Ali's Java The recruitment requirements of engineers are affirmative and Common company Java There are different recruitment requirements for engineers .
intermediate Java The knowledge that programmers must master
- Master data structure 、 Algorithm 、 operating system 、 Basic knowledge of computer network
- Have a good command of Java Programming 、 be familiar with Java High concurrency development means 、 Yes JVM virtual machine （Java Memory area 、 Virtual machine garbage algorithm 、 Virtual garbage collector 、JVM memory management ） There's a certain amount of research
- Have a good command of SOA Distributed system development , With optimized system performance 、 Practical experience in improving system concurrency and system availability
- Have a good command of Spring、MyBatis、SpringBoot And so on , be familiar with Spring Principles like Spring Bean The creation principle of 、IOC and AOP Principle . in addition , Because now the basic companies are directly using Spring Boot , Therefore, it is suggested to start directly Spring Boot.SSM Even if the! ,Spring You can still have a look at . Of ,《spring actual combat 》 This book will do .
- Have a good command of Dubbo、Zookeeper、 Common message queues （ such as Kafka、RocketMQ） Use
- be familiar with Linux Use of the system , stay Linux The system has practical development experience
- be familiar with MySQL Use of database 、 common SQL Sentence writing and common optimization methods
- Have a good command of Redis understand Redis Common data structures 、Redis Distributed caching and Redis The practical application of distributed lock
- master Spring Cloud +Docker+k8s
- understand Hadoop In ecological related technology HDFS、Storm、MapReduce、Hive、Hbase
Let's take a look at Tencent Java Recruitment requirements for senior development engineers , The annual salary is at least 40w Let's get started ！ As can be seen from the recruitment information below , remove Java Basics / aggregate / Multithreading and all that , These capabilities are particularly important ：
- Basic knowledge such as jvm ： Not only understand theory, but also practice ;
- Object oriented programming capabilities ： I understand that this includes more than “ object-oriented programming ”, also SOLID Software design principles .
- Framework capability ： It's not just easy to use , We need to understand the principle and mechanism ！ Understand the principle and mechanism of the foundation is to learn to see the source code .
- Distributed system development capability ： cache 、 Message queuing and so on , The key is to be able to use these technologies to solve practical problems instead of just talking about them .
- good sense : Like and try new technology 、 Pursue elegant code and so on .
From the perspective of fresh students ： We still watch Alibaba's official website related new students Java Requirements for Engineer Recruitment .
Combined with ALI 、 Tencent and other large companies Java Back end direction / The requirements of the new interns in the back-end direction are as follows to enhance your personal competitiveness ：
- Participated in the competition （ The gold content is too high ACM ）;
- Proficient in data structure and algorithm ;
- Participated in actual projects （ For example, the school website ）
- be familiar with Python、Shell、Perl One of the scripting languages ;
- Familiar with how to optimize Java Code 、 Awareness of writing better quality code ;
- be familiar with SOA Distributed knowledge, especially theoretical knowledge ;
- Be familiar with the basic knowledge of the framework you use, such as Spring;
- High concurrent development experience ;
- Big data development experience, etc .
Since I came to University , Many of my experienced teachers often tell us ：“ We must have our own specialty , Whether it's technology or other capabilities ” . I think this sentence really makes sense ！
I just mentioned a specialty , So here's another point ： The company doesn't need you to know everything , But in some way you must have the advantage of being too ordinary . In other words, we don't need to master every technology （ You don't have the energy to master so many skills ）, But we need to study a certain technology in depth , We can have a brief understanding of other technologies .
Java Programmer must book list
《Head First Java》 It can be said to learn Java Of the enlightenment books , It's especially suitable for beginners to read, of course, it's also suitable for us to use it to review the past Java Knowledge point .
《Java Core technology volume 1+ volume 2》（ recommend ）: Two great books , The suggestion is a little Java Read after the foundation , The introduction is more in-depth , Very recommended . These two books are generally used to consolidate my knowledge , It's two good books for you .
《JAVA Network programming The first 4 edition 》 You can systematically learn some concepts of network and network programming in Java The use of .
《Java Programming idea ( The first 4 edition )》 Most people call it Java The Bible of the realm , But I don't recommend beginners to read , It's a little dissuasive . It's better to read after a little basic .
《Java The beauty of concurrent programming 》 A very good book , The explanation of each knowledge point is great .
《Java The art of concurrent programming 》 This book is not very suitable for Java Introduction to concurrency , Need to have a certain JVM Basics . I feel that some things are quite in-depth , Recommended reading .
《 actual combat Java High concurrency programming 》 The quality of the book does not say , I recommend you take a good look at .
《Java High concurrent programming details 》 It's very detailed , But it may be a little too verbose
《 In depth understanding of Java virtual machine （ The first 2 edition ） Zhi-ming zhou 》 As an introduction Java The knowledge of virtual machine is good .
Students who need e-books can Am I Get it for free ！
Recommended video tutorial
This is the end of the article ！
Finally, the welfare from Xiaobian
Here's a little made up Java High concurrency must see 【Java The art of concurrent programming 】 Information package , The partner who needs to get it can Am I Free collection , The world of programming is always open to all who love programming , It's a freedom , equality , A shared world , I always believe that .
Some data and pictures ：
Like the sharing of Xiaobian, you can like to pay attention to it , Xiaobian continues to share the latest articles for you and Welfare claim