来自一位入行多年 Android 开发程序员的忠告

本文是一位资深Android开发者分享的面试经验,包括LRUCache原理、TCP UDP区别、Handler机制、String与StringBuilder的区别、Serializable与Parcelable的区别,以及Hessian序列化的探讨。建议Android程序员在面试准备中关注这些知识点。
摘要由CSDN通过智能技术生成

前言

在这里插入图片描述

● 今年对很多学习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:有问题欢迎指正,欢迎大家在评论区留下你的建议和感受
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值