如果您对腾讯、百度、华为、搜狗和滴滴Android面试题汇总和百度的android面试题感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解腾讯、百度、华为、搜狗和滴滴Android面试题汇总的各种
如果您对腾讯、百度、华为、搜狗和滴滴Android面试题汇总和百度的android面试题感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解腾讯、百度、华为、搜狗和滴滴Android面试题汇总的各种细节,并对百度的android面试题进行深入的分析,此外还有关于2017 年初、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集(更新篇)、2019 年 Android 面试题汇总、2019 阿里、头条、腾讯、美团 Android面试题,祝你斩获offer、2020年Android最新面试题大全(收录了字节跳动、腾讯、百度、阿里巴巴、华为等十几家一线大厂题)的实用技巧。
本文目录一览:- 腾讯、百度、华为、搜狗和滴滴Android面试题汇总(百度的android面试题)
- 2017 年初、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集(更新篇)
- 2019 年 Android 面试题汇总
- 2019 阿里、头条、腾讯、美团 Android面试题,祝你斩获offer
- 2020年Android最新面试题大全(收录了字节跳动、腾讯、百度、阿里巴巴、华为等十几家一线大厂题)
腾讯、百度、华为、搜狗和滴滴Android面试题汇总(百度的android面试题)
前言:前一段时间和大家交流,据反馈现在Android岗位也没有以前那么多了,当然这不意味着饱和,只是市场更趋于合理一些,Android还有有很多机会的。最近结合一些面试的同学(包含社招和校招),整理了下一些面试题目。实际上,很多面试题网上都能找得到。我整理面试题如下,供大家参考,知道比没知道的好。可以帮大家查漏不缺。以下是(腾讯,百度,华为,搜狗和滴滴 这些厂的面试题)
Android基础
View的绘制流程;自定义view如何考虑机型适配;自定义view的事件分发机制;View和ViewGroup分别有哪些事件分发相关的回调方法;自定义view如何提供获取View属性的接口;
Art和Dalvik对比;虚拟机原理,如何自己设计一个虚拟机(内存管理,类加载,双亲委派);JVM内存模型及类加载机制;内存对象的循环引用及避免
内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象;内存泄露场景及解决方法;OOM的避免及解决方法
四大组件及生命周期;ContentProvider的权限管理(读写分离,权限控制-精确到表级,URL控制);Activity的四种启动模式对比;Activity状态保存于恢复
Fragment生命周期;Fragment状态保存
startActivityForResult是哪个类的方法,在什么情况下使用,如果在Adapter中使用应该如何解耦
AsyncTask原理及不足;IntentService原理
AstncTask+HttpClient与AsyncHttpClient有什么区别
如何保证一个后台服务不被杀死;比较省电的方式是什么
如何通过广播拦截和abort一条短信;广播是否可以请求网络;广播引起anr的时间限制
进程间通信,AIDL
Handler机制及底层实现
Binder机制及底层实现
ApplicationContext和ActivityContext的区别
一张Bitmap所占内存以及内存占用的计算
对于应用更新这块是如何做的?(灰度,强制更新,分区域更新)
混合开发,RN,weex,H5,小程序(做Android的了解一些前端js等还是很有好处的)
说一款你认为当前比较火的应用并设计(直播APP)
Java基础
集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap
进程和线程的区别;多线程与线程池
数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁
同步的方法;多进程开发以及多进程应用场景
服务器只提供数据接收接口,在多线程或多进程条件下,加小编微信:AMEPRE,如何保证数据的有序到达
ThreadLocal原理,实现及如何保证Local属性
String StringBuilder StringBuffer对比
接口与回调;回调的原理;写一个回调demo;
泛型原理,举例说明;解析与分派
抽象类与接口的区别;应用场景;抽象类是否可以没有方法和属性
静态属性和静态方法是否可以被继承?是否可以被重写?原因
修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法
数据结构与算法
堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面)
最快的排序算法是哪个?给阿里2万多名员工按年龄排序应该选择哪个算法?堆和树的区别;写出快排代码;链表逆序代码
求1000以内的水仙花数以及40亿以内的水仙花数
子串包含问题(KMP 算法)写代码实现
万亿级别的两个URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
蚁群算法与蒙特卡洛算法
写出你所知道的排序算法及时空复杂度,稳定性
百度POI中如何试下查找最近的商家功能(坐标镜像+R树)
其他
死锁的四个必要条件
常见编码方式;utf-8编码中的中文占几个字节;int型几个字节
实现一个Json解析器(可以通过正则提高速度)
MVC MVP MVVM; 常见的设计模式;写出观察者模式的代码
TCP的3次握手和四次挥手;TCP与UDP的区别
HTTP协议;HTTP1.0与2.0的区别;HTTP报文结构
HTTP与HTTPS的区别以及如何实现安全性
非技术问题汇总
研究比较深入的领域有哪些
对业内信息的关注渠道有哪些
最近都读哪些书
自己最擅长的技术点,最感兴趣的技术领域和技术点
项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题
实习过程中做了什么,有什么产出
5枚硬币,2正3反如何划分为两堆然后通过翻转让两堆中正面向上的硬币和反面向上的硬币个数相同
时针走一圈,时针分针重合几次
N * N的方格纸,里面有多少个正方形
现在下载速度很慢,试从网络协议的角度分析原因,并优化(网络的5层都可以涉及)
HR问题汇总
讲一件你印象最深的一件事情
介绍一个你影响最深的项目
介绍你最热爱最擅长的专业领域
公司实习最大的收获是什么
自己的优点和缺点是什么?举例说明
你的学习方法是什么样的?实习过程中如何学习?实习项目中遇到的最大困难是什么以及如何解决的
说一件最能证明你能力的事情
项目中遇到最大的困难是什么?如何解决的
你的职业规划以及个人目标;未来发展路线及求职定位
评价下自己,评价下自己的技术水平,个人代码量如何
通过哪些渠道了解的招聘信息,其他同学都投了哪些公司
业余都有哪些爱好
当前的offer状况;如果BATH都给了offer该如何选
你对一份工作更看重哪些方面?平台,技术,氛围,城市,money
理想薪资范围;杭州岗和北京岗选哪个
理想中的工作环境是什么
实习过程中周围同事/同学有哪些值得学习的地方
家人对你的工作期望及自己的工作期望
若上司在公开会议上误会你了,该如何解决
是否可以实习,可以实习多久
你看中公司的什么?或者公司的那些方面最吸引你?
推荐书籍:几本Android程序员必读书籍
以上就是腾讯、百度、华为各公司的Android面试题,希望对大家的学习有所帮助。
2017 年初、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集(更新篇)
欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录.已同步微信公众号:猛戳这里
本文在我的微信公众号:原创 程序员小乐 首发。
转载请标明出处谢谢:
http://blog.csdn.net/xiaole03...;
本文由:【吧主的博客】分享
推荐阅读:
如果你喜欢上了一个程序员小伙,献给所有的程序员女友
2017 年初、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集(更新篇)
学习资料(干货汇集)不断更新【更新于2017-2-25】
Android Studio 2.3 正式起航(玩爆Android Studio 2.3必备)
是什么让你决定离开一家公司?
同时收到多家公司offer,怎样选择?
前言:
前一段时间和大牛们交流了一下,据反馈现在Android岗位也没有以前那么多了,没这么好找了,面临2016年寒冬季节,大量公司模仿O2O模式导致死掉企业的很多,在加之培训机构大量的培训人,导致供大于求,当然这不意味着饱和,只是市场更趋于合理一些(只要技术好不用怕的)。最近结合一些面试的同学和大牛们(张旭童)反馈,前几天听童哥去阿里面试顺便整理了下一些面试题目。希望对大家有所帮助,后期会不断更新添加新的面试题。可以帮大家查漏不缺。以下是(2016、2017 、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集)
就算写出答案也没必要(我写了部分面试答案),因为开发与实际答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解吧!切记:不要背答案,多理解。
最新整理
简述synchronized?Object;Monitor机制;
简述happen-before规则;
JUC和Object;Monitor机制区别是什么;简述AQS原理;
简述DCL失效原因,解决方法;
简述nio原理;
jvm运行时数据区域有哪几部分组成,各自作用;
gc算法有哪些;gc收集器有哪些;
简述class加载各阶段过程;class;loader有哪些模型;
简述常用的JDK命令行工具;
简述字节码文件组成;
讲讲你平常是如何针对具体的SQL做优化;
mysql的存储引擎有哪些,区别;
gc:内存模型;
gc:垃圾回收;
多线程:如何实现一个定时调度和循环调度的工具类。但提交任务处理不过来的时候,拒绝机制应该如何处理;线程池默认有哪几种拒绝机制;
多线程:如何实现一个ThreadLocal;
说说你了解的一个线程安全队列;
Atomic包的实现原理是什么;
CAS又是怎么保证原子性的;
string分析1000次循环subString用了多少内存;
Android基础
什么是ANR 如何避免它?答:在Android 上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择让程序继续运行,但是,他们在使用你的应用程序时,并不希望每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR 给用户。不同的组件发生ANR 的时间不一样,主线程(Activity、Service)是5 秒,BroadCastReceiver 是10 秒。解决方案:将所有耗时操作,比如访问网络,Socket 通信,查询大量SQL 语句,复杂逻辑计算等都放在子线程中去,然后通过handler.sendMessage、runonUITread、AsyncTask 等方式更新UI。无论如何都要确保用户界面操作的流畅度。如果耗时操作需要让用户等待,那么可以在界面上显示进度条。
View的绘制流程;自定义View如何考虑机型适配;自定义View的事件分发机制;View和ViewGroup分别有哪些事件分发相关的回调方法;自定义View如何提供获取View属性的接口;
Art和Dalvik对比;虚拟机原理,如何自己设计一个虚拟机(内存管理,类加载,双亲委派);JVM内存模型及类加载机制;内存对象的循环引用及避免;
ddms 和 traceView的区别;
内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象;内存泄露场景及解决方法;
四大组件及生命周期;ContentProvider的权限管理(读写分离,权限控制-精确到表级,URL控制);Activity的四种启动模式对比;Activity状态保存于恢复;
什么是AIDL 以及如何使用;
请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系;
Fragment生命周期;Fragment状态保存;
startActivityForResult是哪个类的方法,在什么情况下使用,如果在Adapter中使用应该如何解耦;
AsyncTask原理及不足;ntentService原理;
Activity 怎么和Service 绑定,怎么在Activity 中启动自己对应的Service;
请描述一下Service 的生命周期;
AstncTask+HttpClient与AsyncHttpClient有什么区别;
如何保证一个后台服务不被杀死;比较省电的方式是什么;
如何通过广播拦截和abort一条短信;广播是否可以请求网络;广播引起anr的时间限制;
进程间通信,AIDL;
事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
说说ContentProvider、ContentResolver、ContentObserver 之间的关系;
请介绍下ContentProvider 是如何实现数据共享的;
Handler机制及底层实现;
Binder机制及底层实现;
ListView 中图片错位的问题是如何产生的;
在manifest 和代码中如何注册和使用BroadcastReceiver;
说说Activity、Intent、Service 是什么关系;
ApplicationContext和ActivityContext的区别;
一张Bitmap所占内存以及内存占用的计算;
Serializable 和Parcelable 的区别;
请描述一下BroadcastReceiver;
请描述一下Android 的事件分发机制;
请介绍一下NDK;
什么是NDK库,如何在jni中注册native函数,有几种注册方式;
AsyncTask 如何使用;
对于应用更新这块是如何做的?(灰度,强制更新,分区域更新);
混合开发,RN,weex,H5,小程序(做Android的了解一些前端js等还是很有好处的);
什么情况下会导致内存泄露;
如何对Android 应用进行性能分析以及优化;
说一款你认为当前比较火的应用并设计(直播APP);
OOM的避免异常及解决方法;
屏幕适配的处理技巧都有哪些;
两个Activity 之间跳转时必然会执行的是哪几个方法?答:一般情况下比如说有两个activity,分别叫A,B,当在A 里面激活B 组件的时候, A 会调用onPause()方法,然后B 调用onCreate() ,onStart(), onResume()。这个时候B 覆盖了窗体, A 会调用onStop()方法. 如果B 是个透明的,或者是对话框的样式, 就不会调用A 的onStop()方法。
Java基础
集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap;
进程和线程的区别;
Java的并发、多线程、线程模型;
什么是线程池,如何使用? 答:线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用new 线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率。
数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁;
Java中实现多态的机制是什么;
如何将一个Java对象序列化到文件里;
说说你对Java反射的理解; 答:Java 中的反射首先是能够获取到Java 中要反射类的字节码, 获取字节码有三种方法,1.Class.forName(className) 2.类名.class 3.this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor 等类,这些类提供了丰富的方法可以被我们所使用。
同步的方法;多进程开发以及多进程应用场景;
在Java中wait和seelp方法的不同;答:最大的不同是在等待时wait 会释放锁,而sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。
synchronized 和volatile 关键字的作用;答:1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2)禁止进行指令重排序。
volatile 本质是在告诉jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。1.volatile 仅能使用在变量级别;synchronized 则可以使用在变量、方法、和类级别的2.volatile 仅能实现变量的修改可见性,并不能保证原子性;synchronized 则可以保证变量的修改可见性和原子性3.volatile 不会造成线程的阻塞;synchronized 可能会造成线程的阻塞。4.volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编译器优化
服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达;
ThreadLocal原理,实现及如何保证Local属性;
String StringBuilder StringBuffer对比;
你所知道的设计模式有哪些; 答:Java 中一般认为有23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
Java如何调用c、c++语言;
接口与回调;回调的原理;写一个回调demo;
泛型原理,举例说明;解析与分派;
抽象类与接口的区别;应用场景;抽象类是否可以没有方法和属性;
静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法;
说说你对泛型的了解;
Java的异常体系;
如何控制某个方法允许并发访问线程的个数;
动态代理的区别,什么场景使用;
数据结构与算法
堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面);
最快的排序算法是哪个?给阿里2万多名员工按年龄排序应该选择哪个算法?堆和树的区别;写出快排代码;链表逆序代码;
求1000以内的水仙花数以及40亿以内的水仙花数;
子串包含问题(KMP 算法)写代码实现;
万亿级别的两个URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
蚁群算法与蒙特卡洛算法;
写出你所知道的排序算法及时空复杂度,稳定性;
百度POI中如何试下查找最近的商家功能(坐标镜像+R树)。
其他
死锁的四个必要条件;
常见编码方式;utf-8编码中的中文占几个字节;int型几个字节;
实现一个Json解析器(可以通过正则提高速度);
MVC MVP MVVM; 常见的设计模式;写出观察者模式的代码;
TCP的3次握手和四次挥手;TCP与UDP的区别;
HTTP协议;HTTP1.0与2.0的区别;HTTP报文结构;
HTTP与HTTPS的区别以及如何实现安全性;
都使用过哪些框架、平台;
都使用过哪些自定义控件;
介绍你做过的哪些项目;
非技术问题汇总
研究比较深入的领域有哪些;
对业内信息的关注渠道有哪些;
最近都读哪些书;
自己最擅长的技术点,最感兴趣的技术领域和技术点;
项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题;
实习过程中做了什么,有什么产出;
5枚硬币,2正3反如何划分为两堆然后通过翻转让两堆中正面向上的硬币和反面向上的硬币个数相同;
时针走一圈,时针分针重合几次;
N * N的方格纸,里面有多少个正方形;
现在下载速度很慢,试从网络协议的角度分析原因,并优化(网络的5层都可以涉及)。
HR问题汇总
您在前一家公司的离职原因是什么?
讲一件你印象最深的一件事情;
介绍一个你影响最深的项目;
介绍你最热爱最擅长的专业领域;
公司实习最大的收获是什么;
与上级意见不一致时,你将怎么办;
自己的优点和缺点是什么?并举例说明?
你的学习方法是什么样的?实习过程中如何学习?实习项目中遇到的最大困难是什么以及如何解决的;
说一件最能证明你能力的事情;
针对你你申请的这个职位,你认为你还欠缺什么;
如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办;
项目中遇到最大的困难是什么?如何解决的;
你的职业规划以及个人目标;未来发展路线及求职定位;
如果你在这次面试中没有被录用,你怎么打算;
评价下自己,评价下自己的技术水平,个人代码量如何;
通过哪些渠道了解的招聘信息,其他同学都投了哪些公司;
业余都有哪些爱好;
你做过的哪件事最令自己感到骄傲;
假如你晚上要去送一个出国的同学去机场,可单位临时有事非你办不可,你怎么办;
就你申请的这个职位,你认为你还欠缺什么;
当前的offer状况;如果BATH都给了offer该如何选;
你对一份工作更看重哪些方面?平台,技术,氛围,城市,money;
理想薪资范围;杭州岗和北京岗选哪个;
理想中的工作环境是什么;
谈谈你对跳槽的看法;
说说你对行业、技术发展趋势的看法;
实习过程中周围同事/同学有哪些值得学习的地方;
家人对你的工作期望及自己的工作期望;
如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办;
若上司在公开会议上误会你了,该如何解决;
是否可以实习,可以实习多久;
在五年的时间内,你的职业规划;
你看中公司的什么?或者公司的那些方面最吸引你。
大家可以加群和大牛们(徐宜生、张涛等)一起学习:由于群已满
如果进群,可以加我的微信,我拉你进群,我的微信二维码:
看完本文有收获?请转发分享给更多人
关注「程序员小乐」,提升编程技能
推荐文章
1、Android面试经验大解密
2、Android的viewHolder模式解剖
3、Android中必须学习的八大开源项目(开发项目必看)
4、如何自学Android, 教大家玩爆Android(成为大神必看)
5、2016 Google hosts 持续更新【更新 于:2016-08-27】(免费翻墙必备)
6、Android面试经验总结(面试成功必备)
7、Android Studio 个性化设置(装逼必备)
8、Android Studio 2.2 正式起航(玩爆Android Studio 2.2必备)
9、Android Studio 2.3 正式起航(玩爆Android Studio 2.3必备)
AndroidStudio 2.2 新功能实例代码:
Android Studio 2.2新功能实例源码(玩爆Android Studio 2.2必备)
AndroidStudio 2.2新功能介绍:
What''s new in Android development tools - Google I/O 2016(YouTube视频需要自备梯子)
【GitHub】https://github.com/xiaole0310
【csdn博客】http://blog.csdn.net/xiaole0313
【新浪微博】http://weibo.com/u/5439466748
【知乎】http://www.zhihu.com/people/y...
【简书】http://www.jianshu.com/users/...
【技术群】279126311 [满]
【技术群】484572225 [未]
【Email】ysle0313@gmail.com
如果你有好的文章想和大家分享,欢迎投稿,直接向我邮箱投稿:1733563441@qq.com 即可。
欢迎扫描关注我们的微信公众号(study_tech),不要错过每一篇干货~
一键关注我们微信公众号ID:study_tech
2019 年 Android 面试题汇总
1.跨进程通信的几种方式
Intent,比如拨打电话
ContentProvider 数据库存储数据
Broadcast 广播通信
AIDL通信,通过接口共享数据
2.wait和sleep 的区别
wait是Object的方法,wait是对象锁,锁定方法不让继续执行,当执行notify方法后就会继续执行,sellp是Thread的方法,sellp是使线程睡眠,让出cpu,结束后自动继续执行
3.String,StringBuffer,StringBuilder的区别
String不可改变对象,一旦创建就不能修改
String str="aaa";
str="bbb";
以上代码虽然改变了str,但是执行过程是回收str,把值赋给一个新的str
StringBuffer创建之后,可以去修改
StringBuilder也可修改,执行效率高于StringBuffer,不安全
当字符赋值少使用String
字符赋值频繁使用StringBuilder
当多个线程同步操作数据,使用StringBuffer
4.View和SurfaceView的区别
View基于主线程刷新UI,SurfaceView子线程又可以刷新UI
5.View的绘制原理
View为所有图形控件的基类,View的绘制由3个函数完成
measure,计算视图的大小
layout,提供视图要显示的位置
draw,绘制
6.简述JNI
是java和c语言之间的桥梁,由于java是一种半解释语言,可以被反编译出来,一种重要涉及安全的代码就使用了C编程,再者很多底层功能调用C语言都实现了Java没必要重复造轮子,所以定义了JNI接口的实现
7.简述TCP,UDP,Socket
TCP是经过3次握手,4次挥手完成一串数据的传送
UDP是无连接的,知道IP地址和端口号,向其发送数据即可,不管数据是否发送成功
Socket是一种不同计算机,实时连接,比如说传送文件,即时通讯
8.音视频相关类
总体来说,分为几个类
视频录制方面,Camear摄像头录制视频类,MediaProjection屏幕录制视频类
编码方面,MediaCodec,MediaRecorder
预览方面,SurfaceView,GLSurfaceView,TextureView,VideoView
9.进程和线程的区别
概念:进程包括多个线程,一个程序一个进程,多线程的优点可以提高执行效率,提高资源利用率
创建:Thread类和Runnable接口,
常用方法有:
start()用于启动线程
run()调用线程对象中的run方法
join()合并插队到当前线程
sellp()睡眠释放cpu资源
setPriority()设置线程优先级
10.内存泄露如何查看和解决
概念:有些对象只有有限的生命周期,当他们的任务完成之后,它们将被垃圾回收,如果在对象的生命周期本该结束的时候,这个对象还被一系列的引用,着就会导致内存泄露。
解决方法:使用开源框架LeakCanary检测针对性解决
常见的内存泄露有:
单例造成的内存泄露,例如单例中的Context生命周期大于本身Context生命周期
线程使用Hander造成的内存卸扣,当activity已经结束,线程依然在运行更新UI
非静态类使用静态变量导致无法回收释放造成泄露
WebView网页过多造成内存泄露
资源未关闭造成泄露,例如数据库使用完之后关闭连接
11.View的分发机制,滑动冲突
View的事件传递顺序有3个重要的方法,dispatchTouchEvent()是否消耗了本次事件,onInterceptTouchEvent()是否拦截了本次事件,onTouchEvent()是否处理本次事件,滑动冲突分为同方向滑动冲突,例如ScrollView和ListView,同方向滑动冲突,可以计算ListView高度而动态设置ListView的高度,ScrollView高度可变。例如ViewPager和ListView,不同方向滑动冲突,一个是横向滑动一个是竖直滑动,不同方向滑动可以判断滑动的x,y轴是横向还是竖直滑动,如果判断得到是横向滑动,就拦截ListView的事件,竖则反之。
12.RecyclerView和ListView的区别
缓存上:前者缓存的是View+ViewHolder+flag,不用每次调用findViewById,后者则只是缓存View
刷新数据方面,前者提供了局部刷新,后者则全部刷新
13.recyclerView嵌套卡顿解决如何解决
设置预加载的数量LinearLayoutManager.setInitialPrefetchItemCount(4),默认是预加载2个,
设置子项缓存,设置自带滑动冲突解决属性rv.setHasFixedSize(true); rv.setNestedScrollingEnabled(false);
可以完美解决,不过Google不推荐RecyClerView嵌套使用,需要嵌套尽量找类似于ExpandableListView 第三方控件来解决
14,谈MVC ,MVP,MVVM
MVC:View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些 业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。
MVP:MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。
MVVM:数据双向绑定,通过数据驱动UI,M提供数据,V视图,VM即数据驱动层
15.dagger2
Dagger2是一个主要用于依赖注入的框架,减少初始化对象操作,降低耦合度
16.Android性能优化
布局优化: 减少布局层级,使用ViewStub提高显示速度,布局服用,尽可能少使用warp_content,删除空间中无用的属性,避免过度绘制移除window默认背景,按需显示展位图,自定义View优化,使用canvas.clipRect()识别可见区域
启动速度:采用分布加载,异步加载,延期加载提高应用初始化速度,采用线程初始化数据等,合理的刷新机制
内存方面:防止内存泄露,使用一些第三方工具检测解决
代码优化:遵循Java生命周期
安装包优化:删除无用资源,优化图片,代码混淆,避免重复库存在,插件化
17.Hander原理
Handler,loop轮询检测发送消息到MessagerQuery,MessageQuery对Message入列,Handler回调方法处理消息,重写handMessage方法刷新ui
18.SharedPreference跨进程使用会怎么样?如何保证跨进程使用安全?
在两个应用的manifest配置中好相同的shartdUserId属性,A应用正常保存数据,B应用
createPackageContext("com.netease.nim.demo", CONTEXT_IGNORE_SECURITY)
获取context然后获取应用数据,为保证数据安全,使用加密存储
19.推送到达率如何提高
判手机系统,小米使用小米推送,华为使用华为推送,其他手机使用友盟推送
20.activity,fragment传值问题
通过Bundle传值,在activty定义变量传值,扩展fragment创建传值
免费获取更多面试专题和安卓开发架构的资料(包括Fultter、高级UI、性能优化、架构师课程、 NDK、Kotlin、混合式开发(ReactNative+Weex)和一线互联网公司关于android面试的题目汇总可以加:936332305 / 链接:点击链接加入【安卓开发架构】
2019 阿里、头条、腾讯、美团 Android面试题,祝你斩获offer
职场危机感似乎是每个人在职业生涯都会遇到的话题,每天都有形形色色的人面临这跳槽挤破头要进大厂。我对这种危机处境和自己曾遇到的问题进行了一番思考,
参考了其他人的一些结论并结合自身的经历,写出了这篇面试题。通过这篇文章,希望能给大家一些帮助祝你斩获心仪offer,也欢迎大家一起讨论、发表建议,化紧张为动力,让危机变机遇。
一 阿里
一面(3/8 21:17,电话,61 分 47 秒)
- 自我介绍
- 项目来历
- 上过或自学过哪些计算机课程,对计算机网络挺熟悉的吧
- 对 HTTPS 有没有了解,有没有写过相关代码
- 老板有 2000 元给我和同学分钱,首先由我提出分钱方案。如果同学不同意,则总额变为 1000 元,并由同学提出分钱方案。如果这时我不同意,则俩人各拿 100 元。请问一开始我应该怎么给出分钱方案?
- 假设有一个线程在取队列中的消息,怎么停止这个线程
- 读过哪些源码,分别说一下 Android 和 Java 的
- 读过哪些 Android 开源库源码
- 项目中遇到过什么难题
- 印象深刻的几次学习经历
- 看你用过 Ubuntu,平时是不是用 Linux,熟悉Linux吗,都用它干什么
- 有什么问题想问的
二面(3/12 20:30,电话,82 分 33 秒)
- 介绍一下项目
- 一连串问了多个问题关于项目中给设备配置入网过程的细节
- 项目中与设备通信的数据格式,还可以用哪些数据格式,做过什么优化
- 设计一种变长的传输数据格式
- 项目中有没有做过一些监控日志
- 设计一个日志监控和上传模块,深入问了很多细节和考虑的方面
- Android 各个版本的变化
- 介绍一下 Flutter 框架
- 平时怎么了解和学习新知识的
三面(3/21 15:31,电话,30 分 57 秒)
- 问了很多项目细节,关于本地存储、音乐播放等基础模块的封装
- 有没有把音乐播放模块开源出去
- 项目中解决过什么难题
- HTTP/2.0 有什么变化
- 在一个手机屏幕上有两列(类似于瀑布流),给你一些高度- - 不同的 item,怎么摆放才能让这两列的整体高度最小?
HR面(3/28 20:16,电话,14 分 47 秒)
- 为什么来阿里
- 有什么优势能让你来我们部门
- 业余有什么爱好
- 解决难题的经历
- 遇到过什么挫折
- 选择上海还是杭州
二. 头条(一二面:3/23 晚,现场。三面、HR面:3/26 下午,现场。)
一面
- 自我介绍
- 项目来历
- 项目中本地存储怎么做的
- 访问本地存储的类应该怎么设计
- 说一下对 BInder 的理解
- BInder 红黑树的节点是以什么区分的
- SurfaceView 原理
- HTTP 响应内容
- Retrofit 内部实现
- 动态代理的原理
- EventBus 内部实现
- 手写二分查找
二面
- 看过哪些书
- HashMap 版本变化和原理
- 手写快速排序并解释
- 各种排序的复杂度和稳定性
- 类成员的权限怎么定
三面
- volatile 和重排序
- Java 内存模型
- 引用计数和可达性分析
- Android 界面刷新原理
- Android 性能优化有哪些方法
- 观察者模式、责任链模式
- OkHttp 内部实现、有没有缓存
- 从输入一个 URL 到看到一个页面的过程
- 看过哪些书
- 是不是实验室做开发的同学中最强的
HR面
- 为什么来头条
- 作为项目负责人,完成了哪些工作
- 实习时长、什么时候来
三. 腾讯
一面(3/12 19:00,电话,40 分 34 秒)
- 能不能来深圳
- 介绍项目
- 为什么用 SharedPreferences,怎么存 JSON
- 项目中遇到什么难题
- 广播和组播
- 数据库优化
二面(3/15 14:50,电话,17 分 46 秒)
- 上过哪些计算机课程
- Java 类加载
- Android 类加载,DexClassLoader有什么用
- 散列表有哪些解决冲突的方式
- LinkedList 和 ArrayList 比较
- TCP 的拥塞控制
- 能不能来深圳
四. 美团(3/14 下午, 现场,大约 4 小时)
一面
- 自我介绍
- 项目来历
- 线程和协程,为什么协程比线程效率高
- RecyclerView 图片错位问题
- Fragment 的 commitAllowStateLoss 方法
- Activity 与 Fragment 怎么通信
- Handler 怎么解决内存泄漏问题
- 其他内存泄漏情况
-单击事件和双击事件哪个先触发
- 不考虑具体页面,怎么从根本上优化界面卡顿
- 描述一下 Handler 的原理
- 依次打印二叉树每层最左边的结点
二面
- 怎么判断对象是否要进入老年代
- Eden 和 Survivor 的比例和回收规则
- 新生代为什么用复制算法
- 说一下对 Binder 的理解
- 说一下 ActivityManagerService、ActivityManagerNative 等- - 几个类的区别
- 手写各种单例模式
- 跳台阶问题
- 求两个链表的交点
- 判断二叉树是否左右对称(只考虑结构对称,不考虑值)
三面
- MVP 及 MVP 怎么解决内存泄漏
- 项目架构
- 说一下 SharedPreferences
- 给一个数组,判断是否存在一对相等的前缀和与后缀和
- 平时怎么学习的
- 有什么想学的新技术、学习计划
HR面
- 对我们部门的印象怎么样
- 有没有参加别的面试
- 如果阿里和美团都要你,你选哪个
- 家是哪儿的
- 了解阿里面试情况
- 实习时长、什么时候来
- 了解腾讯面试情况
五。写在最后
分享免费学习资料
对于之前面试过的种种遇到的问题和问到的详细细节,我做了个文档,记录了一些面试需要问道的问题和一些平时学习的视频笔记,(如Flutter.Glide.OPencv.EventBus.自定义View.数据库框架设计.插件化组件化.Binder等都有对应的视频教学)
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点赞和关注下,以后还会更新技术干货,谢谢您的支持
领取方式:QQ交流群925019412
2020年Android最新面试题大全(收录了字节跳动、腾讯、百度、阿里巴巴、华为等十几家一线大厂题)
一、腾讯
(一)计算机基础、网路技术及操作系统等题
1、http1.0、http1.1、http2.0区别
https://juejin.im/entry/5981c5df518825359a2b9476 推荐
答:(1)HTTP1.1与HPPT1.0主要区别:缓存处理、HOST头处理、带宽优化及网路连接的使用、长连接、错误通知管理等;
(2)SPDY与HPPT1.x主要区别:降低延迟(多路复用)、请求优先级、header压缩、基于HTTPS的加密传输协议、服务端推送等;
(3)SPDY与HPPT2.0主要区别:SPDY强制使用HPPTS、SPDY消息头压缩算法采用的是DEFLATE而HPPT2.0采用的是HPACK;
(4)HTTP2.0与HPPT1.1主要区别:文本协议采用新的二进制格式、多路复用、header压缩、服务器端推送等。
2、如何防止DNS劫持?
答:直接采用IP访问或使用安全可靠的dns服务(如:8.8.8.8)
(二)Java/kotlin题
1、类加载机制
https://baijiahao.baidu.com/s?id=1658299223471945338&wfr=spider&for=pc
https://blog.csdn.net/cnahyz/article/details/82219210(JDK 9 之前及之后之分)
答:(1)类加载过程分为七个阶段:加载->连接(验证->准备->解析)初始化->使用->卸载;
(2)JDK9之前的类加载器:
(3)JDK9类加器的改变
2、手写单列模式的几种实现,静态内部类是怎么保证线程安全的?
https://blog.csdn.net/yao_94/article/details/82764741
答:(1)静态内部类的单列好处:懒汉式(外部类被加载时,其内部类不会被加载,直到访问内部类的静态变量或给静态变量赋值时,调用类的静态方法时)、线程安全。
(2)根据类加载机制,虚拟机会保证在多线程环境下 < clinit > 方法能被正确的加锁、同步。如果有多个线程同时请求加载一个类,那么只会有一个线程去执行这个类的 < clinit > 方法,其他线程都会阻塞,直到方法执行完毕。同时,其他线程也不会再去执行 < clinit > 方法了。这就保证了同一个类加载器下,一个类只会初始化一次。(这也是为什么说饿汉式单例模式是线程安全的,因为类只会加载一次。)
3、sleep、wait、yield在多线程应用中的区别
https://blog.csdn.net/wanderlustLee/article/details/79659965
答:(1)sleep方法是Thread的类方法(静态方法),相当于让线程睡眠(让线程进入阻塞状态),交出cpu,让cpu去执行其他的任务,不会释放锁,也就是说如果当前线程持有对某个对象的锁,则即使调用sleep方法,其他线程也无法访问这个对象;
(2)wait方法是Object的成员方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),OS会将执行时间分配给其它线程,同样也是进入阻塞态。只有调用对象的notify()方法(或notifyAll()方法)时才能唤醒等待池中的线程进入等锁池(lock pool),如果线程重新获得对象的锁就可以进入就绪状态。
(3)yield方法是Thread的类方法(静态方法),调用yield方法会让当前线程交出cpu权限,让cpu去执行其他的线程。它跟sleep方法类似,同样不会释放锁。但是yield不能控制具体的交出cpu的时间,另外,yield方法只能让拥有相同优先级的线程有获取cpu执行时间的机会。而且,调用yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,它只需要等待重新获取cpu执行时间,这一点是和sleep方法不一样的。
4、使用JNI时,如何在C++代码中访问java对象
https://www.cnblogs.com/guanmanman/p/6811264.html JAVA调C/C++
https://www.cnblogs.com/guanmanman/p/6840226.html C/C++调用JAVA
答:(1)JAVA调用C/C++:
java代码中定义native方法,并用javah生成头文件,实现头文件中对应的方法,编译生成so,java代码加载so,然后在java代码中调用native方法。
(2)C/C++调用JAVA方法:
在C/C++代码中通过反射机制获取Java对象的引用,通过Java对象引用获取java类中的变量ID(方法ID),通过变量ID获取Java变量(通过方法ID调用实际的java方法)。
5、GC机制
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
答:(1)JVM内存区域:
(2)如何识别垃圾:引用计数法(存在循环引用情况)、可达分析法(现代虚拟机基本都是采用这种算法来判断对象是否存活)
(3)垃圾回收的主要方法:标记清除法、复制法、标记整理法、分代收集算法(现代虚拟机采用的首选算法)。
6、常用设计模式你了解哪些?
https://juejin.im/post/5eb03862f265da7bfd7f6c50#heading-7
https://blog.csdn.net/yucaixiang/article/details/90239817
https://www.cnblogs.com/adamjwh/ 23种设计模式
答:(1)设计模式六大原则:单一职责原则、开闭原则、里氏替换原则、迪米特原则、接口隔离原则、依赖倒置原则。
(2)23种设计模式:
单例模式
代理模式,分为静态代理和动态代理
策略模式
简单工厂模式
责任链模式(View的事件分发、okhttp拦截器等 )
观察者模式
适配器模式
7、跨进程通信有哪些?
https://www.cnblogs.com/zgq0/p/8780893.html
答:(1)管道,通常指无名管道。速度慢,容量有限,只有父子进程能通信;
(2)FIFO,命名管道,一种文件类型
(3)消息队列
(4)信号量
(5)共享内存,是最快的一种IPC,因为进程是直接对内存进行存取。但需要同步。信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问;
(6)socket
8、synchronized底层实现原理,reentrantlock公平锁与非公平锁。
https://cloud.tencent.com/developer/article/1465413 (synchronized)
https://blog.csdn.net/fuyuwei2015/article/details/83719444 (reentrantlock)
答:(1)synchronized底层实线原理:
a、上锁资源只有两类,一个是对象,一个是类;
b、Java的对象头和monitor,对象头中的Mark Word记录着对象的hashcode、锁信息、分代年龄或gc信息等,锁的类型和状态在对象头Mark Word
中都有记录,在申请锁、锁升级等过程中JVM都需要读取对象的Mark Word
数据;
c、每个锁都对应一个monitord对象,monitor对象存在于每个对象的对象头中(存储着的指针的指向)
(2)可重入锁。可重入锁是指同一个线程可以多次获取同一把锁。reentrantlock和synchronized都是可重入锁。
可中断锁。可中断锁是指线程尝试获取锁的过程中,是否可以响应中断。synchronized是不可中断锁,而reentrantlock则提供了中断功能。
公平锁与非公平锁。公平锁是指多个线程同时尝试获取同一把锁时,获取锁的顺序按照线程达到的顺序,而非公平锁则允许线程“插队”。synchronized是非公平锁,而reentrantlock的默认实现是非公平锁,但是也可以设置为公平锁。
(2)reentrantlock的基本实现可以概括为:先通过CAS尝试获取锁。如果此时已经有线程占据了锁,那就加入AQS队列并且被挂起。当锁被释放之后,排在CLH队列队首的线程会被唤醒,然后CAS再次尝试获取锁。在这个时候,如果:
非公平锁:如果同时还有另一个线程进来尝试获取,那么有可能会让这个线程抢先获取;
公平锁:如果同时还有另一个线程进来尝试获取,当它发现自己不是在队首的话,就会排到队尾,由队首的线程获取到锁。
9、说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
https://www.cnblogs.com/huangjuncong/p/9478505.html
https://blog.csdn.net/qq_36865108/article/details/86649738
答:(1)JDK7内部采用了一个叫做 Segment 的结构,一个 Segment 其实就是一个类 Hash Table 的结构,很明显那就是查询遍历链表效率太低;
(2)JDK8开始做了一些数据结构上的调整。在 JAVA8 中它摒弃了 Segment(锁段)的概念,而是启用了一种全新的方式实现,利用 CAS 算法。底层依然由“数组”+链表+红黑树的方式思想,但是为了做到并发,又增加了很多辅助的类,例如 TreeBin、Traverser等对象内部类
(3)初始化大小为16。
10、JVM怎么保证gc效率跟线程运行效率的 ?
https://blog.csdn.net/weixin_30730053/article/details/98577257 提高JVM做GC的效率
https://blog.csdn.net/cutesource/article/details/5790888 多线程性能优化
11、接口暴露,但是不让别人调用,有哪些办法?
答:接口启用签名验证、参数加密等。
12、kotlin比Java好在哪里,是函数式编程吗?
https://github.com/heimashi/kotlin_tips#%E7%9B%AE%E5%BD%95
13、volatile 跟 synchronized区别?
https://www.cnblogs.com/sx-jd/p/10405792.html
答:(1)a、volatile本质是java虚拟机(JVM)当前变量在工作内存中的值是不确定的,需要从主内存中读取;synchronized则是锁定当前的变量(变量、方法、类),只有当前线程可以访问到该变量,其他的线程将会被阻塞;
b、volatile只能实现变量的修改可见性,并不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。
c、volatile只能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。
d、volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
(2)volatile有两条关键的语义:a、保证被volatile修饰的变量对所有线程都是可见的;b、禁止进行指令重排序。
(三)Android题
1、Android事件分发机制,如何处理冲突?
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
https://www.jianshu.com/p/d82f426ba8f7 如何处理冲突
答:事件分发方向Activity->window->View
//Activity
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
onUserInteraction();
}
//调用PhoneWindow.superdispatchTouchEvent()
if (getwindow().superdispatchTouchEvent(ev)) {
return true;
}
return onTouchEvent(ev);
}
//PhoneWindow
@Override
public boolean superdispatchTouchEvent(MotionEvent event) {
//mDecor即为DecorView
return mDecor.superdispatchTouchEvent(event);
}
//DecorView
public boolean superdispatchTouchEvent(MotionEvent event) {
//调用父类ViewGroup的dispatchTouchEvent进行事件分发
return super.dispatchTouchEvent(event);
}
2、Webview有哪些问题?
https://blog.csdn.net/qq_30983519/article/details/78375773
3、ListView缓存机制和优化
https://blog.csdn.net/Libmill/article/details/49644743 ListView缓存机制
https://blog.csdn.net/weixin_30920513/article/details/95719940 ListView优化
https://blog.csdn.net/lilong_19880408/article/details/78160084 图片错乱
答:(1)RecycleBin是AbsListView的一个内部类,它通过addScrapView ()、getScrapView()进行View的缓存和复用。
(2)ListView优化
①Item布局,层级越少越好,使用hierarchyview工具查看优化。
②复用convertView
③使用ViewHolder
④item中有图片时,异步加载
⑤快速滑动时,不加载图片
⑥item中有图片时,应对图片进行适当压缩
⑦实现数据的分页加载
(3)图片错乱是因为item复用及图片异步加载原因导致,可以在异步加载前为ImageView设置一张默认图片。
4、Bitmap图片优化
https://blog.csdn.net/pkorochi/article/details/104786262
https://blog.csdn.net/u012124438/article/details/66087785
答:(1)1、BitmapConfig的配置
2、使用decodeFile、decodeResource、decodeStream进行解析Bitmap时,配置inDensity和inTargetDensity,两者应该相等,值可以等于屏幕像素密度*0.75f
3、使用inJustDecodeBounds预判断Bitmap的大小及使用inSampleSize进行压缩
4、对Density>240的设备进行Bitmap的适配(缩放Density)
5、2.3版本inNativeAlloc的使用
6、4.4以下版本inPurgeable、inInputShareable的使用
7、Bitmap的回收
(2)在2.3以下的系统中,Bitmap的像素数据是存储在native中,Bitmap对象是存储在java堆中的,所以在回收Bitmap时,需要回收两个部分的空间:native和java堆。即先调用recycle()释放native中Bitmap的像素数据,再对Bitmap对象置null,保证GC对Bitmap对象的回收;在3.0以上的系统中,Bitmap的像素数据和对象本身都是存储在java堆中的,无需主动调用recycle(),只需将对象置null,由GC自动管理。
5、okhttp源码,分发器和5大拦截器
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
6、线程间通信和进程间通信
https://blog.csdn.net/jisuanji12306/article/details/86363390 线程间通信
答:(1)volatile关键字,内存共享
(2)使用Object类的wait() 和 notify() 、notifyAll()方法
(3)使用JUC工具类 CountDownLatch
(4)使用 reentrantlock 结合 Condition
(5)基本LockSupport实现线程间的阻塞和唤醒
https://www.cnblogs.com/zgq0/p/8780893.html 进程间通信
7、如何做进程保活?
https://www.jianshu.com/p/2272b9d42172
答:(1)提搞进程优先级;
(2)拉活
8、四大组件、Activity启动模式及生命周期
https://blog.csdn.net/qq_33140021/article/details/89483976 Activity启动模式及生命周期
答:四大组件分别为:Service、Activity、ContentProvider、broadcastReciever
9、横竖屏切换时生命周期变化
https://blog.csdn.net/tuike/article/details/79401361
答:大于Android 3.2(API Level 13)
- 不设置Activity的android:configChanges,或设置Activity的android:configChanges="orientation"时,或是设置android:configChanges="orientation|keyboardHidden,切屏会重新调用各个生命周期,且都只执行一次。
- 设置Activity的android:configChanges="orientation|screenSize"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
小于等于Android 3.2(API Level 13)
- 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
- 设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
- 设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
10、View绘制流程
https://www.jianshu.com/p/c5df0ac39e01?utm_campaign=haruki
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
答:RootViewImp.performTraversals():
private void performTraversals(){
...
int childWidthMeasureSpec = getRootMeasureSpec(mWidth,lp.width);
int childHeightMeasureSpec = getRootMeasureSpec(mHeight,lp.height);
...
//执行测量流程
performMeasure(childWidthMeasureSpec ,childWidthMeasureSpec);
...
//执行布局流程
performlayout(lp,desiredWindowWidth, desiredWindowHeight);
...
//执行绘制流程
performDraw();
}
11、EventBus
https://juejin.im/post/6844904192562200589
12、Rxjava
https://blog.csdn.net/reakingf/article/details/84845705
13、内存泄漏如何排查?
https://www.cnblogs.com/zquan/p/9614548.html
14、app的页面突然卡顿了一下,怎么排查?
https://blog.csdn.net/siyemuzi/article/details/102896685
https://www.jianshu.com/p/cd7fc77405ac
15、ANR怎么排查?定义是什么?
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
答:Inputdispating Timout(5s)、Service Timeout(前台20s,后台200s)、broadcastQueue(前台10s,后台60s)、ContentProvider Timeout (ContentProvider的publish在10s内没进行完)。
16、RelativeLayout和LinearLayout怎么选?为什么?
https://blog.csdn.net/guyuealian/article/details/52162774
答:(1)RelativeLayout会让子View调用2次onMeasure,LinearLayout 在有weight时,也会调用子View 2次onMeasure ; (2)RelativeLayout的子View如果高度和RelativeLayout不同,则会引发效率问题,当子View很复杂时,这个问题会更加严重。如果可以,尽量使用padding代替margin。
(3)在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。
(4)提高绘制性能的使用方式 根据上面源码的分析,RelativeLayout将对所有的子View进行两次measure,而LinearLayout在使用weight属性进行布局时也会对子View进行两次measure,如果他们位于整个View树的顶端时并可能进行多层的嵌套时,位于底层的View将会进行大量的measure操作,大大降低程序性能。因此,应尽量将RelativeLayout和LinearLayout置于View树的底层,并减少嵌套。
17、mmap+native日志优化
https://blog.csdn.net/u014602917/article/details/105390368
18、广播与EventBus的区别
https://blog.csdn.net/qq_34895720/article/details/97134965
19、讲讲Handler的底层实现原理
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
答:共享变量实现线程切换。
20、Databingding有哪些了解
https://blog.csdn.net/weixin_43130724/article/details/95621789
https://blog.csdn.net/qinbin2015/article/details/93916842 原理
https://blog.csdn.net/liangjingkanji/article/details/82180695 如何使用、
答:这是因为dataBinding使用了 APT(Annotation Processing Tool)即注解处理器的技术,编译期间会扫描res/layout目录下所有的布局文件,只要有data标签,都会生成两个布局文件:配置文件和带标签的布局文件。
21、自定义Layout主要有哪几个流程?
https://blog.csdn.net/xmxkf/article/details/51500304
答:onMeasure()、onLayout()。
22、滑动过程卡顿,刷新率太低,怎么排查?
https://blog.csdn.net/seven_poul/article/details/70598908
https://www.jianshu.com/p/cd7fc77405ac
答:两个方面造成,一UI线程有耗时操作,二视图渲染时间过长。
打开Android DDMS工具,Android systrace、Method Profiling
23、启动优化怎么优化
https://blog.csdn.net/qian520ao/article/details/81908505
24、讲讲Binder驱动
https://blog.csdn.net/a740169405/article/details/94454223
25、跨进程传递大数据如何传输
https://blog.csdn.net/u011240877/article/details/72863432
26、IPC机制
https://blog.csdn.net/qq_31339141/article/details/102478597
27、ClassLoader、DexClassLoader、PathClassLoader
https://blog.csdn.net/static_zh/article/details/100084370
28、主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
https://blog.csdn.net/chenyao1994/article/details/83037262
29、你们用的 okhttp ?那你有没有做过一些网络优化呢?比如弱网环境。
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
30、Binder原理
https://blog.csdn.net/augfun/article/details/82343249
https://www.cnblogs.com/manmanlu/p/7216281.html
31、ServiceManager、ActivityManager、PackageManager
https://blog.csdn.net/qq_21139343/article/details/55259208
32、Framework层的核心类
https://blog.csdn.net/wk_beicai/article/details/79305027
33、Hook机制
https://blog.csdn.net/gdutxiaoxu/article/details/81459830
34、View的渲染机制
https://blog.csdn.net/ccj659/article/details/53219288
35、 Intent是如何实现Activity、Service等之间的解耦合的?
https://blog.csdn.net/iispring/article/details/48417779
36、Monkey能跑多长时间?
37、性能测试怎么样
38、各种SystemService怎么运行?
https://blog.csdn.net/u012654756/article/details/90674886
https://blog.csdn.net/geyunfei_/article/details/78851024
39、Android 沉浸式状态栏 怎么实现的
https://blog.csdn.net/qq_21937107/article/details/80293557
40、事件处理函数有哪几个,父View 子View 监听同一个事件,重写哪些方法。在哪个View重写?
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
https://www.jianshu.com/p/d82f426ba8f7 如何处理冲突
41、ViewRootImpl接受事件吗?
https://blog.csdn.net/dongxianfei/article/details/83863888
答:
42、apk编译打包流程 V1,V2 签名区别
https://blog.csdn.net/brycegao321/article/details/79127159 apk编译打包流程
https://blog.csdn.net/xiaodongvtion/article/details/79506031 V1,V2 签名区别
答:
(2)v1签名是对jar进行签名,v2签名是对整个apk签名:官方介绍就是:v2签名是在整个APK文件的二进制内容上计算和验证的,v1是在归档文件中解压缩文件内容。二者签名所产生的结果:
v1:在v1中只对未压缩的文件内容进行了验证,所以在APK签名之后可以进行很多修改——文件可以移动,甚至可以重新压缩。即可以对签名后的文件在进行处理
v2:v2签名验证了归档中的所有字节,而不是单独的ZIP条目,如果您在构建过程中有任何定制任务,包括篡改或处理APK文件,请确保禁用它们,否则您可能会使v2签名失效,从而使您的APKs与Android 7.0和以上版本不兼容。
43、利用logging监听方法耗时,会不会让app增大延迟
https://blog.csdn.net/qeqeqe236/article/details/75417470
44、eventbus为什么要用copyOnWriteList?
https://www.cnblogs.com/zhaimi/p/3938736.html
答:copyOnWriteList线程安全。
45、插件化怎么加载资源的?
https://blog.csdn.net/xiao_nian/article/details/87254625
46、如果android没用对应的view,Flutter能运行吗?
https://www.jianshu.com/p/6d17d5947652
答:能。
47、为什么采用flatbuffer? 比Json好在哪里?
https://blog.csdn.net/zm_yang/article/details/102922628
https://www.cnblogs.com/frankwt/p/12943924.html
答:flatbuffer是google发布的一个跨平台序列化框架具有如下特点。
- 可不需要解析、拆包,而直接访问序列化后的数据;
- 内存利用率高以及读取速度快;
- 灵活性;
- 生成代码量小;
- 强类型;
- 使用方便;
- 代码跨平台无其他依赖
flatbuffer将数据存在一个一维数组当中,缓存在一个bytebuffer当中。一个flatbuffer对象在数组中被分为两部分,元数据部分和数据部分。元数据负责存放相对于中间部分的索引,数据部分存放真实的value。分割的节点为(pivot point)。它的将数据以及对应的数据位置都保存在一个线性的数组中。使用的时候只需要把byte流发送出去,解析的时候只需要根据保存的位置,截取对应的数值即可。
48、如何处理Crash,NativeCrash呢?Google是怎么做到的?如果上报过程中再次产生Crash能不能捕捉到?
https://blog.csdn.net/u010144805/article/details/78560529
49、uncaughtException是被谁调用的,如果再次崩溃能不能捕获到?考虑设计一个crash捕捉模块。
https://blog.csdn.net/singwhatiwanna/article/details/17289479
答:com.android.internal.os.RuntimeInit 中commonInit()中设置。
50、Linux是怎么知道app崩溃的,如果想要在被kill前 ,做一些耗时操作,该怎么做?
https://blog.csdn.net/qq_42795723/article/details/104275558
51、如果让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?
(四)算法题
https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95.md
https://www.cnblogs.com/yxl-2018/p/12383826.html
https://blog.csdn.net/qq_26079093/article/details/96605538
1、手写冒泡排序
2、通电小球
3、手写快速排序算法
4、100万个数字求100个最大值
二、字节跳动
(一)计算机基础、网路技术及操作系统等题
1、TCP拥塞控制
https://blog.csdn.net/m0_37962600/article/details/79993310
https://blog.csdn.net/qq_41431406/article/details/97926927
2、HTTP各种响应码,如404等
https://www.cnblogs.com/okcy/p/11376068.html
答:(1)1xx:消息
(2)2xx:成功
(3)3xx:重定向
(4)4xx:客户端错误
(5)5xx:服务器错误
3、TCP 三次握手四次挥手
https://blog.csdn.net/qq_38950316/article/details/81087809
4、GET请求与POST请求的区别
https://blog.csdn.net/qq_28483283/article/details/80207674
https://www.cnblogs.com/fan-1994716/p/11369529.html
答:(1)POST更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)POST能发送数据更多的数据类型(get只能发送ASCII字符),POST支持多种编码方式,儿GET只支持URL编码;
(3)POST发送的数据更大(GET 一般来说提交的数据最大是2k;原则上URL长度无限制,但大多数浏览器通常都会限制url 长度在2k(2048字节byte) POST理论上没有限制,实际上IIS4中最大量为80k,IIS5中为100k。)
(4)POST比GET慢
a、浏览器请求tcp连接(第一次握手)
b、服务器答应进行tcp连接(第二次握手)
c、浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
d、服务器返回100 Continue响应
e、浏览器发送数据
f、服务器返回200 OK响应
(5)POST一般用于修改和插入数据,GET一般用于搜索排序和筛选之类的操作
5、HTTPS过程。
https://www.cnblogs.com/helloworldcode/p/10104935.html 推荐
https://blog.csdn.net/qq_33840251/article/details/91358884
https://blog.csdn.net/seujava_er/article/details/90018326
答:(1)客户端向服务端发送请求;
(2)服务端收到请求后,向客户端做出回应;
(3)客户端收到服务端回应后,首先验证服务器证书;
(4)服务端回应。
6、DNS解析过程,如果服务器ip地址改变了,客户端怎么知道呢(通过HTTPDNS)
http://www.mamicode.com/info-detail-3050028.html
https://blog.csdn.net/yangzhengqui/article/details/81529973
https://www.cnblogs.com/jimmyhe/p/11279762.html (HTTPDNS说明)
7、计算机OSI7层结构,每层的协议,每层的作用(及TCP/IP网路参考模型)
https://www.cnblogs.com/xq777/p/8207393.html
答:(1)OSI(Open System Interconnect Reference Model)七层分层:
物理层、数据链路层、网路层、传输层、会话层、表示层、应用层
(2)TCP/IP网路参考模型
网络接口层、网路层、传输层、应用层。
8、TCP与UDP区别,为什么UDP实时性比较好
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
9、TCP的滑动窗口
https://www.cnblogs.com/hujinshui/p/10472671.html
https://www.cnblogs.com/shen-qian/p/12111666.html
10、Https与Http的区别,详细讲讲Https及中间人攻击
https://blog.csdn.net/qq_40373699/article/details/106860829
https://blog.csdn.net/qq_35642036/article/details/82788421
11、进程调度算法及优缺点
https://blog.csdn.net/lala_wang/article/details/81116781
答:(1)时间片轮转调度算法(RR):给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。优点是兼顾长短作业;缺点是平均等待时间较长,上下文切换较费时。适用于分时系统。
(2)先来先服务调度算法(FCFS):根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,会产生饥饿现象。属于非抢占式调度,优点是公平,实现简单;缺点是不利于短作业。
(3)优先级调度算法(HPF):在进程等待队列中选择优先级最高的来执行。常被用于批处理系统中,还可用于实时系统中。
(4)多级反馈队列调度算法:将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
(5)高响应比优先调度算法:根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。
12、操作系统32位,寻址空间
https://blog.csdn.net/xiaxiaojing/article/details/52457758
答:2的32次方字节,也就是4G的内存空间。
13、在浏览器输入网址经历的过程
https://www.cnblogs.com/xsj1/p/11202277.html
https://blog.csdn.net/dreamingbaobei3/article/details/87859700
14、Http的Header有什么?
https://blog.csdn.net/kdsde/article/details/83652662
15、TCP报文Header有什么?
https://www.cnblogs.com/HpeMephisto/p/11317686.html
答:TCP报文由首部和数据两部分组成,其中首部包括源端口号、目的端口号、序号、确认号、首部长度、保留位、标志、窗口大小、校验和、紧急指针、选项。
16、Http请求报文有什么?
https://www.cnblogs.com/ldq2016/p/9055933.html
答:(1)请求行
(2)请求头
(3)空行
(4)请求体(请求数据)
17、Http请求行里面包含什么?
答:请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。
18、消息队列是怎么传递数据的?
https://blog.csdn.net/huan_111011/article/details/77923390
19、Http1.x和2.0的区别
https://juejin.im/entry/5981c5df518825359a2b9476 推荐
答:(1)新的二进制格式
(2)多路复用
(3)Hearder压缩
(4)服务端推送
20、Http的响应码含义及作用
https://www.cnblogs.com/okcy/p/11376068.html
答:(1)1xx:消息
(2)2xx:成功
(3)3xx:重定向
(4)4xx:客户端错误
(5)5xx:服务器错误
21、TCP如何保证可靠性,如何进行流量控制
https://blog.csdn.net/liuchenxia8/article/details/80428157
答:TCP协议保证数据传输可靠性的方式主要有:校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制。
22、ACK和SYN是什么意思
(1) ACK的全称为AckNowledge character,即确认字符,表示接收到的字符无错误;
(2) SYN:同步序列编号(Synchronize Sequence Numbers)。
23、Http中如何实现缓存,那OkHttp中如何实现缓存
https://www.cnblogs.com/chenqf/p/6386163.html Http中如何实现缓存
https://zhuanlan.zhihu.com/p/59765130 OKHttp源码分析——缓存机制
https://blog.csdn.net/liuxingrong666/article/details/84983541 OKHttp源码分析——缓存机制
24、使用http协议传输一个10兆的文件,中途断了,如何实现断点重传
https://blog.csdn.net/tianzhaoai/article/details/56673071
https://blog.csdn.net/cbjcry/article/details/84925073
(二)Java/Kotlin题
1、HashMap的结构及实现原理,Hashmap冲突检测算法
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
2、数组和链表的区别
https://blog.csdn.net/qq_35044419/article/details/88580775
3、String、StringBuilder、StringBuffer区别
https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
4、final、finally、finalize区别
https://blog.csdn.net/meism5/article/details/89176986
5、synchronized的原理及作用
https://www.cnblogs.com/paddix/p/5367116.html
6、设计模式的六大原则是什么?你知道哪些设计模式?
https://juejin.im/post/5eb03862f265da7bfd7f6c50#heading-7
https://blog.csdn.net/yucaixiang/article/details/90239817
https://www.cnblogs.com/adamjwh/ 23种设计模式
7、简述JVM虚拟机内存模型
https://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html
https://blog.csdn.net/xinzhou201/article/details/81981282
8、请编程实现生产着-消费者模型
https://blog.csdn.net/lvxin15353715790/article/details/89143121
https://blog.csdn.net/weixin_42146366/article/details/8747937
9、动态代理静态代理区别?
https://www.jianshu.com/p/f56e123817b5
https://blog.csdn.net/WangQYoho/article/details/77584832
10、替换多重嵌套的if else写法
https://blog.csdn.net/u010375903/article/details/81192507 策略模式+工厂模式
https://blog.csdn.net/weixin_45505313/article/details/103827220 switch + map
11、private和static修饰的方法可以重写吗?
https://blog.csdn.net/cbmljs/article/details/104963618
答:不能,重写是指子类能够根据需要实现父类的方法。
(1)private修饰,则对于子类而言是不可见的;
(2)静态方法是不会被覆盖的。Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。
12、ArryList、LinkedList、Vector的区别
https://blog.csdn.net/zhangqiluGrubby/article/details/72870493
13、比较String str = “aaaa" 和 String str=new String("aaaa")
https://blog.csdn.net/qq_22238199/article/details/78853255
14、内部类与静态内部类区别
https://www.cnblogs.com/hustdc/p/8894073.html
15、Java GC原理
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
16、java泛型、反射
https://www.jianshu.com/p/986f732ed2f1 java泛型
https://blog.csdn.net/sinat_38259539/article/details/71799078 java反射
17、进程和线程的区别
https://blog.csdn.net/ThinkWon/article/details/102021274
https://blog.csdn.net/kuangsonghan/article/details/80674777
18、并发和并行分别是什么意思,多线程是并发还是并行
http://imgtec.eetrend.com/d6-imgtec/blog/2018-03/11310.html
https://blog.csdn.net/why15732625998/article/details/79625556
答:多线程根据分配到cpu内核的个数,来判断是并发还是并行,所以都有可能。
19、内部类会有内存泄漏问题吗 内部类为什么能访问外部类的变量,为什么还能访问外部类的私有变量。
https://blog.csdn.net/zhangjg_blog/article/details/20000769
答:内部类对象持有外部类对象的引用(this),所以能访问外部类的变量(包含私有变量)
20、Java里面的锁有哪些
https://www.cnblogs.com/jyroy/p/11365935.html
21、Java的类加载过程
https://baijiahao.baidu.com/s?id=1662931890502685014&wfr=spider&for=pc
答:(1)加载
(2)连接(验证、准备、解析)
(3)初始化
(4)使用
(5)卸载
22、聊聊LinkList和HashMap
https://www.cnblogs.com/gossip/p/8745656.html
23、synchronized的锁升级机制
https://www.cnblogs.com/fbw-gxy/p/11689431.html
答:(1)无锁到偏向锁;
(2)偏向锁到偏向锁
(3)偏向锁到轻量级锁
(4)轻量级锁到重量级锁
24、sleep和wait的区别
http://baijiahao.baidu.com/s?id=1647423693517849309&wfr=spider&for=pc
https://blog.csdn.net/qq_20009015/article/details/89980966
25、如何判断是否要回收?
https://www.cnblogs.com/hujinshui/p/10441230.html
答:(1)引用计数算法
(2)可达分析算法
26、可达分析法中,怎么判断对象是否包含引用?
https://blog.csdn.net/Simon_09010817/article/details/105437160
https://blog.csdn.net/IBLiplus/article/details/82958721
答:判断一个对象到GC Roots节点有没有引用链相连接,即该对象是否包含引用。
27、说说CAS
https://blog.csdn.net/pcwl1206/article/details/84892287
https://blog.csdn.net/v123411739/article/details/79561458
28、ConcurrentHashMap和Hashtable的区别
https://blog.csdn.net/ZytheMoon/article/details/88376749
https://www.cnblogs.com/lijiahaoAA/p/12517318.html
https://www.cnblogs.com/heyonggang/p/9112731.html
29、重写和重载的区别
https://blog.csdn.net/geekmubai/article/details/81975990
30、多态是怎么实现的
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
31、简述Java四种引用
https://juejin.im/post/5b82c02df265da436152f5ad
答:(1)强引用(2)软引用(3)弱引用(4)虚引用
32、线程的start()run()方法的区别
https://blog.csdn.net/QQ2899349953/article/details/81772104
https://www.cnblogs.com/zhaosq/p/10564698.html
33、线程池有几种类型?corepoolsize和maxpoolsize()的区别
https://blog.csdn.net/u011974987/article/details/51027795
https://blog.csdn.net/chzphoenix/article/details/78968075?utm_source=blogxgwz5
答:(1)newCachedThreadPool :缓存线程池,如果线程池长度超过处理需要,可回收空闲线程,若无可回收,则新建线程
(2)newFixedThreadPool : 定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
(3)newScheduledThreadPool : 计划线程池,支持定时及周期性任务执行。
(4)newSingleThreadExecutor :单线程线程池,用唯一的线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
34、HashSet和HashMap的区别
https://blog.csdn.net/chen213wb/article/details/84647179
https://baijiahao.baidu.com/s?id=1672061742901738578&wfr=spider&for=pc
35、 synchronized和volatile的区别
https://www.cnblogs.com/sx-jd/p/10405792.html
答:(1)a、volatile本质是java虚拟机(JVM)当前变量在工作内存中的值是不确定的,需要从主内存中读取;synchronized则是锁定当前的变量(变量、方法、类),只有当前线程可以访问到该变量,其他的线程将会被阻塞;
b、volatile只能实现变量的修改可见性,并不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。
c、volatile只能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。
d、volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
(2)volatile有两条关键的语义:a、保证被volatile修饰的变量对所有线程都是可见的;b、禁止进行指令重排序。
36、乐观锁和悲观锁
https://www.jianshu.com/p/d2ac26ca6525
https://blog.csdn.net/qq_34337272/article/details/81072874
https://blog.csdn.net/thetimelyrain/article/details/100974565
37、什么是页式存储管理和段式存储管理?
https://blog.csdn.net/qq_44073742/article/details/105267011
38、什么是虚拟内存和物理内存?
https://blog.csdn.net/lvyibin890/article/details/82217193
39、进程之间的调度有哪些方法?线程的调度方法?
https://blog.csdn.net/vqtyh/article/details/78282555 进程调度
https://www.jianshu.com/p/80963dc65ec8 线程的调度方法
https://blog.csdn.net/qq_36071795/article/details/83890067
40、数据库索引,使用什么数据结构?
https://blog.csdn.net/u013257679/article/details/80690521
https://cloud.tencent.com/developer/article/1448821
答:底层结构为B+树。
41、死锁的形成?怎么避免死锁?
https://blog.csdn.net/changfengxia/article/details/80313822
42、进程的私有资源有哪些
https://www.xuebuyuan.com/707400.html
43、ClasssLoader的实现原理
https://blog.csdn.net/zzti_erlie/article/details/82757435
(三)Android题
1、简述Android View的绘制流程
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
2、自定义view的步骤
https://blog.csdn.net/huachao1001/article/details/51577291
3、简述Android事件分发机制,给出一个activity的布局:activity里包含viewgroup1,viewgroup1里包含viewgroup2,viewgroup2里包含button,问touch事件的传递和处理机制
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
4、Android Handler机制及原理,Looper和Handler的关系
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
5、Activity从后台进程切换到前台进程的生命周期
答:之前的前台进程Activity调用onPause()方法,后台Activity调用onRestart()->onStart()->onResume() 进入前台,然后之前的前台Activity调用onStop()->onDestroy()方法。
6、HandlerThread讲一下
https://blog.csdn.net/weixin_41101173/article/details/79687313
7、主线程Looper一直循环查消息,为什么没卡主线程?
https://blog.csdn.net/xk7298/article/details/85214473
8、ListView与RecycleView的区别
https://blog.csdn.net/MarinaTsang/article/details/83870753
9、Bitmap相关,如有几种格式,分别占多少个字节等
https://blog.csdn.net/csdnnews/article/details/106700512
10、用MultiDex解决何事?其根本原因在于?Dex如何优化?主Dex放哪些东西?主Dex和其他Dex调用、关联,Odex优化点在于啥?
https://blog.csdn.net/qq_32816979/article/details/79482286
https://blog.csdn.net/xiaxl/article/details/83089944
https://www.jianshu.com/p/f48eac038384 ODEX优化点
11、LFU的底层设计原理,架构?什么时候使用?
https://www.cnblogs.com/hongdada/p/10406902.html
12、说一说Retrofit,及OkHttp中的责任链模式讲一下
https://blog.csdn.net/csdn_aiyang/article/details/80692384· Retrofit
13、App的启动过程
https://xujun.blog.csdn.net/article/details/99006458
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
14、Dalvik和Art虚拟机区别?
https://www.jianshu.com/p/8bb770ec4c48
答:从Android4.4引入ART,在4.4版本上,两种运行时环境共存。在5.0版本开始后,全部采用ART。
Dalvik采用的时JIT(Just-In-Time)编译模式,即即时编译;ART采用的是AOT(Ahead-Of-Time),应用在第一次安装时,字节码就会预先编译成机器码存储在本地。
15、多渠道打包如何实现(Flavor、Dimension应用)?从母包生出渠道包实现方法?渠道标识替换原理?
https://www.jianshu.com/p/739c45ae8360
16、Android打包哪些类型文件不能混淆?
https://www.jianshu.com/p/c7621946cac9
17、MVC、MVP、MVVM应用和彼此本质区别?
https://www.jianshu.com/p/5e94569a430a
18、Activity四大启动模式
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singletop
(3)singleTask
(4)singleInstance
19、onSaveInstancestate() ,说一下调用时机,它用来干什么的
https://blog.csdn.net/Robin132929/article/details/86682719
20、onSaveInstancestate() 保存的那个参数叫什么?Bundle 里面都放一些什么东西?怎么实现序列化?Parcelable 和 Serializable 有什么区别?
https://www.jianshu.com/p/27181e2e32d2
21、简述Retrofit框架,实现机制、作用、实现机制
https://blog.csdn.net/csdn_aiyang/article/details/80692384
22、Android进程通信,Intent是如何实现进程间通信的?
https://blog.csdn.net/iispring/article/details/48417779
23、内存泄漏有哪几种情况?
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
24、简述下EventBus,如何实现事件通知的?
https://juejin.im/post/6844904192562200589
25、Bundle的数据结构,如何存储,既然有了Intent.putExtra,为啥还要用bundle?
答:bundle的内部结构其实是Map,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口。
26、Android的IPC通信方式,是否使用过
https://blog.csdn.net/qq_31339141/article/details/102478597
27、Android的多点触控如何传递 核心类
https://blog.csdn.net/l707941510/article/details/81300333
https://blog.csdn.net/weixin_43887839/article/details/87882769
28、Asynctask的原理 ,AsyncTask是对Thread和Handler的组合包装
https://blog.csdn.net/google_huchun/article/details/65630850
29、android 图片加载框架有哪些,对比下区别
https://blog.csdn.net/github_33304260/article/details/70213300
30、图片框架的一些原理知识
31、其他的一些Android的模块化开发,热更新,组件化等知识
32、ContentProvider怎么升级维护?
33、Glide缓存特点?Glide是如何加载gif图片的?
https://blog.csdn.net/u011418943/article/details/107026881 Glide缓存特点
https://blog.csdn.net/Coo123_/article/details/106428226 Glide是如何加载gif图片的
34、RecycleView、ListView中的观察者模式
https://www.jianshu.com/p/336320f5e3b8 RecycleView
https://blog.csdn.net/xyh269/article/details/52535440 ListView
35、进程如何保活,怎样做才能让APP尽量不被杀死等
https://www.jianshu.com/p/2272b9d42172
答:(1)提搞进程优先级;
(2)拉活
36、Android 内存优化、性能优化
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
37、RGB_565位图,一个像素占多少位?
https://blog.csdn.net/csdnnews/article/details/106700512
答:5+6+5 = 16位=2个字节
38、简述Android Lanucher的架构,用到那些设计模式
40、LRU的底层设计原理,架构?什么时候使用?
https://www.cnblogs.com/hongdada/p/10406902.html
40、进程间通信的方式,安卓中有哪些方式,为什么是基于Binder的,不用传统的操作系统进程间通信方式呢
https://blog.csdn.net/hzw2017/article/details/81275438
https://blog.csdn.net/GitHub_YJH/article/details/96876789
41、一个app可以开启多个进程嘛,怎么做呢,每个进程都是在独立的虚拟机上嘛
https://blog.csdn.net/Young_xiaoT/article/details/51295783
答:一个APP可以开启多个进程,且每个进程都运行在独立虚拟机上。
42、异步消息处理流程,如果发送一个延时消息,messagequeue里面怎么个顺序,messagequeue是个什么数据结构
https://blog.csdn.net/qq_38875767/article/details/88687918
https://blog.csdn.net/kisty_yao/article/details/71191175 messagequeue是个什么数据结构
答:虽然MessageQueue叫消息队列,但是它的内部实现并不是用的队列,实际上它是通过一个单链表的数据结构来维护消息列表,单链表在插入和删除上比较有优势。
43、广播的种类,注册的方式,以及不同注册方式的生命周期
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
44、局部广播和全局广播的区别分别用什么实现的
https://blog.csdn.net/u010126792/article/details/82417190
45、activity和service的通信方式
https://blog.csdn.net/weixin_41101173/article/details/79718718
46、项目中定时为什么用AlarmManager,不用postDelayed
https://blog.csdn.net/Mr_LiaBill/article/details/49451509
47、项目中后台网络请求为什么用service不用线程
https://blog.csdn.net/pizza_lawson/article/details/42914745
48、安卓的新特性
https://blog.csdn.net/Carson1145/article/details/105333528 Android 11
https://blog.csdn.net/qq_44720366/article/details/105993034
49、Activity的生命周期,使用home键,再次打开Activity,生命周期是怎么样的
https://blog.csdn.net/c_z_w/article/details/53418098
50、介绍一下Android资源文件R.id的生成规则
https://www.jianshu.com/p/5cb55ef61048
https://blog.csdn.net/nio96/article/details/23737075
答:由AAPT工具生成。
(四)算法题
1、计算View树上所有View的数量,参数ViewGroup
2、给一个String字符串“com.byte.dance.hotc”,置换为“hotc.dance.byte.com”,要求只能原地置换,不能新建String,StringBuffer之类的
3、二叉树中序遍历,要求非递归
4、两个单链表的第一个相交节点
三、百度
(一)计算机基础、网路技术及操作系统等
1、TCP 三次握手/四次挥手,为什么要三次握手,四次挥手?
https://blog.csdn.net/qq_38950316/article/details/81087809
2、TCP和UDP的区别,分别有哪些应用场景?
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
3、简述七层网路模型
https://www.cnblogs.com/xq777/p/8207393.html
4、Https证书校验过程
https://www.cnblogs.com/MR-Guo/p/11447856.html
(二)Java/kotlin题
1、kt的伴生对象是饿汉模式还是懒汉模式?
https://blog.csdn.net/shulianghan/article/details/105003973/
答:Kotlin伴生对象是懒汉式。(另:使用object关键字修饰类为饿汉式)
2、HashMap的原理?如何解决HashMap的线程安全问题
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
3、java的hashcode和equals的区别
https://blog.csdn.net/Mrs_chens/article/details/92761868
https://www.cnblogs.com/justdojava/p/11271438.html
4、简述单例模式的实现方式,且单例模式有什么优缺点?
https://blog.csdn.net/SHYLOGO/article/details/107388234
5、简述Java的异常处理机制
https://blog.csdn.net/qq_15349687/article/details/82811581
6、多线程间如何进行信息通信
https://www.cnblogs.com/zyybb/p/10897923.html
7、多线程如何保证线程安全
https://blog.csdn.net/qq_26545305/article/details/79516610
8、简述线程池,线程池的原理
https://www.cnblogs.com/captainad/p/10943091.html
9、wait和sleep的区别
https://blog.csdn.net/wanderlustLee/article/details/79659965
10、java finalize用来干啥的,GC系统都做了,为啥还有finalize这个方法
https://blog.csdn.net/rsljdkt/article/details/12242007
11、简述java垃圾回收机制
https://blog.csdn.net/tangzwgo/article/details/97545742
12、JNI怎么使用
https://blog.csdn.net/wonghifong0223/article/details/73692711
https://www.cnblogs.com/zhujiabin/p/10571817.html
13、GC算法
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
答:(1)程序计算法
(2)可达分析法
14、抽象类和接口
https://blog.csdn.net/qq_34602647/article/details/80560741
15、匿名内部类介绍一下
https://blog.csdn.net/Dmeo_meng/article/details/91358993
https://blog.csdn.net/qq_33098039/article/details/78181287
16、简述ArrayList和LinkedList以及两者之间的区别
https://blog.csdn.net/u012216131/article/details/82500925
17、Java值传递还是引用传递
https://blog.csdn.net/q5706503/article/details/82910428
答:Java中没有引用传递,全是按值传递。
JAVA只有按值调用, 参数是什么都会复制一份再操作, 就算是对象的引用也会复制一份新的引用,只不过指向的是同一个对象
这种传参方式叫做按值传递, 传递的东西可以是引用。
18、简述JVM
https://blog.csdn.net/weixin_42382121/article/details/104695768
19、Java的数据类型,对应的包装类,自动装箱与拆箱
https://blog.csdn.net/yx0628/article/details/79413190
答:(1)char -> Character
(2)byte -> Byte
(3)short -> Short
(4)int ->Integer
(5)long ->Long
(6)float - >Float
(7)double ->Double
(8)boolean ->Boolean
(三)Android题
1、Handler.postDelayed的原理,内部怎么实现?Handler.postDelayed,阻塞后为什么不会ANR?
https://blog.csdn.net/dodod2012/article/details/99681424
https://blog.csdn.net/qingtiantianqing/article/details/72783952
2、简述什么是ANR,ANR怎么产生?怎么捕捉?
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
3、内存泄漏是什么?怎么找?你处理过哪些内存泄漏?
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
4、以100ms/张的间隔时间播放100张图片,且每张图片需要400ms进行加载,如何设计
答:开放性回答。
5、简述Handler消息机制,内部实现原理
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
6、列举一个你在实际项目中所进行的性能优化
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
答:(1)稳定性(内存溢出、崩溃);
(2)流畅(卡顿);
(3)损耗(电量、网路、流量);
(4)安装包(APK瘦身)
7、简述Android事件分发机制
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
9、SurfaceView的使用及其原理
https://www.jianshu.com/p/a2a235bee59e
https://www.cnblogs.com/renhui/p/8258391.html
9、WebView和H5相互调用的方法
https://blog.csdn.net/carson_ho/article/details/64904691
10、Java虚拟机和Dalvik虚拟机区别,ART虚拟机与Dalvik虚拟机区别
https://blog.csdn.net/jason0539/article/details/50440669
11、Service和IntentService
https://www.cnblogs.com/ldq2016/p/8192230.html
12、内存泄漏的情况
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
13、自定义view
https://blog.csdn.net/huachao1001/article/details/51577291
14、requestLayout和invalidate方法调用后,onMeasure、onLayout、onDraw的执行情况
https://blog.csdn.net/hxl517116279/article/details/90410345
https://blog.csdn.net/litefish/article/details/52859300
15、Activity启动模式
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singletop
(3)singleTask
(4)singleInstance
16、AIDL使用及怎么实现回调
https://blog.csdn.net/crazymo_/article/details/80240840
https://blog.csdn.net/tgbus18990140382/article/details/52799899
17、Android中LocalServerSocket是干什么用的
https://www.cnblogs.com/bastard/archive/2012/10/09/2717052.html
(四)算法题
四、阿里巴巴
(一)计算机基础及网路技术
1、TCP/IP有几层
https://blog.csdn.net/weixin_43258908/article/details/102472194
(二)Java/kotlin题
1、 隐藏与重写的区别
https://www.cnblogs.com/weichunguang/p/7646933.html
2、进程间通信有几种,效率如何
https://www.cnblogs.com/zgq0/p/8780893.html
3、多态概念
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
(三)Android题
1、一条最长的短信息约占多少byte?
https://blog.csdn.net/ouxiaoyong/article/details/78924239
答:手机短信的长度是由编码决定的,根据国际标准,每条短信最多发送1120位,即1120/8 = 140byte。
2、p2p和SMTP分别在哪层
答:(1)P2P属于TCP/IP中的传输层
(2)SMTP在应用层。
3、android中的动画有哪几类,它们的特点和区别是什么?
https://blog.csdn.net/carson_ho/article/details/79860980
4、 handler机制的原理
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
5、说说MVC模式的原理,它在android中的运用
https://blog.csdn.net/qq_27061049/article/details/83061248
6、Activity的生命周期
https://blog.csdn.net/qq_33140021/article/details/89483976 Activity启动模式及生命周期
7、Lanucher架构及用到的设计模式
(四)算法题
五、OPPO
(一)计算机基础、网路技术及操作系统等
1、TCP原理,如何保证稳定(与udp相比),阻塞
https://blog.csdn.net/fujibao/article/details/80845173 原理分析
https://blog.csdn.net/liuchenxia8/article/details/80428157 保证稳定性
2、文件上传、下载原理,下载中流的大小
3、cpu调度
https://blog.csdn.net/codeTZ/article/details/51254914
4、OKhttp是怎么复用连接的
https://blog.csdn.net/myth13141314/article/details/82794681 OkHttp3源码解析(三)——连接池复用
https://blog.csdn.net/myth13141314/article/details/82779847 OkHttp3源码解析(二)——拦截器链和缓存策略
(二)Java/kotlin题
1、反射如何实现
https://blog.csdn.net/sinat_38259539/article/details/71799078
2、泛型
https://www.jianshu.com/p/986f732ed2f1
3、Java四种引用(强软弱虚)及回收区别
https://juejin.im/post/5b82c02df265da436152f5ad
答:(1)强引用(2)软引用(3)弱引用(4)虚引用
4、SparseArray和HashMap区别
https://blog.csdn.net/shangsxb/article/details/78898323
5、锁的几种类型,是否在项目中使用
https://www.cnblogs.com/jyroy/p/11365935.html
6、ConcurrentHashMap的实现原理
https://www.cnblogs.com/huangjuncong/p/9478505.html
https://blog.csdn.net/qq_36865108/article/details/86649738
7、native层怎么检测内存泄漏
https://www.cnblogs.com/zzcperf/p/9563389.html
8、JNI动态注册和静态注册
https://www.cnblogs.com/itrena/p/7434185.html
9、so的加载流程是怎么样的,生命周期是怎么样的
https://shuwoom.com/?p=351
(三)Android题
1、Service两种启动方式及区别
https://blog.csdn.net/Jsagacity/article/details/80523912?utm_source=blogxgwz6
2、Asynctask原理
https://blog.csdn.net/google_huchun/article/details/65630850
3、线程池原理,是否用过
https://www.cnblogs.com/captainad/p/10943091.html
4、性能优化,图片内存占用计算,持有引用
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
5、EventBus作用及原理
https://juejin.im/post/6844904192562200589
6、ListView的一些优化,如何复用、图片错位,现在用Glide
https://blog.csdn.net/Libmill/article/details/49644743 ListView缓存机制
https://blog.csdn.net/weixin_30920513/article/details/95719940 ListView优化
https://blog.csdn.net/lilong_19880408/article/details/78160084 图片错乱
7、LRU缓存原理
https://www.cnblogs.com/Jackie-zhang/p/9869652.html
8、Activity启动模式及应用场景
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singletop
(3)singleTask
(4)singleInstance
9、静态广播和动态广播的区别
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
10、哪些场景会出现内存泄漏
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
11、RecycleView和ListView的区别
https://blog.csdn.net/MarinaTsang/article/details/83870753
12、开发中的常用的布局控件?什么情况下线性布局,什么情况下用相对布局?如何减少布局层级?
13、WebView交互原理?
https://blog.csdn.net/carson_ho/article/details/52693322
14、数据库,如何进行数据库迁移?
http://ddrv.cn/a/224611
15、大数据加载
16、自定义view
https://blog.csdn.net/huachao1001/article/details/51577291
17、Handler源码分析
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
18、如何分析内存泄漏及如何处理
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
19、如何分析ANR及如何处理
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
20、内存优化你做过没有?一张十万乘以十万的图片,如何加载才不会内存溢出?
https://blog.csdn.net/haoxuhong/article/details/80879982
21、内存溢出,内存抖动,内存泄漏你都碰到过吗?怎么解决的?如何区分这几种情况?怎么解决由内存泄漏而导致的内存溢出?
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
https://blog.csdn.net/huang_rong12/article/details/51628264 内存抖动导致的卡顿现象
22、okhttp源码
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
23、热修复原理及几种方案对比
https://blog.csdn.net/u013928412/article/details/80428476
https://blog.csdn.net/feather_wch/article/details/87910364
https://www.cnblogs.com/popfisher/p/8543973.html
24、apk加固
https://www.jianshu.com/p/e836428d61b9
25、Glide,RxJava原理和性能优化
https://xuexuan.blog.csdn.net/article/details/107663872 Glide
https://blog.csdn.net/reakingf/article/details/84845705 RxJava
26、有没有优化在弱网时候的通信?
https://zhuanlan.zhihu.com/p/21615263
https://www.jianshu.com/p/3f31f9e8f5ea
27、mmap+native日志优化
https://blog.csdn.net/u014602917/article/details/105390368
28、Android启动流程
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
29、系统是怎么帮我们找到桌面应用的
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
30、页面刷新机制,GPU调试工具颜色值分别代表什么?
https://blog.csdn.net/litefish/article/details/53939882 页面刷新机制
https://www.jianshu.com/p/a0e8575e9846 GPU调试工具颜色值分别代表
31、LeakCanary的原理,哪些对象可以用来做gc-root
https://blog.csdn.net/import_sadaharu/article/details/81407728
32、UI怎么优化
https://blog.csdn.net/joye123/article/details/79425398
33、Tinker的原理
https://blog.csdn.net/qq_22393017/article/details/73999210
(四)算法题
六、VIVO
(一)计算机基础、网路技术及操作系统等
1、设计断点下载
https://blog.csdn.net/tianzhaoai/article/details/56673071
https://blog.csdn.net/cbjcry/article/details/84925073
(二)Java/Kotlin题
1、String和StringBuffer的区别
https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
(三)Android题
1、怎么设计主题(比如夜间模式)
https://blog.csdn.net/stven_king/article/details/78648095
2、什么是ANR,如何避免?
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
3、然后避免内存溢出?
https://blog.csdn.net/liu3364575/article/details/80108312
https://www.jianshu.com/p/05a83c34a205
4、问AMS服务端有哪些类
https://blog.csdn.net/appdsn/article/details/79311526
5、service、动画
https://blog.csdn.net/Jsagacity/article/details/80523912?utm_source=blogxgwz6 service
https://blog.csdn.net/carson_ho/article/details/79860980 动画
(四)算法题
七、平安科技
(一)计算机基础、网路技术及操作系统等
1、http2.0 1.1 1.0的区别
https://juejin.im/entry/5981c5df518825359a2b9476 推荐
2、http如何保证安全性
https://blog.csdn.net/u013718730/article/details/94440881
答:(1)代码混淆,最直接的方式,可以保护加解密签名算法等;
(2)不直接使用userId等字段,而是使用有时效的Token;
(3)密码、token等敏感数据配合时间戳、干扰字符进行加解密;
(4)对整个请求体进行签名,防止修改;
(5)服务端通过签名、时间戳等,进行完整性、时效性、和重复性校验;
(6)向权威CA机构申请SSL证书,服务器使用https协议。
3、如何应对弱网环境
https://www.jianshu.com/p/3f31f9e8f5ea
答:(1)接口设计优化;
(2)数据压缩
(3)数据缓存
(4)界面优化
监控网路变化,若是弱网环境则不主动加载图片
(二)Java/kotlin题
(三)Android题
1、安装包优化有哪几种方式
https://cloud.tencent.com/developer/article/1466431
2、启动优化有哪几种方式
https://blog.csdn.net/qian520ao/article/details/81908505
3、View的绘制流程,每个方法干什么的,如果要获取View的宽高,在哪个方法里获取
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
4、android数据存储方式
https://blog.csdn.net/augfun/article/details/87903917
5、如果一个app无法访问网络,你怎么做数据存储
答:根据业务需求,先保存到本地,分两种情况:
(1)如果有实时性要求,课进行页面数据保存,当第二次打开时恢复数据到页面;
(2)如果对实时性要求不高,可以先保存数据,等网络恢复后再后台提交数据。
6、DVM跟JVM的区别
https://blog.csdn.net/jason0539/article/details/50440669
7、React Native跟原生开发的优劣
https://www.jianshu.com/p/d54bed57b262
答:
(四)算法题
八、大宇无限
(一)计算机基础、网路技术及操作系统等
1、HTTP有哪几种版本,版本间有什么区别?HTTPS跟HTTP有什么区别?
https://juejin.im/entry/5981c5df518825359a2b9476 HTTP有哪几种版本,版本间有什么区别
https://blog.csdn.net/qq_40373699/article/details/106860829 HTTPS跟HTTP有什么区别
https://blog.csdn.net/qq_35642036/article/details/82788421 HTTPS跟HTTP有什么区别
(二)Java/Kotlin题
1、Kotlin的访问权限
https://blog.csdn.net/wangcheeng/article/details/105692907
2、Koltin为什么比Java更安全
https://blog.csdn.net/luo_boke/article/details/107172965
3、Koltin比Java好在哪
https://blog.csdn.net/luo_boke/article/details/107172965
4、JVM的内存模型
https://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html
https://blog.csdn.net/xinzhou201/article/details/81981282
5、JMM的内存模型
https://blog.csdn.net/wandoubi/article/details/80147858
6、为什么操作数栈是Thread-Private
https://www.cnblogs.com/w-wfy/p/6393992.html
https://blog.csdn.net/Jbinbin/article/details/86302768
7、ArrayList跟LinkeList区别
https://blog.csdn.net/u012216131/article/details/82500925
8、ArrayList如何扩容的,如何提高ArrayList的效率
https://blog.csdn.net/u010890358/article/details/80515284
https://blog.csdn.net/SeeBefore/article/details/3962079
9、动态代理静态代理区别
https://www.jianshu.com/p/f56e123817b5
https://blog.csdn.net/WangQYoho/article/details/77584832
(三)Android题
1、启动优化怎么做的
https://blog.csdn.net/qian520ao/article/details/81908505
2、如果给你个iOS APP,你打算怎么优化
3、apk为什么要签名,v1跟v2签名的区别
https://www.cnblogs.com/meiniang/articles/5806271.html apk为什么要签名
https://blog.csdn.net/xiaodongvtion/article/details/79506031 V1,V2 签名区别
4、apk从编译打包到安装的流程
https://blog.csdn.net/brycegao321/article/details/79127159 apk编译打包流程
https://blog.csdn.net/wy391920778/article/details/79881142 安装的流程
5、dex到odex为什么不能在编译期优化
https://blog.csdn.net/xiaoyantan/article/details/80001656
https://www.jianshu.com/p/89d06f626540
答:优化过程会根据不同设备上Dalvik虚拟机的版本、Framework库的不同等因素而不同。在一台设备上被优化过的ODEX文件,拷贝到另一台设备上不一定能够运行
6、热修复原理
https://blog.csdn.net/u013928412/article/details/80428476
(四)算法题
1、计算二叉树的深度
(五)其他
1、你的优势是什么?
九、美团
(一)计算机基础、网路技术及操作系统等
1、为什么TCP要三次握手,两次不行吗?
https://blog.csdn.net/qq_38950316/article/details/81087809
2、TCP与UDP的区别,OSI七层结构
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
https://www.cnblogs.com/xq777/p/8207393.html OSI七层结构
3、DNS如何解析域名
http://www.mamicode.com/info-detail-3050028.html
https://blog.csdn.net/yangzhengqui/article/details/81529973
https://www.cnblogs.com/jimmyhe/p/11279762.html (HTTPDNS说明)
4、HTTPS与HTTP的区别,HTTPS为什么安全
https://blog.csdn.net/qq_40373699/article/details/106860829
https://blog.csdn.net/qq_35642036/article/details/82788421
5、在浏览器输入一个网址到网页显示出来有哪些经过
https://www.cnblogs.com/xsj1/p/11202277.html
https://blog.csdn.net/dreamingbaobei3/article/details/87859700
(二)Java/Kotlin题
1、生产者消费者模式
https://blog.csdn.net/lvxin15353715790/article/details/89143121
https://blog.csdn.net/weixin_42146366/article/details/8747937
2、wait 和 sleep的区别
https://blog.csdn.net/wanderlustLee/article/details/79659965
3、String、StringBuffer 、StringBuilder的区别
https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
4、String a = "abc" 和 String str = new String(“abc”) 的区别
https://blog.csdn.net/qq_22238199/article/details/78853255
5、谈谈四种引用
https://juejin.im/post/5b82c02df265da436152f5ad
答:(1)强引用(2)软引用(3)弱引用(4)虚引用
6、HashSet和HashMap的关系
https://blog.csdn.net/chen213wb/article/details/84647179
https://baijiahao.baidu.com/s?id=1672061742901738578&wfr=spider&for=pc
7、HashMap与HashTable的区别
https://blog.csdn.net/xuhuaabc/article/details/91475761
8、ConcurrentHashMap知道吗,ConcurrentHashMap在jdk1.8之后的优化
https://www.cnblogs.com/huangjuncong/p/9478505.html
https://blog.csdn.net/qq_36865108/article/details/86649738
9、重写和重载的区别
https://blog.csdn.net/geekmubai/article/details/81975990
10、死锁的四个条件
https://blog.csdn.net/changfengxia/article/details/80313822
11、线程的所有状态
https://blog.csdn.net/pange1991/article/details/53860651
12、synchronized关键字
https://cloud.tencent.com/developer/article/1465413
13、HashMap的hash算法和扩容机制的原因
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
14、线程池的参数和工作流程
https://www.cnblogs.com/captainad/p/10943091.html
15、数据库的范式及数据库中事务的特性
https://blog.csdn.net/dosthing/article/details/87954213
16、synchronize和lock区别
https://blog.csdn.net/hefenglian/article/details/82383569
17、用过的设计模式或者是安卓中遇到的设计模式
https://juejin.im/post/5eb03862f265da7bfd7f6c50#heading-7
https://blog.csdn.net/yucaixiang/article/details/90239817
18、责任链模式有哪些优势
https://blog.csdn.net/lsx2017/article/details/105006738
19、实现一个单例模式,DCL为什么要两次判断null呢?为什么使用volatile?
https://blog.csdn.net/xiaobao5214/article/details/88172375
https://blog.csdn.net/weixin_38983929/article/details/103006376 两次判断的作用
20、java类加载和内存管理机制
https://baijiahao.baidu.com/s?id=1662931890502685014&wfr=spider&for=pc java类加载
https://www.cnblogs.com/steffen/p/11368018.html 内存管理机制
21、GC过程
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
22、知道哪些数据结构,红黑树的特点
https://blog.csdn.net/u011442726/article/details/96909331
23、synchronzed修饰普通方法和静态方法有什么不同?
https://www.cnblogs.com/jichi/p/12500695.html
答:(1)修饰非静态方法,实际上是对调用该方法的对象加锁,俗称”对象锁“;
(2)修饰静态方法,实际上是对该类对象加锁,俗称”类锁“。
24、Thread.yield()作用?使线程进入哪个状态?
https://blog.csdn.net/Dongguabai/article/details/82217966
答:这个是个静态方法,一旦执行,它会使当前线程让出cpu,即由”运行状态“进入”就绪状态“。
25、简述LinkedHashMap
https://blog.csdn.net/xiaoyao2246/article/details/88836769
26、几种线程安全的List
https://blog.csdn.net/weixin_43157543/article/details/107410126
答:Vector、Collections.synchroniezedList、copyOnWriteArrayList。
(三)Android题
1、谈谈Activity的四种启动模式,Singletop和SingleTask启动模式的应用场景
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singletop
(3)singleTask
(4)singleInstance
2、图片的三级缓存是怎么做的?
https://blog.csdn.net/qq_33565218/article/details/98970980
3、Service的两种启动方式以及有什么区别
https://blog.csdn.net/Jsagacity/article/details/80523912?utm_source=blogxgwz6
4、如何在Activity和Service进行通信
https://blog.csdn.net/weixin_41101173/article/details/79718718
5、谈谈本地广播
https://blog.csdn.net/yuncaidaishu/article/details/86564590
6、binder机制
https://blog.csdn.net/augfun/article/details/82343249
https://www.cnblogs.com/manmanlu/p/7216281.html
7、Handler消息机制,子线程可以创建handler吗
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
https://blog.csdn.net/vv765947965/article/details/100888035 子线程可以创建handler
8、View的绘制流程,MeasureSpec(MS)知道吗?如何确定一个View的MS?那DecorView呢?
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
9、OkHttp的源码讲解,它涉及哪些设计模式
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
10、内存泄露检测工具leakcanary的原理
https://blog.csdn.net/import_sadaharu/article/details/81407728
11、IntentService能用bind方式启动吗?IntentService的原理
https://www.cnblogs.com/ldq2016/p/8192230.html
https://blog.csdn.net/Landon_Xu/article/details/52170991 IntentService启动不支持bindService
答:
12、做过的安卓性能优化
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
13、MVP MVVM架构
https://www.jianshu.com/p/5e94569a430a
https://blog.csdn.net/IT1039871366/article/details/50673192
14、热修复、热更新问题
https://blog.csdn.net/u013928412/article/details/80428476
15、内存泄漏、内存抖动等问题处理
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
https://blog.csdn.net/huang_rong12/article/details/51628264 内存抖动导致的卡顿现象
16、 AsyncTask和Handler+Thread机制的区别
https://blog.csdn.net/crystal_xing/article/details/81662871
(四)算法题
1、反转链表
十、B站
(一)计算机基础、网路技术及操作系统等
1、TCP和UDP有什么区别?
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
2、HTTP/HTTPS ,HTTP的断点传续
https://blog.csdn.net/tianzhaoai/article/details/56673071
https://blog.csdn.net/cbjcry/article/details/84925073
3、文件下载相关:下载大文件如何多线程提高速度?
https://blog.csdn.net/tianzhaoai/article/details/56673071
4、怎么优化服务器传输速度?
答:开放性回答。
(1)API
(2)带宽
(3)分布式
(二)Java题
1、多态,有哪些实现?
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
2、volatile作用,单例模式中双重锁判断的两次判断的作用?
https://blog.csdn.net/xiaobao5214/article/details/88172375
https://blog.csdn.net/weixin_38983929/article/details/103006376 两次判断的作用
3、JVM内存分配
https://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html
https://blog.csdn.net/xinzhou201/article/details/81981282
(三)Android题
1、dalvik和hotspot虚拟机了解吗?
https://www.cnblogs.com/lxjshuju/p/7191910.html
https://blog.csdn.net/smartbetter/article/details/80561284 hotspot虚拟机
2、Android的注解了解过哪些
https://droidyue.com/blog/2016/08/14/android-annnotation/
(四)算法题
十一、华为
(一)计算机基础、网路技术及操作系统等
1、Socket和Http最大的区别是什么?
https://blog.csdn.net/wishfly/article/details/44369019
答:最大区别Socket是网路层,Http是应用层。
(二)Java/kotlin题
1、设计模式六原则
答:单一职责原则、依赖倒置原则、迪米特原则、接口隔离原则、开闭原则、里氏替换原则
2、 RuntimeException解决办法: 看日志
https://blog.csdn.net/qq_35069223/article/details/81175117
(三)Android题
1、子线程怎么使用Handler
https://blog.csdn.net/vv765947965/article/details/100888035
2、问网页连接怎么启动本地App
https://blog.csdn.net/u012721933/article/details/51241675
3、android四大组件Android四大基本组件分别是Activity、Service服务,Content Provider内容提供者、broadcastReceiver广播接收器。
4、ANR(ActivityNot Respone)(无响应)先介绍下Main线程(也称为UI线程、主线程)
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
5、FC(Force close)原因:1.Error OOM(out of memory error) StackOverFlowError
https://blog.csdn.net/ylyg050518/article/details/50727292
6、Camera硬件有哪些引脚
7、渲染管线主要有哪几个阶段
(四)算法题
十二、Shopee 虾皮
(一)计算机基础、网路技术及操作系统等
1、HTTP与HTTPS的区别、过程
https://blog.csdn.net/qq_40373699/article/details/106860829
https://blog.csdn.net/qq_35642036/article/details/82788421
2、数字证书CA原理
https://blog.csdn.net/u014023993/article/details/86735957
https://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
3、TCP与UDP
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
4、滑动窗口
https://www.cnblogs.com/hujinshui/p/10472671.html
https://www.cnblogs.com/shen-qian/p/12111666.html
5、TCP分片
https://blog.csdn.net/Wu000999/article/details/88886061
6、https的加密过程?
https://www.cnblogs.com/imteck4713/p/12016313.html
7、https使用了对称加密还是非对称加密?
https://www.cnblogs.com/imteck4713/p/12016313.html
答:(1)证书验证阶段使用非对称加密;
(2)数据传输阶段使用对称加密,原因:非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。另外:在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。
8、使用https抓包了解吗?
https://www.cnblogs.com/imteck4713/p/12016313.html
9、https抓包可以抓到明文吗?
https://www.cnblogs.com/imteck4713/p/12016313.html
10、网络中的四元组了解吗?
答:(1)四元组:源IP地址、目的IP地址、源端口、目的端口
(2)五元组:源IP地址、目的IP地址、协议号、源端口、目的端口
(3)七元组:源IP地址、目的IP地址、协议号、源端口、目的端口,服务类型以及接口索引
11、网络安全中的中间人攻击了解吗?
https://juejin.im/post/5f1072eb6fb9a07e6d70c445
https://baike.baidu.com/item/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB/1739730?fr=aladdin
(二)Java/Kotlin题
1、Java集合了解吗,区别是什么?
https://blog.csdn.net/feiyanaffection/article/details/81394745
2、重写equals就必须重写hashcode吗?
https://blog.csdn.net/qq_35868412/article/details/89380409
答:(1)使用hashcode方法提前校验,可以避免每一次比对都调用equals方法,提高效率
(2)保证是同一个对象,如果重写了equals方法,而没有重写hashcode方法,会出现equals相等的对象,hashcode不相等的情况,重写hashcode方法就是为了避免这种情况的出现。
3、Set怎么判断数据不能重复?
https://www.cnblogs.com/kingofjava/p/10761657.html
4、hashmap的数学原理?底层实现?扩容原理?
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
5、反射了解吗?怎么实现的?
https://blog.csdn.net/sinat_38259539/article/details/71799078
6、Java中如何实现同步?
https://www.cnblogs.com/XHJT/p/3897440.html
7、volatile保证了什么特性?怎么保证有序性?怎么保证可见性?为什么不能保证原子性?
https://blog.csdn.net/sxfquqion/article/details/91411790
https://baijiahao.baidu.com/s?id=1663045221235771554&wfr=spider&for=pc
答:(1)保证不同线程对这个变量进行操作的可见性,
(2j禁止指令进行重排序。(保证有序性)
8、synchronized的底层实现?synchronized怎么保证原子性的?如何保证同步性?
https://cloud.tencent.com/developer/article/1465413
9、Java中的多态是怎么理解的?
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
10、Java泛型了解吗?
https://www.jianshu.com/p/986f732ed2f1 java泛型
(三)Android题
1、从一个activityA跳转到activityB,A,B的生命周期是怎么样的?是A的onpause先运行还是B的oncreate先运行?为什么?
答:A:onPaused();B:onCreate()->onStart()->onResume();A->onStop(); Standard模式情况。
2、Fragment了解吗?
https://blog.csdn.net/u013738122/article/details/80510366
3、Android中的广播机制了解吗?
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
4、broadcastReceiver的静态广播和动态广播的区别?
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
5、自定义实现过Android中的广播吗?
答:有。监听应用安装、微信/支付宝Hook插件开发进程间通信等。
6、activity怎么向fragment传递数据?通过bundle?为什么要通过bundle?在fragment中定义一个类可以传递吗?
https://blog.csdn.net/qq_27853161/article/details/56670460
7、自定义布局出现过什么问题吗?
https://blog.csdn.net/xmxkf/article/details/51500304
(四)算法题
十、其它
(一)计算机基础、网路技术及操作系统等
1、Http是在哪一层,Https使用了非对称加密还是对称加密?TCP和UDP的区别,为什么UDP不可靠还要使用UDP。(富途网)
答:HTTP是在应用层。HTTPS在验证阶段使用是非对称加密,在数据传输阶段使用的是对称加密。
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
2、TCP会检查包的顺序么,Tcp怎么控制包的发送(滑动窗口)。(富途网)
https://blog.csdn.net/dccmxj/article/details/52103800
答:TCP会检查包的顺序。
3、看到项目中使用了WebSocket,讲下它和Http的区别?(富途网)
https://blog.csdn.net/SL_ideas/article/details/73648378
https://segmentfault.com/a/1190000015122195
4、Socket心跳包
https://www.jianshu.com/p/ec3fadada9d7
(二)Java/Kotlin题
1、线程安全的集合有哪些?
https://blog.csdn.net/lixiaobuaa/article/details/79689338
答:(1)Vector
(2)HashTable
(3)ConcurrentHashMap
(4)copyOnWriteArrayList和copyOnWriteArraySet
2、Exception和Error的区别,他们的父类是什么?
https://blog.csdn.net/vv19910825/article/details/93326676
答:都继承自Throwalbe类。
3、 finally和return的顺序
https://blog.csdn.net/kavensu/article/details/8067850
4、如果有A,B,C,D,E五个步骤,每个步骤都需要操作对应请求,用哪种设计模式(Insta360 )
https://blog.csdn.net/u011897062/article/details/89457070 责任链模式
(三)Android题
1、蓝牙AP协议(爱奇艺),蓝牙模块框架(联想研究院)
https://blog.csdn.net/u010356768/article/details/91493622
2、Android启动流程(联想研究院)
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
3、LinearLayout weight 是如何计算(浦发银行)
https://blog.csdn.net/ddiididi/article/details/80954084
答:(1)measure()->onMeasure() 根据 mOritation 调用measureVertical()或measureHorizaontal()方法;
(2)先measure没有设置weight属性的View(weight>0),再mearsue设置过weight属性的view(将父视图剩余的高度/宽度按照weight值的大小平均分配给相应的子视图)。
4、问安卓listview控件的橡皮筋效果是如何实现的?(富途网)
https://blog.csdn.net/smile_Running/article/details/81128438
5、onSaveInstance()的使用场景?(富途网)
https://blog.csdn.net/hzy199772/article/details/53229893
答:Activity回收时临时数据的存储。
6、 问mat如何分析内存?(软通动力)
https://blog.csdn.net/pxq10422/article/details/105310369
7、嵌套滑动冲突如何解决?(北京图为先)
https://blog.csdn.net/qq_38998213/article/details/105054219
8、组件化及Arouter原理
https://blog.csdn.net/ceovip/article/details/88922528 组件化
https://blog.csdn.net/rentee/article/details/88596659 Arouter原理
9、fileprovider和Contentprovider区别
https://blog.csdn.net/xx326664162/article/details/78298956
10、APK体积优化
https://cloud.tencent.com/developer/article/1466431
11、屏幕适配
https://www.cnblogs.com/whycxb/p/9755012.html
12、llvm编译是如何优化代码的(绿网科技)
https://blog.csdn.net/yayaayaya123/article/details/83993041
13、dex是如何转为机器码的(绿网科技)
https://www.jianshu.com/p/a07bd632337a
14、Android主线程是怎么启动的(绿网科技}
https://www.cnblogs.com/mingfeng002/p/10323668.html
15、looper的唤醒是在Java还是Native层,怎么做到的(顺丰科技)
https://blog.csdn.net/abcd112358/article/details/105093994
答:在native层唤醒,就是向mWakeEventFd管道写数据就行。
16、如何提高海外用户的访问速度,假设服务器在深圳(顺丰科技)
https://www.33ol.com/news/1225.html
(四)算法题
.....完善中
今天关于腾讯、百度、华为、搜狗和滴滴Android面试题汇总和百度的android面试题的介绍到此结束,谢谢您的阅读,有关2017 年初、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集(更新篇)、2019 年 Android 面试题汇总、2019 阿里、头条、腾讯、美团 Android面试题,祝你斩获offer、2020年Android最新面试题大全(收录了字节跳动、腾讯、百度、阿里巴巴、华为等十几家一线大厂题)等更多相关知识的信息可以在本站进行查询。
本文标签: