android review--基础知识


一.面经1.

参考:https://mp.weixin.qq.com/s/jBM_VvNJcam_BvAri6t7sQ

1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?

2.对于Android 的安全问题,你知道多少

3. 如何缩减APK包大小

4.Android与服务器交互的方式中的对称加密和非对称加密是什么?

5.设备横竖屏切换的时候,接下来会发生什么?

6.Android启动Service的两种方式是什么? 它们的适用情况是什么?

7.谈谈你对Android中Context的理解?

8.Service的onCreate回调在UI线程中吗?

9.请介绍下AsyncTask的内部实现,适用的场景是?

AsyncTask内部也是Handler机制来完成的,只不过Android提供了执行框架来提供线程池来执行相应地任务,因为线程池的大小问题,所以AsyncTask只应该用来执行耗时时间较短的任务,比如HTTP请求,大规模的下载和数据库的更改不适用于AsyncTask,因为会导致线程池堵塞,没有线程来执行其他的任务,导致的情形是会发生AsyncTask根本执行不了的问题。

10.谈谈你对binder机制的理解?

binder是一种IPC机制,进程间通讯的一种工具.

Java层可以利用aidl工具来实现相应的接口.

11.Android中进程间通信有哪些实现方式?

Intent,Binder(AIDL),Messenger,BroadcastReceiver

12.介绍下实现一个自定义view的基本流程

1、自定义View的属性 编写attr.xml文件

2、在layout布局文件中引用,同时引用命名空间

3、在View的构造方法中获得我们自定义的属性 ,在自定义控件中进行读取(构造方法拿到attr.xml文件值)

4、重写onMesure

5、重写onDraw

13.Android中touch事件的传递机制是怎样的?

1.Touch事件传递的相关API有dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent

2.Touch事件相关的类有View、ViewGroup、Activity

3.Touch事件会被封装成MotionEvent对象,该对象封装了手势按下、移动、松开等动作

4.Touch事件通常从Activity#dispatchTouchEvent发出,只要没有被消费,会一直往下传递,到最底层的View。

5.如果Touch事件传递到的每个View都不消费事件,那么Touch事件会反向向上传递,最终交由Activity#onTouchEvent处理.

6.onInterceptTouchEvent为ViewGroup特有,可以拦截事件.

7.Down事件到来时,如果一个View没有消费该事件,那么后续的MOVE/UP事件都不会再给它

14.Android多线程的实现方式有哪些?



Thread & AsyncTask

Thread 可以与Loop 和 Handler 共用建立消息处理队列

AsyncTask 可以作为线程池并行处理多任务

15.Android开发中何时使用多进程?使用多进程的好处是什么?



16.ANR是什么?怎样避免和解决ANR?



17.Android下解决滑动冲突的常见思路是什么?

18.如何把一个应用设置为系统应用?


19、Android内存泄露研究
20.内存泄露检测有什么好方法?

二、面经二

参考:https://mp.weixin.qq.com/s/14Upn13fz6zcGqLnPpZ-Rg

1.android启动模式

2.View的绘制流程

3.、事件分发机制

4.消息分发机制

5.AsyncTask源码分析

优劣性分析,这个网上一大堆,不重述

6.如何保证Service不被杀死?如何保证进程不被杀死?

7.Binder机制,进程通信

8、动态权限适配问题、换肤实现原理

这方面看下鸿洋大神的博文吧

9.SharedPreference原理,能否跨进程?如何实现?

面经三

参考:https://mp.weixin.qq.com/s/YGI16h2O6LPWM7c1G1XIfg

1.MVP 架构模式的优点和缺点,与 MVC 的比较;

2.Android 多进程通信

3.目前在职公司的产品介绍和自己负责的模块

4.Android 内存泄露,举例几个容易发生内存泄露的场景;

5.Android 插件化的原理

6.OKHttp 的源码和原理

7.Retrofit 的源码和原理

8.RecyclerView 中的 LayoutManager 

9.Kotlin 和 Java 相比,有哪些优点,有没有在实际项目中使用;

10.MVC 、MVP 和 MVVM 三种架构的区别和优点

11.Vue.js 数据和视图双向绑定的原理,emmmmmm,这个真的不知道,只知道有个 v-- bind 这东东;

12.Retrofit 框架的源码以及原理;

13.Android 插件化框架的原理;

14.热更新框架的原理

15.热更新框架的原理

16.HTTPS 的原理;

17.android 内存泄露,举例几个容易发生内存泄露的场景;

18.Android Native 和 JS 通信有几种方式,有没有用到什么框架之类的;

19.Android 布局优化相关的问题,就回答了 include 、 merge 标签和 ViewStub 以及降低 View 层级之类的;

20.有没有了解过 React Native 或者 Weex 

面经四:

参考:https://mp.weixin.qq.com/s/YGI16h2O6LPWM7c1G1XIfg

1.单元测试有没有做过,说说熟悉的单元测试框架

2.Retrofit 框架的原,里面使用到的注解是编译时注解还是运行时注解;

3.RxJava 操作符,map 和 flatMap 的区别;

4.Fragment 在 ViewPager 里面的生命周期,滑动 ViewPager 的页面时 Fragment 的生命周期的变化;

5.Fragment 在 ViewPager 里面的生命周期,滑动 ViewPager 的页面时 Fragment 的生命周期的变化;

6.Gradle 打包;

7.AOP IOC 的好处以及在 Android 开发中的应用

8.View 触摸事件分发机制;

9.Java基础: static 和 final 关键字的用法

10.ArrayList 和 LinkedList 的区别和使用场景;

11.MVC 、MVP 和 MVVM 三种架构的区别和优点;

12.Dagger2 框架中 @module 和 @component 的区别;

13.Kotlin 特性,和 Java 相比有什么不同的地方;

14.MVP 架构中 Presenter 定义为接口有什么好处;

15.Jenkins持续集成;

16.Android 插件化的原理;

17.Handler 、MessageQueue 、Looper三者的关系和原理;

18.对于 Android 开发,自己擅长哪方面

19.Java动态代理的使用,InvocationHandler 有什么用

20.为什么 Google 会推出Fragment ,有什么好处和用途? 直接用 View 代替不行么?

21.安卓安全方面了解过吗,反编译、加壳之类的;

22.MVC 、MVP 和 MVVM 三种架构的区别和优点;

23.Retrofit框架的原理,感觉这个每次都会被问到。。。;

24.HTTPS 握手的步骤和过程;

25.Jenkins 自动构建;

26.Android Studio 3.0 中 Gradle 的 api 和 implementation 有什么区别

27.HandlerThread 的原理和使用场景;

28.AsnycTask 的原理和使用场景;

29.Handler 、MessageQueue 、Looper三者的关系和原理

30.Android 插件化的原理;

31.热修复的原理;

32.应用程序崩溃统计以及数据分析;

33.Java GC 回收,如何判断对象存活

34.Java GC 算法;

35.AsyncTask 、HanlderThread 、IntentService 的原理和使用场景;

会哪些 RxJava 操作符,map 和 flatMap 的区别;

36.Retrofit框架的原理,emmmmmm ,又是这个;

37.Bitmap 优化;

38.RecyclerView 和 ListView 的相同和不同点,在 item 回收上有什么不同;

39.View 事件分发机制;

40.说说 apk 打包流程;

41.有没有做过 apk 多渠道打包;

42.Android 组件化的原理,还有一些组件化平时使用的问题;

43.Binder 有没有了解过;

44.HashMap 的存储原理;

45.Kotlin 特性,和 Java 相比有什么不同的地方;

46.Android Framework层有没有了解过,说说 Window 窗口添加的过程

47.Window Activity View 三者的关系

48.消息推送有没有做过,推送到达率的问题;

49.Android 分享 SDK 有没有做过;

50.项目介绍,负责内容等;

51.HTTPS 的原理;

52.HTTP 2.0 有没有了解过;

53.讨论技术和业务哪个重要;

54.Android 热修复原理;

面经五:

参考:https://mp.weixin.qq.com/s/sYuYUbSoHAVjzXDLE1p2KA

1.事件分发机制

2.设计模式

单例模式   责任链模式  模板方法模式

3.android 内存分析,描述分析的过程。如果怀疑一个 activity 存在内存泄漏,应该怎么做

4.是否看过 okhttp 源码?

5.android打包过程,如何把资源文件和java代码打成apk的

6.android A->B->A的生命周期,如果页面被销毁,数据该怎么保存。

7.retrofit 的原理,结合rxjava的使用,databindng的使用,mvp mvc mvvm的异同。

8.和js交互的方式。

    jsInterface 和 jsBridage 介绍了下。然后问了解过 jsBridage 是怎么实现的吗? 大概看过两端定义协议,然后 js 回调 json 数据给客户端。但是没有自己去实现一次 jsBridage,所以还是有些模糊。

9.android模块化 aar相关的东西。

10.用过哪些图片框架,

11.线程间通信

12.arrayList删除元素 a,b,b,c删除完b。

面经六:

参考:https://mp.weixin.qq.com/s/dq_wBsp1sUYA2M_oW9hv4Q

1. Broadcast的分类?有序,无序?粘性,非粘性?本地广播?

2. Android中的事件传递机制?

3. Handler的原理?

4. ANR出现的情况有几种? 怎么分析解决ANR问题?

5. 内存泄露的场景有哪些?内存泄漏分析工具使用方法?

6. 如何实现启动优化,有什么工具可以使用?

7. 常用的设计模式有哪些?是否了解责任链模式?

面经七:

参考:https://mp.weixin.qq.com/s/anOgSHJ3e3O0n8djY6GakA

四大组件

1.是否了解Activity的四种启动模式?(All)

2.如果假设A是Standard,B是SingleTop,C是SingleTask,D是SingleInstance的启动模式,那么以A->B->C->D->A->B->C->D这种情况开启Activity,分析一下最后的工作栈是怎样的情况?(大厂)

3.Activity的生命周期?在横竖屏转换时候的生命周期流程是怎样的?(小厂)

4.在 SingleTop 模式中,我如果打开一个已经存在栈顶的Activity,他的生命流程是怎样的?(小厂)

5.Service简要介绍一下?(基本都会问,但不可能只说概念上的,需要展开All)

6.Service的两种启动方式简要介绍一下吧?(大厂、小厂)

7.Android 数据持久化的方式有了解过嘛?ContentProvider 有接触过吗?(小厂)

8.聊聊 Android 的广播机制吧?(All)

Android 消息机制:

1.简单的描述一下Handler消息传递机制是怎么实现的?(All)

2.子线程中使用 Handler 需要注意什么?(中厂)

3.Hanlder 的 postDealy()调用后消息队列会发生什么变化?(中厂)

4.简要解释一下 ANR?为什么会发生 ANR?如何避免发生 ANR?如何定位 ANR?那你还了解哪些线程间切换的类?简要选一个进行一下阐述吧?(大厂)

 View 及其他控件的使用和优化

1.简要阐述一下消息分发机制吧?(All)

2.MotionEvent 是手指触摸屏幕产生的一系列事件。包含的事件有:

3.滑动冲突事件应该怎样去解决?(中厂、小厂)

5.ListView 和 RecyclerView的选择?为什么?(中厂)

6.ListView 是怎么实现 RecycleBin 并更新 View 的?(大厂)

面经八:

参考:https://mp.weixin.qq.com/s/14Upn13fz6zcGqLnPpZ-Rg

1.android启动模式

2.View的绘制流程

3.事件分发机制

4.消息分发机制

5.AsyncTask源码分析

6.如何保证Service不被杀死?如何保证进程不被杀死?

7.Binder机制,进程通信

8.动态权限适配问题、换肤实现原理

9.SharedPreference原理,能否跨进程?如何实现?

面经八:

参考:https://mp.weixin.qq.com/s/qlSiIJRwPMpPbpji5Lx5uA

1.Handler机制

2.View的绘制流程

3.事件传递机制

4.Binder机制

5.Android中进程的级别,以及各自的区别。

6.. 线程池的相关知识。

7.内存泄露,怎样查找,怎么产生的内存泄露

8.怎样计算一张图片的大小,加载bitmap过程(怎样保证不产生内存溢出),二级缓存,LRUCache算法

9.LRUCache算法是怎样实现的

10.ArrayList 和 Hashmap 简单说一些,区别,底层的数据结构.

11.Handler 消息机制

12.引起内存泄漏的场景

13.多线程的使用场景?

14.常用的线程池有哪几种?

15.知道哪些单例模式,写一个线程安全的单例,并分析为什么是线程安全的

16..Java中的集合有哪些?解释一下HashMap?底部的数据结构?散列表冲突的处理方法,散列表是一个什么样的数据结构?HashMap是采用什么方法处理冲突的?

17.解释一下什么是MVP架构,画出图解,一句话解释MVP和MVC的区别?

18.Handle消息机制?在使用Handler的时候要注意哪些东西,是否会引起内存泄漏?画一下Handler机制的图解?

19.是否做过性能优化?已经采取了哪些措施进行优化?

20.引起内存泄漏的原因是什么?以及你是怎么解决的?

21..关于并发理解多少?说几个并发的集合?

22.Handler 消息机制图解?

23.画图说明View 事件传递机制?并举一个例子阐述

24.类加载机制,如何换肤,换肤插件中存在的问题?hotfix是否用过,原理是否了解?

25.说说项目中用到了哪些设计模式,说了一下策略模式和观察者模式?

26.会JS么?有Hybid开发经验么?

27.说一下快排的思想?手写代码

28.堆有哪些数据结构?

面经九:

参考:https://mp.weixin.qq.com/s/JrJ61wgcSJVh5TtoQMbw9w

1.Activity 的生命周期是什么? onPause 和 onStop 有什么区别?

2.Android 五种布局的性能对比?

3.Android 四大组件是什么?分别说说对它们的理解?

4.关于 Service 的理解?它的启动方式有什么区别?

5.了解 fragment 吗?说说你对它的理解?

6.自定义过 view 吗?它的步骤是什么?说说你自定义 view 过程中出现的问题,以及是如何解决的?

7.刷新 view 的几种方式,他们有什么区别?

8.Android 实现数据存储的几种方式?

9.如何实现 Android 中的缓存的,通过使用第三方库和自定义来分别说明一下缓存技术的实现?

10.如何实现 Activity 与 fragment 的通信?

11.Android 5.0、6.0、7.0 新特性?

12.Android 中的动画分类?

13.你以前是如何进行屏幕适配的?

14.说说 Activity 创建过程?

15.Android 中如何与 JS 交互的?

16.了解 APP 的启动流程?

17.你知道哪些图片加载库?他们有什么区别?ImageLoader 的内部缓存机制是什么?是如何实现的?

18.Android 中是如何实现异步通信的?

19.说说 Handler 内部实现原理?

20.使用过 AsyncTask 吗?说说它的内部实现原理?它有什么缺陷?如何改进?

21.知道 JNI、Binder 吗?说说你对它们的理解?

22.如何实现进程间的通信?

23.说说 Android view 和 viewGroup 的事件分发机制?

24.你开发过程中使用到了哪些第三方库?了解过他们的源码吗?

25.你了解广播吗?它与 EventBus 有什么区别?能互相实现吗?

26.你们网络请求是如何实现的?知道 Volley 吗?内部实现流程是什么?它与 OKHttp 有什么区别?

27.你了解哪些第三方功能?知道推送吗?它的原理是什么?

28.接触过 MVP 模式吗?说说看对它的认识?

29.知道 Android 中的多渠道打包吗?

30.Android 签名机制的原理?反编译解压后的文件夹所包含的内容有哪些?

31.你了解过模块化、组件化开发吗?

32.开始开发 APP 如何进行架构?

33.APP 工程模块是如何划分的?你是如何进行封装的?

34.APP 是如何进行优化的?知道 OOM 吗?如何解决内存泄漏?









你可能感兴趣的:(android review--基础知识)