This is from my post on Zhihu on what Questions can You Ask an Android app developer in a Job interview? Here are my answers:

The typical interview can last anywhere from 30 minutes to an hour. It’s difficult and requires some skill. I’m not going to limit myself to answering the main question, but I’d like to share some of my personal experiences on how to do an Android interview well:

Preparation for an interview

1. Resume research

Resume to your hands, all you have to make full investigation and analysis, is not only responsible for the company, is also respect for yourself and the candidates time, obviously not match your resume, don’t hold “or shout come and give it a try” idea, it may be good candidates, but if you don’t match with your post, don’t waste your time, You need to figure out whether the person you need right now has the potential to nurture or needs to help out. In addition, if the resume attached with blog links, GitHub address, related works, you can go to see in advance, directly read people’s years of accumulation of articles and code, more reliable than this short one-hour interview.

2. Prepare questions

Once you know the candidate’s background, prepare specific questions about how he or she implemented a technical detail in his or her work or projects, or about areas in which he or she claims to be proficient, based on your resume. In short, do not wait for the interview process to think of questions, especially the beginning of the interview with other students, often lack of experience and a little nervous brain short circuit, in fact, is very embarrassing, write down the questions to ask in advance, fully prepared.

What points are we looking at?

1. Is your resume truthful

It is the first interview, the interview process is the process of resume is true, because can go to the interview process, that the person is in conformity with the requirements, does not meet the requirements have been eliminated, if he really as described in your resume, 100% will move to come over, if everyone is so, that there is no need to have an interview this process.

It is important to note that there are three meanings of truth here:

  • One is that he honestly describes his own experience. Many people only work as a cog in a big project, but their resume often exaggerates this experience.

  • Second, he does not know that he does not know, which is common in the resume of all kinds of descriptions at the beginning of “proficient”. Because of the limitation of knowledge system and vision, he boasts that he is proficient even though he knows very little. Most of the time, he does not think there is a problem with what he says, but really thinks he is already proficient, a bit like a frog in a well.

  • 3 it is to resume the true to match your expectations, a technical know how to just calculate the degree of master, it is hard to parcel out, so the “real” here can only is the fit between candidates and interviewer standard, the subjective luck, perhaps the interviewer levels not wrong judgment you, also need not feel uncomfortable, the interview is not a kind of two-way choice.

2. Depth of technology

The depth of technology has always been the most important part for me. Nowadays, any technical field is very broad, and it is almost impossible for a person to master so much knowledge at the same time and go deep into it, which requires both learning efficiency and working years. And you did things, doing things, is absolutely can understand more, a curious about technology, skilled, enthusiastic people will not only stay in this thing rather easy to use, but can’t help to explore the technology behind it, if not personally go to the source code, will also take time to understand others to sort out the experience, So just by looking at the depth of the technology, you can see whether a person is passionate about technology, whether he has technical curiosity, and so on. These are the so-called “characteristics of a good programmer”.

I have seen a saying before: “The deeper one knows what he is doing, the better he is at it.” It fits perfectly here.

3. Breadth of technology

Depth is there, but also need breadth? My personal understanding is that depth is necessary and breadth is a plus. Also have technical curiosity good programmers, will not be satisfied with only limited to their own worlds, outside of work, also want to try some other fields and the direction, because into problems may be not enough in-depth, but a lot of domain knowledge and don’t know, you know about your personal knowledge system under a lot of forming relationships. For example, if you want to implement a feature that is difficult or does not work well in your current technical domain, and you are about to give up, your colleague tells you that it can be done with a simple SQL statement. Why bother? This is a lame example, but I think you get the idea. The more breadth of knowledge, technology system is more complete, in the mind is the same problem, you can think of N solution, think about it is concluded that the optimal solution, if you have never heard something, will often say “this very difficult”, “it cannot be”, in fact, sometimes is the limitations of knowledge problem, the so-called from 0 to 1, is this meaning.

Logical thinking ability

This is also I value quite a bit, this does not mean that those notorious brain after a sharp turn, but through communication, judge whether a person view logic clear, to answer the question whether there is rhyme, this is very difficult to describe, but if you are careful observation, you will find that it is easy to through some simple communication, can tell whether a person clear logic. Sometimes you think that someone is communicating well, but it’s not the communication, it’s the words that come out of their mouth that are sorted out in their brain so that you can easily understand them. This habit can’t be picked up overnight, so you can’t fake it during an interview.

If the other person is logical, agile and quick, that is a big plus, congratulations, you met a smart person.

What are the specific questions?

What are some general questions you can ask about specific Android development? I personally look at candidates in these ways:

1. The Android experience

Android experience is required if it is not a school entry. I prefer to ask about some basic concepts and technical principles, such as the understanding of Activity, View and Window, the application scenarios of each LaunchMode, the drawing process of View, Touch event mechanism, and the principle of Android animation. Handler, Looper, How Android communicates across processes, Binder, Android Mashup design, and more.

2. Java level

It’s basically the stuff in the book Effective Java, and if you memorize the questions in that book and answer them fluently, no problem, that’s what you do. We will also look at common questions about final usage, reflection, annotations, Java compilation, GC, etc.

3. IT basics

Is computer by training students actually learn something in the school, the school when, this is the key, club would be relaxed, but some basic common sense to some, such as HTTP get a lot of people don’t know what is the difference between the post, that s what is meant by the HTTPS, speak not clear the concept of process and thread, don’t know bisection algorithm is a what things. The screening of these simple questions can filter some so-called wild way programmers. It is not important whether they have a professional background. They have to have a concept of some basic knowledge in this line, otherwise how can they communicate happily in the future?

4. Knowledge of code quality

What we need is a man of about Code smell feeling, about this, look at the Clean Code is enough, in an interview that in fact is not good, can let him talk about the understanding of the Code quality, although you cannot legislate for each other, at least thinking is not much, only mention this naming style is the man who is not in conformity with the requirements, You can also observe it in the Code section.

5. Technical vision

Such as Android the understanding and study of the development of new technology, understanding of the other popular technology, this is related to technical breadth of I mentioned just now, is the interview process, I found that many of the Internet industry professionals, because the company for a wide variety of fucking regulation with the company’s technology atmosphere, quite a narrow view of the technology.

I personally too well on this point, in 2011, I engaged in software research and development are still in the traditional industry, the company because of concerns about technical information, don’t let Internet access, quite closed, although personally I think has been in the industry to do the level of the expert inside course of study, but the feeling is wrong, one day I was very excited when going to a good chat with colleagues around the Android, Find out they don’t even know what Android is? In 2011, comrades, I was shocked beyond words at that time. I deeply felt the need to make changes. I resolutely gave up years of industry accumulation and switched to mobile Internet, until now. Up to now, many of my friends from many years ago have become famous and started to reach the peak of their lives. I have never regretted the choice I made.

6. Technological imagination

An excellent technology, if enough depth and breadth of knowledge, knowledge is a system, so he for some untouched areas, also can make enough reasonable imagination and judgment, the interview process if asked candidates not dabble in some areas, generally don’t have to dwell at this time, but if you want to borrow the problem under investigation he technology of imagination, Go deeper and ask, “How do you think this thing works?” “, “This cool control, if you had to do, how would you achieve?” . There is no doubt that students who excel in this area have a strong foundation and sufficient breadth.

7. Technology habits

Good programmers will have good habits, such as skilled use of various shortcut keys, command line mastery, some tools and habits to improve development efficiency, baidu or Google when the problem arises, do you make some small tools to help reduce repetitive work, do you continue to learn after work? These small details largely determine the efficiency of a programmer’s development, which is why many people say that a good programmer is worth 100 average programmers, which is also an important reason.

Feedback after the interview:

You need to give your feedback. Consider the results of multiple interviews together to reduce the risk of misjudgment. Here are my suggestions:

1. Interview record

Take a complete record of the interview process and try to be objective so that other interviewers know what questions you asked and how well you answered them and avoid the embarrassment of repeating questions.

2. Advantages and disadvantages

Your subjective assessment, what are the highlights, what do you think is not good enough?

3. Comprehensive evaluation

Your overall assessment of the candidate, your “hire” or “no hire” rationale, and if there are areas that you feel are unclear and expect other interviewers to follow up on.

4. How to pass?

Standards vary from person to person, and everyone has his or her own bar, but there are still some factors that can be directly considered:

  • One is the requirements of the post, different post standards are of course not the same, school recruitment and recruitment certainly not the same.

  • The second is the urgency of the post, the brothers are busy working overtime every day, quickly find someone to help.

  • The third is the age of the candidates. It is not surprising that older programmers are still at the same level as colleagues who have just graduated one or two years ago. It means that they are growing too slowly and have limited technical potential.

  • Fourth, the depth of the technology mentioned above, this is a must, there should be some breadth, vision should not be too narrow.

  • Five is to have bright spots, we should pay attention to discover bright spots in the interview process, sometimes he has a lot of questions but there is a enough bright spot is enough, observation can not find any bright spots, we should pay attention to.