Android development for 3 years. I interviewed 12 large companies and successfully changed jobs in September. I have some interview experience I want to share with you

Android development for 3 years. I interviewed 12 large companies and successfully changed jobs in September. I have some interview experience I want to share with you

I am graduating in 2017 and have been engaged in android development for 3 years. I just completed a job change some time ago and interviewed several companies. I will share some interview experience with you, and I hope it will be helpful to everyone.

resume

The first is a resume. Generally, you can find a template and fill in the skills and project experience you have mastered.

There is a good template on github, see for details: github.com/CyC2018/Mar...

After the project is cloned, you can customize Resuem.md, and then export it as a pdf file.

The recommended length of your resume is 2 pages, too long or too short is not good.

It is recommended to replace understanding and proficiency with mastery and proficiency.

Brush questions

Algorithm questions can be said to be a must for job hunting now. However, based on my interview experience, algorithm questions are generally asked less, and some companies basically don't ask about algorithms.

Of course, if you encounter Byte, a company like Kuaishou that asks algorithms every round, it would be a pity if you can't get an offer because of algorithm questions.

Algorithmic questions are like the silent writing of ancient poems in the college entrance examination Chinese. There are not many points, but it is a pity to lose them.

According to my experience, I probably brushed it, and mastering 100 questions is enough for an interview.

Of course, complete mastery requires repeated practice, not just brushing it once.

Here is a recommendation of Qin Chao's five-time brushing method on geek time:

Five times brushing method

1. The first time, look at the solution directly

Multiple solutions, compare the advantages and disadvantages of the solutions, and write a good solution

2. The second time, open leetcode and start writing directly

Comparison of various solutions and optimization

3. The third time, after one day, repeat the question

4. The fourth time, after a week, repeat the practice

5. The fifth time, one week before the interview, recovery training

Repeat the exercises through the above methods, about 100 questions are enough to deal with the interview, if you do 3 questions a day, you can prepare for about a month

Question Bank

Also pay attention to the questions, don't use the questions one by one, such as Leetcode's daily question.

It is recommended to classify by knowledge points , so that it is more convenient to repeat exercises and master knowledge points.

After scanning the knowledge points, you can also brush according to the company classification or LeetCode hot questions 100. Generally, the company also has a question bank for algorithmic questions.

Several question banks are recommended below for everyone to use:

Classified by knowledge points

github.com/yuanguangxi…
github.com/zhangyixing…

Classified by company

github.com/afatcoder/L…

Hot Question 100

zhuanlan.zhihu.com/p/84230862

Android development for 3 years. I interviewed 12 large companies and successfully changed jobs in September. I have some interview experience I want to share with you

Face Sutra

Next is the experience of each company, share it for your reference.

Suntech Interview

  • What are the characteristics of java, what is the use of inheritance, what is the use of polymorphism
  • What is reflection, where is it used, and how to use reflection to create an object
  • The difference between proxy mode and decoration mode, handwriting a static proxy, a dynamic proxy
  • Object loading process, attributes are loaded first or methods are loaded first
  • Garbage collection mechanism and jvm structure
  • Custom View, event distribution mechanism to talk about
  • What is the difference between http and https
  • Activity startup mode, and life cycle issues of each startup mode
  • Static methods, why can't static objects inherit
  • How Activity starts Service, Activity and Service interaction, the difference between Service and Thread
  • Introduce android animation
  • Launcher starts the App process, there are several types of cross-process communication (socket)
  • Handler communication, Binder communication
  • What memory leak have you encountered and how to deal with it
  • How to switch threads in RXJava
  • Fragment hide show life cycle
  • What locks are usually used and what is the underlying principle of synchronized

Vivo

  • Briefly describe how Handler, Handler switch threads, Handler synchronization barrier
  • Glide cache, what in-depth API of Glide has been used, what stage of Glide is the custom model
  • Talk about mvc, mvp mode, presenter memory leak problem
  • Did ANR know about it? Have any actual ANR positioning problems experienced
  • What have you done to optimize performance?
  • What is the experience of actually solving UI freeze optimization
  • Have practical experience of what Bitmap optimization has been done
  • What experience do you have in the process of project construction, what gradle scripts are useful, and what operations are subcontracted?
  • Have you learned about componentization in detail? ARouter detailed principle
  • Talk about the event distribution mechanism, how RecyclerView handles internal ViewClick conflicts
  • When configuring LargeHeap in mainfest, can it really allocate large memory?

Station B

  • How to sort a roughly ordered array, the fastest time complexity
  • If you are asked to achieve it, how would you achieve a multi-theme effect
  • How to customize a FlexLayout
  • What is the principle of tinker, what hot fix framework has been used, and what is the principle of robust?
  • Tell me about your understanding of annotations and how do you parse them
  • Is synchronized a fair lock or an unfair lock, and is ReteranLock a fair lock? How did it happen
  • How are generics resolved, for example, how are generics resolved in retrofit
  • The difference between mvp and mvvm, how does mvvm update UI, does databinding use much, and the principle of databinding?
  • The principle of kotlin?
  • Do you directly use tcp and socket to send messages in the project?
  • How to directly avoid memory leaks in the network framework without releasing subscriptions in the presenter
  • Through what is the life cycle called? Have you used AIDL?
  • Talk about the caching mechanism of RecyclerView, slide 10, and then slide back, there will be several executions onBindView
  • How to implement partial update of RecyclerView, have you used the payload and the parameters in the notifyItemChange method?
  • Talk about the data structure of LinkedHashMap
  • What is the difference between put post
  • A Activity opens the life cycle of B Activity, is there any way to interrupt it?
  • Fragment hide show life cycle changes
  • Fragment replace life cycle changes

Two sides of station B

  • Why consider changing jobs
  • What work has the screen adaptation done?
  • What is your web framework used? why?
  • If you are asked to develop a page of station B, which page can be quickly started
  • What have you done to optimize performance?
  • What have you done for h5 and native communication?
  • What are the main advantages and disadvantages of plug-inization?
  • What do you think is the problem with the current APP at station B?
  • If the product requires you to develop an audio playback function, how would you proceed? What pits are expected?
  • What is the most time-consuming ViewPager switching Fragment?
  • Methods of synchronization between threads
  • The difference between locks

Three sides of station B

  • Introduce yourself and your project
  • Talk about why you are considering leaving
  • Talk about the impression of your original company
  • Why do you want to come to station B? What do you often look at at station B?
  • What is the expected salary?
  • What are your thoughts on moving to Shanghai?

Tencent

  • Introduce the structure of your project
  • How does Rxjava realize thread switching
  • Rxjava custom operator
  • Principle of ARouter
  • How does ARouter implement interface calls
  • How does ARouter implement page interception
  • How MVP handles memory leaks
  • How does OkHttp implement connection pooling
  • If you were to implement a network framework, what would you consider
  • What performance optimization work have you done
  • The principle of hot repair, the principle of hot repair of resources, will there be resource conflicts
  • How to handle sliding conflicts in nested ViewPager in ViewPager
  • What are the design patterns in the android source code
  • Talk about the principle of the binder mechanism

Tencent two sides

  • Why consider changing jobs?
  • How have you been in your company for the past few years?
  • Why do you consider this in terms of technology selection? Consider from development efficiency, product performance, product quality, product experience, etc.
  • Why was your product cut off, and from what perspective
  • In the past few years, what do you think the most valuable work you have done
  • Do you have anything to ask me? How many offers are there currently, what is the tendency?

NetEase Cloud Music

  • ViewPager2 principle
  • What is the principle of LifeCycle?
  • Why does the ViewModel not lose state after rotating the screen
  • What is the difference between Drawable and View, and what are the subclasses of Drawable
  • Will onDraw be called back when the property animation is updated?
  • OkHttp network interceptor, application interceptor? What interceptors does OKHttp have and what are their roles?
  • How to implement a custom implementation of a Jiugongge
  • What is the difference between PathClassLoader and DexClassLoader
  • What harder jobs have you done over the years?
  • Compile-time annotation and runtime annotation, why does retrofit use runtime annotation? When to use runtime annotations?
  • kotlin lazy使用,lazy viewmodel
  • Have you looked at Google's official ViewModel demo
  • What is the difference between ViewModel initialization in Activity and in Fragment?
  • What is the problem with kotlin and Java calling each other?
  • How does retrofit do post requests
  • Some methods of interface optimization, ConstraintLayout realizes three equal divisions, and ConstraintLayout animation.
  • CoordinatorLayout custom behavior, what can be blocked?

NetEase Cloud Music Two Sides

  • What hard work has been done in your project?
  • Video playback, how does a player implement pre-loading and avoid loading
  • WebView loads local pictures, how to consider security
  • What is the difference between http1.0, http1.1, http1.2
  • What is the difference between https and http
  • What encryption algorithm has been used? What is the principle of AES and RAS?
  • Android cross-process communication understanding? Has shared memory been used? How does the binder verify the pid? Does the binder driver understand?
  • Can SharedParence communicate across processes? How to transform into the difference between .commit and apply that can communicate across processes.
  • The difference between Seriazable and Parceable
  • What data structure is Bundle? What is the use of data transfer
  • What is the memory structure of Jvm, garbage collection of Jvm, and method area?
  • h5 interacts with native, the difference between webView.loadUrl and webView.evaluateUrl

Three sides of NetEase Cloud Music

  • Have you made some optimizations for WebView to open in seconds?
  • What are the difficulties in your project?
  • How does native authenticate h5 so that some pages can be adjusted, and some pages cannot be adjusted
  • Have you seen the source code of which frameworks?
  • How does viewModel realize two-way data binding?
  • How does viewModel automatically handle the life cycle?
  • Do you have any experience in image loading optimization?
  • What is the experience of handling the viewpager to switch frames?
  • A wrap_content ImageView loads remote pictures. What parameters are better to be cropped?
  • What is the difference between the two objects obtained by getDrawable?
  • The difference between tween animation and attribute animation, which is more efficient?
  • jsBridge implementation
  • How do I usually understand some new knowledge and industry trends? What are the most impressive articles recently?
  • What tools are usually used to capture packets?
  • What is the difference between Mvp and Mvvm?

Learn from

  • Webview and native communication in the project
  • How to enhance the function of WebView in the project
  • What is the difference between synchronized and ReentranLock?
  • Scenarios where synchronized and ReentranLock are abnormal.
  • Algorithm to delete duplicate elements in the array
  • Handwritten double check singleton mode, what is the difference between each step
  • Activity life cycle

quick worker

  • What is the difference between string, equals, ==
  • AsyncTask memory leak
  • dispatchTouchEvent, onInterceptEvent, onTouchEvent order, relationship
  • onMeasure, onLayout, onDraw relationship
  • Algorithm problem, reverse the array
  • Algorithmic questions, sum of linked lists
  • Talk about your understanding of coroutine
  • How to cancel the coroutine
  • Talk about the difference between MVP and MVVM

Kuaishou two sides

  • Algorithm problem, the maximum depth of the binary tree
  • If the Android end and the IOS end adjust an interface, and one fails, how will you solve it?
  • If the android end and IOS end adjust an interface, one is slower and the other is faster, what are the ideas
  • What is the principle of ARouter? If you don't use ARouter, how would you solve the lotus root? interface? What should I pay attention to when designing an interface?
  • What did h5 interact with native?
  • Login function, login successfully and then jump to a new Activity, what is involved? Analysis from the perspective of event delivery, network request, and AMS interaction
  • Is the AMS interactive call life cycle sequential?
  • Can the original process method be called for binder interprocess communication?
  • What is the difference between mvp and mvvm?
  • How to save the token locally? How to encrypt better?

Fast hand three sides

  • The principle of viewModel, why can save data after Activity is destroyed
  • What is the principle of mvvm two-way data binding? ViewModel
  • What are the difficulties in your project?
  • Pseudo code to implement a long press event
  • Implement a download function interface

Ape Guidance

  • What are the advantages of generics?
  • What is the role of dynamic agents?
  • What is GCRoot for garbage collection?
  • Do you understand the Handler mechanism? How many Loopers are there in a thread? why?
  • Do you understand coroutine? What is the role of coroutines? Can it completely replace rxjava?
  • What message communication mechanism do you use
  • What are the difficulties in your project? introduce?
  • Algorithm problem, the longest node set of the binary tree

Ape Guidance 2

  • What are the difficulties in your project?
  • Compile-time annotations deal with bytecode or java files
  • Do you use any design patterns in your project?
  • What is the principle of ARouter?
  • What is the principle of plug-in?
  • Algorithmic problem, a set of K reverse linked lists
  • The difference between broadcast and RxBus, the difference between global broadcast and local broadcast

Ape Guidance 3

  • What are the difficulties in your project?
  • @JavaScriptInterface Why not realize it through multiple methods?
  • Why not use synchronous methods to do jsBridge interaction? Synchronization can be asynchronous, and asynchronous cannot be synchronous
  • How to realize network encapsulation?
  • Algorithm question, how to find the minimum value that meets the condition of several coins of different denominations

Fighting fish

  • Talk about the principle of HashMap
  • Talk about Java's memory partition
  • Tell me about your understanding of the garbage collection mechanism, what algorithm does the old age have?
  • Tell me about your use of volatile fields?
  • Talk about the event distribution mechanism, how to write a ViewPager that cannot slide
  • Tell me about your understanding of the class loading mechanism? The difference between DexClassLoader and PathClassLoader
  • Talk about the principle of plug-in, how to solve the repetitive plug-in id of resources?
  • What is the difference between mvp and mvvm mode?
  • Which JetPack components have been used? What is the principle of lifeCycle? If I subscribe in onStart, will onCreate be called back?
  • What are the disadvantages of singleton mode?
  • Talk about the startup process of the App, what did you do in the main method of ActivityThread, and when did you start the first Activity?
  • Talk about your understanding of the Handler mechanism, synchronous messages, asynchronous messages, etc.
  • Talk about your understanding of the screen refresh mechanism, double buffering, triple buffering, butter model
  • In onCreate, onResume, onStart, where can the width and height be obtained
  • Why can view.post get the width and height? Have you seen the source code of view.post?
  • When is attachToWindow called?
  • Do you understand the principle of DataBinding?

Didi one side

  • Do you understand the JVM class loading mechanism? When will the class be loaded? What is the specific life cycle of the class loading process?
  • What is the GCRoot of the Handler memory leak?
  • What design patterns are used in the animation?
  • What design patterns are used in OkHttp?
  • How is the OkHttp connection pool implemented? How to deal with SSL inside?
  • Why should generics be erased? Do you understand Kotlin's generics? Generic pecs principle
  • Synchronization barrier
  • What work has performance optimization done?
  • What is the cache structure of RecyclerView? What is cached? Will cachedView execute onBindView?
  • RecyclerView nested RecyclerView, NestScrollView nested ScrollView sliding conflict
  • ViewGroup onIntercept returns true when Action_Move, how to pass the event
  • Launcher startup icon, how many processes are there?
  • JMM visibility, atomicity, orderliness, what can synchronized guarantee?
  • Where is AtomicInt used in the source code
  • Does AQS understand?
  • LinearLayout red wrap_content in Activity, including View green wrap_content, find the interface color
  • What are the pitfalls in the use of ViewModel?
  • Have you ever written about the layout using DSL and anko?
  • What is the time complexity of HashMap lookup?
  • The Ali programming specification does not recommend the use of thread pools, why?
  • Four thread pool principles?
  • What algorithms do you know?
  • Have you used IdleHandler?

Didi two sides

  • How to encapsulate a string-to-digit tool class
  • How to find the depth of the current Activity View
  • How to achieve multi-process? If you start a multi-process APP, how many processes will run?
  • Can reflection reflect final modified fields?
  • Activity is different from AppCompactActivity. Will Activity be packaged in a package?
  • How to make two threads print alternately
  • How to terminate a thread, Thread.Interupt must be effective?
  • What is the principle of continuous animation call?
  • Have you done some SDK operations?
  • Can coroutines be used in Java projects?
  • SharedPreference principle? Which thread is reading xml?
  • Do you understand the process of APK packaging?
  • The composition of the class file? What's in the constant pool?
  • When does automatic boxing happen? Compile time or run time
  • What is the principle of bugly log collection?
  • What has been done to start optimization? If the home page is to be used for initialization?
  • DataBinding principle

Didi 3 sides

  • What is the principle of plug-in? Are there any non-runtime plug-in solutions?
  • What is the principle of ARouter? Does the annotation processor process java or bytecode
  • What is the difference between java and bytecode?
  • What is the principle of kotlin empty security?
  • What has been done for performance optimization? What tools have been used? Are there any tools for precise measurement?
  • What is the difference between kotlinc and javac compiled bytecode?
  • What is your role in the team?
  • Have you done anything to advance the project
  • Talk about the principle of hot repair?

Byte beating

  • What are the difficulties in your project?
  • How stable is your project? What stability optimization work have you done?
  • What has been done to optimize WebView performance?
  • What does AIDL in out oneWay stand for?
  • How much do you know about the thread pool? There are several rejection strategies, why is there newSingleThread
  • How much do you know about cross-process communication? Does the pipeline understand?
  • Let me introduce the coroutine, talk about the scope and context of a coroutine, what does the + sign of the coroutine represent
  • How does Handler sleep? What is the principle of epoll? How to implement a delayed message, if a delayed message is removed, will the hibernation be released?
  • Algorithm Fibonacci Step
  • Handwritten Producer Messager Model
  • IdleHandler application scenario

Byte beating 2 sides

  • Custom rounded image
  • Custom LinearLayout, how to measure the width and height of child View
  • What is the difference between setFactory and setFactory2?
  • Plug-in skinning solution
  • The principle of plug-in, which method is hooked by startActivity
  • How to cancel after gesture operation ActionCancel
  • How to optimize the time of xml inflate involves IO and reflection. Do you know compose?
  • Algorithm question: the leftmost node of each layer of the binary tree
  • RecyclerView cache structure, RecyclerView prefetching, RecyclerView partial refresh
  • The relationship between setOnTouchListener, onClickeListener and onTouchEvent

How did I review before the interview?

In fact, there are so many knowledge points in client-side development, and there are still a few things to ask 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's good to see which stage of your review you have reached.

As for the results, I am still satisfied. I have got a few offers, and I have to start a new journey.

Here I will share the review route during the interview: (The review materials of the following systems are collected and compiled by me from various leaders)

"Android development seven modules core knowledge notes"

Android development for 3 years. I interviewed 12 large companies and successfully changed jobs in September. I have some interview experience I want to share with you

"960 The most complete Android development notes in the entire network"

Android development for 3 years. I interviewed 12 large companies and successfully changed jobs in September. I have some interview experience I want to share with you

"379-page Android Development Interview Collection"

Took six months, we've put together the most comprehensive on the market this Android interview questions resolved Daquan
includes Tencent, Baidu, millet, Ali, TV Plus, the US group, 58, cheetahs, 360, Sina, Sohu and other Internet companies first-line interview asked The topic. Familiarity with the knowledge points listed in this article will greatly increase the chance of passing the first two rounds of technical interviews.

How to use it?

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

"507 pages of Android development related source code analysis"

As long as it is a programmer, whether it is Java or Android, if you do not 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 various excellent open source libraries.

There are too many materials, and all display will affect the length. For the time being, I will list some of these screenshots first. The above resources are free to share, and the above content is included in the open source project: [ github ] . You can get it yourself.

Guess you like

Origin blog.51cto.com/14894816/2539005