As long as you hire a technician, technical assessment is essential for both junior programmers and senior software engineers. I am honored to have participated in some technical interviews with the company as an interviewer, and I have learned some things from them.
First of all, I think technical interviews require skill-based skills. It is not just a good technical interview, because the interview process is a process of mutual communication between the two parties, you need to create a relaxed atmosphere for each other and conduct"
Reasonable guidance","
Timely questioning"And"
Correct judgment".
Therefore, I think a company's technical interview requires a good experience, not just a few questions; not just a word to respect each other, you represent the company's image; more importantly, how to lead an interview to gain a comprehensive and accurate understanding of each other's abilities. A new interviewer needs to train him to do this before playing. It is best to bring new and old people together. In this way, I think it is the most reliable and it is not good enough for us.
Under normal circumstances, software companies will always evaluate these three capabilities: programming languages, data structures and algorithms, and system design.
Programming Language
Language is a tool and something a programmer uses every day. In my opinion, examining a programming language not only can examine a person's understanding of a language, it can also reflect a person's attitude towards knowledge-what do you think of a person with 10 years of C ++ experience but little knowledge of the language? I am afraid I am comfortable with the status quo.
This article describes the language and database that are well-known to the audience to learn about and apply the features of the language. At last, let the audience write a program to see how well they manipulate the language.
Data structures and algorithms
I have worked for 5 or 6 years. In my previous projects, there are not many opportunities to use data structures and algorithms. I once doubted whether an algorithm is necessary. So is it necessary?
I convinced myself that:
Indeed, some projects involve more than just calling third-party libraries to heap code and implement business logic. There is not much chance to directly and clearly apply algorithms, however, if you set limits for yourself, you will inevitably become mediocre.
Algorithm, in fact, is also a way for a person to think about problems, a person's creativity. To put it bluntly, no matter what you do now, if you have such a way of thinking, you can always find a place to apply it. Maybe the previous meaningless things you thought were just because you chose the meaningless way to complete it.
Evaluate the knowledge of some basic data structures and algorithms. Prepare some algorithm questions with "scalability" to see how the subject analyzes the problem, how to analyze the algorithm complexity, and how to implement the algorithm using the language it chooses.
System Design
This mainly refers to the ability of the respondent in object-oriented software design, which is generally aimed at senior positions.
You can first understand the basic concepts and principles of object-oriented design, and then let them talk about the design he has done in his previous project; prepare several design questions that can be gradually and deeply designed on the spot. Oh, don't forget to ask him why he designed it.
It should be noted that to understand the real strength of the interviewee, you must be able to respond well on the spot and be good at extracting useful information from the interviewer's answers and asking questions.
In addition, the on-site interview requires a lot of time and effort from both parties. Therefore, we 'd better give a rough understanding of the above three aspects by performing a telephone interview first, in this way, you can avoid unnecessary costs. Therefore, it is very important to do a good phone interview: You need to make a judgment as accurate as possible, if not.