What skills do Java programmers need to get a job?

thumbnail

Learn Java, in order to find a job, let's look at a formula:

Find a job = technology stack required for the job + basic computer knowledge + project experience + bonus points

Let's look at each of these aspects on the right-hand side of the formula, respectively.

  1. The technology stack required for the job

The technology stack required for the work is often related to a specific language and supporting peripheral tools.

For the Java technology stack, it can be divided into the following aspects:

1.1 Basic syntax

The basic grammar in the interview is not to say that you can use for loops, if else statements, etc. to write code, but to use the basic grammar to write more reasonable, more standardized, and more readable code.

For example, is it possible to keep variables in the proper scope? Are you familiar with the suitable application scenarios for String, StringBuffer, and StringBuilder?

If the foundation of Java is still weak, it is recommended to read "Effective Java" so that you can really write good code.

In addition, in order to write high-quality engineering code in a more standardized manner, it is recommended to study Ali's "Java Development Manual".

1.2 Common data structures

If you want to get a job through an interview, you must master some common data structures in Java. The most commonly used are the following:

LinkedList

ArrayList

Stack

ArrayBlockingQueue

LinkedBlockingQueue

HashMap

LinkedHashMap

TreeMap

ConcurrentHashMap

HashSet

TreeSet

These data structures listed above, not only to use them proficiently, but also to understand their principles.

Knowing the principle can prove that you can use these data structures flexibly and correctly. Therefore, the principles of these data structures are often asked in interviews.

If you are not familiar with the principles of these structures, here is a very old but still useful book "Java Generics and Collections", which introduces the implementation of various collections in Java in detail.

But there is no Chinese version of this book. If the English book is very painful to read, you can go to the Internet to search for some good articles, and you can achieve the same effect.

1.3 Asynchrony and Multithreading

Now, as long as you write high-performance code, you cannot do without asynchronous; as long as you work on a multi-core CPU, you cannot do without multithreading to execute tasks in parallel. Therefore, asynchrony and multithreading are core skills that a backend engineer must master.

In order to achieve the level of finding a job, I think at least the following conditions are met:

Can accurately understand the concept of process and thread

At least understand the concepts of race conditions and deadlocks

Need to understand the memory model of the JVM

Understand common multithreaded programming patterns

For asynchronous and multi-threading, I don't need to say more. It is definitely recommended to read "Java Concurrent Programming Practice" first, and then there is a book "Illustrating Java Multi-threading Design Patterns". After reading these two books, the interview is asynchronous and multi-threaded, and you basically have no problem.

1.4 IO operation

The IO operation mentioned here mainly uses Java to read and write files.

Java's IO is in the http://java.io package, and there are about 40 stream classes. In fact, you don't need to master every one of them, the most basic requirements are:

Understand the concept of IO streams

Which are byte streams and which are character streams in O

Which are node streams and which are processing streams in IO

Which IO streams can be buffered to improve performance?

After understanding these things, we can achieve targeted development in actual development, so as to make good use of IO.

It is recommended to read the two books "Java IO" and "Java NIO". Among them, "Java NIO" has a Chinese version, but "Java IO" does not. If you are not good in English, you can read the following tutorials to help you complete the fastest learning process.

Related Posts