<commit_before>---
layout: post
title: 2019Android面试总结
author: 放纵不羁爱吃肉
---


## 自动化打点项目方案 aop其他选型考虑 如何实现参数传递以及事件唯一值

## tinker 热修复实现原理 pathClassLoader dexClassLoader区别 使用tinker碰到的具体问题情况

## 项目包瘦身问题 （压缩图片 代码混淆  cpu 分包  value 删除）运行时删除R文件是否会影响项目执行  运行时把 R.id.xxx 直接替换成 地址是否影响项目执行

## jsbridge 以及项目文章详情页如何优化 （如何调用js 实现 回调方法 本地html 等）优化思路 提早初始化webview 建立webview cache类 从cache类内获取webview

## 图片库选型原则以及原理 (LruDiskCache LruCache glide Picasso fresco 选择原因  我们项目有gif) 计算bitmap内存大小 btimap 8888 565 之间的差别   

## 安卓路由库的自研原因以及完成度 以及项目模块化架构的封包规则

## Diffutils recyclerview 优化  通过RecycledViewPool 共享viewholder 可以完成一部分优化

## 音视频播放小窗口还有播放器控件等 这个地方涉及到一个全局悬浮窗权限申请

## httpdns 以及okhttp 使用情况 为什么需要使用到httpdns 当前使用的网络请求是https吗

## 推送优化 根据厂商定制推送通道

## 安卓基础姿势：
1. handler 原理  activity启动流程  （activitythread  ams)  
2. activity window docorView 之间的关系   
3. view的绘制是由什么东西串联在一起的  viewTreeObserver 是基于什么机制监控的   mAttachInfo是什么
4. activity 启动流程  (加分项 asm activitythread applicationthread)
5. 进程间通信  （加分项 Android匿名共享内存（Ashmem）原理）是否进程间也能共享内存
6. recyclerview （加分项 recyclerviewpool 使用 以及recycler 缓存原理 四级缓存设置 ）

## java基础姿势：
1. 单例模式  静态内部类写法  枚举写法
2. hashmap  list set 数据结构必考题
3. java线程池创建参数规则等
4. volatile 关键字作用以及是否具有原子性
5. synchronized ReentrantLock 区别作用  cas原子操作
<commit_msg>面试题汇总<commit_after>---
layout: post
title: 2019Android面试总结
author: <PASSWORD>
---

今年到现在大大小小的接触了一些企业,今天抽空总结下面试题目，也算是对今年面试的一次总结。

## 关于我们app项目的一些问题梳理

1. 自动化打点项目方案 aop其他选型考虑 如何实现参数传递以及事件唯一值  

2. tinker 热修复实现原理 pathClassLoader dexClassLoader区别 使用tinker碰到的具体问题情况  

3. 项目包瘦身问题 （压缩图片 代码混淆  cpu 分包  value 删除）运行时删除R文件是否会影响项目执行  运行时把 R.id.xxx 直接替换成 地址是否影响项目执行  

4. jsbridge 以及项目文章详情页如何优化 （如何调用js 实现 回调方法 本地html 等）优化思路 提早初始化webview 建立webview cache类 从cache类内获取webview  

5. 图片库选型原则以及原理 (LruDiskCache LruCache glide Picasso fresco 选择原因  我们项目有gif)     

6. 安卓路由库的自研原因以及完成度 以及项目模块化架构的封包规则  

7. Diffutils recyclerview 优化  通过RecycledViewPool 共享viewholder 可以完成一部分优化  

8. 音视频播放小窗口还有播放器控件等 这个地方涉及到一个全局悬浮窗权限申请  

9. httpdns 以及okhttp 使用情况 为什么需要使用到httpdns 当前使用的网络请求是https吗 okhttp的拦截器机制 以及okhttp的职责链设计模式  

10. 推送优化 根据厂商定制推送通道  

## 安卓基础姿势：  

1. handler 原理  activity启动流程  （activitythread  ams)  

2. activity window docorView 之间的关系  

3. view的绘制是由什么东西串联在一起的  viewTreeObserver 是基于什么机制监控的   mAttachInfo是什么  

4. activity 启动流程  (加分项 asm activitythread applicationthread)  

5. 进程间通信  （加分项 Android匿名共享内存（Ashmem）原理）是否进程间也能共享内存  

6. recyclerview （加分项 recyclerviewpool 使用 以及recycler 缓存原理 四级缓存设置 ）  

7. 计算bitmap内存大小 btimap 8888 565 之间的差别 以及内存占用情况  分析下webp png  jpg 加载进来之后内存是否一样  

## java基础姿势:  

1. 单例模式  静态内部类写法  枚举写法  

2. hashmap  list set 数据结构必考题  

3. java线程池创建参数规则等  

4. volatile 关键字作用以及是否具有原子性  

5. synchronized ReentrantLock 区别作用  cas原子操作  

## 网络层姿势:  

1. 三次握手 四次挥手  

2. https 如何实现  

3. 如何优化一个网络请求  优化方向 dns 传输数据  缓存 etag  

{'fraction_non_alphanumeric': 0.05005440696409141, 'fraction_numerical': 0.02140007254261879, 'mean_word_length': 4.50499001996008, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5191390', 'n_tokens_mistral': 1849, 'n_tokens_neox': 2127, 'n_words': 280}