General interview time is short 30 minutes, more than 1 hours, so a little time to comprehensive investigation of a person is very difficult, need some skills, here I am not limited to answering questions, but to share my personal about how to do a good job of Android technology interview experience:
Pre-Interview Preparation 1. Resume Survey
Resume to your hand, you have to do a good job of investigation and analysis, not only for the company, but also for their own time and the respect of candidates, obviously not match the resume, do not hold the idea of "do not shout to try", the candidate may be very good, but if you do not match the post, Do not waste your time, you have to think about the people you need now have the potential to develop, or need to help work. In addition, if the resume with a blog link, GitHub address, related works, you can go to see in advance, directly see people for many years to accumulate articles and code, than this short hour of interviews come more reliable.
2. Preparation questions
Knowing the candidate's background, depending on the resume, a targeted preparation question can be a way of achieving a technical detail in his or her work, or in some of the areas he claims to be proficient in. In short, do not wait for the interview process is now thinking, especially just start interviewing others classmates, often experience less than a little nervous lead to the brain short circuit, in fact, is very embarrassing, to ask questions written down in advance, ready to fully.
What points to investigate? 1. Is the resume real?
This is actually the first task of the interview, the process of interview is actually to see if the resume is true process, because can go to the interview session, that the person is in line with the requirements, do not meet the requirements have been removed, if he really like the resume described, 100% will recruit, if everyone is so, then there is no need to have an interview this process
It is important to note that the truth here has three meanings:
One is that he describes his own experience, many people only make a small screw in some major projects, but the resume is often exaggerated this experience.
Second, do not know that they do not know, common in the resume of the various "mastery" of the beginning of the description, because the knowledge system and the limitations of vision, obviously just understand very shallow but boast proficient, many times he did not think he said there is a problem, but really think he has mastered, a bit of the sense of the frog.
Three is the truth of the resume to match your expectations, a technology to understand how the degree is proficient, it is difficult to have a conclusion, so here the "real" can only be the candidate and the interviewer standard between the fit, this has the subjective luck component, perhaps the interviewer level is not enough error judge you, do not feel uncomfortable, Interview is not a two-way selection.
2. Depth of technology
The depth of technology has always been my most important part, today any technology field is very broad, a person to grasp so much knowledge at the same time and all in-depth almost impossible, that all need to spell learning efficiency and work years. And you have done something, is doing something, is absolutely can understand more deeply, a technical curiosity, have the technical enthusiasm of the person, will not just stay in this thing is very useful, but will be tempted to explore the technical principle behind it, even if not personally to see the source code, will also take some time to understand the experience of others, So, by examining the depth of technology alone, we can examine whether a person has a passion for technology, a technical curiosity, and so on, which many of the so-called "excellent Programmer's characteristics".
I've seen one sentence before: "The more a person knows about what he's doing, the better he can do." It's the right place to put it.
3. Breadth of technology
Is there a depth, need breadth? My personal understanding is that depth is a necessary condition and breadth is a plus. The same technical curiosity of the excellent programmer, will not be satisfied with only one mu of their own three points, work, but also want to try some other areas and direction, because the input problem may not be deep enough, but many areas of knowledge you know and do not know, the formation of your personal knowledge system is very important. For example, if you want to implement a function that is difficult or ineffective in the technical field you are currently familiar with, your colleague will tell you when you are about to give up, and this can be done with a simple SQL statement, why bother? This example is very lame, but I think we should understand. The greater the breadth of knowledge, the more complete the technical system in the mind, the same problem, you can think of N solutions, think about the best solution, if you have not heard of some things, will often say "this is very difficult to engage ah", "This is impossible", in fact, sometimes really is the limitation of knowledge, so-called from 0 to 1 difficult , that's what it means.
4. Logical Thinking Ability
This is one of the things I value a lot, and it's not about the notorious brain teasers, it's about communicating, judging whether a person's logic is clear, answering questions, or not, which is hard to describe, but if you look carefully, you'll find it easy to communicate through some simple, You can see if a person is logically clear. Sometimes you feel that someone communicates very well, in fact is not the problem of communication, is he said to go, after his brain's clear and tidy, so that you can easily understand. This habit is not overnight can be formed, so the interview process this does not come out.
Another person if the logic is clear, and responsive and quick, speed, it is a big plus, congratulations, you met a smart man.
What questions do you specifically ask?
Mentioned above is to focus on the point of investigation, then specific Android development, there are some common questions can ask? Personally, I will look at candidates from these perspectives:
1. Android Experience
If not the school recruit, Android experience is necessary, I prefer to ask some basic concepts and technical principles, such as activity, view, window understanding, the use of each launchmode scene, view of the drawing process, touch event mechanism, The principles of Android animation, Handler, looper understanding, the way Android communicates across processes, the understanding of binders, the understanding of Android mashup design, and much more.
2. Java level
Basically is effective Java that book mention of the things, if you recite the book of the problem, and fluent, no problem, it will be you. In fact, we will examine some common problems such as final usage, reflection principle, annotation principle, Java compilation process, GC, and so on.
3. It basics
In fact, computer science students learn something in school, the school recruit this piece is the focus, social recruitment will be relaxed, but some basic common sense is to have, for example, many people do not know the HTTP GET post what is the difference, the https of the s is what the meaning of the process and the thread of the concept, I don't know what a binary algorithm is. These simple problems of screening, can filter some so-called wild path of the programmer, is not trained not important, engage in this line to some basic common sense has a concept, otherwise how happy to communicate?
4. Knowledge of code Quality
What we need is a sense of the code taste of people, about this, look at "clean Code" is enough, the interview is not a good survey, you can let him talk about the code quality of understanding, although can not rule out the other side of the rhetoric, at least not many ideas, can only mention the naming style this point of people are not meet the requirements, can also be observed in the link of writing code.
5. Technical Vision
For example, the understanding and learning of the new technology of Android, the understanding of other popular technology areas, which is actually related to the breadth of technology I have just mentioned, in my interview process, found a lot of non-internet industry practitioners, because the company's various fuck rules and the company's technical atmosphere of the reasons, technical vision is quite narrow.
I personally have a deep understanding of this, 2011 I also in the traditional industry engaged in software development, then the company because of concern about the disclosure of technical information, do not let the Internet, quite closed, I personally although I think that industry has been in the profession to achieve the level of experts, but always feel where the wrong, One day I was excited to talk to my colleagues about Android, and found that they didn't even know what Android is? 2011 AH comrades, then the shock can not say, deeply felt the need to make changes, resolutely give up years of industry accumulation, moved to the mobile Internet, until now. Today, many years ago, the small partners also have a lot of mixed up the name of the party, began to go to the pinnacle of life, I have never regretted the choice made.
6. Technical Imagination
A good technical person, if the depth and breadth of knowledge is sufficient, knowledge has become a system, then he has never been in contact with the field, but also can make enough reasonable imagination and judgment, interview process if asked some field candidates do not dabble, this time generally do not have too much entanglement, But if you want to take a look at his technical imagination, you can go deeper, like asking him, "What do you think this thing should be?" "," This cool control, if you want to do, how will you achieve? ”。 The students who perform well in this respect are undoubtedly the ones with deep foundation and breadth.
7. Technical Habits
Good programmers will have good habits, such as a variety of shortcut keys of the skilled application, a variety of command line mastery, some of the tools and habits to improve the development efficiency, encountered the problem is Baidu or Google, have not done some small tools to help reduce duplication of work, after work has not continued to learn? There is no good book, and so on, these small details largely determine the programmer's development efficiency, which is why many people say that a good programmer is worth 100 of ordinary programmers, which is also one of the important reasons.
Post-Interview Feedback:
Interview generally more than one round, you need to give your feedback, multiple rounds of interview results together to consider, reduce the risk of miscarriage, feedback generally how to write? Here are my suggestions:
1. Interview Record
The complete record of the interview process, as far as possible objective evaluation, so that other interviewers know what questions you ask, how to answer, but also to avoid the embarrassment of repeating the problem.
2. Advantages and Disadvantages
What are your subjective comments and highlights, and what do you think is not good enough?
3. Comprehensive evaluation
Your comprehensive evaluation of candidates, hire or no hire root cause, if some places do not feel clear, expect other interviewers to continue to strengthen the investigation, can also be written.
4. How to pass?
Each person has a bar in his or her mind, but there are some factors that can be visually considered:
One is the requirements of the post, different job standards of course, the school recruit and set the recruit certainly not the same.
Second, the urgency of the job, the brothers are busy every day to die, hurriedly find someone to help you haha.
Three is the candidate's age, the elder programmer Mo Strange, an age also with just graduated a year or two colleague a level, the growth is too slow, the potential to do technology is limited, this people should be able to understand.
Four is the previous mentioned to do the depth of technology, this is necessary, the breadth must have some, the field of vision can not be too narrow.
Five is to have a bright spot, everyone in the process of the interview to pay attention to explore the bright spots, sometimes he has a lot of problems but there is enough bright spot is enough, attentively observed also can not find any bright spots, it is necessary to pay attention to.
Say so much, in fact, the most important thing is a sentence, ask yourself: do you really want to fight with that guy?
What questions can I ask when interviewing for a real Android app developer level?