客户端开发工程师技能表

客户端开发工程师技能表

1. Android

Android原生机制

(1)运行时机制

(2)编译时机制

Android原生组件

(1)四大组件

(2)五大存储

Android消息和通信机制

  • 消息处理机制:
  • Android-ITC
  • Android-Binder
  • Messenger
  • AIDL
  • Socket
  • Broadcast
  • ContentProvider
  • 文件共享:多进程读写同一文件是难以控制、不安全的。
  • SharedPrefernces:公共读(MODE_WORLD_READABLE)模式、公共写(MODE_WORLD_WRITEABLE)模式、跨进程(MODE_MULTI_PROCESS)模式均已弃用,多进程读写同一文件是难以控制、不安全的,Google 推荐使用基于 ContentProvider 的 FileProvider 来实现。

Android性能和优化

Android应用层框架

Android其他细节

  • Android-疑难杂症
  • SparseArray 的改进
  • 自己设计一个图片浏览器(图片加载器):
    • 首先要考虑到会加载多图和大图的情况。
    • 对于多图,采用预览图和本地缓存的形式,首次进入后,先从本地读取图片并加载预览小图,然后写入本地缓存,下次进入时,先从本地加载小图缓存,然后异步获取图片的更新,图片有更新时再重新缓存。并且在进入 App 后,根据显示的范围,缓存上下两行或者左右两列的图片,滑动时能提供更好的视觉效果,如果是纯粹的图片浏览器,其图片变动不大,则还可以将预览小图缓存到内存中。
    • 对于大图,采用优化加载的方式,点击小图进入大图时,先预加载图片的宽高信息,如果图片和实际显示范围差别不大,则可以直接加载进来,如果图片远大于实际可显示范围,则首先压缩到当前可显示范围的大小,或者将 BitMap 裁剪到当前的显示范围再显示,然后用户双击放大的时候,利用 BitmapRegionDecoder 绘制实际原图的局部,并且配合 GestureDetector 监听手势滑动,来不断的绘制不同的位置,用户在缩小后,如果用户马上切换另一个大图,则将前一个大图的 Bitmap 清空,然后复用,否则设置一个定时方法,在一定时间内,保存前一个大图 Bitmap 的缓存,这样用户再次打开时就不用重复加载,如果超时,再回收该 Bitmap 对象。
    • 对于 App 整体,还要有个队列或者链表,用来记录整体内存占用,例如在大图模式下,假如内存占用接近或超过了预期的最大值,则释放掉之前小图模式下的内存,用户再退出大图模式后再重新加载图片列表。

2. iOS

iOS其他细节


3. Java

Java思想规范

Java原生框架

JVM


4. Linux操作系统

  • Linux-IO阻塞模型
  • Linux 是怎么知道 App 崩溃的?如果想要在被 Kill 前做一些耗时操作该怎么做?
  • 怎么定位 Native Crash?如果上报过程中再次产生 Crash 能不能捕捉到?
  • 如何设计一个 Crash 捕获模块?
  • App 沙箱化

5. Network


6. 常见算法