2021最新Android经常使用开源库总结,字节跳动Android面试

2021年09月15日 阅读数:1
这篇文章主要向大家介绍2021最新Android经常使用开源库总结,字节跳动Android面试,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1.要作一个尽量流畅的ListView,你平时在工做中如何进行优化的?

①Item布局,层级越少越好,使用hierarchyview工具查看优化。
②复用convertView
③使用ViewHolder
④item中有图片时,异步加载
⑤快速滑动时,不加载图片
⑥item中有图片时,应对图片进行适当压缩
⑦实现数据的分页加载android

2.对于Android 的安全问题,你知道多少

①错误导出组件
② 参数校验不严
③WebView引入各类安全问题,webview中的js注入
④不混淆、不防二次打包
⑤明文存储关键信息
⑦ 错误使用HTTPS
⑧山寨加密方法
⑨滥用权限、内存泄露、使用debug签名git

3. 如何缩减APK包大小?

代码程序员

保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs。web

使用proguard混淆代码,它会对不用的代码作优化,而且混淆后也可以减小安装包的大小。面试

native code的部分,大多数状况下只须要支持armabi与x86的架构便可。若是非必须,能够考虑拿掉x86的部分。算法

资源编程

使用Lint工具查找没有使用到的资源。去除不使用的图片,String,XML等等。 assets目录下的资源请确保没有用不上的文件。安全

生成APK的时候,aapt工具自己会对png作优化,可是在此以前还可使用其余工具如tinypng对图片进行进一步的压缩预处理。服务器

jpeg仍是png,根据须要作选择,在某些时候jpeg能够减小图片的体积。 对于9.png的图片,可拉伸区域尽可能切小,另外能够经过使用9.png拉伸达到大图效果的时候尽可能不要使用整张大图。markdown

策略

有选择性的提供hdpi,xhdpi,xxhdpi的图片资源。建议优先提供xhdpi的图片,对于mdpi,ldpi与xxxhdpi根据须要提供有差别的部分便可。

尽量的重用已有的图片资源。例如对称的图片,只须要提供一张,另一张图片能够经过代码旋转的方式实现。

能用代码绘制实现的功能,尽可能不要使用大量的图片。例如减小使用多张图片组成animate-list的AnimationDrawable,这种方式提供了多张图片很占空间。

4.Android与服务器交互的方式中的对称加密和非对称加密是什么?

对称加密,就是加密和解密数据都是使用同一个key,这方面的算法有DES。

非对称加密,加密和解密是使用不一样的key。发送数据以前要先和服务端约定生成公钥和私钥,使用公钥加密的数据能够用私钥解密,反之。这方面的算法有RSA。ssh 和 ssl都是典型的非对称加密。

5.设备横竖屏切换的时候,接下来会发生什么?

一、不设置Activity的android:configChanges时,切屏会从新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

二、设置Activity的android:configChanges=”orientation”时,切屏仍是会从新调用各个生命周期,切横、竖屏时只会执行一次

三、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会从新调用各个生命周期,只会执行onConfigurationChanged方法

6.Android启动Service的两种方式是什么? 它们的适用状况是什么?

若是后台服务开始后基本能够独立运行的话,能够用startService。音乐播放器就能够这样用。它们会一直运行直到你调用 stopSelf或者stopService。你能够经过发送Intent或者接收Intent来与正在运行的后台服务通讯,但大部分时间,你只是启动服务并让它独立运行。若是你须要与后台服务经过一个持续的链接来比较频繁地通讯,建议使用bind()。好比你须要定位服务不停地把更新后的地理位置传给UI。Binder比Intent开发起来复杂一些,但若是真的须要,你也只能使用它。

startService:生命周期与调用者不一样。启动后若调用者未调用stopService而直接退出,Service仍会运行
bindService:生命周期与调用者绑定,调用者一旦退出,Service就会调用unBind->onDestroy

7.谈谈你对Android中Context的理解?

Context:包含上下文信息(外部值) 的一个参数. Android 中的 Context 分三种,Application Context ,Activity Context ,Service Context.

它描述的是一个应用程序环境的信息,经过它咱们能够获取应用程序的资源和类,也包括一些应用级别操做,例如:启动一个Activity,发送广播,接受Intent信息等

8.Service的onCreate回调在UI线程中吗?

Service生命周期的各个回调和其余的应用组件同样,是跑在主线程中,会影响到你的UI操做或者阻塞主线程中的其余事情

最后

为了方便有学习须要的朋友,我把资料都整理成了视频教程(实际上比预期多花了很多精力)

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

当程序员容易,当一个优秀的程序员是须要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每一个阶段都须要掌握不一样的能力。早早肯定本身的职业方向,才能在工做和能力提高中甩开同龄人。

  • 不管你如今水平怎么样必定要 持续学习 没有鸡汤,别人看起来的绝不费力,其实费了很大力,这四个字就是个人建议!!
  • 我但愿每个努力生活的IT工程师,都会获得本身想要的,由于咱们很辛苦,咱们应得的。

当程序员容易,当一个优秀的程序员是须要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每一个阶段都须要掌握不一样的能力。早早肯定本身的职业方向,才能在工做和能力提高中甩开同龄人。

不管你如今水平怎么样必定要 持续学习 没有鸡汤,别人看起来的绝不费力,其实费了很大力,没有人能随随便便成功。

加油,共勉。