Android browser development! The most comprehensive BAT interview questions are sorted out, and I have taken the offer to join the job

Preface

Today, I will share with you several implementation methods of TIM's strongest keep-alive ideas. In this article, I will use ioctl to interact with the binder driver to wake up the new keep-alive service in the fastest way and prevent keep-alive failures to the greatest extent. At the same time, I will also share with you how I can quickly realize the advanced operation of ioctl binder without knowing the binder.

Disclaimer: Now this keep-alive method can no longer keep alive in custom Android systems such as MIUI, and can only live in the simulator most of the time . However, this solution is still useful for keeping alive with our lightweight customized Android system and some system-level applications.

As the major mobile phone manufacturers in the Android camp attach great importance to battery life, the mobile phone conference two or three years ago took anti-keep-alive as a selling point of the system, and constantly proposed various anti-keep-alive solutions, which led to the current desire to achieve Application keep-alive is simply difficult to get to the blue sky, and even requires a team to specialize in this matter. Even super apps like WeChat have to fall under the anti-keep-alive skirt. Allowing background activation is too power-consuming, and if background activation is not allowed, no messages will be received. . Android finds a wild way to keep it alive, but it blocks one. However, many scenes have strong requirements for keeping alive. Some people have considered the feelings of our developers. Why should we embarrass ourselves?

I think this is an unreasonable part of Android design, the road can be blocked, but it is still necessary to leave a unified keep-alive interface. Whether this interface is implemented by Google or a manufacturer, it is better than the clumsy system self-starting management or JobScheduler. I think that in essence, it is meaningless to let application developers try various ways to keep alive. The way to keep alive is blocked, but keep alive still needs to be done, and the cost of keep alive has also increased. It's a waste of life. Android pot . (Only on behalf of personal views)

The company's needs

Different companies have different needs. There are many companies in the market today, which can be roughly divided into two categories: large companies and small companies. They have different needs for talents when recruiting.

small company

Small companies generally urgently need talents who can put into work. Because the company is small in size and urgently needs profitable expansion, they need to put in work and production, so they pay more attention to practical ability. Generally speaking, interviews of small companies are more focused on Android development. They will pay more attention to whether you have done similar projects before, or have similar work experience, and whether they have encountered some of the problems they encountered. To prepare for interviews with these companies, in addition to some basic knowledge points, you also need to pay attention to some of the problems often encountered in Android development, such as caching, common open source framework problems, etc.

big company

Compared with those small companies that have just started, or have just started, large companies have already had a relatively deep accumulation of resources and a relatively complete system and system. They pay more attention to the comprehensive ability of talents and have future development potential.

In the interview, big companies will almost mention data structures and algorithms, computer networks, operating systems, and Java. In these points, the data structure and algorithm should be a watershed. The preparation for this problem requires a long time to accumulate. It may be difficult to temporarily hold the Buddha's feet. It is a mule or a horse. You will know it after pulling it out for a walk. Is it a master? know.

Therefore, many companies are obsessed with testing algorithms, such as Baidu, Meituan, and Taobao. The entire interview may ask you to write more than 5 algorithmic questions by hand. This point is mainly to tell everyone that this threshold almost determines the level of the job you are finally looking for, so I will advise everyone who is looking for a programmer-related job to prepare for this as soon as possible. For example, swipe more leetcode or other similar questions.

Then in the remaining pieces of knowledge, I just want to say that you don’t need to understand all of them, but you must have in-depth research on a certain piece of knowledge and be able to answer the interviewer’s 4 to 5 additional questions, "T" Talents with type knowledge structure are very popular. If all knowledge points can only be answered one or two, the interviewer will feel that your level is like this, and that you have no spirit of inquiry. The result of this judgment is very scary, because a person without the spirit of inquiry cannot be a good programmer.

I think the knowledge points for interviewing Android can be sorted according to their importance:
1. Data structure and algorithm
2. Java, Android
3. Computer network
4. Operating system
5. Database or design pattern, etc.

For java , the more important things are multi-threaded synchronization and asynchronous, java virtual machine memory recycling, containers, and object-oriented knowledge. You can read several specialized books for multi-threading and virtual machines alone. For other knowledge points, you can gnaw more about java programming ideas. If you don’t understand, read more blogs to deepen your understanding.

For Android , the asynchronous mechanism, the drawing of the view, the custom control, and the four major components are all very important. Whether it’s Android or Java, it’s best to look at some source code. Java can look at the source code of some containers. Android can look at the source code of asynchronous communication such as handler, looper, message, or the source code of some open source frameworks. It is definitely a plus to look at the source code. .

Computer networks can focus on the upper layers, and the transport layer should focus on research. Generally speaking, if you have mastered the above points, it is enough to talk about several rounds of interviews. Generally, the interviewer can guide him to talk about some knowledge points that you are good at. For the next few knowledge points, you can master some of the more important ones first. You may not encounter them every time you interview, but you also have to prepare.

##The above is to provide some general ideas, let's talk about the knowledge points of each piece in detail below

1. Data structure and algorithm

Recommended books: Big talk about data structure, data structure and algorithm analysis (Java language description), sword refers to offer, enters Silicon Valley.

Recommended online brushing website: Leetcode

Recommended plan: mainly do three things

1. First look at the data structure of the big talk, familiar with some basic concepts, this book only talks about some basic data structures, such as B-tree, B+ tree, red-black tree, you need to read some blogs or websites by yourself, recommend an explanation Algorithm website-July algorithm. In addition, massive data processing is also a topic frequently examined. It combines some knowledge of data structure and operating system. This requires targeted preparation.

2. Then start to brush the questions. The most recommended is leetcode. It is recommended to brush the questions according to the label (such as queue, stack, hash table). The questions are from easy to difficult, and it is best to be able to brush about a hundred questions. One question a day takes at least three months or more, so this takes a long time and should be prepared early. The book Entering Silicon Valley is organized according to topics. Basically, the topic comes from leetcode, which can be used as a reference.

2. Then we need to analyze the source code implementation of some common data structures (such as queues, stacks, hashmaps, etc.). The book on data structure and algorithm analysis has some topics, which can be prepared in conjunction with some blogs.

How to become an Android senior architect!

Architects must have the ability to abstract thinking and analysis. This is the basic quality for system analysis and system decomposition. Only with this ability can the architect see the overall system and control the overall situation. This is also the basis for the formation of the architect's overall view. How do you have this ability? One is from experience, and the other is from learning.

The architect not only needs to have experience in the problem domain, but also needs to have experience in the software engineering domain. In other words, the architect must be able to accurately understand the requirements, and then use the idea of ​​software engineering to transform and decompose the requirements into a degree that can be implemented in computer languages. The accumulation of experience requires a time process, and no one can help you in this process, it needs you to go through it.

However, if you consciously cultivate and continuously absorb the experience of the predecessors, you can still shorten this cycle. This is also one of the motivations for me to organize architects to advance to this series.


The necessary knowledge and skills to become an Android architect

Study notes corresponding to the map (handwritten by Ali P8 Daniel, I am responsible for collating into PDF notes)

Part of the content display

"Design Thinking Interpretation of Open Source Framework"

  • table of Contents
  • Hot repair design
  • Plug-in framework design

    "360° performance optimization in all aspects"
  • Design thinking and code quality optimization
  • Program performance optimization

In...(img-WmluvtAs-1614434501377)]

  • Program performance optimization
    [External link image transfer...(img-5bmvnzsf-1614434501379)]

This article has been included in the open source project: [ GitHub ], which contains self-learning programming routes in different directions, a collection of interview questions/faces, and a series of technical articles, etc. The resources are continuously being updated...

Guess you like

Origin blog.csdn.net/fanzhang_vip0723/article/details/114194976