当前位置:网站首页>2022 latest Android interview written examination, an Android programmer's interview experience
2022 latest Android interview written examination, an Android programmer's interview experience
2022-07-05 18:40:00 【InfoQ】
Preface

1. Routing in componentization 、 The realization of buried point
- The first is the page jump between components (Activity To Activity, Fragment To Fragment, Activity To Fragment, Fragment To Activity) As well as data transfer during jump ( Basic data types and serializable custom class types )
- The second is the call of custom classes and methods between components ( Components provide services to the outside )
- Code buried point: Call... When an event occurs SDK The corresponding interface inside sends buried point data , Baidu statistics 、 umeng 、TalkingData、Sensors Analytics The third-party data statistics service providers mostly adopt this scheme
- Full buried point: Full buried point refers to Web page /App All that comes from within 、 The act of satisfying a condition , All reports to the background server
- Visual burying point: Through visualization tools ( for example Mixpanel) Configure the collection node , stay Android The end automatically analyzes the configuration and reports the buried point data , So as to realize the so-called automatic embedding point
- No burying point: It doesn't really need to be buried , It is Android The terminal automatically collects all events and reports the buried point data , Filter out useful data in the back-end data calculation
2.Hook And pile insertion technology

- want root jurisdiction , direct Hook System , Can kill all App.
- nothing root jurisdiction , But only Hook Oneself app, For other systems App incapable of action .
3.Android Signature mechanism of ?
- A summary of the news: On message data , Perform a one-way Hash function , Generate a fixed length of Hash value
- digital signature: A method of storing message signatures in electronic form , A complete digital signature scheme should consist of two parts : Signature algorithm and verification algorithm
- digital certificate: A certificate authorized (Certificate Authentication) Central digital signature file containing public key owner information and public key
4.Android5.0~10.0 A big change between
- MaterialDesign Design style
- Support 64 position ART virtual machine (5.0 To launch the ART virtual machine , stay 5.0 Before is Dalvik. The difference between them is :Dalvik, Each run , Bytecode needs to be converted into machine code by an instant compiler (JIT). ART, The first time I installed the app , Bytecode will be precompiled into machine code (AOT))
- The notification details can be designed by users themselves
- Dynamic authority management
- Support fast charging switching
- Supports folder drag and drop applications
- Camera new professional mode
- Multi window support
- V2 Signature
- Enhanced Java8 Language patterns
- Night mode
- Optimization notification : Notification channels (Notification Channel) Notice sign Sleep Notification timeout Notification settings Notice to clear
- Picture in picture mode : In the list Activity Set up android:supportsPictureInPicture
- Background restrictions
- Auto fill frame
- system optimization
- And so on
- indoor WIFI location
- “ bang ” Screen support
- Security enhancements
- And so on
- Night mode : All apps, including mobile phones, can set the dark mode for them .
- Desktop mode : Offer something similar to PC Experience , But it was far substitute PC.
- Screen Recording : By long press “ Power Supply ” Menu " Screenshot " To open .
5. Under the said Measurepec This class
- UNSPECIFIED: The parent container is not right View There are any restrictions , How big, how big . It is often used inside the system .
- EXACTLY( Accurate model ): The parent view specifies an exact size for the child view SpecSize. Corresponding LyaoutParams Medium match_parent Or specific values .
- AT_MOST( Maximum mode ): The parent container specifies a maximum size for the child view SpecSize,View The size of cannot be greater than this value . Corresponding LayoutParams Medium wrap_content.

6. Please give an example of Android Layout types are commonly used in , And describes its usage and typesetting efficiency
- Traditional layout ( To write XML Code 、 Code generation ):
- Frame layout (FrameLayout):
- Linear layout (LinearLayout):
- Absolute layout (AbsoluteLayout):
- Relative layout (RelativeLayout):
- Table layout (TableLayout):
- New layout ( Visual drag and drop control 、 To write XML Code 、 Code generation ):
- Constrained layout (ConstrainLayout)
- For nested layers View for , Its typesetting efficiency :LinearLayout = FrameLayout >> RelativeLayout
7. difference Animation and Animator Usage of , Summarize its principle
- Types of animation: The former has only transparency , rotate , translation , Telescopic 4 Species attribute , And for the latter , As long as it is the property of the control , And there are setter The methods of the attribute can perform a dynamic change effect on the attribute .
- Operational objects: The former can only UI Component execution animation , But attribute animation can animate almost any object ( Whether it's on the screen or not ).
- Animation playback order: stay Animator in ,AnimatorSet It is through playTogether()、playSequentially()、animSet.play().with()、before()、after() These methods are used to control multiple animations to work together , So as to achieve accurate control of the animation playback sequence
8. What image loading libraries have been used ?Glide Where is the source code design subtle ?
- Image loading Library :Fresco、Glide、Picasso etc.
- Glide The subtlety of the design is :
- Glide Life cycle binding: You can control the loading status of the picture to synchronize with the life cycle of the current page , Make the whole loading process start with the state of the page / recovery , stop it , The destruction
- Glide Cache design: adopt ( Three level cache ,Lru Algorithm ,Bitmap Reuse ) Yes Resource Cache design
- Glide The complete loading process: use Engine The engine class exposes a series of methods for Request operation
9. How to bypass the 9.0 Limit ?

10. How to do this for application update ? ( Grayscale , Force update 、 Sub regional update )
- Get the online version number through the interface ,versionCode
- Compare Online versionCode And local versionCode, The update window pops up
- download APK file ( File download )
- install APK
- Find a single channel to launch a special version .
- Upgrade the platform , It is allowed to push upgrade notifications and even force version upgrades for some users .
- Open a separate download portal .
- Both versions of the code hit app In the bag , And then in app End implant test framework , Used to control which version is displayed . The test framework is responsible for communicating with the server side api signal communication , Controlled by the server app On A/B Distribution of versions , A specified group of users can see A edition , Other users see B edition . The server will have corresponding reports to display A/B Quantity and effect comparison of versions . Finally, it can be controlled by the background of the server , All users switch online to A perhaps B edition ~
- Either way, you need to do a good job of version management , Assign a special version number to distinguish . Of course , Since it's gray scale , Data monitoring ( General data 、 New feature data 、 Main business data ) We still have to do it in place , The data pile to be driven should be driven . also , Grayscale version should have the ability to recover , Generally, it is forced to upgrade to the next official version .
11. Will use Kotlin、Fultter Do you ? Talk about your understanding
- Kotlin Is a cross platform with type inference , General purpose programming language for static types . Kotlin Aim at and Java Full interoperability , Of its standard library JVM Versions depend on Java Class library , But type inference allows its syntax to be more concise .
- Flutter By Google Create an open source mobile application development framework . It is used for development Android and iOS Applications for , As well as Google Fuchsia The main way to create an application
- About kotlin Importance , I believe you can experience in daily development , Apply to actual development , Grammar sugar needs to be avoided ( For example, single column mode 、 A null value judgment 、 Higher order functions, etc )
- as for Flutter, at present Google The official documents are not perfect , There are few projects written in this language on the market , If you need to be specific , Please refer to the official documentation
The end of the
- Mind map
- Performance optimization learning notes


- Performance optimized video
- When you have a learning path , What to learn , I also know how to go in the future , If you see too much theory, you have to practice it .
边栏推荐
- A2L file parsing based on CAN bus (3)
- All you want to know about clothing ERP is here
- 进程间通信(IPC):共享内存
- Share: ZTE Yuanhang 30 Pro root unlock BL magick ZTE 7532n 8040n 9041n brush mask original brush package root method Download
- Writing writing writing
- Clickhouse (03) how to install and deploy Clickhouse
- [paddlepaddle] paddedetection face recognition custom data set
- 怎么自动安装pythn三方库
- 2022最新中高级Android面试题目,【原理+实战+视频+源码】
- Is it complicated to open an account? Is online account opening safe?
猜你喜欢

About Estimation with Cross-Validation

Simulate the hundred prisoner problem

让更多港澳青年了解南沙特色文创产品!“南沙麒麟”正式亮相

vs2017 qt的各种坑

Record a case of using WinDbg to analyze memory "leakage"

Use QT to traverse JSON documents and search sub objects

Rse2020/ cloud detection: accurate cloud detection of high-resolution remote sensing images based on weak supervision and deep learning

How to write good code defensive programming

ConvMAE(2022-05)
![Whether to take a duplicate subset with duplicate elements [how to take a subset? How to remove duplicates?]](/img/b2/d019c3f0b85a6c0d334a092fa6c23c.png)
Whether to take a duplicate subset with duplicate elements [how to take a subset? How to remove duplicates?]
随机推荐
一文读懂简单查询代价估算
金太阳开户安全吗?万一免5开户能办理吗?
彻底理解为什么网络 I/O 会被阻塞?
Failed to virtualize table with JMeter
案例分享|金融业数据运营运维一体化建设
【在优麒麟上使用Electron开发桌面应】
技术分享 | 常见接口协议解析
SAP 特征 特性 说明
c语言简便实现链表增删改查「建议收藏」
Can communication of nano
常见时间复杂度
7-2 保持链表有序
项目中遇到的问题 u-parse 组件渲染问题
Linear table - abstract data type
【HCIA-cloud】【1】云计算的定义、什么是云计算、云计算的架构与技术说明、华为云计算产品、华为内存DDR配置工具说明
How to write good code defensive programming
ICML2022 | 长尾识别中分布外检测的部分和非对称对比学习
线性表——抽象数据类型
中文版Postman?功能真心强大!
Idea configuring NPM startup





