💗

作者: 又是一只小白鼠 | 来源:发表于2021-09-23 14:50 被阅读0次

    android与ios系统有什么区别

    1. 两者的运行机制不一样:iOS采用的是沙盘运行机制,Android采用的虚拟机运行机制
    2. 两者的后台机制不同:iOS任何第三方应用程序都不能在后台运行,Android任何应用程序都在后台运行,知道没有内存才会关闭
    3. iOS中用于UI指令权限最高,安卓中数据处理指令权限最高

    Android四大组件

    1. activity -- 活动

      • 一个activity通常就是一个单独的屏幕(窗口)
      • activity之间通过intent进行通信
      • android应用中每一个activity都必须要在AndroidMainfest.xml配置文件中声明,否则系统将不识别也不执行该activity
    2. service -- 服务

      service用于在后台完成用户指定的操作

      • started(启动):当应用程序组件调用startService()方法启动服务时,服务处于started状态
      • bound(绑定):当应用程序组件调用bindService()方法绑定到服务器时,服务器处于bound状态
    3. content provider -- 内容提供者

    4. broadcast receiver -- 广播接收者

      • 有两种注册方法
        1. 程序动态注册 --- 特点是activity关掉之后,广播失效
        2. AndroidMainfest文件中进行静态注册 --- 只要设备处于开启状态,广播接收器也是打开的

    app性能

    1. cpu

      • 测试点

        1. 空闲时间(切换至后台)的消耗
        2. 在运行一些应用的情况下,cpu已占50%,观察应用程序占cpu的情况
        3. 超负荷情况下看cpu的表现
      • 关注点

        1. 与自身app的上个版本对比
        2. 与竞品对比
        3. 自身app各自activity对比
    2. FPS

      每秒钟帧数越多,越流畅

    3. 内存

      • 测试点
        1. 空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少
        2. 中强度状态:时间增长的操作应用
        3. 强度状态:通常用来测内存泄漏-可以用跑monkey的方法

    4. 启动时间

      冷启动和热启动

    5. 网络流量

    6. 耗电量

    android ANR和crash

    • 造成ANR的原因

      1. 主线程阻塞
        • 解决方法:避免死锁的出现,使用子程序来处理耗时操作或者阻塞任务。尽量避免在主线程query provider
      2. cpu满负荷、I/O阻塞
        • 解决办法:文件读取或者数据库操作放在子线程异步操作
      3. 内存不足
        • 解决办法:防止内存泄漏,优化内存使用
      4. 各大组件ANR
        • 各大组件生命周期中避免耗时操作,注意BroadcastReciever的onRecieve()、后台Service和ContentProvider也不要执行太长时间的任务
    • crash

      1. java crash
        • java代码导致jvm退出,弹出“程序已经崩溃”对话框,最终用户点击关闭后进程退出
      2. native crash
        1. 空指针
          • 试图对空指针进行操作
        2. 野指针
          • 指向的是一个无效的地址
        3. 数组越界
          • 访问无效的地址
        4. 整数除以0
          • 整数除以0默认的处理方式是终止进程
        5. 格式化输出参数错误
          • 与野指针类似
        6. 缓冲区溢出
          • 通过往缓存区写超出其长度的内容
        7. 内存管理错误
          • 可用内存过低或者内存泄漏

    activity生命周期

    • 四种状态
      1. 活动状态(Active/Running)
        • 当activity运行在屏幕前台,此时它获取了焦点能响应用户的操作,属于运行状态,同一个时刻只有一个activity处于活动(Active)或者运行(Running)状态
        • 此状态由onResume()进入,由onPause()退出
      2. 暂停状态(Paused)
        • 当activity失去焦点(返回桌面或者之上有另一个透明的activity)它将处于暂停状态,再进而进入其他状态
        • 此状态由onPause()进入,可能下一步进入onResume()或者onCreate()重新唤醒软件,或者被onStop()杀掉
      3. 停止状态(Stopped)
        • 完全被另一个activity遮挡处于暂停状态,仍然保留着所有的状态和成员信息
        • 该状态由onStop()进入,如果被杀掉,可能进入onCreate()或者onRestart(),如果彻底死亡,进入onDestory()
      4. 非活动状态(Dead)

    abd 指令

    1. 列出手机装的所有app的包名

      adb shell pm list packages

    2. 列出系统应用的所有包名

      adb shell pm list packages -s

    3. 清除应用缓存

      adb shell pm clear <package>

    4. 查看日志

      adb logcat

      • grep 白名单模式、“xxx“匹配的tag、”……Exxx“是Error级别、"^.MyAPP“结尾匹配MyAPP的tag。-i忽略大小写
      • grep -v黑名单模式

      adb logcat | grep -i "^E.MyAPP"

    app自动化框架

    1. AirTest

      • 优点:框架基于图像识别跟UI,操作简单、功能简介;可以录制脚本,一键生成报告,带代码要求低
      • 缺点:空间定位不够准确,如果发生空间位置变更或者图案变更,会出现找不到控件
    2. Uiautomator2和Uiautomator的区别

      1. api不同
      2. Uiautomator2是安卓项目,Uiautomator是java项目
      3. Uiautomator2可以输入中文。Uiautomator的java工程需借助utf7输入法才能输入中文
      4. Uiautomator2必须明确EditText框才能向里面输入文字,Uiautomator直接指定父类也可以在子类中输入文字
      5. Uiautomator2获取控件速度快些,Uiautomator慢些
    3. Uiautomator2

      uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:

      1、测试脚本只能使用Java语言。

      2、测试脚本必须每次被上传到设备上运行。 我们希望测试能够用一个更脚本化的语言,例如Python编写,同时可以每次所见即所得地修改测试、运行测试

    4. facebook-wda

    系统性能指标

    1. 响应时间

      • 简称RT,系统对请求作出响应的时间
      • 不同行业可接受的响应时间不同,软件性能的高低实际上取决于用户对该响应时间的接受程度
    2. 系统处理能力

      • TPS:系统每秒处理交易数,单位是笔/秒
      • QPS:系统每秒处理查询次数,单位是笔/秒
      • HPS:每秒点击次数,单位是次/秒

      一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器的点击请求

    3. 吞吐量

      • 系统在单位时间内处理请求的数量
      • 对于单用户系统,响应时间可以很好的度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标
    4. 并发用户数

      • 并发用户数指在同一时刻内,登录系统并进行业务操作的用户数量
    5. 错误率

      • 简称FR,指系统在负载情况下失败交易的概率,error为千分之六以内

    python深拷贝和浅拷贝

    • 浅拷贝:拷贝父对象,不会拷贝对象的内部的子对象a.copy()或者copy.copy(a)
    • 深拷贝:copy模块下的deepcopy方法,完全拷贝了父对象及其子对象copy.deepcopy(a)

    python可变和不可变

    • 可变:string, number, tuple
    • 不可变:dict, list

    python 切片

    对列表元素的取值,基本语法形式:alist[start:stop:step]

    http和https的区别

    1. http是明文传输,数据安全性差;https(超文本传输协议)数据在传输过程中加密的,安全性好
    2. 使用https协议需要到ca申请证书,一般不免费
    3. http页面响应速度快,http使用tcp三次握手连接,client和server需要交换三个包,https除了tcp的三个包,还有ssl握手需要9个包,总12个包
    4. http和https使用完全不同的连接方式,使用的端口也不一样,前者80,后者443
    5. https其实是构建在SSL/TLS上的http协议。所以https比http更耗费浏览器资源

    HTTP Content-Type类型

    1. 常见的媒体格式类型
      • text/html:HTML格式
      • text/plain:纯文本格式
      • text/xml:XML格式
      • image/gif:GIF图片格式
      • image/jpeg:jpg图片格式
      • image/png:png图片格式
    2. 以application开头的媒体格式类型
      • application/xhtml+xml:XHTML格式
      • application/xml:XML数据格式
      • application/atom+xml:Atom XML聚合格式
      • application/json:JSON数据格式
      • application/pdf:pdf格式
      • application/msword:Word文档格式
      • application/octet-stream:二进制流数据(如常见的文件下载)
      • application/x-www-form-urlencoded:默认编码格式,以key/value格式传到服务器
    3. 上传文件媒体格式类型
      • multipart/form-data:需要对表单进行文件上传时,使用该格式

    linux命令

    1. tail:从指定点开始将文件写到标准输出

      • -f 循环读取
      • -q 不显示处理信息
      • -v 显示详细的处理信息
      • -n<行数> 显示行数
      1. 显示文件最后5行

        tail -n 5 filename

      2. 循环查看文件内容

        tail -f filename

      3. 从第五行开始显示文件

        tail -n +5 filename

    2. head: 显示档案的开头至标准输出

      • -q 隐藏文件名
      • -v 显示文件名
      • -c<字节> 显示字节数
      • -n<行数> 显示行数
      1. 显示文件前n行

        head -n 5 filename

      2. 显示文件前n个字节

        head -c 20 filename

      3. 文件除了最后n个字节以外的内容

        head -c -32 filename

      4. 输出文件除了最后n行以外的内容

        head -n -6 filename

    3. sed:可以按照行号和时间范围查询

      • 按照行号

        sed -n '5,10p' filename

    4. grep:用于过滤搜索特定字符

    • -i:忽略字符大小写(同-f)
    • -c:计算符合样式的列数
    • -n: 在显示符合样式的那一行之前,标示出该行的列数编号
    • -v:显示不包含匹配文本的所有行
    • wnja
    1. 查找制定进程

      ps -ef | grep java

    2. 查找指定进程个数

      ps -ef | grep java -c

      ps -ef | grep -c java

    3. 从文件中读取关键字进行搜索

      cat filename | grep -f filename2

    4. 从文件中读取关键字进行搜索并显示行数

      cat filename | grep -nf filename2

    5. 从文件中查找关键词

      grep 'xxx' filename

    6. 从多文件中查找关键词

      grep 'xxx' file1 file2

    7. grep不显示本身进程

      ps aux| grep ssh | grep -v 'grep'

    8. 查找u开头的内容

      cat file | grep ^u

    9. 查找非u开头的内容

      cat file | grep ^[^u]

    10. 输出以hat结尾的的行内容

      cat file | grep hat$

    11. 显示包含ed或者at字符的内容行

      cat file | grep -E 'ed|at'

    1. 不会辛苦

    算法题

    1. 在一个数组中,只有1个数字仅出现1次,其余数字出现2次,求只出现一次的那个数字

      # 关键点:异或运算
      #
      # 相同的数字异或的结果是0:2^2=0
      # 和0异或是本身:0^2=2
      
      def one_number(aList):
          a = 0
          for i in aList:
              a^=i
          return a
      
    1. 杨辉三角形

      def func_a(n):
          if n == 0:
              return []
          elif n == 1:
              return [1]
          elif n == 2:
              return [[1], [1, 1]]
          n -= 2
          rList = [[1], [1, 1]]
      
          while n > 0:
              newList = [1]
              for i in range(len(rList[-1])-1):
                  newList.append(rList[-1][i] + rList[-1][i+1])
              newList.append(1)
              rList.append(newList)
              n -= 1
          return rList
      
    1. hhhh

    相关文章

      网友评论

          本文标题:💗

          本文链接:https://www.haomeiwen.com/subject/naaiyktx.html