Last week, a reader wrote me, “Brother, should I choose Java or PHP with zero foundation?”

I missed it in a flash! PHP? The best programming language in the world?

Later, another reader asked me in a private letter, “I’m confused. I don’t know whether to choose front-end or Java?”

It’s really hard to choose, because “men are afraid of entering the wrong line, women are afraid of marrying the wrong lang”, beginners struggle with this problem is understandable.

PHP was the king in the wild days of the Web, and even Java might have to give in. But in recent years, PHP has been a quick outsourcing project, and if you want to add more business and improve performance, PHP is really difficult.

So, in keeping with the rules, I recommend Java. We’ll deal with the front end later.

For the students of Programming New Village, the most important thing is to find a job, right? If you told me that you learned programming by virtue of a passion, I would really doubt it.

There’s no doubt that Java is number one when it comes to getting a job!

I just went to TIOBE and captured a graph of how programming languages have changed in the last 10 years.

As you can see, Java has dominated this list for many years and will continue to do so for many more. A programming language can have such tenacious vitality, he must have advantages that other languages do not have, its inherent competitiveness is not replaced by other languages.

If you decide to choose Java, take a look at this GitHub 115K + Tutorial that covers all the basics of Java. It includes Java syntax, Java Collections Framework, Java IO, Java concurrent programming, and Java Virtual Machines.

GitHub star standard 115K + Java tutorials, super hardcore!

Especially for non-major students, the most difficult thing is how to enter this industry first, if you can’t even get into the door, can’t find a job, then how hard, what’s the use?

As for the students of the major class, it is very straightforward that our purpose of learning programming is to find a job, which is to rush to the high salary. If we approach graduation, if we can not even find an internship job, how uncomfortable it will be!

No other programming language can claim to be number one if It humbly claims to be number two in Java jobs. Domestic first-tier Internet companies, such as Ali, Meituan, JINGdong and so on, all use Java at the back end. Not to mention small and medium sized companies, Java’s rich open source libraries, with a vibrant and aggressive Java community, can help developers avoid reinventing the wheel, especially with Spring Boot, which makes building standalone applications a breeze.

What’s more, the salary of Java programmer is objective, take Beijing as an example.

Although I was trained, BUT I always feel that, no matter whether trained or not, as long as we find the right learning route, and then make efforts to find a satisfactory job is not a dream. For the programmer industry, you pay a minute of effort, will reap a return!

Just found an online learning Java website, really very good, cut a picture to give you a feeling.Style thief comfortable! They can also do tasks and play games, and study more easily. Remember, programming is a craft, and you can’t learn it without doing it. Try to type through all the code on your site and you’ll find yourself getting ahead in technology.

Codegym. Cc/useful/quests/t…

Java foundation, in addition to data types, operators, expressions, output and input, program structure, control loops, arrays, methods, parameters, IO, exception handling, generics, annotations, reflection these partial basic content, two difficulties, one is concurrent programming, one is Java virtual machine.

For concurrent programming, I’ve drawn a mind map that I can walk through one by one.

Java VIRTUAL machine involves Java VIRTUAL machine memory structure, garbage collection strategy and algorithm, memory allocation and reclamation strategy, Java VIRTUAL machine performance tuning, class file structure, class loading mechanism and so on. You can first read Zhou Zhiming’s In-depth Understanding of Java Virtual Machine. It may be painful to read at first. But if you bite the bullet, the interview will be much easier. If you can solve some performance problems after work, your boss will be impressed.

Learning Java foundation, you can go to the B website white whao training institutions video, such as silicon Valley and power node. However, one of the problems of the videos produced by training institutions is that they are too many in content and focus too much on the basics. The real core content is not much and not deep enough. Why do you say so? Let me give you an analysis, you will understand.

Take the power node:

www.bilibili.com/video/BV1Rx…

Section 844, there are so many cats in the tower. What should we do? You can skip, or double speed, the following:

  • The JDK installation
  • Configuration of the PATH environment variable
  • variable
  • The data type
  • Loop control statements if, if-else, while
  • MyEclipse
  • , etc.

I didn’t finish the list, there are more, you should pay attention when you look at it.

When you encounter some knowledge points that you are not familiar with or cannot understand, you can search by keyword. Google is the first choice, Bing is the second choice, wechat search is the third choice, and Baidu is the fourth choice.

CSDN SEO is doing well, and the quality of some articles is very helpful for learning (note, I am blowing CSDN rainbow fart, hahaha).

After Java, let’s talk about the front end.

In recent years, because of React and Vue, plus Android, Flutter, wechat public account, wechat mini program, etc., the front-end has really developed well, which can be described as a flourishing era.

But don’t make the choice with a bias, especially one that says “the front end is easier than the Java back end,” and you might lose a promising candidate for the Java back end. As my roommate said, it is not advisable to think that it is too late to learn Java to find an internship, but it is more likely to learn the front end. Any choice you make should not be superficial.

Java back-end learning advice I have said in front, next focus on talking about the front end, see what the front end needs to master the knowledge points, I try to comb some of the complete.

Front-end development is a very special industry, with a short history, but a lot of knowledge (especially in recent years), and a speed of iteration that is unmatched by any other technology. At the same time, front-end engineer has also become one of the important positions in the R&D system.

1) JavaScript

JavaScript should be the front-end food guy, both depth and breadth. Basically, the mainstream front-end frameworks are based on JavaScript development, such as Vue, is open source JS framework by the front-end god @Youyuxi; React, for example, is a JAVASCRIPT library developed by Facebook. The following points are essential for a front-end developer to master.

2) HTML and CSS

Open up any web page and press F12 to see a lot of HTML and CSS code. A web page is not beautiful, can get users like, in addition to UI design, in addition to JavaScript to control logic, the rest is CSS style.

3) Operating environment

The browser, as a runtime environment for JavaScript, provides it with: document Object Model (DOM), describing methods and interfaces for handling web content. A qualified front-end needs to know:

  • W3C compliant DOM manipulation provided by the browser
  • Browser differences, compatibility (Chrome, Safari, IE, etc.)
  • You can use Node.js to build a front-end environment
  • You can use Node.js to manipulate files, manipulate databases, and more

Note: Node.js is a cross-platform environment that can run JavaScript on the server

4) Framework and class libraries

I’ve learned Flex, ActionScript, jQuery, Bootstrap, TypeScript, React, Vue. Some of them are obsolete, some of them are going to be obsolete, and some of them are mainstream.

Oh, and there’s Flutter, an open-source mobile app development kit developed by Google for Android, iOS, Windows, Mac, Linux, and Google Fuchsia.

I also wrote a recommended foreword for Jd’s Introduction to Flutter, although I only left this on the cover.

There are also a lot of front-end UI components, such as Ant Design and EChart, as well as GIS development framework, such as BAIDU Map API, and visual development framework, such as Three.js and D3.

The front end also needs to know some computer basics, such as:

Although most of the front end of the data structure and algorithm this part of the knowledge is lacking, or even conflict, but really want to touch a higher ceiling, data structure and algorithm is a must.

In addition, to be proficient in the use of browser debugging tools, such as Google Chrome, wechat based on Chrome kernel magic modified version can be used to debug the public number and small program debugging tools.

The front-end is no longer simply writing JavaScript and CSS, but also needs engineering. Therefore, you need to understand the management principles of dependency packages such as NPM and YARN, and the compilation principles of the front-end packaging tool Webpack, etc.

Oh, and performance tuning. Especially the launch page, the first time users see, if the loading speed is slow, the response speed of the page is slow, the user may directly leave.

When I was working on a small mall of wechat public account, I did not lose much effort in the loading speed of the home page, such as compressing CSS and JavaScript, using CDN content distribution, reducing the number of HTTP requests, lazy loading of pictures, and some caching at the back end.

Such a front end of the knowledge system, is there no longer that stereotype, the front end is really so simple? People who know will never say easy.

Post a bytedance interview question for those of you who want to go the front end route.

There is also a front-end skill map:

There is no end to learning!

Finally, just a few words.

What a surprise! Angry!!! There are schools still teaching Java Swing this article will be so popular! Totally exceeded my expectations!

Many people have sprayed me in the comments section, making me laugh ~~~~

There is no need to! There is no need to! There is no need to!

I have no intention to let the school give up teaching Java, and I have no intention to let the Intellij IDEA team not to use Swing development. I just say two words from the heart, which can be heard, and will not feel loss after graduation. After all, there are still some problems in domestic computer colleges and universities. I feel terrible!

The school can not give, I gave, you listen in, after many years you will thank me to say the truth, listen to not go in, want to spray, at will, really, happy.

In the end, again, rather than spending time on useless knowledge, it would be better:

1) Obsession with data structures and algorithms

Algorithm questions, like the eight-part essay recited in the imperial examination era, are representative works that knowledge changes destiny. If you do not brush, you will pass the algorithm, because not only to test, but also to improve your programming skills. I recommend you BAT big guy’s brush notes, be sure to download down to brush (you can click the link below to download).

What the hell, BAT’s writing is so good!

2) Keen on ACM

3) Try programming in Unix and Linux

4) I am interested in network programming and multithreaded programming, and have a deep understanding of TCP/IP, HTTP and other network protocols

Well, that’s all for today’s sharing. Blow a cow force, two elder brother influence has spread to both sides of the Strait, is serving in the military service of the little brother, refueling ah!

I am the second brother ah, hope to give the younger students some help and inspiration, remember to praise yo ~