preface

In recent years, I have met a variety of Android development has three digits, failed dare not say, pass basically did not look wrong, come late also want to talk about my experience.

The average 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’m going to share my personal experience on how to do an Android interview well.

First of all, interviewers must know that everyone is good at different directions due to different experiences, so they must not grasp their own good at one aspect to ask deep, think “if even this is not a poor programmer ah”.

So when an interviewer asks a question, it’s often a two-step cycle:

  1. Ask him what he’s done, and if there’s a finished product, I’d love to see it.
  2. Ask questions about what he’s done.

The specific problem depends on the situation, can be interface or effect implementation, related bug elimination, this part of the principle of the analysis.

What will the interview examine?

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.

What kind of programmer gets the nod?

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:

1. Job requirements, different job standards are certainly different, school recruitment and recruitment are certainly different. 2. The urgency of the post, my brothers are so busy working overtime every day, please find someone to help us. 3. The age of the candidate is not surprising. It is not surprising that the older programmer is still on the same level as his colleagues who just graduated one or two years ago. 4. As for the depth of technology mentioned above, it is necessary to have some breadth, and the vision should not be too narrow. 5. To have highlights, we should pay attention to discover highlights in the interview process, sometimes he has a lot of questions but there is a enough highlight is enough, observation can not find any highlights, we should pay attention to.

Interview Review route

If you are also preparing for the interview but don’t know how to review efficiently, you can refer to my review route. If you have any questions, you are welcome to communicate with each other. Come on!

Here is a direction for systematic learning:

1. Watch videos for systematic learning

The Crud experience in the past few years has made me realize that I am really a fighter in dishes. Because of Crud, my skills are scattered and not in-depth and systematic, so it is necessary to learn again. What I lack is systematic knowledge, structure framework and ideas. Therefore, learning through video is better and more comprehensive. As for video learning, I can recommend website B for learning. There are many learning videos on website B, but the only disadvantage is that they are free and easily outdated.

2. Systematically comb knowledge and improve reserve

Client development knowledge is so much, interview questions are still a little bit of stuff. So there are no other tips for interviews, just how prepared you are for them. So, when you go out for the interview, find out where you are in your revision.

Systematic learning direction:

  • ** Essential skills for architects: ** Deep Java generics + annotations + Simple + concurrent programming + Data transfer and serialization +Java Virtual Machine principles + reflection and class loading + dynamic proxy + efficient IO

  • **Android advanced UI and FrameWork source code: ** Advanced UI promotion + FrameWork kernel analysis +Android component kernel + data persistence

  • **360° All-round performance tuning: ** Design philosophy and code quality optimization + program performance optimization + development efficiency optimization

  • ** Interpretation of open source framework design ideas: ** hot repair design + plug-in framework interpretation + component-based framework design + picture loading framework + network access framework design +RXJava responsive programming framework design +IOC architecture design +Android architecture components Jetpack

  • **NDK module development: **NDK basic knowledge system + underlying picture processing + audio and video development

  • ** wechat small program: ** small program introduction +UI development +API operation + wechat docking

  • **Hybrid Development with Flutter: **Html5 project Combat + Advancements with Flutter

After the knowledge is sorted out, it is necessary to check and fill in the gaps. Therefore, I have prepared many e-books and notes for these knowledge points, which make a perfect summary of each knowledge point.

Read the source code, look at the actual combat notes, learn the great god ideas

“Programming languages are the way programmers express themselves, and architecture is the way programmers perceive the world.” Therefore, programmers want to quickly recognize and learn architecture, reading source code is essential. Reading source code is solving problems + understanding things, and more importantly: seeing the ideas behind it; Programmers said: read ten thousand lines of source code, line ten thousand practices.

It mainly contains wechat MMKV source code, AsyncTask source code, Volley source code, Retrofit source code, OkHttp source code and so on.

4, the eve of the interview, brush the question sprint

A week before the interview, start sprinting. Please remember, brush questions, technology priority, algorithm to see some basic, such as sorting can, and intelligence questions, unless it is a school recruit, otherwise generally not how to ask.

As for the interview brush questions, I have also prepared a set of systematic interview questions to help you draw inferential conclusions:

conclusion

To change your life, there is no shortcut at all. This road needs to be taken by yourself. Only deep thinking, continuous reflection and summary, keeping the enthusiasm for learning, and building a complete knowledge system step by step are the ultimate winning ways and the mission that programmers should undertake.

The above content is free to share with you, need the full version of a friend,You can see it all here.