An veteran driver who has been developing for many years thought he knew the road well, and after finishing this warning interview with a big factory, he said that he almost made a fatal mistake!

background

It’s really tiring to find a job in the winter season, but there is no way. The company has to move out of Shanghai, so I can only come out to find a job. During this period of time, I was miserably abused. I was killed by one academic qualification. The work experience of my colleagues is almost the same as mine. , Are 6-year-old rookies, undergraduates. I voted for 10 companies and two of them. I have voted for dozens of companies and only 3 companies have been interviewed temporarily. The gap, who is telling me that academic qualifications is not a problem, I can’t kill him with a brick. . Not much nonsense, but to summarize:

Android

First of all, for Android, I suggest that in addition to the correct understanding of some basic knowledge, we must look at the source code, at least look at the source code of the Handler mechanism, AsyncTask and two or three open source libraries. If you have time, you can check the list below. You must look at the source code, such as Glide, OkHttp, etc., so that you will not be labeled, just a label of a person who can use the tool, but a person who understands the principle of the tool, which will give you a very good job in the interview. Big plus points.

  • What is ANR and how to avoid it? (Tencent)
  • What are the life cycles of Activity and Fragment?
  • Activity life cycle when switching between horizontal and vertical screens
  • Defects and problems of AsyncTask, talk about its principle.
  • The priority of the process in android?
  • Why does Bunder pass objects need to be serialized? What is the difference between Serialzable and Parcelable?
  • Animation
  • Context related
  • New features in each version of Android
  • Json
  • The difference between Jar and Aar
  • What is the memory size allocated by Android for each application
  • Update UI method
  • How to use ContentProvider
  • The role of Merge and ViewStub
  • The life cycle of the four major components (Meituan)
  • Communication method between activities
  • When switching between horizontal and vertical screens, the life cycle of Activity in various situations
  • Life cycle comparison between Activity and Fragment
  • The life cycle when the Home button is pressed when there is a Dialog on the Activity
  • Which methods are inevitably executed when jumping between two activities?
  • Comparison of the four startup modes of Activity
  • Activity state is saved in recovery
  • How to manage the life cycle of fragment in various situations
  • The role of serialization, and the difference between the two types of serialization in Android
  • Talk about the understanding of interfaces and callbacks
  • Data storage method in Android
  • Android attribute animation characteristics
  • ART (byte beating)
  • Apk package body optimization
  • Hook
  • Proguard
  • Architecture
  • Jetpack
  • NDK development
  • Class loader

Java (emphasis)

Many of the knowledge points listed here need to be really digested and understood. For example, if you know the implementation method to ensure thread safety, you will also need to solve some practical scenarios, such as handwriting a producer consumer model, or printing an odd number on a thread. One thread prints even numbers, prints alternately, and finally outputs 1, 2, 3, 4... etc. So don't memorize it by rote, understanding memory is also the most efficient way.

  • The difference between HashMap and HashTable and CurrentHashMap (Tencent)
  • The difference between synchronized and volatile, ReentrantLock, CAS
  • JVM class loading mechanism, garbage collection algorithm comparison, Java virtual machine structure, etc.
  • Four references to Java
  • Java's generics, the difference between <? super T> and <? extends T>
  • What are the statuses of Java threads, what locks are there, and the difference between various locks
  • The difference between final, finally, and finalize
  • The difference between interface and abstract class
  • The difference between sleep, wait and yield, how does the thread of wait wake it up?
  • The difference between == and equals and hashCode in java
  • The meaning of the interface
  • The difference between String, StringBuffer, StringBuilder (Meituan)
  • Tell me about common encoding methods?
  • The difference between process and thread
  • The difference between Serializable and Parcelable
  • The way and principle of converting string to integer
  • What is the difference between static proxy and dynamic proxy, and in what scenarios?
  • Talk about your understanding of Java reflection
  • Talk about the principle of generics and give an example
  • Talk about your understanding of Java annotations
  • Data type (byte beating)
  • type of packaging
  • Buffer pool
  • Thread safe
  • Object general method
  • inherit
  • reflection
  • abnormal
  • Generic
  • annotation
  • Design patterns in containers
  • Iterator mode
  • Source code analysis
  • Thread state transition
  • Implement the difference between Runnable interface and Callable interface
  • What is the difference between the execute() method and the submit() method?
  • How to create a thread pool
  • Introduce Atomic Atomic Class
  • Talk about the use of AtomicInteger

computer network

  • The difference between TCP and UDP (Tencent)
  • Shake hands three times and wave four times. Why is it three times, not twice?
  • The difference between HTTPS and HTTP. HTTP 2.0, 3.0?
  • The browser enters a URL and press Enter. What is the process of network transmission?
  • What is the frequency of sending packets after TCP establishes a connection?
  • OKHttp
  • How to verify the legitimacy of the certificate?
  • Where is symmetric encryption and asymmetric encryption used in https? Do you have any understanding of encryption methods (such as RSA)?
  • How does the client determine that the message it sent has been received by the server?
  • Talk about your understanding of WebSocket
  • The difference between WebSocket and Socket
  • Talk about your understanding of Android signatures
  • Please explain why Android needs to add a signature mechanism?

Data structure and algorithm

  • Sorting (Tencent)
  • Binary tree
  • Linked list
  • Stack/queue
  • Dichotomous
  • Hash table
  • Heap/Priority Queue
  • Binary search tree
  • Array / double pointer
  • greedy
  • String processing
  • Dynamic programming
  • Matrix (byte beating)
  • Binary/bit operation
  • Invert integer
  • LRU caching strategy

Summary of the interview

To sum up, the main content involved is:

  • Four major components
  • Handler
  • View drawing
  • Event distribution mechanism
  • Sliding conflict
  • Sliding nesting
  • Process keep alive
  • Performance optimization

How to prepare for basic knowledge

From the above process of getting an offer, we can find that whether it is a written test or one or two sides, it will involve the investigation of basic knowledge. Therefore, in the process of preparing for school recruitment, the most core thing is to put the basic knowledge Keep it tight, specifically including, a language you are most familiar with. If it is Java, then you must be familiar with the basics of Java, including

  • The meaning and function of Java keywords
  • Interface and abstract class
  • Polymorphism and inheritance
  • Boxing and unboxing
  • …..

I will sort out the specific ones later, of course, only the basics, maybe it is more difficult on the two sides, so it is necessary to advance, for Java, the advanced includes

  • Java memory area
  • Java memory model
  • Java GC mechanism
  • Multi-thread safe
  • …..

Here are just a few examples to get a feel, so how do I prepare? Answer: reading + practice + thinking + summary

How to prepare algorithmic questions

Regarding how to prepare algorithmic questions, this is actually the hardest to prepare and the easiest to prepare. Algorithmic questions are in a special position in the whole offer process. In the written test, basically every written test is the last one. Two algorithm questions. If you can’t get more than half of the AC, then the chance of passing the written test is relatively small. If you can get all ACs, of course it’s better. Except for the written test, in one side and two sides, you will usually end with two algorithm problems by hand. Interview, of course, if these two shredded algorithmic questions can directly give the optimal solution and write the complete code, then even if your previous basic and project answers are not good, it is a very big highlight, and you can also make Your chances of passing this interview have increased a lot, so algorithmic questions play a pivotal role in the entire offer process.

So how do you prepare? First of all about the algorithm, I suggest that before learning the algorithm, start from simple to difficult. After mastering the basics, go directly to LeetCode's official website and start from the mid difficulty level. After the mid difficulty level is almost the same, then challenge the hard difficulty level. Generally, client-side development is required. Can brush up to 50 hard difficulty questions. Basically, most of the algorithmic questions in the interview can give ideas. If you are pursuing perfection and insurance, it is recommended that you can brush as many hard questions as you can, the more the better.

How to prepare the project

Because I do Android myself, but I think no matter which direction it is, the interviewer will definitely ask you to pick the most familiar item for the project written on the resume. Then the question is coming, how should I put one How about a clear description of the project to the interviewer, and at the same time attracting the interviewer to make this project a highlight?

Regarding this issue, we first need to make it clear that when we state any problem, the logic must be clear, and we should not jump around when we speak, so how can we express it clearly? Points + concise summary. How to divide? For example, for a project, I usually talk about it in three points. First, the functions that the project achieves, second, what work you have done in the project, and third, the results achieved, and then simply sum it up. It is difficult, so it is strongly recommended that each project be prepared and summarized in advance according to these three points, and then as the number of interviews increases, you will form muscle memory. Later, when the interviewer asks you to introduce a project, it will not To exaggerate, you will find that you can answer this question without thinking.

How to prepare hr noodles

In general technical interviews, the hr interview is basically 80% stable. Most of the hr interviews will not be able to scan people, of course, except for some very few companies. So when you arrive at the hr interview, you don’t need to be so nervous, just talk and communicate normally. , Let’s take a look at the general hr noodles and what questions will be asked, and feel the specific content of the hr noodles:

  • Score the first two interviews? why?
  • Are there any requirements for working hours? What do you think about working overtime?
  • When was your most stressed and how did you deal with it?
  • What is your future career plan?
  • ............

The most important and most important knowledge written on the resume must be

The reason why this is put to the end is because this is the fastest and most effective short-term quick preparation method. If we do not allow time for the preparation of the basic + project + algorithm like the above for the total reason, then I hope you at least Make sure that the knowledge written on the resume can withstand the question, so the knowledge written on the resume must be thoroughly familiar. Personal advice, try to write the points that you are familiar with, and write the points that are as difficult as possible and you can answer them with confidence. If you really don’t have time, you can pick two to three points, such as Java, Java GC mechanism, Java synchrnoized keyword (lock), do not ask for more, but you must be able to withstand the question, and then write it in your resume Above, these two points should be able to be dealt with in 2 days, and then try to write as much as you can.

After writing your resume, you must know what knowledge points are involved in your resume, and then sum up the knowledge points involved. For example, if you write Java multithreading, then how to ensure the type of multithreading and multithreading lock , The common producer-consumer model is handwritten, these must be understood. Of course, you can also assume that you are an interviewer. Seeing this resume of your own, how you might examine yourself, nothing more than just ask what you have written. , Right, so the safest thing is to extract the knowledge points on the resume, and then make a list of knowledge points, and then summarize the problems that can be investigated one by one against each point on the list.

Conclusion

In general, in this interview, I have two main points. One is that preparing early is more important than anything else. Most people who are proud of autumn recruits continue to prepare from the beginning of spring recruits. Success and opportunity will always favor those who are prepared. Luck will certainly occupy a certain proportion in this, but luck alone is far from enough . Second, in an interview, whether a person is confident or not can be judged completely. If two people, it will also greatly affect the final result. Self-confidence is really a very good quality. This quality will make you exude endless personal charm .

Interview review route reference

At present, what we have to do is to choose our own sub-fields for in-depth research, to have a deep understanding of the basic principles , and to approach and reach the advanced level as soon as possible. Of course, you must also understand new technologies and have an open mind to learn some new technologies . Don’t switch to learning as soon as a new technology comes out. This will lead to nothing at all. Of course, new technologies have a development process. It won't be popular and a large number of applications will wait for it to mature.

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!

The first is the super detailed Android development learning mind map , because the picture is too big, so I only put the content of the secondary directory, and you can add more details here to add WeChat to get it .

Next, we need to sort out knowledge and improve our reserves! (Seven thematic learning resources for Android mobile architects)

  • 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.

Then learn systematically through the source code

As long as it is a programmer, whether it is Java or Android, if you don't read the source code and only look at the API documentation, it will just stay on the skin. This is not good for the establishment and completeness of our knowledge system and the improvement of actual combat technology.

The one who can really exercise the most ability is to read the source code directly, not only reading the source code of major systems, but also including a variety of excellent open source libraries.

"486 pages of super comprehensive Android development related source code refined analysis"

"486 pages of super comprehensive Android development related source code refined analysis"

Prepare for the interview questions of the big factory to increase the passing rate of the big factory

After half a year, I compiled the most comprehensive Android interview question analysis on the market.

1. You can directly browse the required knowledge points through the catalog index, and check the missing points.
2. The number of five-pointed stars indicates the frequency of interviews, and represents an important recommendation index

"379-page Android Development Interview Collection"

"379-page Android Development Interview Collection"

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

Finally, there is a series of Android learning resources that took more than a year to organize: Android源码解析、Android第三方库源码笔记、Android进阶架构师七大专题学习、历年BAT面试题解析包、Android大佬学习笔记wait, these contents are free to share with everyone, friends who need the full version, click here to see all the contents .

Guess you like

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