What do I ask when I interview new people?

There are many Java newbies among my readers. Newbies refer to young people who are learning Java and who have not worked for a long time. They often ask me a question:

How far do you have to learn Java to get a decent job?

Today, I will answer from my own perspective of interviewing new people. I will disassemble the knowledge points of the interview. I hope that after reading the article, you can find the key points of learning Java.

Learning is to find a job and get an offer. There is a formula for this:

offer = 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 does not mean 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 describes 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 java.io package, which has 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 IO
  • 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 at English, you can watch a video from Qianfeng Education:

Java introductory basic tutorial video - (IO framework), the address is as follows:

https://www.bilibili.com/video/BV1Tz4y1X7H7

1.5 Common frameworks

In addition to the syntax and libraries of the Java language itself, you must be familiar with at least one development framework to find a job.

The most commonly used frameworks in Java are:

  • Spring
  • Spring MVC
  • Spring Boot
  • Mybatis
  • Netty

In fact, Spring, Spring MVC, and Spring Boot all belong to the Spring system. Therefore, to find a back-end job, Spring must be mastered. With Spring's foundation, other Spring systems can be plug-and-play.

M in SSM - Mybatis is also best to master. If you have a database foundation, Mybatis is not difficult to learn.

Netty is a set of network frameworks. I estimate that there are not many opportunities to use it in the initial stage, but some interviewers will ask questions and take exams. Therefore, if you have spare time, it is recommended to take a look at it.

Relevant recommended books are "Spring 5 Development Encyclopedia", "MyBatis Technology Insider", "Netty Advanced Road: Follow the Case Study of Netty".

1.6 Commonly used databases

Generally speaking, to find a job, it is good to be familiar with a database. MySQL is recommended, which is the most common database (followed by Oracle).

To what extent should you be familiar? I think the minimum level is to know how to perform CRUD operations with MySQL. But this is not enough insurance, because many interviewers will have higher requirements on interviewers in order to prevent newcomers from deleting databases and running away.

Like in CRUD, R stands for query, which is the most common operation for back-end engineers. The right and good query is an important criterion for engineers to use MySQL . Therefore, the interviewer hopes that the interviewer can have a certain understanding of the MySQL indexing principle , and will often ask such questions during the interview.

In the same way, in addition to queries, CUD addition, modification, and deletion are very dangerous, which may affect performance and may cause various misoperations. Therefore, in order to ensure that people are recruited, and the database will not be manipulated randomly, during the interview, there is a high probability that the programmer will examine the understanding of the lock and MVCC in MySQL, and understand how to use it safely and reliably.

If you are not familiar with these, it is recommended to read "How MySQL Works", which is very thorough about MySQL.

1.7 Linux Basic Operations

Now as long as you want to be a back-end engineer, you can't avoid dealing with the Linux system.

You must be familiar with basic command operations, such as directory switching, setting environment variables, adding, deleting, checking, and modifying files.

In addition to these basic commands, understand the concept of everything is a file in Linux. And for some important concepts, such as: pipes, redirection, standard input and output, standard error output, etc., also understand what they are.

Sometimes, developers are also required to edit files directly on the online machine, so they will also use Vi/Vim to edit some files online.

In addition, if there is a problem with the server, at least the basic query performance commands should be used. For example, use commands such as netstat and vmstat to check the machine status.

For this knowledge, you can read the fourth edition of "Brother Bird's Basic Learning of Linux Private Kitchen".

2. Computer Basics

In addition to the technology stack, the interviewee is also required to have a solid computer foundation. This computer foundation is to examine the learning status of the interviewee in school. If your computer foundation is not good, it is a high probability that your own learning attitude and learning ability are at least unqualified.

For Java back-end engineers, let's pick two very important basic knowledge to talk about:

2.1 Computer Networks

Most of the time, the backend is a variety of interfaces and protocols, and the data is transmitted and received, so you always need to pay attention to network problems. If a back-end engineer is unfamiliar with TCP and has no idea about Http, who can believe that you are a qualified back-end engineer?

For computer networks, I recommend taking a good look at the book "Computer Networks (Original Book 7th Edition)" to build a complete network system in my own mind.

2.2 Operating System

After learning computer networking, the next step is to study the operating system. Learning the operating system is to learn how to coordinate and allocate various computer resources such as CPU, memory, IO, etc. competing for use in complex situations.

Once you understand the operating system, you will have a set of mature routines and methodologies for managing and coordinating resources in complex situations.

And these mature routines and methodologies are ultimately the core competitiveness that you can grow into an excellent engineer and deal with various complex business needs. Therefore, it is very important to understand the operating system.

If you are not familiar with operating systems, I recommend reading the book "Introduction to Operating Systems", published by People's Posts and Telecommunications Press and translated by Wang Haipeng.

3. Projects done

How do the interviewers test whether you have actually done a project in an interview?

In fact, it is quite simple. Just ask the business process of the core module in the project you are working on, and then pick out some technical difficulties or technical features in this business process, and focus on how you implemented it , and you can roughly judge whether you are I really did a project.

As for projects, the mainstream projects are as follows:

  • E-commerce
  • social contact
  • vertical platform
  • Audio and video platform
  • travel
  • portal

Before the interview, it is best to familiarize yourself with the core processes of different types of projects. For example, the core process of e-commerce is the shopping process, the core process of social networking is private chat and group messaging, and the travel platform is the process of people calling a car.

In these core business processes, there must be technical difficulties to overcome, such as:

  • Should the shopping cart be placed on the client or server side?
  • How do you solve the problem of placing the client, the sorting rules, and the update strategy of the cache?
  • On the server side, how do you consider the frequency of communication between you and the client, and the real-time update of customer products?

These have not been through actual combat, it is difficult to explain clearly to the interviewer.

Therefore, before applying for a job, it is best to participate in a project by yourself, learn more and ask more, and think more about why you need to do this in the project.

If you really can't participate, I recommend going to github to download an open source project, and then figure out the architecture and business process. For some things you don't understand, you can ask the author of the open source, or ask the senior who has already worked, or go to a professional Forum asked.

In short, be sure to find a project from the classified projects I gave to gain an in-depth understanding of the business process and the corresponding technical implementation, as well as the motivation behind the implementation. Only in this way will the interviewer really think that you have practical experience.

4. Extra points

After talking about the project experience, I will talk about the bonus items (technical blogs, open source projects, competition awards, etc.). The bonus items are especially useful when applying for jobs in large factories.

Whether you have an open source project or a blog post, it all says one thing - you are a person who loves to learn and love to share.

In big factories, one thing that is very important is sharing. Sharing experience, technology, and experience are all things that Dachang advocates very much. If you are in a group of candidates, you have extra points, and others don't, it is self-evident who the interviewer will choose.

Therefore, we must regularly export something to the public, such as articles, open source projects, and competition sharing. What can be exported? In this way, the interviewer can see the evidence of your strength and your open attitude , so as to have more advantages in the interview.

end

Well, having said so much, in fact, in a word, the knowledge reserve must be sufficient. It depends on the company you are applying for, the position you are applying for and how good your competitors are.

Some people may feel that the above knowledge points are too much, or some people may feel that it is not enough. In any case, I hope this article can help newcomers to understand the key points of learning, and I hope everyone can keep learning.

You can only look effortless if you work hard .


Hello, I'm Shimonai.

The technical director of a listed company, managing a technical team of more than 100 people.

I went from a non-computer graduate to a programmer, working hard and growing all the way.

I will write my own growth story into articles, boring technical articles into stories.

Welcome to pay attention to my official account. After paying attention, you can receive learning materials such as high concurrency, algorithm brushing notes, and classic books.

{{o.name}}
{{m.name}}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324143323&siteId=291194637