【Android初级面筋】在这个要求高级开发的行情下,初级开发者怎样在面试中杀出重围?

Java基础

1.什么是乐观锁?

  • 乐观锁:假设每次去拿数据都认为别人不会修改,所以不会上锁.但是在更新的时候会判断一下此期间别人有没有去更新这个数据. 一般用在读比较多,写比较少的情况.
  • 悲观锁:假设每次都是最坏情况,每次去拿数据时别人都会修改,所以每次拿数据的时候都会上锁,这样别人想拿这个数据就会被阻塞直到它拿到锁. 多写少读时使用.

2.volatile关键字

  1. 保证可见性,不保证原子性
  2. 禁止指令重排序
  3. 不缓存,每次都是从主存中取

1.3 hashmap 原理,红黑树是什么?

  • 1.7 数组+链表,链表过长时,会导致查询效率退化
  • 1.8 数组+链表+红黑树,当链表长度大于8转为红黑树
  • HashMap 的默认初始大小为 16,初始化大小必须为 2 的幂,最大大小为 2 的 30 次方。数组中存储的链表节点 Entry 类实现于 Map.Entry 接口,它实现了对节点的通用操作。HashMap 的阈值默认为 “容量 * 0.75f”,当存储节点数量超过该值,则对 map 进行扩容处理。
  • 线程不安全的容器,解决并发问题使用ConcurrentHashMap(高效)或者是Collections.synchronizedMap().Collections.synchronizedMap()其实就是每个方法加一个synchronize,其实和HashTable 差不多.

红黑树

  • 平衡的二叉查找树
  • 节点是红色或者是黑色
  • 根节点是黑色
  • 每个叶子的节点都是黑色的空节点(NULL)
  • 每个红色节点的两个子节点都是黑色的
  • 从任意节点到其每个叶子的所有路径都包含相同的黑色节点
  • 插入时会涉及到变色和旋转

4.jvm内存分配

Java虚拟机书中第二章

  • 程序计数器
  • Java虚拟机栈
  • 本地方法栈
  • Java堆
  • 方法区
  • 运行时常量池
  • 直接内存

1.5 String,StringBuffer,StringBuilder 区别

  • String,StringBuffer,StringBuilder最终底层存储与操作的都是char数组.但是String里面的char数组是final的,而StringBuffer,StringBuilder不是,也就是说,String是不可变的,想要新的字符串只能重新生成String.而StringBuffer和StringBuilder只需要修改底层的char数组就行.相对来说,开销要小很多.
  • String的大多数方法都是重新new一个新String对象返回,频繁重新生成容易生成很多垃圾.
    ........

2. 安卓基础

1.安卓各版本大变化(Android 6.0到10.0有哪些大点变化),兼容适配

Android 5.0

  • Material Design
  • ART虚拟机

Android 6.0

  • 应用权限管理
  • 官方指纹支持
  • Doze电量管理
  • 运行时权限机制->需要动态申请权限

Android 7.0

  • 多窗口模式
  • 支持Java 8语言平台
  • 需要使用FileProvider访问照片
  • 安装apk需要兼容

Android 8.0

  • 通知,渠道->适配
  • 画中画
  • 自动填充
  • 后台限制
  • 自适应桌面图标->适配
  • 隐式广播限制
  • 开启后台Service限制

Android 9.0

  • 利用 Wi-Fi RTT 进行室内定位
  • 刘海屏 API 支持
  • 多摄像头支持和摄像头更新
  • 不允许调用hide api
  • 限制明文流量的网络请求 http

Android 10

  • 暗黑模式
  • 隐私增强(后台能否访问定位)
  • 限制程序访问剪贴板
  • 应用黑盒
  • 权限细分需兼容
  • 后台定位单独权限需兼容
  • 设备唯一标示符需兼容
  • 后台打开Activity 需兼容
  • 非 SDK 接口限制 需兼容

2.热修复原理

原理

  1. 安卓在加载class时会通过双亲委托机制去加载一个类,先让父类去加载,如果找不到再让子类去加载某个类。
  2. 通过查看ClassLoader源码发现findClass方法是由每个子类自己实现的,比如BootClassLoader或者BaseDexClassLoader。而PathClassLoader是继承自B
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值