前言
● 今年对很多学习Android开发的同学来说,是转折的一年,因为疫情的关系,很多的人员失业了,也有的人找到了一份工作,但是却达不到自己心目中的要求,显得高不成低不就,所以就在准备着今年下半年更换一份更好的工作
● 需要多增加一些面试经验和刷题就成为了当前最为重要的事情,我这些年经历过大大小小的面试,我将其收集并整理了起来,所以接下来我就向大家分享我这些年来的面试的经验和总结
经历
● 我作为一名Android程序员,曾在大厂待过,对Android开发有着丰富的经验,也了解到许多人对学历有着不同的看法,对我而言,学历的本质上就是一块相对好用的敲门砖而已,许多的大学生起初对学业上并不会一起重视,他们只会认为还不容易考上了大学,应该适当的放松一段时间,也就造成了学末挂科的情况发生
● 在这种情况下,有些同学选择了持续摆烂,而有些同学会在这样的例子上痛改前非,无论是普通大学还是名牌大学,这种现象都会发生,名牌大学只能代表你,在高中时期比其他人更努力,对自己的学习是有计划的,但这也仅仅是代表了短暂的优势罢了,并不是所有的名牌大学生最终都可以变为成功者,同时也表示一般学校的毕业生并不会一事无成
● 无论是在校招时期还是在进入社招之后,不可否认,一个好的学历相对来说在同一批求职者中是具有很大优势的,但随着工作的时间变的越来越久,学历所带给你的作用慢慢变得越小,而那些在工作中有着自己的学习方向,并且不断提升自己技术的来说,他就会变成行业中最为抢手的那一批
● 如果你总是在对自己的学历不自信,那么你除了对考研,别无他选,但对于已经进入社会的人来说,学历的提升已经没有太大的需要了,只有将自己的能力提升才是最为重要的,如果说你刚出社会想要实习,那么大厂是可以作为一个你提升技术的跳板,而且大厂对于学历并没有太大的要求,只要你在工作中能够勤奋好学,肯吃苦,同时又有点能力,那么你的转正几率会大大提升,相对于小厂而言,大厂也有着更大的竞争力
面试真题
LRUCatch的原理
● LRU(Least Recently Used)缓存算法便应运而生,LRU是近期最少使用的算法,它的核心思想是当缓存满时,会优先淘汰那些近期最少使用的缓存对象。采用LRU算法的缓存有两种:LrhCache和DisLruCache,分别用于实现内存缓存和硬盘缓存,其核心思想都是LRU缓存算法
TCP UDP区别
● udp是无连接的,tcp是面向连接的
● udp是不可靠传输, tcp是可靠传输
● udp是面向报文传输,tcp是面向字节流传输
讲讲Handler机制及其实现
● 通常的来说,就是我们在线程之间处理消息通知及任务调度的工具,Handler 就是用来结合线程的消息队列来发送,处理 Message 对象和 Runnable 对象的工具
● Handler机制的实现离不开与之相关的其他三个类,Message 是 Handler 发送的消息实体,大部分的消息都是通过 Message 来封装传递的;MessageQueue 是用来将消息按顺序排队的队列;Looper 本质就是一个循环,不停的从 MessageQueue 中取出消息然后处理
String、StringBuffer、StringBuilder的区别
● String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁
● StringBuffer对象则代表一个字符序列可变的字符串,当一个 StringBuffer 被创建以后,通过 StringBuffer 提供的 append() 、 insert ()、 reverse ()、 setCharAt ()、 setLength ()等方法可以改变这个字符串对象的字符序列,一旦通过 StringBuffer 生成了最终想要的字符串,就可以调用它的 toString ()方法将其转换为一个 String 对象
● StringBuilder类也代表可变字符串对象,实际上, StringBuilder 和 StringBuffer 基本相似,两个类的构造器和方法也基本相同,不同的是: StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高
Serializable 和Parcelable 的区别
● Serializable的作用是为了保存对象的属性到本地文件,数据库,网络流, RMI ( Remote Method Invocation )以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的,使用了反射技术,并且期间产生临时对象
● Android的Parcelable 的设计初衷是因为 Serializable 效率过慢,为了在程序内不同组件间以及不同 Android 程序间( AIDL )高效的传输数据而设计,这些数据仅在内存中存在, Parcelable 是通过 IBinder 通信的消息的载体
谈谈 Hessian 序列化
● Hessian 序列化是一种支持动态类型、跨语言、基于对象
传输的网络协议
● Hessian采用的也是二进制协议,只不过Hessian序列化之后,字节数更小,性能更优,且具有方便在网络间进行传输,并且可以把对象持久化到数据库或者文件中
结语
以上就是我要说的内容
Android架构师之路还很漫长,一起共勉
有需要更多关于Android面试相关的资料可以私信我
PS:有问题欢迎指正,欢迎大家在评论区留下你的建议和感受