Android面试问题总结

/ 默认分类 / 没有评论 / 471浏览

###Android原生问题部分

1:Android 中有哪5种布局模式?你一般什么场景下用那种布局??


线性布局:LinearLayout

帧布局:FrameLayout

表格布局:TableLayout

相对布局:RelativeLayout

网格布局:GridLayout

2:Android 系统应用层的四大组件是那几个?


活动:Activity

服务:Service

内容提供者:Content Provider

广播接收器:broadcast receiver

3:Android中的Context 是什么?功能是什么?说下继承关系?实现类是什么??


4:什么事OOM?如何解决OOM问题


5:什么是Intent?intent 的常用属性有哪些?intent 一般用在什么情况下?


Intent:是Android常用的一个用于组件间互相通信的信息对象 Intent 中的七大属性: Action( 内置常用Action:ACTION_VIEW 向用户展示某信息,比如使用浏览器打开网址,用图片应用显示图片等 ACTION_SEND 用于发送数据,比如电子邮件应用或者一些社交应用。 ACTION_DIAL 显示带拨号盘的页面,让用户可以进行拨号动作 )

方法描述
setAction(String action)指定 action
setClass(Context packageContext, Class<?> cls)指定目标组件类名
setData(Uri data)设置 Data 的 uri
setType(String type)设置 Data 的 MIME 类型
setDataAndType(Uri data, String type)同时设置 Data 的 uri 与 MIME 类型
addCategory(String category)添加一项 Category,Intent 可有多个 Category
addFlags(int flags)设置 Flag,决定目标组件的启动方式
putExtra(String name, 基本类型和序列化类 value)放入附加数据,参 2 可以是各种基本类型,及序列化后的自定义类
putExtras(Bundle extras)把封装了数据信息的 Bundle 对象放入 Intent

常用发送 Intent 启动组件方法:

方法描述
startActivity()启动 Activity
startActivityForResult()启动 Activity,该 Activity 销毁后会回调到上个活动的 onActivityResult() 方法
bindService()启动 Service,5.0后只能接收显性 Intent 作为参数
sendBroadcast()发送标准广播
sendOrderedBroadcast()发送有序广播

6:Hanlder 的作用是什么?Handler的消息出来主要有哪五个部分组成?

Handler包含处理消息的5个部分由:Message,Handler,Message Queue,Looper和ThreadLocal , message :用于传递消息的书籍模型,作用是仅限于线程间的通信的时候传递消息, 主要是:what :标识符,obj:对象型数据 ,int :arg1,arg2携带的参数 Handler:主要来发送消息和处理消息,主要是三个方:sendMessage(),dispatchMessage(),HandleMessage() MessageQueue是消息队列:主要是用于存放handler发送过来的消息,这些消息会一直存在队列中,等待被处理,每一个线程只有一个MessageQueue队列, Looper:每个线程通过Handler发送的消息都保存在

7:AsyncTask和Handler +Thread 机制的区别?

8:事件传递机制应用中主要是哪三个函数?传递的流程是什么?

Android中事件传递:

  1. dispatchTouchEvent(Motion ev)
  2. onInterceptTouchEvent(Motion ev)(只存在与ViewGroup)
  3. onTouchEvent(Motion ev)

事件传递流程:

9:Android 多线程(AsyncTask )作用是什么?内部原理是什么?如何使用?(提示三个范型,4个步骤,可以举例说明!)

10:ANR产生的原因是什么?如何来定位分析这些问题,一般的对应的解决方案是什么?

11:内存泄漏产生的原用有哪些?对于这些原因请分别描述避免内存泄漏采取的措施有哪些?

12什么事Dalvik虚拟机(DVM)?DVM跟JVM虚拟机的区别是哪些?DVM虚拟机的优缺点有哪些?

13:什么事反射机制?反射机制主要提供功能有哪些?java的Class的三种获取方式事什么?如何通过反射获取私有的成员变量和私有方法

14:JNI和NDK的定义是什么?他们的区别是什么?他们分别在安卓开发中的哪些场景中用到?请分别说说二者的使用方法及流程?

15:请在冒号后写出Java中关于反射相关的class中一些重要方法名?

  1. 获取一个类的所有注解
  2. 获取还在这个类的类的加载器
  3. 获取这个类的所有方法
  4. 获取方法的返回类型
  5. 获取方法的传入参数类型
  6. 测试这类是否是一个注解类
  7. 获取所有的构造方法:
  8. 获取指定的构造方法(参数:参数类型.class)
  9. 获取这个类的实现的所有接口:
  10. 获取这个类中所有被public 修饰的成员变量
  11. 获取指定名字的呗public修饰的成员变量
  12. 返回Class所表示的类。通过调用默认(即无参数) 构造函数创建一个新的实列

16:为什么是Binder?使用Binder优势是什么?IPC方式除了Binder外还有哪2种方式?他们的主要区别是什么?(提示:数据拷贝次数是怎么样的)

17:Android中两个App两个应用之间交换书的通信方式有哪些?

18:请列举出Android.mk 文件的语法结构?(即有哪些配置项)

19:说说你在实际工作中,是如何解决AppBarlayout滑动不畅问题的?

20:说说你在实际工作中,Android开发中是如何是用Lambda表达式的(举例说明)?

然后,说说有哪几种场景必须要用Lambda表达式?

21:如何在Android应用程序中获取View的位置

22:如何在parent里的相对坐标位置的有哪4个方法

23:获取在屏幕的相对位置有哪4个方法

24:Android Studio如何打包apk ,aar,jar包,这三种的步骤?请说说aar和jar包区别

25:Android 研发中内存对象序列化如何做(请举例说明)?实现序列化有哪两种方法会死?这两种方法的区别是什么?

26:Android 研发种,如何方式按钮重复点击?(请说出N种方案)

27:你所了解的APk热修复有哪些知名框架可以用?说说他们的优缺点?然后说说你用过了哪些?

28:Android研发中,如何减小Apk的大小,有哪些方案?

29:请描述Android研发中,截屏事件的流程?谈谈你在实际工作中是如何完成截屏的后发送后台的方案?

30:请描述您所了解的Android启动详细过程(提示:第一步是从上电BootLoader开始的,由于每一个Android os版本这个过程细节并完全一样,所以答题前你要写一下你描述的过程是那个版本的OS)

31:请描述您所了解的Android的app启动详细过程?

32:Android 中实现序列化的方式:

Flutter相关的加分问题:

1:请列举Flutter和React-Natiie各自的优缺点

2:你所知的使用Flutter成功的商业案列有安歇?Flutter所使用的语言叫什么?

3:如何在Mac上搭建Flutter环境?请写出全过程(需要那几个步骤)

4:dart是值传递还是对象传递

5:Widget 和element 和RenderObject之间的关系

6:Widge树的root节点是?

7:mixin extends implement 之间的关系

8:Future和microtask执行顺序

9:dart中..的用法

10:await for 在何种场景下使用?用途?

11:如何在flutter 中实现登入或者分享中唤起微信和支付宝??