Traditional Culture Encyclopedia - Traditional stories - Advantages and disadvantages of programmer interview

The interview of programmers has always been a hot topic of discussion. What are the advantages and disadvantages of the interview? I have my

Advantages and disadvantages of programmer interview

The interview of programmers has always been a hot topic of discussion. What are the advantages and disadvantages of the interview? I have my

Advantages and disadvantages of programmer interview

The interview of programmers has always been a hot topic of discussion. What are the advantages and disadvantages of the interview? I have my own views on this issue. The following is my phased reflection and experience summary on programmer interview.

Experience the advantages and disadvantages of the interview.

The experience mentioned here is not measured by how many years of work, but mainly refers to the interviewer's experience, such as whether he has fully implemented a software or completed a project as the main developer. The importance of experience lies in that it can explain a person's comprehensive ability. From the nature, scale and difficulty of the project, the interviewer can roughly judge the interviewer's comprehensive ability. If an interviewer has been responsible for the development and maintenance of a small module in a big company, it can basically be judged that he does not have the ability to undertake a project independently or as a main developer, and is only suitable for doing similar things in another big company. Relevant experience is particularly important for posts with high threshold and long-term technical accumulation, such as Linux core development, JVM development, game engine development, database implementation, advanced ux and so on. For this kind of position, inexperienced interviewers need long-term study and accumulation to be competent, even if their comprehensive quality is good. So, basically, if you are sure that your position belongs to this category, then relevant experience should undoubtedly be the first choice. In other words, there is a high probability that P works well and has good relevant experience.

It is more reliable to judge the interviewer's quality through project experience than through basic and algorithm tests. Therefore, during the interview, the interviewer should spend more time listening to the interviewer introduce the project experience, conduct in-depth discussions and exchanges, and understand the interviewer's knowledge, thinking ability and expression ability. At the same time, you can ask some basic knowledge and algorithm questions in combination with the project. For example, the interviewer has done a C++ related project, and you can ask him how to manage the memory. Are you familiar with intelligence indicators? If the interviewer's answer is not satisfactory, then it can basically be judged that his project is not very good.

It should be noted that experience is also a multidimensional thing. For example, the C++ stock trading intermediary software system involves three dimensions: C++, intermediary software and stock. If interviewer A has worked as a C++ stock trading client and interviewer B has worked as a C stock trading intermediary software. From the language point of view, A is the best collocation, and from the nature of the project, B is the best collocation. How do you choose? This is the question of which dimension is more important. As far as this example is concerned, I personally prefer B, because I think the experience of intermediary software development is the main contradiction, and switching from C to C++ is not a problem. So the interviewer needs to judge which experience is primary and which experience is secondary. For example, we recruit Android application development. The technical threshold of the position of Android is not high, and its real difficulty lies in UX for user experience. Therefore, if the interviewer has no Android experience, we can accept it, but I hope he has experience in UX, at least doing mobile application development on other platforms.

Advantages and disadvantages of basic interview

Basic interview refers to the interview of basic knowledge such as the use of indicators and the concept of program threads, which is very similar to the final exam questions in universities. I used to think that the basic interview was very important, but now it is not. Foundation is really important in the work, but in the interview process, it is meaningful to distinguish, that is to say, the probability of good work and good foundation is high, so it is meaningful to investigate the basic topics such as the use of indicators and the difference of program threads. My practical experience is that there is no good distinction between basic interviews. Like the algorithm, it's almost P good work | good foundation = 50%. At the same time, the basic interview is also the easiest to prepare. China people have long-term experience in exam-oriented education, so it is too easy to prepare several index questions.

I once met such an interviewer, and he mastered the basics of C language and the principle of compiling and linking very well, which left a deep impression on me. The interview conclusion I gave is: I only know C language, but I have a solid foundation and recommend employment. Later events proved that the first half of that conclusion was correct, but "suggested employment" was wrong. He is a mess in his practical work, and he doesn't understand the requirements and the overall architecture. At the same time, work time is not spent on projects, but reading books such as "Self-cultivation of Programmers". Finally, this colleague left the company because he had no job for a long time.

The foundation is not unimportant, but "good foundation" is not enough to show that the interviewer can do well, because the foundation belongs to regional knowledge, and the actual work needs comprehensive ability, which is very different. Both C language and operating system can get high marks, but do we still see few people who can't write programs in universities? Software development is like building a house. The comprehensive ability is to design and build a skeleton, and the basic knowledge is to build bricks. Zhang Xiaolong originally developed Foxmail with Delphi, but he didn't understand C#. If you want to recruit someone to develop a. NET mail client, is it meaningful to see if he has a good command of the CLR? Is it really difficult for Zhang Xiaolong to develop a C# version of Foxmail? Is it really more reliable for you to recruit someone who is proficient in C# but has no experience in developing email clients than Zhang Xiaolong?

I said that basic knowledge is not important, and the ancients said, "You can't travel thousands of miles without accumulating a depression." Is this a contradiction? No contradiction! "Bubu" and "Li Qian" are cumulative, but no amount of "basic knowledge" can add "comprehensive ability". Learning software development, like continuous integration, is a complete system from the beginning. Although the scale is small and there are many problems, it has developed from a small system to a large system and from a simple system to a complex system.

Therefore, a good foundation itself is not enough to explain too many problems, and we need to further examine the comprehensive ability. For those who do not perform well in the basic interview, if time permits, further investigation is needed. Some interviewers are actually capable, but they are not fully prepared. The most ideal state is of course a good foundation and strong comprehensive ability. If you can't give consideration to both, comprehensive ability is preferred.

Advantages and disadvantages of personality interview

Now, let me talk about what I think is the most important factor: personality. This may be unimaginable for many friends who have just contacted the interviewer. How can personality be the most important? To be honest, when I realized this, I was surprised myself! To put it bluntly, P has the highest probability of having a good job and a good personality. My practical experience is that if a person has a good personality, he is most likely to do a good job. A good personality is far more reliable than a good foundation and a good algorithm.

If a person is technically flawed and inexperienced, but has a good personality, it is easy for others to make up for it in the team, and he can easily make up for it gradually; On the contrary, if a person's personality is not good, all the technical advantages and experience advantages will not be brought into play, and even negative effects will occur, and it is difficult to change the shortcomings of personality. I have always said that practical work needs comprehensive ability, and in the exertion of this comprehensive ability, personality is very important. The project will not only encounter technical problems, but also involve communication and coordination. Different people and different departments have both cooperation and friction. How to deal with these things requires a good personality. It can be said that what makes you unique in the development team is not which school you graduated from, nor your past experience, but your personality.

Of course, personality is a complex thing, including many aspects, not all of which need to be paid attention to in the programmer's interview. My experience is that we can pay attention to these aspects:

Is 1 positive or negative? Some interviewers will naturally give you a positive feeling in the conversation, or you can find his positive factors in his experience. None of this is too ugly. On the contrary, you can obviously feel the negative emotions of some interviewers. Enthusiasm is very important in work. Positive people can bring vitality to the team and make it easier to cooperate. Basically, if the interviewer is sure to have a positive attitude, his chances of passing my pass will be greatly increased; On the contrary, if I am determined to be negative, I will be very cautious even if my technical ability is good.

2 IQ. My experience is that, on the whole, smart people perform better at work. When interviewing, you don't have to find some intelligent questions to test your IQ, such as Google and MS. In fact, you only need to see if he is logical in discussing the problem, and whether he is quick in thinking and speaking, so you can make a general judgment. In addition, eyes are the windows to people's hearts. Whether a person is smart or not, his eyes can talk. However, cleverness is not entirely an advantage. For example, when a company or a project encounters difficulties, it is often smart people who run first, and those who stick to it are often people with average IQ.

3 language expression ability. Language expression ability is also a very important quality of programmers, which is related to the smooth communication in the project. The interviewer can see whether the interviewer can clearly introduce the projects he has done in concise language, grasp the main points and consider the relevant background of the listener. Generally speaking, people with strong language skills will not be too poor in comprehensive ability.

4 whether there is user awareness. Some people say that programmers are engaged in research and development, but what about users? Only sales and marketing personnel will deal with users. In fact, this is a complete misunderstanding. If you write a module or even an API, as long as someone else uses it, he is your user. When designing a module or software, some programmers are always used to thinking from the user's point of view, which is a good user awareness. People with good user awareness can better consider other people's feelings and overall needs, rather than simply thinking from their own and regional perspectives. When the interviewer talks about past project experience, he can often ask questions from the user's point of view, and observe whether he has good user awareness from this process.

5 how to deal with doubts and pressures? The interviewer should reasonably question the interviewer's answers and past projects to see how he responds. Once the interviewer talked about the experience of logging in to the server when playing games, so I asked, "What should I do if I log in to the server? He said that although this problem was not considered at first, how can it be improved? In fact, we all know that there are various imperfections in the project, and there are many reasons for this situation. As long as you can calmly deal with doubts and pressures and try to think in a good direction, you don't need to hide your defects, let alone have emotions. I have met some interviewers. Once you question their project, they will immediately feel rebellious, unhappy or refuse to admit that there is a problem. It is easy to see at a glance that he has no room for questioning and criticism in his work, and such a person is difficult to cooperate with.

6 personality characteristics. Many interviewers like to write "proficient in C++/Linux" on their resumes, which makes people numb. If someone writes "Like C++/Linux", I will have a bright feeling. "Mastery" is a colorless narrative, while "like" contains the interviewer's personality. I prefer to look at the interviewer's personality. I believe that the real passion for something is far more important than your current mastery of it. In fact, the experience of N years tells us that students in the same class and colleagues in the same research group have the same knowledge and work every day, but in fact, the differences in grades and performance are very obvious. So, what is the essential difference? In fact, it is everyone's personality. It is personality that makes some people play ball in their spare time, some people read books in their spare time, some people like Linux, and some people like Mac. The role a person plays in a team also has a lot to do with his personality. The interviewer should guide the interviewer to show his personality and judge whether it is beneficial to the team.