In the interview, it’s best not to lie about your salary. Bytedance really wanted to go there, but I passed several rounds of interviews, but I didn’t get an offer at last. I can only think of several reasons: 1. There is a better candidate, it is not likely, I see still recruitment. I am an interview Android developer with 3 years of experience. The following is the interview process:

One side

1. Plug-in. Hook mode to start the activity. TaskAffity. 2. Okhttp support HTTP2? What are the features of HTTP2? TCP congestion control? TSL handshake and specific asymmetric encryption algorithms. 3. How to implement post(Runnable) of handler. Callback, runnable, MSG execution priority. 4. How is blocking implemented? Why doesn’t it block the main thread? 5. Find the maximum distance between two nodes in the binary tree. 6.206 Meaning, which is the unmodified resource? 302 meaning, 301 Meaning 7. Multi-process communication problems. Binder. Details of Java classes generated by AIDL. What are the problems with multiple processes? 8. What are the parameters passed in by the dynamic proxy? Can non-interface classes implement dynamic proxies? 9. What is the difference between an Application and an Activity in the Context inheritance tree? What are the differences in their use? 10. Find the maximum node distance for any binary tree

Second interview

1. Design a log system. 2. Classification of memory leaks. How to view the memory leak problem 3. Touch event source problem. 4. The problem of componentization. The difference between Module and APP. How moduler communication is implemented. 5. How to deal with the log collection of native crash? 6. Annotation implements a hint function: if the value of int is greater than 3, a hint is required.

On three sides

This chapter describes the startup process of a FLUTTER. 2. This chapter describes the differences between flutter and WEEX 3. 4. What are the means of communication with JS in webView? 5. This section describes the principle of Flutter_boost

All around

1. The characteristics and usage scenarios of adapter and decoration mode 2. How to do video codec 3. Tricolor sort

HR side

1. Are you looking at other job opportunities besides Bytedance? 2. Byte, XXX company, XXX Company, what is your priority and why? 3. What was your previous salary? What are your salary expectations? 4. Do you have any hobbies? 5. Do you know the job requirements? 6. Do you have any questions?

This is a story I read in a forum. I know that many of us programmers have a dream of big factories, but how to prepare for the interview of big factories, how to chat with HR, such as talking about money and so on, many programmers are at a loss. This article will talk about these problems according to some of their own views.

What are the right candidates

Before introducing how to interview, here is the analysis from the company’s point of view: “What kind of candidate is the technical talent that the company needs? “In my experience as an interviewer at my current company, an Android programmer with the following characteristics is what we’re looking for:

  1. Bachelor degree or above (elite schools are preferred)
  2. 2 years or above working experience (famous company is better)
  3. Solid technology, technical pursuit and passion for work
  4. Good communication and cooperation

Among the above four points, the third one is the most important, that is, technology, which is the most important and direct reason to decide whether you can pass the interview. Generally speaking, the larger the company, the higher the technical requirements, although some positions do not require that good skills, but in order to distinguish candidates, the interview process will still be a little in-depth topics, I believe you have experienced.

In addition to technical skills, good communication and collaboration skills are also important. Perhaps many people find this abstract and think to themselves, “How do you know if I have good communication and collaboration skills?” In fact, this question is not difficult, the interview process is a communication process, if you can not communicate well with the interviewer, it shows that the candidate has a communication problem. How to communicate well with the interviewer? Give the following suggestions:

  • Be polite and respectful.
  • Understand the interviewer’s questions and answer them directly.
  • Modest and prudent, friendly attitude.

Degree is not a requirement, even if the candidate’s school is not good, it is possible to pass the interview, which requires the candidate to be very solid technical skills. And work experience, the reason is more than 2 years, this is because social recruitment objects are generally have some work experience, and 1 year of work experience is a little short, take Baidu for example, the lowest level of social recruitment is GENERALLY T4, almost exactly 2 years of experience.

To summarize, the ideal candidate would look something like this:

  1. Solid technical background, technical pursuit (must)
  2. Good attitude, communication and personality (must)
  3. At least 2 years working experience (essential)
  4. Famous universities, enterprises, high education (optional, bonus)

Basically, if you meet 1 and 2, you can pass the interview. 3 and 4 are secondary conditions. But generally speaking, if you do not meet 3, it is difficult to meet 1.

Thus, technology is the determining factor in the interview results. So what degree of technical mastery can you easily pass the interview? Having said that, it seems that Android has nothing to do with it, so let’s take Android as an example to analyze the skills needed in the interview process.

Technical knowledge sorting catalogue

All the technical details below are organized in the open source project [GitHub], if you need to help yourself.

1.Java basics
  • The basic idea of object orientation
  • Object class related: several key functions of Object class, String involved in the constant pool concept, serialization & deserialization.
  • Key keywords: final, static.
  • Inner classes: Classification of inner classes, application scenarios, and how inner classes are translated into classes.
  • Abstract classes & interfaces: differences, application scenarios.
  • Coding: the purpose and classification of coding.
  • Exception: Exception system, custom exception.
  • Annotations: Basic concepts of annotations, classification, compile-time annotations & runtime annotations.
  • Containers: Important internal implementations of containers, and comparisons between containers.
  • Memory model.
  • Recycling.
  • The process of class loading.
  • Generics: classification, wildcard & upper and lower boundaries, generic erasure.
  • Reflection: use.
2.Android basics
  • Dalvik and Art virtual machines
  • Activity: Life cycle, launchMode.
  • Fragment: Life cycle, lazy loading, the difference between two types of Adapter.
  • BroadcastReceiver: basic concept, broadcast classification, and permissions.
  • Service: life cycle, return value of onStartCommand, difference between startService and bindService, interaction between the same process and different processes, implementation principle of IntentService
  • Important tool classes & source code implementation: AsyncTask, HandlerThread, Handler, IntentService, LruCache, LinkedHashMap, SparseArray.
  • RecyclerView: cache principle, and ListView contrast, Adapter how to adapt to a variety of layout.
  • Storage: Database upgrade & Optimization, ContentProvider, SharePreference.
  • SDK version upgrade compatibility problem.
  • Android permission management mechanism.
Picture 3.
  • Bitmap related: Bitmap size calculation, quality, inJustDecodeBounds, inBitmap.
  • Comparison and compression of several image formats.
  • Large image loading: BitmapRegionDecoder
4. The algorithm

There is no shortcut, brush questions, but brush questions, according to the type of summary.

Open source frameworks
  • RxJava: Application scenarios of operators, internal implementations of key operators, and comparison with RxJava.
  • Glide: Process, cache related implementation.
  • Retrofit: Process, dynamic proxy & annotation parsing.
  • OkHttp: process, queue implementation, cache implementation.
Performance of 6.
  • Performance optimization techniques: startup speed optimization, layout optimization, memory optimization, power optimization, APK size optimization, list sliding optimization.
  • Performance optimization tools: TraceView, Systrace, Debug GPU overdrawing & GPU rendering mode analysis, Hierarchy Viewer, MAT, Memory Monitor & Heap Viewer & Allocation Tracker, LeakCanary, Lint.
  • ANR
  • ANR reason
  • ANR generation process source code analysis
  • Information Collection Process
  • Trace file Analysis
  • Analyze the basic process
  • Concrete example
  • How can ANR be avoided
  • Performance practice: the performance problems solved are described from four points: problems encountered, problems analyzed, problems solved, and results.
7.View
  • Drawing process: Measure, layout, draw three key processes.
  • Event distribution: Principle of event distribution, handled sliding conflicts.
  • Custom View: Canvas & Path, the implementation of a more complex custom View.
8. Architecture
  • MVP: The idea of MVP & pros and cons, application to the project,
9. The source code
  • AMS
  • WMS
  • Binder
  • Application Startup Process
  • APK related knowledge points
  • APK composition: resources.arsc composition, Androidmanifest.xml, aAPT function and principle
  • APK packaging process
  • APK installation process
  • Principle of APK signature & verification
  • Dexopt principle
Network 10.

Basics: Take a look for << computer networking >>, the emphasis is on the network layer model, TCP/UDP, HTTP/HTTPS.

11. Design patterns

According to 23 network models and three categories, each design pattern contains the following three aspects, and at least several commonly used ones should be prepared:

  • Basic concepts: UML diagrams, simple examples, application scenarios, strengths & weaknesses.
  • Implementation of Android source code
  • Application in the project
12. A multithreaded
  • Look at the art of Concurrent programming, and the contents of this book are the best body of knowledge for multithreading.
  • Encountered multithreading problems, how to solve.
13.Gradle
  • Common configurations.
  • Multi-channel packaging.
14. The plugin
  • The core idea of plug-in.
  • Several plug-in framework implementation principle.
15. Modular
  • The advantages of componentization.
  • Arouter: Use mode and implementation principle.
16.Kotlin

You can take a look.

17. The multimedia

Audio and video playback.

18. The big front end

ReactNative, Flutter: Those who haven’t learned about Flutter can learn about ideas.

19.JNI

Invoke the implementation.

All knowledge points are organized in the open source project [GitHub], there is a need for friends can comment to receive.

How to talk to HR about money, etc.

First of all, you’ve met with HR, which means you’ve basically been selected as a candidate. At this time, HR will talk to you about a lot of questions, these questions are to get some information about you. Such as personality, reflexes, emotional intelligence and so on. In addition, most companies don’t have a veto right, and it’s more likely that you had a better candidate than they did that you didn’t get the job.

Then comes the question of money. First of all, hiring people with the lowest salary is certainly one of the assessment of HR, so it is very normal to lower the price. And the salary of the previous company is also a very important reference, generally speaking, the salary increase rate of more than 30% is a very cool thing, usually about 20%.

Your offer is usually the upper limit of the offer. In consideration of the low offer, you can increase your expected salary by 1K or so. Then you can choose your offer according to the interview situation.

  • Nice face, originally wanted 16K, so more 1-2K is no problem
  • Just so-so, let’s make it 16 K
  • The face is average or not good, but also want to enter this company, can reduce 1-2K as appropriate, this mainly depends on yourself
  • Don’t really want to work for this company, whatever you want

conclusion

If you want to go to a good company, but the current hard strength is not enough, I think it is necessary to try, the level of technical ability can determine how far you go, the level of platform can determine your height.

If you’ve worked your way into the company of your choice, don’t slack off. Career growth is like learning new technology.