android 初中级面试问题(未整理)

java访问权限(默认,public ,private,protected),访问权限配合继承说明

继承,能否继承,能否重写,什么是隐藏,配合static,final,private,字段是否能重写,函数是否能重写,隐藏,构造函数是不能被继承的,如果父类是有参构造函数,子类的构造函数第一句必须调用父类的构造函数,然后才能写自己的逻辑。

多态概念,多态和访问权限,多态和static,字段,函数,对象在编码时无法确定指向,运行时会动态设置指向的位置。

final关键字特性 类 函数 变量

接口和抽象类区别:

static 关键字 :内存中只有一份

泛型特点,限定符 extends super 读写,前者修饰指定了父类,可以读取,但是不能修改,后者指定了子类

深拷贝&浅拷贝

jvm 语句Point p在哪里开辟空间,new Point();才会在堆中真正的开辟空间存放对象的数据。

内部类说明,分类,为什么能够访问外部类,static为什么不能够访问

java异常处理机制 ,异常,错误,运行时异常,非运行时异常,区别

线程如何关闭 关闭的方式直接stop

StringBuilder StringBuffer 如何清空 设置长度,或者clear函数

网络请求超时之后后台做了什么,链接是否还存在

TCP 三次握手,四次挥手,滑动窗口机制

手机尺寸的适配

布局的优化 Viewstub merge include 层次

ui的优化

内存优化 ,内存泄漏

一个长度很大的单链表,如何判断中间是否有环:两个不同步调的变量,重合

死锁的条件,如何避免死锁

同步方式,同步工具类,lock原理,sync原理,加锁,class字节码中的锁 锁的优化,自旋锁,定时

进程间通信,线程间通信

android事件传递机制,二叉树的概念

hashmap实现原理,扩容,Arraylist实现原理,扩容,hashTab hashSet 访问方式

linkhashmap 实现原理,priorityQueue实现原理 堆

链表倒数第二个数 快速排序 选择 冒泡 堆 二叉查找树 归并 等时间复杂度,空间复杂度,是否是稳定的算法

树找到最大深度

并发集合 分段锁机制(ConCurrentHashMap,jdk1.8以后利用CAS+synchronized 实现了),优先级队列如何实现

对锁优化,锁自旋,琐粒度增大,分段锁,定时,无锁

aidl单线程还是多线程,Messager单线程还是多线程,messager原理,如何选择

本地广播,android8.0之后广播的修改,本地socket、 全屏模式下键盘弹起的问题

Camera SurfaceView 如何保证图片不变形,预览图片和保存的图片最终一样的

rxjava原理 如何实现,如何实现操作符
retrofit原理,如何实现 glide原理如何实现 jsbridge 实现原理

为什么fragment不推荐利用set设置数据,可能还没有建立好初始化完全 ,或者已经销毁

sparryArray对hashmap的改进

java中集合架构 ,常用集合说明

String,StringBuffer,StringBuild差别,如何清空 ,长度设为0,或者clear java中文件流的处理

反射用法,作用,原理,

可以不写java文件生成所用Class吗,动态代理

android Activity生命周期,特点,启动模式,TaskAffinity,reParenting 如何换栈,作用

android中dp,sp代表什么,不同设备上的表现,sp和dp的具体区别,什么时候字体可以用dp设置,类似微信聊天页面

自定义下载,如何限速

leakCarrney原理:

H5 原生的优缺点,Activity是否可以启动在其他的进程

finilized调用的时机,如何关闭线程,调用之后一定会发生gc吗 java四种引用类型,特点 如何确保真的被GC回收,Retrofit如何动态改变BaseURl Retrofit是编译时注解还是运行时注解,特点,如何使用 自定义Viewinject

搜索一篇文章中的出现最多的词

定义局部变量放在了那里,是否申请了堆空间类似 String a; Person 还没有生成对象,放在栈中,new 之后才会生成对象,放在堆中

for 和增强的For操作集合哪个会发生Exception,什么运行时错误,为什么

拍照过程中处理图片,拍照速度大于出来了速度怎么办,如何进行图片处理

contentValues 和hashTable的不同: 基本类型,

assets & Raw文件夹的区别 不被压缩,R.资源文件中

fragment返回键处理,EglSurfaceView持有说明 SurfaceView和View区别说明

Activity 设置了SingleTask 再次启动,多次启动 ,newIntent 如何保存数据,

https对谁加密,加密的方式,过程 怎么加密,加密算法,CA证书概念,如何保证安全,传输用的Tcp还是UDP

hash算法,如何解决冲突,开放定址法,链地址法

服务service启动模式,重复启动,如何传值

设计模式的使用: 创建型,行为型,结构性,能说多少说多少

Androidmanifest.xml加载的时机,何时加载开机时就加载,否则其他应用如何发广播,或者启动其他应用的Activity

View体系,绘制过程详述

bundle传值的优势,序列化方式,区别,使用场景效率

卡顿原因,消息循环机制说明,主线程为什么卡顿,是否有阻塞,为什么不会造成卡顿

单词翻转,字符串翻转
anr遇到过吗,如何解决,会生成Trace文件,所在目录,如何导出

dp,sp,px区别,为什么推荐使用dp,sp,不同屏幕大小是否一样

sp特点,dp计算方式

char字节数,int位数,是否可以定义中文,如何计算文本中字符串长度

h5,js相互回调 jni和底层的交互,

静态变量的继承 ,不能覆盖或者重写,被隐藏了,还可以调用得到

继承之后子类的执行顺序,成员变量的执行方式,静态代码块,构造代码块,静态函数的继承,父类静态,子类静态,父类成员变量,父类构造代码块,构造函数,子类

如何实现线程的sleep、

android图片压缩的方式,种类大小,编码格式

发布apk之前如何减小apk的大小,进行资源的压缩,代码混淆,无用代码检查

android 5.0 6.0 7.0 8.0 的新特性

轮播图如何实现,如何实现循环,动画

application加载的时机,多进程方式,多进程applicatioin调用次数 contentProvider 加载时机

fragment Viewpager懒加载 如何保证页面不太多,不造成oom,add,Replace的区别,fragment白屏 ,fragment嵌套

RecycleView复用机制,

图片的压缩RecycleView

8.0广播的特点

已经有了Integer为什么还需要int ,类似两者之间的区别

Arraylist的动态扩容 hashMap呢,底层扩容使用函数

ImageView缩放的方式matrix

动画方式,如何实现动画数字变动,如何实现水波纹扩散

为什么要同时重写equals hashCode

长连接实现方式,纹理,opengles

gc运行时界面会有卡顿吗,rxlifeCylce实现原理 被压 Context说明,UI相关操作 事件冲突的解决
动画的实现原理
Service底层实现,能够运行长耗时的操作吗 控制反转依赖注入,切面编程 实现原理 Class字节码文件

动态代理使用场景,java事件方式

同步工具类,并发集合,阻塞队列 ,实现线程同步的方式 同步lock,可重入概念,线程可见性 ,原子操作

CountDownLaunch CycleBarry seampher Exchanger RetreenLock

Volatile 原理实现方式,内存屏障 ,如何关闭线程

线程池的架构,种类,特点 ,TimeTask

GC相关: JMM结构,内存结构, 如何判断对象能否被回收,回收算法 分代回收的说明

android文件的混淆,哪些不能混淆

jni实现方式,mk,cmake文件

自定义View,解决了什么问题,难点

遇到的OOM SOF知道吗,哪里会发生

nio了解吗,主要用到哪里

gradle配置,写过Task吗,如何定义变量

RelativeLayout 绘制的三个过程哪个比较费时间,如果不设置特有的属性和什么布局类似。

linearlayou 设置layoutgravity失效问题,

Activity生命周期,各个生命周期的特点,启动A-B之后home键,之后回来,之后back键,旋转屏幕生命周期的执行过程

简单叙述android的binder原理

MVP架构,如何保证MVP架构的内存泄漏,原理,和RXjava结合

java虚拟机和dalievik虚拟机区别,和art区别

sleep wait区别

如何保证服务器传过来的时间,到各个手机上都能切换成不同的时间 枚举android中为什么不推荐使用,内部原理,可以定义函数吗

String 为什么定义成final ,常量池,int 定义会生成新的对象吗-128 127

泛型的限定通配符和非限定通配符(读写,extends super 第一个指定了基类,不能加入只能读取),extend,接收super,父类,extend作为参数只能是子类, super的区别,泛型的类型擦除,都会擦除掉吗,类,函数上的不会被擦除

本地广播全局广播的区别,本地只能本应用收到

SharedPreferences是线程安全的吗? 去源码看看有没有同步锁就知道了,答案是线程安全的。

Handler机制和底层实现:

AsyncTask 原理,不足,如何取消
为什么不能在主线程执行耗时操作,如果耗时操作,超过了16ms,会造成卡顿,刷新频率,Vsync信号

LRUCache 原理,实现方式 linkHashMap Lru算法

App整体异常的捕获和上报,UnCaughtExceptionhandler

Activity如何存储数据,哪个生命周期里比较适合onPause 中存储数据比较合理

Activity状态存储,OnsaveInstance ,oncreate,onrestoreInstance 都可以

Linearlayout Relativelayout 布局的区别,耗时,哪个过程更耗时: onmeasure 耗时,一次如果设置了weight会测量两次,否则测量一次 Relative会测量两次,横向,纵向,所以同等级别使用Linearlayout

android夜间模式实现方式

gradle task

发布apk之前,资源压缩,代码优化,ant,resource sharking proguard 精简资源,无用代码,内存泄漏

AndroidManifest.xml执行时机,作用,加载时机。

多线程 线程同步 应用 举例

MVC设计模式概述,如何防止内存泄漏,网络请求如何中断。

java7,8,9新特性,lambda表达式原理

全面屏适配问题,底部导航栏的适配。

链表反转

判断一个无穷大的链表是否存在环

如何实现优先级队列

造成死锁的原因,如何避免死锁。

判断一个对象是否活着,GC回收对象的过程方式,finilized函数了解吗,调用了fininlized函数的对象一定会被回收吗。

rxjava 操作符实现原理,如何实现

字节码文件格式,jvm对象的对象头,设计锁

jdk对锁的优化,分几种,每种如何实现

lruCache linkedhashmap 原理,实现方式

类加载过程介绍,什么操作导致类加载,如何判断类是否已经加载,对象在何时初始化,变量何时初始化。

wait notify notifyall 使用方式,为什么必须和synchronized 一起使用

synchronized volatile 实现原理,monitor对象,编译器优化,指令优化,内存屏障

dexClassLoader 了解吗,热修复,插件化原理

描述binder机制,

https 加密交互过程,CA证书是什么,https数据传输过程,是对所有信息加密吗,基于TCP还是UDP的。

ScrollView 嵌套RecycleView 出现的问题

小程序 快应用 reac app flutter week

Camera1 开启过程,如何保证预览不变形,方向正确,如何保证保存的图片不变形,前置摄像头拍摄图片镜面翻转问题,

Camera2 了解吗,如何设置显示特定大小的预览图。

一系列原理:

glide 原理

lrucache :原理

LeakCanary 原理

jsbridge原理

rxjava原理

retrofit原理

asyncTask原理

linkHashMap原理实现

断点续传原理

android 消息机制原理

volatile 原理

synchronized原理

lock原理

activityThread 了解

dexclassloader,pathclassloader,如何不注册启动activity

bufferknife 原理

dagger2 原理

生产者消费者 wait notify notifyall实现

模块化,模块之间通信 ARouter,原理实现

RxLifecycle原理

全面屏适配,遇到的问题

算法:

翻转字符串

堆排序,快速排序,插入排序,希尔排序,基数排序等排序算法,时间复杂度,控件复杂度,是否稳定

链表反转,链表是否存在环,单向链表快速找到倒数第二个

二叉树深度广度遍历,找到二叉树层次,

红黑树了解多少,

String 转int

两个数组找到重复元素,剔除重复元素,

合并多个链表

获取应用启动时长

SharePreference是线程安全的吗,进程之间呢,进程之间如何使用,封装一层contentProvider

解释CAS ,AQS原理和应用场景。

源码介绍:

并发集合,阻塞队列实现原理和应用场景。Concurrent blocking  copyonwrite

本地广播 普通广播特点,区别,本地广播原理,普通广播原理,

jni开发过程,cmake和mk文件方式,

jni中如何调用java中方法,获取类,field,GetMethodID方法标识。

service 分类,启动方式 ,区别,前台服务启动方式,远程服务结合aidl叙述过程。intentservice原理

android 事件分发机制问题:叙述过程,onInterceptTouchEvent 执行的条件,是不是每次都执行,

如果拦截一个半路事件,类似move事件,但是没有拦截down事件,这个事件后续怎么传递,

发送给原来接收该事件的view一个Cancle事件,后续的Move都会被拦截的View获取,

View的ontouch事件执行的时机,事件冲突两种解决方案中,内部拦截法应该怎么设置,外部ViewGroup如何设置。

java ClassLoader分类,双亲委派机制,何时加载类,类加载的过程,加载,链接(验证,准备,解析)初始化各个步骤操作,

是不是调用类中变量,一定会初始化类,准备阶段会初始化静态和final变量,两者有什么差别,此时引用变量的值,其他类型变量的值如何。

Android 类加载机制和java一样吗,有什么区别,类加载器的分类,作用,了解动态修复吗,什么原理。

fragment官方推荐利用无参构造,为什么,如何传递初始化数据。

android的事件传递机制注意事项:

事件冲突解决办法分成外部拦截法和内部拦截法,具体实现。

mfirstTouchTarget的作用,是否自己拦截了事件。

不要随便重写dispatchTouchEvent,无论返回true还是false事件都将终止,返回true事件直接结束,后续事件都不会有了,返回false则到up事件就结束,子View是否已经拦截事件,不会空拦截。

想要自己处理事件就重写onIntercepttouchevent,如果没有拦截Down事件,想要拦截Move事件,则当前的MOve事件

会首先变成一个Cancle事件发送给原来处理事件的View,后续的事件才会给当前View,并且不会再走Onintercept事件。

内部拦截法调用getparent.requestdisallowintercepttouchevent true是不让父布局拦截,false则是根据父布局自己的拦截函数返回值

决定是否拦截。

内部拦截法,子ViewdispatchTouchEvent不能返回false(没有处理Down事件),否则父View的touchTarget没有这个View,子View无法收到后续事件。

介绍:ondraw dispatchDraw onsizechange finishinflate requestlayout invalidate postinvalidate 

android View 绘制流程 :

说清楚 Window  PhoneWindow   (framelayout(LinearLayout(decorView)(titlebar+contentView()))),setcontentView,Surface,ViewRoot,ViewRootImp;

简述android引起卡顿原因,Vsync信号16ms,绘制和显示,如果16ms内不能完成绘制则显示上一帧,造成丢帧ui卡顿,

原因:嵌套 层次过深,过度绘制,动画过多,主线程执行耗时操作,内存不足,频繁GC,发现解决问题办法,

Bitmap聊一聊,inDensity intargetdensity ,insimplesize,injustdecodebounds,inbitmap,Rgba444 888,如何加载大图,图片缓存策略,缩放图片Matrix,压缩图片,展示图片scaleType。

对象池听过没,glide实现原理,如何设置变形。

taskAffinity 了解吗,何时生效,效果如何,能不能两个栈相同,

https加密过程,哪里应用对称加密,哪里应用非对称加密。

按钮水波纹实现方式

贝塞尔曲线用过没有,如何实现波浪效果。

contentprovider 何时进行初始化

多进程实现方式,多进程间数据通信ipc,aidl messenger 线程安全吗,application执行次数,如何区分哪个进程执行了application。

上亿条数据,要找出最大的100条,内存受限,如何查找,化整为零,hash去重,归并。

有了Integer为什么还要有int,java完全面向对象不行吗,为什么还要有基本类型。

了解跨平台技术吗,RNjs,flutter,跨平台的原理。

android 自动化测试技术,

android优化,内存,布局,电量,绘制等。

jsbridge 原理,如何保证安全性,交互入口,如何传递参数和协议,h5端bridge是什么类型对象,跟native端是否有关系。

远程service交互,如何检测服务连接情况,linktodead

canvas save和saveLayer 区别   ,公用一个栈吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值