Let's talk about "How do I recruit programmers"

Source: Internet
Author: User
Tags how to write test cases

(Do not use it for commercial purposes. Indicate the author and source when reprinting)

 

From:Cool ShellHttp://coolshell.cn

Original: Http://coolshell.cn/articles/4506.html, http://coolshell.cn/articles/4490.html

 

 

 

I have previously written an article "How do I recruit programmers?" (many people have replied to this article on csdn ). Today, I want to talk about recruitment and interview for the following reasons:

  • I have been engaged in a lot of recruitment work for nearly half a year and have some new experiences in the interview.
  • Cool shell recently published several interesting interview questions (interview question 1, interview question 2, and interview question 3), which gave me some thoughts from the reply.
  • One of my colleagues recently interviewed a company. He shared with me the interview with a doctor who gave me some thought.
  • On Douban, I saw "zhihu's experience of someone writing an interview with Douban's product manager is a pleasure" (the highlight is that the interviewer appeared to know and answered in person)

So I want to write down my new ideas again. As before, this article is also for the interviewer. In my opinion, the quality of the interview lies in the interviewer rather than the interviewer. The following are some of my enhanced views on how I recruit programmers. (For some comments, please refer to the next article)

In order to ensure the continuity of my article, let me reiterate the important points mentioned above.

  • Only the real and natural performance of the applicant can learn the most authentic things.
  • What matters is not knowledge, but the ability to search for knowledge.
  • What is important is not the answer to the problem, but the ideas and methods for solving the problem.
Operation, knowledge, experience, and capability

We have a lot of interviewers who seem to be confused about what is operational ability, what is knowledge, what is experience, what is ability, which leads our interviewers to often mistakenly draw conclusions on the subject, I don't think anyone who can tell the story is qualified to be an interviewer. Therefore, it is necessary for me to clarify this question first.

 

  • Operation. Our interviewers cannot tell what operation skills are, what is knowledge, and what they even think operation skills are knowledge or even experience. For example, they will ask the following question: what does final in Java mean? How can I view the CPU usage of a process? How to compile an MPS queue? How can I view the program path of a process? What is the copy and paste command in VI? Including what is the object-oriented XX model. And so on. I thought,These operations manuals or Google-related information can only describe the technical skills of this person, but cannot describe his knowledge or experience..
  • Knowledge. Knowledge is the embodiment of a person's cognition and learning. It may be some basic concepts and knowledge. For example, the advantages and disadvantages of TCP and UDP are compared, and the advantages and disadvantages of linked list and hash table are compared. What is heap? What is stack? How does one communicate with each other? What are the advantages and disadvantages of processes and threads? What are the advantages and disadvantages of synchronization and Asynchronization? What are the main principles of the object-oriented XX design model. I thought,"Knowing the truth" is only an operating technology, and "knowing the truth" is the real knowledge.. A lack of knowledge does not mean that he cannot work and can cope with his work only by operating skills. However, lack of knowledge will definitely limit your experience and abilities, and will also affect the quality of your development.
  • Experience. Experience is usually related to one person's experience. The scope of a person's knowledge, the things that a person has experienced, usually become a manifestation of a person's experience. During the test, we will ask these questions: What are the most difficult problems you have solved? How did you design this system? How did you debug and test your program? How do you optimize performance? What kind of code is good code? And so on. For people who have not been working for a long time, experience and what they have done will indeed become the main factor in their experience, especially those with an industry background. However, I thought,Experience may be more about your use and control of knowledge. It is your reflection and summarization of what you have done, and your learning, observation, and communication with others..
  • Capability. A person's ability is not capable of knowing little or having no experience.A person's ability is an attitude, character, idea, idea, behavior, method, and style of doing things..Knowledge and experience are only a matter of time if you have enthusiasm, ideas, good behavior methods, and good behavior styles.. For example: learning ability, professional research spirit, analysis ability, communication ability, organizational ability, problem investigation ability, cooperation ability, etc. Therefore, for a newbie, his knowledge and experience may be limited, but it does not mean that he has problems with his ability. But for a veteran, if he has problems with lack of knowledge and experience, it is usually a problem of its ability. You may not be lucky for the moment, but I don't believe you will be lucky for a long time. If so, you will inevitably have some problems that will make your capabilities unavailable. At this time, "No experience" is only an excuse for "no ability.

I do not deny that these four things are important to a good programmer. However, through the above analysis, we can know that capabilities, experience, and knowledge need to be treated separately. Of course, these things complement each other. Your abilities allow you to gain knowledge, your knowledge gives you more experience, and your experience changes your thoughts and ideas, to improve your capabilities.During the interview, we need to clearly understand that the applicant's operation skills, knowledge, and experience are only necessary for his or her ability, not sufficient. We should pay more attention to the applicant's ability..

  • If the interview only tests this person's operation skills, the interview will fail completely. This is an unqualified interviewer.
  • If the interview is just about to examine the knowledge and experience of this person, the interview will be half successful. Because you understand basic knowledge and what you have done, it does not mean that you fully understand his true abilities.
  • If you are able to focus on your abilities (attitudes, personalities, thoughts, ideas, behaviors, methods, and styles) when learning about your knowledge and experience ), if you can correctly assess your abilities, your interview will be very successful.

It may not be appropriate to use these four words to describe a set of things, but I believe you understand what I want to express.

Do not give a superficial understanding of algorithm questions and smart questions

Many companies will give some algorithm questions, some mental questions, or some design questions during the interview. I believe that algorithm questions or mental questions are the most annoying thing for programmers during the interview. Many people are very BS. The interviewer asks algorithm questions because they think these algorithm questions or smart questions are not used in actual work. But here I want to say,There is nothing wrong with difficult questions about algorithms and wisdom. Many of the wrong interviewers simply understand the difficult questions in the interview with superficial or wrong purposes.. They believe that the person who can make algorithm questions and smart questions is the smart person and the competent person. This idea is really superficial.

Actually, being able to solve a problem does not mean that this person is able to solve the problem at work. You can think about it. Primary school Mathematical Olympiad questions may be more difficult than these questions, but it does not mean that the Oracle experts can actually work. You may think that the students with high scores in your class are not necessarily smart or competent. On the contrary, this kind of person is often a nerd trained under exam-oriented education.

Therefore, I think the process of solving the problem is more important. You should mainly view the ideas, methods, and knowledge of the candidate through solving the problem. Do you have any experience, whether the interaction and communication with you are smooth, etc. These are the key points to be observed. Of course, the answer is eventually to be found.

I think the real idea for the interviewer to solve a problem is:

  • Let's look at his knowledge application and understanding.. For example, will he use some basic data structures and algorithms to solve algorithm problems?
  • Let's take a look at his ideas and ideas.. The answer is secondary. his thoughts and actions are important.
  • Let's see how he discussed it with you.. Take the interviewer as your future colleague, take it as your work partner, solve the problem together, and discuss it together so that you can see if everyone can work together.

These aspects are the ability to examine candidates (ideas, methods, attitudes, personality, etc.), and take into account the experience and knowledge of the interviewees. Below are some interview points:

  • Will the applicant break down or simplify the problem when solving an algorithm question. This is the analysis capability.
  • Will the applicant use some basic knowledge, such as data structure and basic algorithms, when solving algorithm questions. This is knowledge.
  • Do you feel the professional research spirit and good communication skills of the candidates during the discussion with you.
  • The applicant's mentality and attitude towards this algorithm question. For example, whether there is fear in the interview.
  • Is the candidate's ideas and methods suitable for solving problems? Is it a scientific method?
  • And so on.

In the process of solving the problem, it is the ultimate goal to examine the applicant's abilities, rather than making it difficult for the applicant. Otherwise, you are just an arrogant and ignorant interviewer..

Simulate challenges and capabilities in practice

As an interviewer, you should think more about your work and your growth experience. This will be very helpful for your interview. What is the actual situation for you to solve the problem at work? What is the actual situation of your code writing? What is your growth experience? How do you acquire knowledge and abilities? Who do you like to work?I believe that it is not difficult for you to find that the actual situation in your work is exactly the same as the interview situation. How can you evaluate a person's abilities with an interview that is different from the actual situation??

Therefore, the ideal interview is to work together for a period of time. Of course, this operation is almost impossible during the recruitment process. Therefore, our interviewer should try to simulate the interview process as usual. We will discuss and solve a problem, review what he has done with the applicant, and discuss and learn from each other in the course of the Foundation. The following is an example.

We know that it is not difficult to develop software for software development. The following are the challenges:

  1. The maintenance cost of software is much higher than the development cost of software.
  2. The quality of software has become more and more important, so testing has become more and more important.
  3. The demand for software is always changing, and the demand for software is always increasing at 1.1 points.
  4. A large amount of code in the program is processing incorrect or abnormal processes.

So why can't we simulate this process when we examine the candidate's code capabilities? For example, it is very easy to implement a atoi () function for a candidate, and then add new requirements or cases continuously, such as processing symbols, processing Non-numeric letters, processing space, processing hexadecimal, processing binary, processing comma, etc. We need to see how the applicant modifies his code, how to Write test cases, how to refactor, and whether his code is still so easy to read and clear as more and more things are being processed. If you only want to examine the encoding capability, you can ask this question within an hour. Real Programmers are dealing with such things every day.

If you want to examine the design capabilities of candidates, you can also do the same. Constantly add new capabilities and new demands. Let's take a look at the interviewer's ideas, ideas, analysis methods, and whether your discussions are smooth. If you don't say that you are at the point, your thoughts are unclear and what kind of knowledge will be applied, what is his experience in designing this system? Is his design still so good in the face of constant changes and increasingly complex requirements?

Of course, because the time is short, you cannot have too many complicated problems. This requires you to carefully design some representative problems.

 

Treat candidates as your colleagues

Some corporate interviewers ask you an algorithm question during the interview and then wait for you to answer the question. If you give an answer, they will ask you if you have a better answer, if you give the correct answer, they will ask you a more difficult question, so the loop goes on. They rarely give you tips, or even keep asking you questions and challenges, making candidates very nervous.

In addition, there are many questions that do not have a standard answer, or that there are many ways to describe the same answer. Many interviewers will think that you have not answered the answer they want, as a result, you may not be able to behave as you do, and you may feel that your abilities are faulty. It's ridiculous. For example, when a friend of mine is answering an asynchronous question, the example shows that an asynchronous call is returned after it cannot be processed, and a callback function must be passed to the caller so that the callback notification result can be completed. There is nothing wrong with this answer, but it does not match the answer that the interviewer wants. The interviewer is not satisfied with this, and thinks that my friend still needs to read more books.

I believe most interviewers will do this. I want to ask such an interviewer,Have you tried to interview your colleagues? In your work scenario, will you use the interview style to communicate and speak with your colleagues?Let's ask ourselves the following questions:

  • How did you solve problems at work? Will you discuss it with others? Can you get the optimal solution in 15 minutes?
  • When you solve the problem at work, will someone ask you and put pressure on you?
  • Will you embarrass your colleagues at work? Will it make your colleagues nervous? Do you think you can do a good job in a tight state?
  • At work, you feel that your colleagues' answers are not the answers you want, but they do not match your answers. Do you think your colleagues' answers are not good?
  • What is your growth process? Is it growing under pressure and every day when we are asked by hostages?
  • Everyone knows the disadvantages of exam-oriented education in the school. Do you think your interview is a kind of test-oriented?
    (Check if so many candidates are doing all kinds of algorithm questions. Isn't this a test ?)

Think about your daily work, ask yourself these questions, think about your own growth process, and think about how you get along with your colleagues, think about what you are doing in your daily work and believe that you can draw conclusions on your own.

If you think of candidates as your future colleagues, your interview will have the following benefits:

 

  • The interview atmosphere will be very good. Candidates will relax, behave naturally, and accept the real status.
  • Communication and interaction during the interview (instead of answering questions) will give you a more comprehensive examination and understanding of a person.
  • Non-test interviews will help you learn more.
  • Only by truly understanding a person can you make a true and correct conclusion.
Learn from candidates

The following are several points of view:

  • The interview process is a process of mutual learning, not a difficult process for you to interview.
  • One question and one answer is a rigid process. It is a good interview process to discuss and learn from each other and have good interaction.
  • What the interviewer wants to prove is not how strong and intelligent you are, but how to tap into the strengths and abilities of candidates.
  • The interviewer sets a standard answer to his questions to see what the applicant can bring to you.
  • Candidates have always studied, rather than being difficult.

No matter how much you are, it's too easy to beat you. It is not an aim but a difficult person. A difficult problem is just a means to understand the applicant's abilities, not the whole interview process..

I don't know if you like some sports? Such as playing football, playing basketball, badminton, playing chess, etc. What kind of people do you want to play? Is it poor or strong? So,The real purpose of the interview is to learn from the interviewer and enjoy working with the interviewer..

For a team, if everyone has the same ideas, ideas, and tendencies, the team will eventually be a closed team, if you cannot really accept people with different ideas or those with different ideas, you will lose the opportunity to make progress.If your team is always recruiting people like you, how can your team have the out-of-box idea? The world is beautiful because of its difference.

In addition, for the company,If you recruit more people than you already have, as a company, how can you have better people to make your company better??

Therefore, the interview should be a process of learning from the interviewer. Of course,If you cannot learn anything from him, teach him something. In this way, even if the interview fails, the interviewer will be happy to accept it.. Otherwise, it will also damage the image of you and your company if you say something bad.

Some related comments

Below are some of my replies based on some interview questions of cool shell, my friends' experiences, and some comments about this article about the product manager of Douban. You can see that I see something unreliable from these places.

Answers to questions from cool shell

Let's talk about the "matchstick Interview Questions" in cool shell. This interview question is actually very boring. Measure the test taker's knowledge about the code logic. Because a visible reply answer is set, the number of replies in this article reaches. From the reply, I can see:

  • Some friends can't think of the answer directly. I can see that some friends are used to acquiring knowledge rather than thinking independently. There is even fear of difficulties. On the other hand, we can see that our education is not very poor.
  • Some friends don't think all about it. From this point of view, I think it is normal, especially when I come up with two ideas. I can feel that they have tried hard and may have made some attempts. Pretty good. Unfortunately, I don't see how you think. I drew a picture on paper, compiled a program, ran it, or something else. In this way, I will know more about you.
  • Some of my friends' answers are incorrect. This shows that such friends may not like testing, often take it for granted, or are impulsive and not rigorous enough. How much effort can such a simple program be spent on verification?
  • A few friends did not understand the question requirements. This shows that such friends are too careless and may be expressed as misunderstanding of requirements and others' words at work. Communication problems.

Let's talk about the question of "Train Transportation of Coal". I think this interview question is mainly about how we can solve the problem and express our abilities.

  • First of all, I was pleasantly surprised that someone quickly answered questions using mathematics. It was very good. This person has a good math skills. Generally, people who can solve problems in mathematics are relatively algorithm-savvy.
  • Some people complained that I didn't say that the train could be turned back, so I didn't think of this method. I will prompt you during the interview. I won't deny you because you don't know the implicit rule. Of course, if you can think of it, your head is still quite spiritual.
  • There are also many people who say that his method is relatively earthy, and only 400 tons of coal, 416 tons or 333 tons are transported. At first glance, I did not see the prompts, I think these people can find a way through independent thinking. This type of person is actually good. It is only a matter of time to follow this idea.
  • What's even better, I have seen some friends compare them with their own methods after seeing other people's better methods, and find out why their methods are not as good as their own. I think such a person understands "summary" and "comparison". Such a person is always learning and improving himself.
  • Some people also said about dynamic planning. If it was during the interview, I would like to learn from this friend and use dynamic planning to solve this problem.
  • Another friend said that the train was only available in the station. At first glance, this friend is either the person who conducts requirement analysis or the person who is more real. You need to know more. But in any case, such a friend's observation ability is very good.
  • Some friends have provided correct answers. However, the expression is complicated, and some of them do not understand it. It can be seen that there are some abilities to solve problems, but the expression ability still needs to be improved.

Douban product manager interview

In this article, the interviewer asked a big question: the benevolent and wise, and the interviewer was not satisfied with the answer given by the applicant, they are also imposing something on candidates with their subjective consciousness, and are constantly entangled with candidates. Later, the interviewer replied, "two important questions were tested: one was the criteria and method for determining things, and the other was the pressure response of product managers under various PK games ".

Below is what I observed:

  • First, this kind of benevolent, wise, and wise have 10 thousand answers. Therefore, it is difficult to have a standard answer to this question. I think the interviewer of Douban is too problematic to examine the criteria of the interviewer. The better question is: Compare Sina and Twitter.
  • 2. stress response to multiple ideas. There is no problem with this. If I have the opportunity, I would like to ask this interviewer, is it in this way that Douban product managers are entangled in their respective ideas? If so, I am very worried about you.
  • Third, obviously, the applicant does not know what the interviewer wants to say, so the applicant always gives some ambiguous answers. The answer is very political.
  • 4. questions are all hypothetical questions. Assume that the technical staff cannot communicate with each other. People have said that they have never seen communication problems. The results will be followed up. In this way, you can neither observe what you want nor make everyone unhappy. The better question is: "Please give an example of communication between you and someone who is hard to communicate with", or when the applicant says "stick to your opinion, I should also ask, "Can you give me an example of your opinion? ".
  • 5. the entire interview process is completely about something imaginary, just like the cloudization of the sky, and there is nothing real. For example, "What products have you designed before ?", "How did you work with your technical team ?"

This is a completely failed interview. The interviewer does not understand the interview at all, and even the work method may be very problematic. Maybe he just wants to find someone who can join him at work.

Friend interview

Finally, let's talk about my friend's interview. My friend has a strong learning ability and is also well-developed. He has solved many difficult and even underlying problems at work. He has not been doing software development for a long time, but he is very enthusiastic and persistent in the industry, and has a very good technical skills. On this day, he met an interviewer. The interviewer's technology is very powerful. He studied the kernel in Linux and contributed code to the Linux kernel. He loves open source, it also implements a powerful Distributed File CDN System for images. Doctor. According to a friend's description, the interviewer mainly asked three questions: asynchronous, performance tuning, and learning ability.

  • When asked about Asynchronization, my friend mentioned asynchronous calls in multithreading, but he may ask about asynchronous calls in the network or business, or asynchronous calls in the Linux kernel, of course, he didn't make it clear, but he was not satisfied with my friend's answer and asked my friend to go back and read more books.
  • When asked about performance tuning, my friend said that performance tuning should be divided into three levels: business level, command level and CPU level, we also used a performance analysis tool named vtune as an example. The interviewer said that you only know windows and are a little disdainful. He said that he only uses commercial tools and is more disdainful.
  • When my friend clarified the problem to him, the interviewer just shook his head and sighed. In addition, the applicant continuously interrupts the answer.

My opinion is as follows:

  • For Asynchronization, I think this is a design or an idea. There may be many different implementation methods, which may be used differently in different scenarios. The interviewer did not examine the applicant's understanding of asynchronous methods, nor did he examine the advantages and disadvantages of asynchronous methods. I just thought that the applicant did not give the answer he wanted.
  • I think candidates have good ideas and knowledge about performance tuning, as well as their experience in using vtune. Whether using Windows or Linux, whether using commercial or open-source profiler, many things are the same. How can we conclude that this things do not suit our own taste. Why not learn vtune from others? Using tools is just an operation skill.
  • The interviewer should use a smile to encourage the applicant, rather than shaking his head and sighing, and frequently interrupting the other party is also a very bad habit. It seems that this interviewer cannot accept different things.

This person with good technical skills does not seem to be suitable for an interviewer, because his interview is only at the knowledge level, and the interviewer has a strong preferences and preferences, he will inevitably miss the people who are competent but not suitable for him.

You can't afford to hurt the interviewer!

(Full text)

(Do not use it for commercial purposes. Indicate the author and source when reprinting)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.