Recently, too many students have left me messages saying “it’s graduation season now, I am eager for Brother Zhang to write an article about Android interview”. Well, today I finally fulfilled my promise, this article is written for you.


First of all, you have to understand, about the interview each company is different, different or the same company the interviewer is different also, without a unified skills or teach you the interview process, but is there are some general principles for a interview, I have size also have interviewed hundreds of people, so let’s just to tell you a the interviewer’s point of view the applicant which is more important!

1. Resume

The interview mentioned here should be through the resume screening, and invited to the company for an interview, about how to write a resume here will not be mentioned, do not know you can see my previous article “Can you really write a resume?” .

2. Don’t lie on your resume

Here first of all, we emphasize that most reliable companies will have a background check, such as your previous education experience, work experience, salary level, reasons for leaving and so on these do not lie, once found to be false, will not be hired. And big companies like BAT could even be blocked and permanently blacklisted.


So your resume to fill in all kinds of information please ensure real, of course I have seen many a year of graduation students to improve their own work experience, written in two years, because count internship experience in, may not be on this fraud, also suspected, but strictly speaking, some companies may care, some don’t care, this is different from person to person, if feel ability is very strong, However, the fear of being brushed out because of insufficient work experience may be a means, but it is not recommended to do so.

3. Basic qualities

Most enterprises recruit people need to interview this link, that is because only face to face talk, can see a person’s basic quality. So basic quality is the default indicator in conversation. What does that include? Dress, talk, be positive, be humble about technology, and don’t be pompous. Most people have no problem with this, but I’ve seen people complain about their former company, but they didn’t take any action to change it. I have also seen people who are particularly confident in technology and despise the technology or knowledge they have never had contact with. I will reply to you that it is ok to spend some time learning this technology. Is there anything in the world that you can’t spend time learning? If you come here for an interview, but you don’t know our products or the whole company, you are not professional enough.

Basis of 4.

This aspect is different according to the different recruitment positions, generally for Android intermediate below people will ask some basic, for senior Android engineer positions will not ask, and directly talk about projects, talk about products. The following are some of the basics of Java and Android, such as the difference between ArrayList and LinkedList, Java thread usage, Java GC principle, etc. But most of them only test Java SE, involving Java EE knowledge after all has little to do with Android development, can be ignored.


Then it is the basis of Android, such as the specific usage of the four components, such as the life cycle of Activity and Fragment and the four startup modes, Android animation, View drawing process, Sqlite, picture loading mechanism, network call, etc. There are a lot of basic Android interview questions online, so I won’t list them here.

5. Dig deep

If you are interviewing for an entry-level position, you should definitely ask about the basics, but if you are looking for an internship, you should basically just have a solid foundation. But most companies don’t just ask the basics, they ask deeper questions to gauge the depth of your skills, to get a sense of where you’re at.


In-depth knowledge of Java such as annotation principles, reflection principles, Java concurrency, etc., the most important is basically asked about design patterns, this is almost a must ask, Effective Java is considered to be a necessary book for advanced, if you finish reading this book, then some interview design patterns are basically not a problem.

For Android in-depth points will ask some custom components, performance optimization, screen adaptation, IPC, Binder understanding, plug-in, common open source libraries and principles, etc.


It is important to note that in-depth knowledge may not every question you can answer correctly, because the interviewer didn’t expect you will ask, if you are applying for an entry-level jobs, so at least I know where your technical depth, because technology with post position also can choose the most optimal, if for senior positions, so these in-depth knowledge requires high, At least 70%, 80% of knowledge points know or familiar with it.

6. Project experience

As the saying goes, “You have to specialize.” For us, although we are doing Android development, different directions mean that everyone is good at different technical areas. I have no experience in many fields, so it would be unfair for me to only ask you what I am good at. Therefore, most interviewers will talk about it based on your project experience. In fact, most of the fixed points can be answered, the difference lies in the project experience, which can account for more than 70% of the interview process.


Most talk more in-depth knowledge are around your project experience to ask, as to this project did you do in person, will know that a chat, so if this project is your fake, or are you deceive the past, so the interviewer about immediately fell, because most of the interviewer for your points to further step by step of the project, Take this conversation as an example:


I’ll start:

“What part of the project are you responsible for?”

“I’m mainly responsible for loading images.”

“Did you write the image load yourself?”

“No, third-party open source projects.”

“With what?”

“Universal Image Loader”

“Well, why do you use it?”

“They encapsulate it well and make it easy to use.”

“Have you read his source code? Do you know the principle?”

“Source code… read a little” (actually I just casually ask, but here the hemming and hazing basically judge him to lie)

“What about his caching mechanism?”

“Second level cache, hard disk cache and memory cache.”

“Well, that hard disk cache and memory cache their specific algorithm is how to achieve?”

“This… this didn’t read much, knew there was a LRUCache.”

“What source code did you read?”

“Actually, I read this project a long time ago. I forgot about it. Now all projects are Picasso.”

“Okay, so what’s the difference between Picasso and UIL? Why change UIL?”

“UIL project author stopped maintaining, so he’s going to change to Picasso…”

“Why Picasso?”

“I used him because people said he was nice, and recently Facebook made a Fresco, like better than Picasso.”

“How is Fresco better than Picasso? How is the principle different?”

“We haven’t had time to study this…”

“So what are you working on?”

“Recently working on Retrofit”

“Was it used in the project?”

“Well, it’s easy to use, much easier than OkHttp.”

“How is Retrofit related to OkHttp? How is it different in principle?”

“They’re all open source from Square, and you can use OkHttp on Retrofit, but Retrofit is annotation-based.”

“Are Retrofit annotations pre-compiled or post-compiled?”

“…”

“Have you seen the source code for Retrofit?”

“Oh, no…” (Smart, if he had said yes I would have followed up and said no then change the subject.)


The dialogue above is to restore a lot of interview real scene, among them just want to tell you two points:


1. I will ask you questions based on your project experience, rather than asking you questions about fields you have never done or touched. If it is a real project you have done down to earth, you will be able to answer the questions without any accidents.


2. Not or are not good at field don’t ask, because most of the interviewer will take the ones you mentioned fields to continue further, will be, will not directly say no, don’t try to muddle through, it will only reduce your brownie points, in addition to answer if you want a more extended down to reflect their own technical level, as much as possible in the directions you are good at, If you don’t know Freso, try not to bring it up unless the interviewer asks you.


In short, the project experience is the big head, if you are the main process of the project, even the one person alone to do this project, so the problems in the project, the solution and technology selection, code the problems you will have a lot of impression, these will be asked during the interview process, if it is real project experience, this part is not a problem completely.

7. Other

Of course, in addition to your project experience, most interviewers will ask you about areas that you may have never worked in. For example, they will ask you about Service maintenance, JNI, or even some back-end technology that has nothing to do with Android. It doesn’t matter if you can’t answer, because there will always be areas that you haven’t worked in. These questions mainly want to see the breadth of your skills, to see the breadth of your knowledge, the answer will be the icing on the cake, give you extra points, but not answer, will not give you minus points.

In addition to the above, there are also code quality and refactoring, version control of Git, whether you are involved in the product or not, and your own future planning, etc., which are not mandatory requirements. In summary, the previous article introduced “What skills do companies value most in your interview? The three abilities that enterprises care about most are “learning ability”, “problem-solving ability” and “teamwork ability”. Basic knowledge reflects your basic learning ability and project experience reflects your ability to solve problems. If you do not work alone in this project, The process and use of Git for version control will also reflect your teamwork skills.

8. To summarize

Interview can’t completely put a person’s various aspects ability, enterprises and the interviewer isn’t so quickly (and assign you at a glance, and the interview itself is also the process which the enterprises with candidates elected, not unilaterally as the sale, you need to do is pay attention to detail, basic jobs, down-to-earth to do projects, Then it’s enough to express yourself authentically in the interview!

This article is originally published in wechat public number AndroidDeveloper “googdev”, perhaps the most humane technology public number, reproduced please be sure to indicate the source!