Only two years of Android work experience, but more than two years of interview questions, this experience will open your eyes!

Android interviewer: No matter how long the development is, we will deal with "old fritters" uniformly!

Last year, the job-hopping was unsuccessful, and he stayed at Flush for another year. The gains in the past year have been quite large. As far as the company’s projects are concerned, I am already very familiar with it. This is true, but you can learn a lot from the thought and design inside. In the past year, I have optimized many things and thought about many more reasonable solutions based on the business.

But I still plan to change jobs. Salary and the inability to promote the project are a big problem. You can't fish or fish. I found it with the mentality of going north.

For stock futures, the experience is similar, the interview is too smooth...

  1. Activity start mode

  2. Activity and Fragment data interaction
    The method of interaction between threads is all right, and the interaction between processes is even better, FragmentManager/getActivity()

  3. Singleton realization method

  4. Event distribution mechanism

  5. What open source libraries have been used to
    write projects, I have basically used them and understand the principles; the information module of the reconstruction project uses Retrofit & RxJava, and the code framework has been optimized by myself, such as thread switching, page search, etc., in fact, it is clear Principle, where to change is clear at a glance

  6. How is Socket subcontracted and coded in the project?

  • Package types are divided into Text type, Table type, resource type, curve type, interactive mode data (curve type attributes are mainly points, the key method append, and data can be updated incrementally)

  • The company has defined a Base64 encoding, of course, don’t worry about the algorithm.

  • Extended compression (mainly used for Table and curve types) and encryption (refer to HTTPS)

  1. How to draw a stock chart? Like swiping left and right, clicking on the cross cursor appears, the
    principles can be known: custom View & touch feedback

I asked for 16K, just like I entered the flush, I gave a reply on the same day

Like

The focus is on kotlin, RN, and weex. In fact, it is normal. E-commerce is biased towards mixed development. After all, activities are updated very frequently and are not very consistent with their own technology stack. It is estimated that it is dead and normal. From a company perspective, it is definitely best. If you’ve found it, if you don’t match the technology stack from a personal point of view, you will definitely get paid...

  1. The relationship between Handler, Looper, MessageQueue

  2. Similar to the launchMode for Weibo sharing function, why not singleInstance?

  3. The specific implementation principle of Binder, the number of data copies: proxy mode & protocol, too detailed forgot, I have seen it in development art exploration, kernel analysis, source code scenario analysis...

  • I personally feel that I can apply what I have learned, such as App startup. It is not necessary to remember every step clearly. I know that ApplicationThread and ActivityThread need to be created, and then combined with hot and cold startup. Think about the startup process and life cycle of activity, although it has not been deep enough. At that step, the implementation of the startup mode must also be implemented in AMS. The knowledge is actually interlinked. Think about the designer's reasoning in this way -> But maybe I don’t have enough experience and understand it, but rote is really boring...
  1. RxJava: One request is used up and then another request (concat)/Which operator is used for two requests in parallel (zip)
  • In fact, the scenario is very common. For example, we also have entrusted two-factor authentication, and there are more concurrent requests, but RxJava uses less, and there is no awareness. The request for information is very simple, but remind me that two-factor authentication can be packaged and simplified- > Probably not, the company's network framework is not so decoupled

  • This kind of similar problem is the most annoying to me, I really don’t, but knowing is the problem that can be known by entering a keyword search

  1. The difference between StringBuilder and StringBuffer, the realization principle of StringBuffer

  2. How does the rehash expansion of HashMap operate: I don’t have much impression
    1). Create a new Entry empty array, the length is twice the original
    2). Traverse the original Entry array, and re-Hash all the entries into the new array. Why re-Hash? Because the length is enlarged, the Hash rules have also changed
    -> What I want to ask should be the formula of rehash. I saw it before, but I didn’t remember it...
    -> You may also want to know: LoadFactor: HashMap load factor, default Is 0.75f; Capacity: the current length of the HashMap, the length of the HashMap must be a power of 2

  3. The difference between the stack virtual machine and the register virtual machine: I have never heard of it, but know that the register processing speed is the fastest

  4. How are Retrofit's annotations resolved: dynamic proxy, AOP

  5. The reason for the memory leak of Handler; why can't the memory be released and the MessageQueue holds? -> I am in a ditch. I must know that the internal class holds external references and the activity cannot be released; what I think is that the thread is GC Root, and the Handler is running, which will cause the activity to be unable to release, so I was guided and said that the MessageQueue was held by the way activity

  6. JSBridge security vulnerability solution: know that there are security problems, but did not study carefully

  7. The realization principle of ClassLoader parent delegation

  8. The realization principle of IntentService

  9. Which frameworks have usually been used: RxJava and Retrofit refactored the information module

Amoy

  • View drawing process, carried data structure, tree benefits
  • Algorithm question: put 0 to the top
  • Event distribution mechanism
  • The difference between MVC MVP MVVM
  • The process of ClassLoader, the benefits of ClassLoader
  • Handler memory leak
  • Multithreading mechanism
  • How HTTPS works
  • How to compress data, data security
  • Plug-in principle
  • ARoutet principle
  • Componentized communication
  • What memory optimization has done
  • Discussed load balancing
  • System startup process and activity startup process
  • The biggest stage of growth

Aladdin, one side

The leader was not there, and the classmates recommended it. The interviewer said that entering Aladdin was a bit of a stubborn talent, so he should try Dachang. I think too, but I don’t know anyone who pushes in...

  • Difference between HTTP and HTTPS
  • HTTPS process, security and compression processing in the project
  • Binder mechanism
  • ClassLoader mechanism
  • Understanding of architecture
  • OkHttp principle, how to assemble parameters
  • Event distribution mechanism
  • HashMap's hash hash implementation, is it thread safe, and why?
  • The difference between ArrayList and Vector expansion
  • How to achieve thread safety in HashTable and ConcurrentHashMap
  • JVM memory model, the ratio of the new generation to the old generation?
  • How to divide in the new generation? benefit?
  • What data structure are you familiar with?
  • Use of design patterns in source code and projects
  • The writing and thinking of singleton mode
  • Java8's optimization of hashmap
  • The difference between hashmap and hashset, how hash is hashed
  • tcp three-way handshake

Headlines, one side

  • The most accomplished part of the project
  • Understanding of Thread? Thread state? What is the difference between blocking and running status?
  • Types of locks, what is a spin lock, ReentrantLock?
  • How does HashMap work?
  • HandlerThread principle and usage scenarios?
  • -> IntentService
  • How to realize the thread pool, the principle of blocking queue?
  • -> I didn’t understand the blocking queue implementation. I subconsciously mentioned the Looper.loop loop, which is really the programmer’s intuition.
  • Which method does Fragment initialization parameter call?
  • How to implement Fragment lazy loading?
  • Event distribution mechanism, analyze the 3-layer View package, click click
  • How to draw custom View, pay attention to it?
  • How is the network framework refactored and encapsulated?
  • TCP three-way handshake
  • MVP encapsulated the information, talk about the understanding of MVC and MVP
  • Why use Bundle and not HashMap to transfer data?
  • The difference between Serialable and Parcelable
  • Glide's image three-level cache
  • Interactive mode

Love inventory

After the noodles, there is a beautiful young lady who has a noodle product, and she feels happy.

For most of the items that are asked, each point has been extended a lot, so there are not many questions.

  • Is Service familiar?
  • Service process keep alive?
  • MVC and MVP

I found that most of the questions are similar, I want to stop...

Good luck, the interview questions will continue to be updated...

Interview review route, sprint to big factory

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 not deep enough to be systematic enough, so it is necessary to study again. What I lack is system knowledge, poor structural framework and ideas, 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 necessary.

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 to see 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.

System learning direction:

  • Essential skills for architects: in-depth Java generics + annotations in simple language + concurrent programming + data transmission and serialization + Java virtual machine principle + 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, read 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 perception 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: see the ideas behind the source code; programmers say: read thousands of lines of source code, and practice thousands of ways.

Mainly include 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 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:

to sum up:

There is no shortcut to change your life. You need to walk this path yourself. Only deep thinking, constant reflection and summary, maintaining the enthusiasm for learning, and building your own complete knowledge system step by step are the ultimate ways to win. It is also the mission that programmers should undertake.

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/112574054