广告
返回顶部
首页 > 资讯 > 移动开发 >2020年3月Android面试总结:
  • 135
分享到

2020年3月Android面试总结:

Android 2022-06-06 13:06:11 135人浏览 泡泡鱼
摘要

前言: 由于新冠状病毒隔离的原因 去年离职到现在一直没有办法找工作 在深圳呆了一个多月了 Java基础也复习了一遍 总体来说还是有些收获

前言:
由于新冠状病毒隔离的原因 去年离职到现在一直没有办法找工作
在深圳呆了一个多月了 Java基础也复习了一遍 总体来说还是有些收获!
在3月初正式复工以来 公布简历后有很多外包公司打招呼!
因为自己对外包公司印象不好所以拒绝了很多岗位面试
就近几天面试了几家自研产品公司,所以对面试问题做一下总结!

进入正题:

1 看你简历上有写 熟练使用GosnFastJson你能讲讲其他的区别吗?
Gson是由Google公司推出的功能最全JSON解析器
FastJson是由阿里巴巴公司开发高性能json解析器
它们两个都是 无依赖,不需要例外额外的jar,能够直接跑在jdk上!
解析过程:
Gosn: 需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象
FastJson: 在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
FastJson 采用独创的算法,将parse的速度提升到极致,超过所有json库。

2 既然你知道FastJson性能优于Gson 有深入了解原因吗?
这里我没有答上来 面试官也没有深入解释 只是说了句:FastJson性能优化是内部使用的for循环

3 说说你在项目中常用的布局,为什么用它?
因为笔者在上家公司用到最多的布局基本就是 ConstraintLayout 为什么用它?
原因很简单 : 减少布局的层级, 优化渲染性能,使用灵活等等优点
如果你还不熟练 请移步 :约束布局ConstraintLayout看这一篇就够了

4 能说说 mvp模式 吗? 有什么好处?
MVP 是从经典的模式mvc演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
Android中MVP模式讲解及实践

5如何实现文件上传
参考
android上传文件至服务器(android端+服务器端)

6有用过单例模式吗?单例模式的好处?

1 ) 某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。 2 ) 省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 3 ) 有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了.
(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),
所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

下面内容是笔试题:

7说说你对context的理解
简单点说:Context是维持Android程序中各组件能够正常工作的一个核心功能类
也是应用程序环境中全局信息的接口
contest延申 :
Context的内存泄露
Android中的内存泄露,很多数情况都是Context造成的,根据上面对其结构和用途的分析,可以推测一下几点
原因:

涉及各种系统、APP资源,功能过于强大,导致使用的地方太多,在流程和引用关系上造成混乱 1.比如:异步的网络请求、View动画等,在流程上处理不当,导致无法释放 2.杂乱无章的传值,让很多对象都Hold一份Context,开辟了过多无法回收的资源 3.Drawable对象、Bitmap对象回收不及时,甚至与View死死绑定 4.单例的滥用,导致Context长期被引用无法释放
解决方案:
没必要传值的时候,尽量使用Application的Context,这样保证Context即可以全局使用,
又不会创建多份在与Activity等组件耦合的情况下,必须要使用Activity的Context的时候
考虑使用弱引用,
避免循环持有Context

8 android rawassets 区别?

assets目录是Android的一种特殊目录,用于放置APP所需的固定文件,且该文件被打包到APK中时,不会被编码到二进制文件。
Android还存在一种放置在res下的raw目录,该目录与assets目录不同。
注意点:
1、 assets目录不会被映射到R中,因此,资源无法通过R.id方式获取,必须要通过AssetManager进行操作与获取;res/raw目录下的资源会被映射到R中,可以通过getResource()方法获取资源。
2、 多级目录:assets下可以有多级目录,res/raw下不可以有多级目录。
3、 编码(都不会被编码):assets目录下资源不会被二进制编码;res/raw应该也不会被编码。

9 android的热修复
这个问题博主也不熟 还请参考 Android热修复总结

10 android中的ui适配,如何优化?
参考鸿洋大神的博文 Android UI性能优化实战 识别绘制中的性能问题

11 上架过哪些平台
参考博主博文 Android APK打包 加固 以及上传审核流程

12 android机型适配是如何解决的?
参考 Android开发:最全面、最易懂的Android屏幕适配解决方案

13.怎么查看内存泄漏 又是怎么解决的?
Android内存泄漏原因及解决办法

14 笔试题: 一个按升序排列好的数组int[] array = {-5,-1,0,5,9,11,13,15,22,35,46},输入一个x,int x = 31,在数据中找出和为x的两个数,例如 9 + 22 = 31,要求算法的时间复杂度为O(n);
解决方法:

public class GetNumber {
	public static void main(String[] args) {
		GetNumber gn = new GetNumber();
		//随便给定一个数组
		int[] num = { -5, -1, 1, 3, 8, 9, 11, 15, 19, 20, 23, 25, 30, 35, 44 };
		//随便给的值
		int a = 44;
		int[] x = gn.getNum(num, a);
		System.out.println(x[0]);
		System.out.println(x[1]);
	}
	public int[] getNum(int[] array, int x) {
		int headNum = 0;
		int footNum = array.length - 1;
		int[] newNum = new int[2];
		for (int i = 0; i < array.length; i++) {
			if (array[headNum] + array[footNum] != x) {
				if (array[headNum] + array[footNum]  x) {
					footNum--;
				}
			}
			newNum[0] = array[headNum];
			newNum[1] = array[footNum];
			if (headNum >= footNum) {
				return newNum;
			}
		}
		return newNum;
	}
}
输出结果为: 9
输出结果为: 35

作者:吕氏春秋i


--结束END--

本文标题: 2020年3月Android面试总结:

本文链接: https://www.lsjlt.com/news/29125.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作