2021 Android interview summary: 5 years of development experience and 10 interviews after harvesting offers, don't let these interview questions destroy countless day and night efforts!

The annual gold, three, and four interview peak seasons are coming again!

Interview determination

At the beginning of December, relying on a friend’s introspection, I interviewed Jingdongbei Chen. Although I was stuck in the hr interview, I was very confident in my technical ability. I proposed to resign on December 22, 2020 and used the 7-day annual leave to concentrate on the interview. Finally, I got a satisfactory offer as I wish.

When submitting my resume, I only considered the size of the company. I voted for about 10 companies. The interview process was full of twists and turns. Although it was not a problem in the technical interview, there were a few HR and approval problems that caught me off guard and I didn’t know how to express it. The mood at that time, the aggrieved heart can only smile.

The hard work pays off. It's a pit that some people always jump. Finally, I entered the pit of New Oriental Online. The first offer I received finally got a bit of comfort before my birthday on January 18th, wow!

Interview statistics

Judging from my interview situation, don’t think that you will be stable after the technical interview. HR will be able to card people (Jingdong) and approve card people (huolala). Therefore, during the interview, you should interview a few more companies instead of one. The tree was hanged.

(1) Technical interview, 9 companies passed:

Qianxihe (2 sides), Guangzhou Star (3 sides), Baowo (2 sides), Jingdongbeichen (4 sides), JD Logistics (3 sides), Songguo Travel (2 sides), New Oriental Online (4 sides) ), Huo Lala (3 sides), APUS (2 sides)

(2) 3 failed technical interviews

Tantan (one side), Xiaohongshu (one side), Toutiao (two sides)

(3) hr or approval, 3 failed

Jingdongbeichen (commercial details group): Passed on all four sides and rejected five sides by hr. The reason for non-academic background is that the hr interview stepped on the pit, which is a pity.

APUS: There is no problem with the two-sided technology, but hr refuses (if I had a high salary at the time and the company background is better, I will probably pass it. It is not sad. hr depends on the background and understands it)

Huolala: There is no problem with the 3-sided technical +hr interview, but the approval is rejected. It is very straightforward. If there are multiple candidates, I will not be considered (the salary stage is clicked, the more minded family is wronged)

(4) Personal rejection after approval, 2+

As of January 16th, I have received an offer and stated that I entered the job (New Oriental Online, the salary is relatively satisfactory, and there are several students nearby who can play together), so if I have a new offer, I will not consider it. At present, the turnover and expected salary have been submitted, and 3 companies are still being approved (JD Logistics, Songguo Travel, Beijing Borgward Automobile), but I will probably refuse or let them refuse.

Qian Xihe, personally refused (I ran to the interview on Saturday, December 6th, the 2nd side of the technology passed, hr and the leader were too indifferent, so I refused)

Guangzhou Star Controls, personally refused (December 25, on-site technical aspects, promised salary requirements, just call to say that 2K can be reduced to enter, decisively refused)

Summary of interview questions

After talking about the personal interview situation, enter the main topic. The following are all the interview questions I interviewed for these companies. There are many repeated interview questions summary, so I will not sort by company.

Several interview questions when failing

Including JD, Toutiao, Tantan, Xiaohongshu did not answer a few questions

Jingdong:

(1) How to design modules, components, sdk, how to consider
(2) Talk about the architecture of your project, why you design it this way or consider it this way
(3) Talk about memory leaks, the more the better
(4) Talk about your technical difficulties , How to solve it, how to think
(5) apk security, how do you consider
(6) the full life cycle of act+fragment (not a single one)
(7) Jingdongbei Chen: RecyclerView source code, surely, including how to implement the cache, which Each cache, operation process, etc.; various notifyXX principles, which redraws are triggered; how to achieve the realization of the lower part of the item not moving and the upper part of the item height change?

Good interview questions for Tantan:

(1) Drag the View by hand, and release the hand to complete a bubble burst animation effect (the essence is the view event distribution mechanism + animation selection, which method of the distribution mechanism handles what parameters, and how to trigger the animation effect afterwards, etc., the question is gray Often specific, spit out)
(2) Custom view related, invalidate, postInvalidate, requestLayout, in-depth talk about the process principle of the framework layer
(3) How to realize the deep principle of Kotlin coroutine
(4) Is dcl thread safe? Which part is wrong, why volatile can be implemented to prevent instruction rearrangement, how the instruction level is implemented, the object creation process, etc. (many asked, very in-depth)

Two-sided failure of Toutiao:

(1) The difference between the Permission label and the uses-permission label. Setting the Permission label, how to ensure that other process apps will not access the act interface?
(2) The concrete realization of multi-gestures
(3) The concrete realization of transition animation
(4) The concrete realization of picture-in-picture, the concrete realization of the floating window
(5) The concrete realization of aidl binder asynchronous call
(6) How to realize the timing task is
all concrete realization, I just haha.

Little Red Book:

(1) How to lock concurrentHashMap
(2) Detailed measure parameter, view setting wrap does not work
(3) Bind service, how to keep alive
(4) Two processes act, how to speed up the startup
(5) Performance optimization (Interview The old and the official interrupted, I can’t say anything)
(6) How does Eventbus realize thread switching
(7) When is the xml reference of Jetpack's Navigation called?
(8) How does Inflater.inflate implement xml to java (framework), and the meaning of each parameter in the method.

Passed interview questions, sorted out by individuals and listed

fundamental issue

  • Paradigm: the specific difference between <super> and <extends>; the realization principle in the java compilation process (paradigm erasure); contravariant covariance (conversion of paradigm subclasses)
  • Performance optimization (many asked, a big technical topic, sum up by yourself), personal notes summarized 7 pieces:

Boot speed optimization
Layout optimization
Code optimization
Memory optimization (oom anr)
App slimming
Network optimization
Battery usage optimization
Security optimization
Storage optimization

  • ANR: Give a standard answering process: several reasons for anr (deep into the source code and talk about the process of AMS.appNotResponding(), you will be bored), how to analyze and locate specific reasons by analysis tools.
  • The difference between out of memory (OOM) + memory leak, analysis tools or open source leakcanary, optimization solutions, may ask you, how does the handler cause oom, how to optimize, etc.
  • Event distribution mechanism + nested sliding mechanism principle, difference
  • handler related (all given)

Process;
threadLocal+ internal principle (how threadLocalMap is implemented, what is the key and val, weak references, whether it causes memory leaks, etc.);
why loop() does not block the main thread;
what is a synchronization barrier (barrier message);
what is an idle mechanism (IdleHandler) + function;
message sorting order of the message queue (how delay is implemented);
Message.obtain principle (using the design pattern: Flyweight);
implements the handler process of the sub-thread;
handler memory leaks and solutions;
handler The relationship with looper and MessageQueue (several handlers, several loopers, can the msg of the handler be processed in the handleMessage method of other handlers);
extension: What are the solutions for communication between the child thread and the main thread?

  • Custom View related:

Framework process;
the role of mesureSpec;
when custom extends View, manually handle wrap_content pits: the control that directly inherits View needs to rewrite the onMeasure method and set its own size when wrap_content, otherwise using wrap_content in the layout is equivalent to using match_parent;
The difference between postInvalidate() and invalidate() and requestLayout() (to sum up by yourself, there are many points to remember);
several ways to obtain the width and height of the control in the onCreate method of Activity;
Draw of View (Canvas canvas) Drawing process;

  • The Jingdong family asked: io stream (the difference between character stream, byte stream, file and other streams), how to deal with stream (try catch, stream close, etc.)
  • Why can't dialog be created with application, the underlying principle (window token)
  • Service interview, life cycle, the difference between bind and start, keep-alive, etc.
  • Design pattern concepts, design principles (SOLID), which design patterns are used in the project, which design patterns are used in the open source project xxx, proxy mode, how to implement dynamic proxy? In the singleton mode, is the static inner class singleton finalized?
  • Thread pool, ask the parameter, ask the function of the keepalive parameter, how does the source code realize the operation of the core thread? Absolute strategy?
  • How to realize https packet capture; how to realize network request security? Prevent others from capturing or requesting packets.
  • Principle of class loading mechanism
  • Jetpack, livedata stickiness principle, how does the source code realize life perception, how to fix old data bugs?
  • Jetpack, navigation xml, at which step was loaded and executed? (It’s hard)
  • Binder related, aidl implementation principle, how to implement callback, how to implement binder asynchronous call (headline)
  • How to use contentprovider to achieve cross-process communication? Process?
  • mvc,mvp,mvvm
  • Jni development: dynamic registration process
  • Exception capture (ask the app’s uncaughtException)
  • The four start modes of act
  • The transition animation of fragment and act, the difference between android.app and v4 package (headline)

Java basic problems/algorithms/number structure/jvm

  • static modification, final modification, function
  • Java object-oriented features (encapsulation, inheritance, polymorphism), how to implement it
  • Hashmap, linkedhashmap, concurrenthashmap, set, are all asked, the various differences between 1.7/1.8, very detailed, very detailed, very detailed, not specific
  • Synchronized, volatile, reenterLock, AQS, various differences, the difference between static modification and synchronized methods
  • From the perspective of bytecode, the underlying principle of synchronized (object header, lock upgrade process, spin lock)
  • Reflection, how to modify the parameters of final modification (class reflection)
  • Java memory model, java running memory model and function, G1 recycling mechanism, VM stack execution process, and instructions are familiar?
  • The difference between the four references
  • What are the status of the thread?
  • How to realize the difference between equels and hashcode in set? Efficiency issue? Why rewrite etc.
  • The difference between https/http, the difference between tcp/ip and udp, the three-way handshake and four waves, Huolala asked the underlying principle of tcp + how to ensure the reliability of tcp transmission (re-ordering and re-flowing)
  • k-step linked list inversion
  • Two realizations of in-order traversal of binary tree
  • Square root of a number
  • In the array, does it appear in pairs and only one appears alone? What if two appear separately?
  • How many implementations of linked list reversal? (Stack, array, etc.)
  • AB thread printing

Third-party framework questions

Explain that the third-party framework written on the resume must be familiar, and it depends on the source code.

  • Retrofit (must ask for each), look at the source code + detailed summary
  • Okhttp (must ask for each), look at the source code + detailed summary
  • Rxjava (high frequency), will ask upstream thread scheduling and downstream thread switching, back pressure, etc.
  • LeakCanary (high frequency): Ask with OOM, ask the principle
  • Glide (high frequency): the principle and process of caching implementation (linkedHashMap)
  • ORM database: ROOM, DBFlow, DaoGreen:
    the difference between using a database and using file caching
  • MMKV (10 companies asked one)

framework/project/framework/director level issues

  • Cold start process, which process to design,
  • The difference between Act, window and View, the source code is introduced
  • The role of AMS
  • sdk design, how do you achieve it
  • How to embed the SDK, how do you realize it:
    embed method, storage, upload, thread pool, exception, etc.
  • Componentization, modularization, how do you achieve it, how do you achieve component communication
  • Plug-inization (no, I only saw Tencent's shadow), the principle
  • Project introduction, refactoring, iteration, etc. Ask what you did in the project, what problems you encountered, and how to solve them? ( This area is very important . There must be bright spots, such as the effect of the module you are responsible for; or your refactoring, what pain points can be solved; or the problem you solve, what benefits can be brought to the company, etc., I follow this Three categories said, the effect is good)
  • In your project, how to achieve performance optimization, a representative example, how to monitor abnormalities, etc.
  • How do you usually learn technology? Compared with others, what are your strengths? (Learning ability, product sense, summary habits, etc., to highlight the highlights, my highlight is the project emergency ability, learning summary habits and open source contributions, or your answer, also guide the director to this area, highlighting your highlights)
  • The resume has strong coding skills and independent thinking ability, and pays attention to code specifications and structure reconstruction. How is it reflected in the project?
  • Technical question: I’m okay, do you have anything to ask.
    If one side and two sides, it feels like nothing, you can fight for it, talk about personal technical ability and advantages

If the boss/director/group leader level is final, you can ask the technology stack, technology and other questions appropriately.

HR interview questions

  • Ask about graduation, work experience, project experience, etc., ask about the working atmosphere of the previous company, ask for the reason for leaving, ask about your strengths and weaknesses (don’t talk about your personality, you can’t be cheerful, just talk about technical weaknesses), it’s best to prepare A good set of rhetoric, all have skills, be careful to avoid pitfalls
  • Ask expected salary:

Personally, I want to say the most. The shareholders of the company stipulate that there is no salary increase. I have not increased the salary for more than 2 years in the company. It is very difficult to get a high salary. Therefore, several technical interviews passed, and finally hr was stuck. Shou to Yunkai see Mingyue, interview a few more companies, chances will always come. I insisted on uncompromising my personal expectations, and eventually the company took a fancy to my personal technical ability and character (5 years of experience, converted to my expected increase of 73%). I am very grateful to New Oriental for giving me a personal opportunity. Ula!

  • The director will also ask/hr will also ask: your personal short-term goals and long-term goals
  • Is there anything else to ask?
    This question asked by hr, it is best to ask her what she is good at, such as personnel, salary, salary, team building, etc.

Other interview questions (slightly miscellaneous)

  • kotlin: Syntactic sugar etc.
  • Why use kotlin, the advantage over java? Performance advantage?
  • flutter asked the basics

Breakthrough course and experience of non-subjects

The growth experience of wild programmers:

I am an ordinary student in Shandong, majoring in mechanical and electrical engineering, and I changed my career to andorid development for 15 years. As a wild programmer, the growth process is relatively bumpy. I started to rely on training institutions or personal self-study. It was very difficult to join the Internet development at the initial stage. At the initial entry stage, a large number of students from training institutions could be eliminated. I was lucky to realize the change. , I am very grateful for helping my classmates and the first time manager to take in trust. Relying on my continuous learning and accumulation for more than 2 years, I have grown from a novice to a qualified tool person, and also completed a job-hopping job doubling my personal salary.

In the second company, the technical vision and depth of the expansion were gradually expanded, and it was able to calmly deal with development and various problems. Since the company does not have a salary increase system, there is a plan to make a job-hopping plan. Unexpectedly, this preparation will take two years. Relying on summarization and accumulation, job-hopping will be a matter of course. There is not much luck bonus, and it is all about crossing the river. .

Therefore, I am the dumbest person to grow up. Although my initial growth has been slower, I have my stamina. As long as I grow up, I mostly rely on myself. I can instill in myself some inspirational chicken soup, learn more from other people’s strengths, and humbly ask other people’s experience and learning habits. Growth is also very good. Fast.

Growth experience:

Don't talk nonsense, just talk about the key points:

(1) There must be a technical summary . Summary of technical points, summary of pits encountered, and topical summary of major technical points (notes + code examples), organized into notes, and often flipped through (you need to use notes to summarize first when writing a blog)
(2) Have the habit of taking notes . Record technology, anomalies, new technology, review summary, daily report summary, study plan, good ideas, etc. All technical points that can be summarized are made into notes. When reviewing later, you can increase your own thinking perspective and prepare for your core positions in the future. I have maintained this habit for more than 2 years, and now I can complete the job-hopping. This habit has given me the greatest support and made it a matter of course.
(3) Look at the source code to learn . More curiosity, as enjoyment, after a long time, you will naturally become better.
(4) If you have expectations for the company, you must be responsible for doing things, and if the leaders make things difficult or harsh, you must learn to respond realistically. It may be a test to support your superiors.

Interview review data sharing

Information does not lie in much, but in fineness. Below I will briefly share a few interview review materials that have helped me a lot.

I won’t talk about the extra words. Next, I will share a review route for the interview. If you are also preparing for an interview but don’t know how to review efficiently, you can refer to my review route. If you have any questions, please feel free to communicate with each other. Come on!

Resume + social recruitment solution + classic HR interview analysis

The above is a summary of the real questions encountered in the Android intermediate and senior interviews. I hope it will be helpful to everyone. At the same time, many people often encounter many interview questions about resume production, career confusion, and HR classic interview questions. Similarly, I have also collected and compiled a full set of resume production, puzzles of recruitment by the Golden Three and Silver Four Clubs, and HR interviews. If you have any questions, I can provide professional answers.

Next is the review route of the system, you can refer to it:

1. Watch the video for systematic learning

The experience of Crud in the past few years has made me realize that I am really a fighter in the rookie. It is also because of Crud that my technology is relatively fragmented, and it is not deep enough to be systematic, so it is necessary to study again. What I lack is the system knowledge, the poor structural framework and the thinking, so learning through videos is better and more comprehensive. Regarding video learning, individuals can recommend to study at station B. There are many learning videos on station B. The only drawback is that they are free and easily outdated.

In addition, I have collected several sets of videos myself, and I can share them with you if I need them.

2. To systematically sort out knowledge and improve reserves

There are so many knowledge points in client development, and there are still so little things in the interview. Therefore, there are no other tricks for the interview, just look at how well you prepare for these knowledge points. So, when you go out for an interview, it is good to see which stage you have reached in your review.

  • Essential skills for architects to build foundations: in-depth Java generics + annotations in simple language + concurrent programming + data transmission 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° overall performance tuning: design ideas 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 framework design + image loading framework + network access framework design + RXJava responsive programming framework design + IOC architecture design + Android architecture component Jetpack
  • NDK module development: NDK basic knowledge system + underlying image processing + audio and video development
  • WeChat Mini Program: Mini Program Introduction + UI Development + API Operation + WeChat Docking
  • Hybrid development and Flutter: Html5 project combat + Flutter advanced

After the knowledge is sorted out, it is necessary to check and fill in the vacancies. Therefore, for these knowledge points, I have prepared a lot of e-books and notes on hand. These notes provide a perfect summary of each knowledge point.

3. Read the source code, look at the actual combat notes, and learn the ideas of God

"Programming language is the way the programmer expresses, and the architecture is the programmer's cognition of the world". Therefore, if programmers want to quickly understand and learn the architecture, reading the source code is essential. Reading the source code is to solve problems + understand things, and more importantly: to see the ideas behind the source code; programmers say: read ten thousand lines of source code, and practice ten thousand kinds of practices.

Mainly contains WeChat MMKV source code, AsyncTask source code, Volley source code, Retrofit source code, OkHttp source code, etc.

4. On the eve of the interview, sprint through questions

Within a week before the interview, you can start sprinting. Please keep in mind that when brushing the questions, the technology is the first priority, and the algorithm is basic, such as sorting, etc., and the intellectual questions are generally not asked unless they are school recruits.

Regarding the interview questions, I personally prepared a set of systematic interview questions to help you learn from one another:

The above content is free to share with everyone, friends who need the full version, click here to see all the content .

Guess you like

Origin blog.csdn.net/weixin_44339238/article/details/114268439