Android免打包多渠道统计如何实现,BAT面试文档

2023-11-19

我们程序员经常迷茫于有太多东西要学,有些找不到方向、不知所措。

很多程序员都愿意说,我想变得更好,但是更好是什么却很模糊,同时我们又不知道该怎么样去做。我们的生命如此短暂,作为程序员的职业生涯可能会更短。所以我们更加需要充分利用工作,工作间隙,晚上,周末的时间进行学习。接下来我们看一份腾讯课堂提供的一份一线互联网企业资深Android架构师的学习计划。

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

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

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

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

3. 如何缩减APK包大小?

代码

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

使用proguard混淆代码,它会对不用的代码做优化,并且混淆后也能够减少安装包的大小。

native code的部分,大多数情况下只需要支持armabi与x86的架构即可。如果非必须,可以考虑拿掉x86的部分。

资源

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

生成APK的时候,aapt工具本身会对png做优化,但是在此之前还可以使用其他工具如tinypng对图片进行进一步的压缩预处理。

jpeg还是png,根据需要做选择,在某些时候jpeg可以减少图片的体积。 对于9.png的图片,可拉伸区域尽量切小,另外可以通过使用9.png拉伸达到大图效果的时候尽量不要使用整张大图。

策略

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

尽可能的重用已有的图片资源。例如对称的图片,只需要提供一张,另外一张图片可以通过代码旋转的方式实现。

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

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

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

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

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

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

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

3、设置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操作或者阻塞主线程中的其他事情

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

优秀开源项目:

  • ali1024.coding.net/public/P7/Android/git

  • github.com/android

最后

目前已经更新的部分资料:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qeMo6Dok-1648367198850)(https://upload-images.jianshu.io/upload_images/22861276-108d3d55e24279a4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ng6OSr7q-1648367198851)(https://upload-images.jianshu.io/upload_images/22861276-83caf3f1f69b820e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lobr1Snp-1648367198852)(https://upload-images.jianshu.io/upload_images/22861276-21002336e56cf4b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

48367198850)]
[外链图片转存中…(img-ng6OSr7q-1648367198851)]
[外链图片转存中…(img-Lobr1Snp-1648367198852)]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android免打包多渠道统计如何实现,BAT面试文档 的相关文章

随机推荐

  • C语言初识

    include
  • 2012.11.23

    刚体变换基本上告一段落 现在开始封装这一部分 以便于重用
  • 成功解决 vscode远程调试python

    welcome to my blog 微软新出的插件 非常方便远程调试 不需要改动代码 简单9步 配置远程调试环境 第一步 按ctrl shift x 输入remote development 安装 第二步 按ctrl shift p 输入
  • MFC进程退出

    MFC软件关闭 进程退出 BOOL CMainFrame DestroyWindow TODO 在此添加专用代码和 或调用基类 m bRunThreadStart 0 while m bRunThreadState m bReadyStat
  • JavaRMI入门详细

    Java RMI入门 定义 RMI 远程方法调用 Remote Method Invocation 它支持存储在不同地址空间的程序级对象之间彼此进行通信 实现远程对象之间的无缝远程调用 Java RMI 1 用于不同虚拟机之间的通信 2 这
  • 毕设分享 自动化专业毕设题目选题推荐 - 单片机 嵌入式 stm32

    文章目录 1前言 2 如何选题 3 选题方向 2 1 物联网方向 2 2 嵌入式开发方向 2 3 人工智能方向 2 4 算法研究方向 2 4 学长作品展示 1前言 近期不少学弟学妹询问学长关于自动化专业相关的毕设选题 学长特意写下这篇文章以
  • 调用拷贝构造函数的几种情况(附面试题)

    1 深拷贝和浅拷贝 拷贝构造函数的使用 有时候需要自己定义拷贝构造函数 以避免浅拷贝问题 在什么情况下需要用户自己定义拷贝构造函数 一般情况下 当类中成员有指针变量 类中有动态内存分配时常常需要用户自己定义拷贝构造函数 在什么情况下系统会调
  • MATLAB之LU分解法(十)

    LU分解 1 LU分解的基础知识 矩阵的LU分解又称为矩阵的三角分解 即将一个矩阵分解为一个下三角矩阵L和一个上三角矩阵U 即 A L U A LU A LU 其在方程组的求解和求矩阵的逆有许多应用 LU分解的求解命令是lu 基本使用格式如
  • python爬取(自动化)豆瓣电影影评,并存储。

    from selenium import webdriverfrom selenium webdriver import ActionChainsimport timedriver webdriver Chrome r C Program
  • [Qt]QObject::connect: Cannot queue arguments of type 'QString&'的解决方法

    参考 https blog csdn net tokary article details 5777141 遇到的问题是 在主线程和子线程中 通过信号与槽发送QString 遇到 QObject connect Cannot queue a
  • Ubuntu20.04中VSCode配置C++以及分文件编写配置

    网上搜索了很多文章 一直显示找不到自定义的头文件 今天总算捣鼓出来了 参考文章 https www cnblogs com icmzn p 16244665 html https blog csdn net qq 39048131 arti
  • python os.walk()方法使用详解

    os walk方法是python中帮助我们高效管理文件 目录的工具 在深度学习中数据整理应用的很频繁 如数据集的名称格式化 将数据集的按一定比例划分训练集train set 测试集test set 1 导入文件 使用os walk方法前需要
  • Unity使用Newtonsoft报错的解决方案

    文章目录 Unity 使用 Newtonsoft 报错的解决方案 问题描述 解决方法 方法一 使用 Unity 的 Package Manager 自动导入 方法二 访问 GitHub 下载 unitypackage 文件手动导入 Unit
  • Win7环境下robotframework环境搭建(含安装包下载地址)

    本文记录在Windows环境下使用robotframework搭建自动化测试环境 1 安装robotframework依赖的语言环境 Python2 7 Robot Framework是一款python编写的功能自动化测试框架 运行依赖于p
  • 解决Java JPA Es索引时间戳字符串格式比较问题

    说明 在Java开发中常见使用 yyyy MM dd HH mm ss 来格式化时间戳 例如 ApiModelProperty 订单开始日期 JsonFormat pattern yyyy MM dd HH mm ss JSONField
  • 华为云云耀云服务器L实例评测|在云耀云服务器L实例上部署battle-city坦克大战小游戏

    华为云云耀云服务器L实例评测 在云耀云服务器L实例上部署battle city坦克大战小游戏 一 前言 1 1 云耀云服务器L实例简介 1 2 battle city坦克大战小游戏简介 二 本次实践介绍 2 1 本次实践简介 2 2 本次环
  • 数据结构与算法书籍推荐

    学习数据结构与算法 还是很有必要看几本相关的书籍 但根据不同基础的人 合适看的书也不一样 因此 针对不同层次 不同语言的人 推荐几本市面上口碑不错的书 1 入门级 针对刚入门的同学 建议不要急着去看那些经典书 像 算法导论 算法 这些比较经
  • Python入门--变量

    变量是指在程序运行期间可以改变其值的数据类型 在Python中 变量可以指定任何数据类型 如字符串 整数 浮点数等 要创建一个变量 我们必须先指定变量的名称 然后将其赋值 在Python中 变量名可以是任何有意义的名称 但通常使用小写字母和
  • 【Leetcode】151. 翻转字符串里的单词

    题目描述 给你一个字符串 s 逐个翻转字符串中的所有 单词 单词 是由非空格字符组成的字符串 s 中使用至少一个空格将字符串中的 单词 分隔开 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串 说明 输入字符串 s 可以在前面 后面
  • Android免打包多渠道统计如何实现,BAT面试文档

    我们程序员经常迷茫于有太多东西要学 有些找不到方向 不知所措 很多程序员都愿意说 我想变得更好 但是更好是什么却很模糊 同时我们又不知道该怎么样去做 我们的生命如此短暂 作为程序员的职业生涯可能会更短 所以我们更加需要充分利用工作 工作间隙