Android面试相关精选

2019-08-19  本文已影响0人  涂涂家的小七呀

前言

借此空闲时间整理下部分面试相关的题目答案当做笔记记录下,同时分享给各位同学学习。答案结合各大相关书籍网络知识汇总总结,如有欠缺缺漏的地方还请见谅。乌拉~!


1.Activity生命周期

onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()、onDestroy()

2.Android四大组件

Activity、Service、BroadcastReceiver、ContentProvider

3.五种常用布局

ConstraintLayout(约束)、LinearLayout(线性)、RelativeLayout(相对)、FrameLayout(帧布局)、GridLayout(网格)

4.Activity四种启动模式、解释含义、生命周期的影响

Standard(标准模式)、SingleTop(栈顶复用模式)、SingleTask(栈内复用模式) 、SingleInstance(单实例模式)

5.Service启动方式、区别及其生命周期
6.说一下onStartCommand()函数返回的几种状态

START_NOT_STICKY、START_STICKY、START_REDELIVER_INTENT

7.BroadcastReceiver它的使用方式、类型和机制

广播的方式为静态(常驻)和动态(非常驻),sendBroadcast()、sendOrderedBroadcast()、sendStickyBroadcast();类型分为本地和全局广播;机制分为 有序和无序
(一般不会问得这么浅显易懂,还需要自己理解问题)

8.解释下无序和有序
9.什么是ContentProvider和ContentResolver
10.Android的数据存储方式有哪些
11.什么是AIDL

全称Android Interface Definition Language(接口定义语言),是用于定义服务器和客户端通信接口的一种描述语言,用来实现进程间通信。一般分为服务和客户两端,调用AILD函数的应用称为客户端,提供AIDL函数的为服务端,客户端通过绑定服务端的Service来进行交互

12.自定义View绘制流程

onMeasure()(测量)、onLayout()(位置)、onDraw()(绘制)

13.自定义view步骤
14.LinearLayout和RelativeLayout哪个绘制性能好一点

两种使用都可以,非要说的有区别,那就是weight权重上有区分,linearlayout设置权重后会重绘多次(好像是两次吧,应该在源码800行左右开始)

15.什么是ANR

全称Application Not Responding。5s内无法响应用户输入事件(例如键盘输入, 触摸屏幕等),主线程阻塞,超过相应阀值则会触发ANR异常。不要在主线程(UI线程)里面做繁重的操作

16.什么是OOM

俗称内存溢出,内存占有量超过了VM所分配的最大值,虚拟机无法满足。Android系统的APP每个进程或者虚拟机有最大内存限制,一旦超过这个限制系统就会抛出OOM错误

17.那如何避免OOM
18.内存泄露与内存溢出的区别
19.简要说明HashMap原理

底层基于数组和链表,Hash表的Map实现, Hash表就是Hash数组,Map实现是指实现了Map接口。主要是通过key的hashCode来计算hash值的。
(只要hashCode相同,计算出来的hash值就一样 (面试的时候这句话可以不要说,但是要知道。因为这可能会有个hash冲突的提问,切记言多必失) )

20.概括下HashMap与HashTable的区别
21.概括说明下TreeMap
22.Android有哪几种多线程方式
23.在OnCreate中开启一个Thread更新UI会怎样

不会崩溃,正常更新显示。因为这个阶段ViewRootImpl还没生成,不会检查是否在主线程。

24.简要说下你对Handler的理解
25.SharedPreferences中的commit与apply区别
26.Get与Post区别
27.MVP的理解
28.Fragment生命周期

onAttach()、onCreate()、onCreateView()、onActivityCreated()、onStart()、onResume()、onPause()、onStop()、onDestroyView()、onDestroy()、onDetach()

29.Activity和Fragment之间如何通信?

事务传递、接口传递、通过getActivity()方法来获得Activity的实例,可以调用一些例如findViewById()之类的方法。

30.Fragment和FragmentActivity之间的区别?
31.事件分发

事件分发顺序: Activity(Window) -> ViewGroup -> View
主要方法dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()
super:调用父类方法
true:消费事件,即事件不继续往下传递
false:不消费事件,事件继续往下传递 / 交由给父控件onTouchEvent()处理

32.ScrollView嵌套ListView产生的问题

ListView高度显示问题,只显示一个item,解决办法是ListView重写onMeasure()方法,设置属性为AT_MOST,同时ScrollView在xml中增加属性

android:focusable="true" 
android:focusableInTouchMode="true"

滑动冲突问题,达成效果焦点在ListView时滑动ListView,焦点在ScrollView时滑动ScrollView
设置ListView OnTouchListener监听

listView.setOnTouchListener(new View.OnTouchListener() {    @Override    public boolean onTouch(View arg0, MotionEvent arg1) {
    scrollView.requestDisallowInterceptTouchEvent(true);
       return false;
   }});
33.装饰器模式、代理模式有什么区别?
上一篇 下一篇

猜你喜欢

热点阅读