Java interviewer experience: how to identify the real ability of candidates, how to show valuable skills

    I have been an interviewer for Java for some years. I have interviewed from school recruiting students to junior development to architects. Technically speaking, the criteria for candidates to pass the interview may vary widely, but it boils down to one sentence, that is, the candidate has met the requirements of the job introduction, and the relevant project experience has reached a sufficient number of years.

     Also as a programmer, I naturally hope that all candidates can successfully pass the interview, but as an interviewer, you must always be loyal to your duties and try to identify the true abilities of the candidates. During the interview, the candidate's resume is screened. That is to say, if the candidate can really be as described on the resume, then he must be able to pass the interview. But in fact, many candidates are just "resumes "Get it out" only. In this article, from the perspective of a senior interviewer, I will describe some key points of how to identify candidates in the interview, so that the majority of candidates can learn more about the preparation methods for the interview. In particular, for some students who have read several courses, you can compare the checkpoints given in this article to see if your current preparations can withstand the scrutiny of the interviewer.

1 Survivor's deviation, in fact, many resumes can't even reach the interviewer's hands

    The resume I got before the interview generally looks good. In fact, many resumes have been filtered out. I myself have done the job of screening resumes. In my previous blog post, I also analyzed which resumes can help you win. When it comes to interview opportunities, let’s talk about which interviews do not get interview opportunities.

    1 Cannot prove that they have sufficient work or project years in related technologies. For example, a position requires 3 years of Java development experience. Although you have given a lot of project descriptions on your resume, it is not possible to say in summary that you have 3 years of Java development experience, so an interview opportunity is estimated.

    2 Although the number of years is sufficient, the skills required for this post cannot be seen on the resume. For example, this post requires spring cloud to take out netty and dubbo. The project description on your resume is very fancy, with vuejs in the front end and ssm in the back end, and jvm tuning Experience, but the key technology is not there, then I guess there is no chance for an interview.

    3 There are obvious defects or contradictions in the resume, such as not working in the past six months, insufficient education, or non-computer-related majors and the skill description is too simple, or the project time and the time of the company where you worked before are not compatible.

    In fact, I personally feel that no matter how good your ability is, you can at least get an interview opportunity for a small company with your resume, as long as your resume meets the following conditions.

   1 For social recruitment, schools, majors, and academic qualifications are actually not of great importance. Some small factories or expatriates even pay more attention to project experience, but you must write clearly that you have sufficient experience in relevant technical projects (such as java), and It is necessary to further prove this with company and project experience.

   2 Write clearly that you are familiar with the technology in the job description. This is also a question of attitude. You should read each job description carefully, and then improve the project introduction in a targeted manner.  

   3 For some negative factors, you must add explanations. For example, if you haven’t worked in the past six months, or you have recently switched jobs too frequently, you can give objective reasons. It’s not that you are subjectively unstable or poor, but that there are other objective factors, such as changing jobs. Urban development, or postgraduate entrance examination.

2 Screening the main points of the project experience and the way to ask questions

    As an interviewer, after getting a resume, you will read through the company experience and project introduction to identify the real business project experience. What are more suspicious?

    1 For example, if you want to recruit a Java developer, if the candidate has training class experience, you need to confirm whether the previous experience is related to Java. Generally, the candidate has not done Java before, so the candidate's relevant work experience will not reach The interview is required.

    2 Small companies do large projects. For example, the scale of the company is dozens of people, but it took half a year to build an e-commerce system, and the distributed technology in it is all used, then this kind of project needs to be focused on screening.

    3 The most recent project description on the resume is generally more concerned by the candidates. In addition, you should also look at the project description one or two years ago to see if there is any contradiction in the technology. For example, the candidate used the technology two years ago and the recent one. The technology used in the project is the same, it is estimated that it is copied and pasted, which is revealing.

    The purpose of the above screening is to confirm the relevant technology or the years of experience, and to check the project experience years of self-editing or learning. For example, the salary provided by the company is for 3 years of project experience. If you replace it with a false experience, it will not be beneficial on the one hand. The project team, on the other hand, is not conducive to other candidates.

    These doubts need to be confirmed before technical questions. In other words, if the doubts are confirmed to be true, it means that the candidate's relevant technical age is not up to the standard, and there is no need to continue the interview. Then how to confirm?

    If this project team or other project teams require preliminary development, and there are indeed doubts on the candidate's resume, I will generally say clearly that your xx project looks like a learning project. Tell me the truth, if you tell me these projects are real projects , Then I will follow the real project aspect of advanced development. If you tell me it is a learning project, then I will use the standard aspect of junior development (or let the interviewer of other project teams), maybe the salary of junior development will be lower. But the problem is relatively simple. This way most candidates will tell the truth, which is convenient for both sides.

    If there is no junior development post, I will ask questions about these doubtful projects as follows.

    1 Confirm the number of people of the project, the project cycle and the client side, and whether the project is now online. For fabricated or learning projects, general projects will not go online.

    2 Ask about the way the project is packaged, compiled and deployed. Generally, projects are packaged with maven or gradle, or ant is used. Generally, they are deployed on Linux. For availability considerations, they will be deployed on multiple machines at the same time. If the project has been done, the candidate can say something, but if it is a learning project, the answers will be various. I have even heard of deployment on windows machines.

    3 Ask about the project management method, such as what tools are used to manage the version (such as git or svn, etc.), and how is the code review done? What tools are used to manage bugs (such as jira, etc.), what tools are used to draw UML diagrams, and how to do unit testing? (Such as junit) What specifications need to be paid attention to when developing code. These are real projects to know.

    4 Ask you how to output logs in your project, and how do you troubleshoot problems through logs. Generally, after going online, the logs are printed on linux, but if it is a learning project, you can only view the logs on windows.

    5 Generally, real projects will be equipped with at least two sets of environments, one for testing and one for online use, while only one set of learning projects (or even training class projects) will be used. So I will also ask accordingly, how did your project build these two environments, and how do you distinguish between the configuration files in the two environments?

    Through the above methods, I really screened out a lot of learning or fake projects. In fact, I know that the above screening methods have limited effects. For example, if a candidate’s recent project is real, but the previous project was self-edited or a learning project, he can use the rhetoric of the most recent project in the previous project. This You need to use the following screening method to ask questions. At this point, I dare not be fortunate, let alone gloat. I only sigh, because of my duty, I dare not take the trust of the company as a favor.

3 Ways to identify valuable technologies that are "grafted" onto real projects

    In fact, in my previous blog post about my development experience in training schools , it was mentioned that "half-true and half-false" project experiences are the most difficult to distinguish. How do you say this?

    The candidate's company is real, and the project is real, but the candidate used this real "shell" and added false technology. For example, in the recent project, the candidate has made only the most basic additions, deletions, and corrections, but combined with the project background and business applications, he added the distributed components, performance tuning, and JVM tuning that he learned from the video class. It can even be said that some programmers rely on this technique to upgrade to senior developers or architects without their own project experience.

    As an interviewer, when you see that the candidate has valuable experience such as distributed on the resume, you need to assess whether the experience is really accumulated from the project or only has theoretical experience. If the candidate still has elements such as "training class", "small company" and "changing career" in the resume, it is more important to assess the candidates, and the specific identification methods are given below.

    First ask about the background of the technology, such as distributed use in high concurrency, sub-database sub-table and database tuning used in large-volume data, please tell me which points in your business need to use these valuable technologies . Some candidates only learn valuable technology from online teaching videos, and they have no practical experience in the project. You can ask this question.

    The second question is about the most basic usage of technology, such as Redis caching. How to read data in Hash table mode. For Dubbo, how to set the timeout period and how to set message retransmission in Kafka. These problems are not difficult, as long as it is used You will know it later, but if many candidates can't even say this, I won't ask again later.

    If you can answer the second-level question well, then at least it means that the candidate has used it, and then the third-level question will follow. Ask what practical problems have been solved in the project, and be more specific. It always needs to be solved when using distributed technologies. For issues such as high concurrency, I will ask, what is the amount of concurrency in your project? In order to cope with this amount of concurrency, what components are used in your project, how do these components form a cluster, and how are they deployed on Linux?

    Taking Redis as an example, according to the above three-tier questioning method, I generally ask the following questions.

    1 What is the concurrency of your project business? Combining a business scenario, tell me, which Redis data structures are used in your project? This is asking about the use of technology after all

    2 In your project, what is the general cache time of Redis objects? (Generally, the project will be set, otherwise the objects will accumulate in the memory, resulting in OOM)

    3 How do you generally build Redis clusters? (In the project, for reusability considerations, clusters are generally used instead of stand-alone version) 

    4 How to do Redis persistence? How to do the message communication mechanism? How to pressure test? These scenes are likely to be used in the project.

    The above 2 to 4 points are about the use of technology. Generally, if you have used it in a project, you will use several of them. If you can't say it, you can say that you can only use theory but not technology.

    5 Combining with a problem encountered in the project, how do you troubleshoot Redis problems in the project? Specifically, how did you find the problem? (It's nothing more than monitoring, log, or user complaints) How to analyze the problem? (Usually look at the log), and then how to locate and solve the problem.

    For other components, such as dubbo, mycat, netty, kafka, etc., similar questions are used. The first question is how to use it in the project, the second question is about the details, and the third question is how to troubleshoot and solve the problem. Please note that at this stage I don’t ask about the underlying code, because the candidate is still in the stage of confirming the candidate’s skills. If the candidate cannot pass this level, he can only say that he has theoretical experience, so that the valuable skills prepared by watching the video and watching the information are basically in vain Up. Only when you can prove yourself with project experience can you be qualified to use the underlying code tuning skills and other details to make the icing on the cake.  

4 What points can the candidate say to prove that valuable technology has project experience (teach you how to prepare valuable technology)

    According to my experience, if you really reach the level of senior development or architect, most of the interviews can rely on their ability to pass the interview. As long as they combine the projects they have done and the problems that have been checked, they can prepare some technical details, because they can do the interview. There are too many highlights to show yourself. For some programmers who only add, delete, modify, and check for primary development, or programmers who do not have the opportunity to practice distributed components, due to lack of project experience and bright points, these people have great difficulty in challenging higher-level positions and large companies. Many people stay in low-level positions or small companies for a long time until they reach the age of 30 and 35.

    The so-called difficult ones will not, and the meeting ones are not difficult. In this part, some general technical integration project experience will be given. How do you prepare for the interview based on this? It is very likely that the interviewer will think that you have practical experience. After all, the interview is only 1 hour long.

    Combining technology with project requirements, make it clear that xx technology is used in xx scenarios.

    1 In the xx module of this project, I used Redis (or other distributed components). The reason is that the concurrency of this module has reached xx. It is not enough to simply press the request to the database, so I have to use Redis cache, or give other Must use distributed reasons.

   2 In the order processing module of this project, due to the large amount of data in some flow tables, Mycat sub-database and sub-tables are used. The specific method is to split the million-level xx table into 10 tables, and press xx The last bit of the field inserts the data into different sub-tables.

   Prepare some technical details, and put it out in conjunction with project requirements. The netty rhetoric is given below. As for other technologies, please organize them in a similar way.

   Between the acquiring and coupon modules in our offline mall project, we need to use netty to forward the message of the acquiring module. In the process of use, we use protobuf as the serialization protocol of netty and use it in the encode and decode methods. The serialization code is defined, and netty integrates the thread pool approach.

    Prepare some rhetoric to solve practical problems.

    1 In the test environment, through the cat component, we will find that our order module often finds that the memory usage is too high, and through some dump files during oom, it will be found that when the memory overflows, the Redis-related memory usage is too high. After analysis , It is found that Redis does not set a timeout when caching data, and I will talk about the solution later.

    2 In the test environment of our project, we often see the monitoring of slow SQL. After looking at the log, it was found that Redis did not cache empty or non-existent data, so all requests were sent to the database, and then how to change Caching rules.

    Here are some points that may cause problems: Improper setting of the thread pool will lead to OOM, and setting the Dubbo call timeout time will cause the downstream module to return too slowly, which will cause the entire link to be stuck, and the Kafka retransmission mechanism is not set. This leads to the phenomenon of non-idempotence, no matter how bad, it can be said that the transaction isolation level in Java is set too high and the database connection is full, or the collection and other objects are not used properly, leading to OOM problems. At any point, it can focus on "finding problems through monitoring", "locating problems by looking at linux logs" and "providing solutions to solve problems", combined with project case descriptions. 

5 Summary, technical case rhetoric + combined project experience description = successful interview

    There are many online related courses such as distributed technology and interviews, so some valuable technical rhetoric, such as MySQL cluster, Redis cache, and spike system integration, are not difficult to prepare. Even Java novices can make a point, but there are Many candidates prefer the rhetoric of the technology itself, and do not combine project preparation, or even know that it should be combined with project preparation. It can be said that this is a common problem of candidates in interviews. Due to the wrong method, some candidates will not be able to pass the interview no matter how much they prepare, or even have no chance to interview. Apart from other things, I have used the interview questioning method given in this article to really identify a lot of candidates who can only say but can't do it.

    In this regard, the interview rhetoric given in this article after introducing the "screening method", and even the method of "combining project preparation" behind the rhetoric, can be said to be a "key minority" in interview preparation: it does not require much time and effort. Energetic preparation, but not prepared for this kind of rhetoric, the probability is not an interview. It can be said that this "four-two-two-weight" interview technique is the value of this article, and if everyone can follow the routines given in this article during the interview and describe the technique in combination with project requirements, it will definitely improve everyone's interview. Probability of success.

    Please pay attention to my official account: make progress together and make money together. In this official account, there will be many wonderful articles.

Guess you like

Origin blog.csdn.net/sxeric/article/details/113173521