Android 高级工程师 - 面试总结

·  阅读 578
Android 高级工程师 - 面试总结

这是我参与更文挑战的第1天,活动详情查看: 更文挑战

记录面试过程中被问的问题 简历投递薪资范围 25-30 后面根据问题输出文章,希望能坚持下去。

此次面试准备:

  • 书籍《Android 进阶解密》快刷2遍。
  • 着重学习四大组件启动流程,并跟代码熟悉流程(8.0和10.0代码有区别)。
  • View的绘制流程,结合问题(View.post 为什么能拿到宽高)看源码,事半功倍
  • Handler、Looper、MessageQueue、Message、ThreadLocal、同步屏障、IdleHandler和主线程Handler 这一大套Handler知识点,必须掌握。
  • 各种优化,启动优化、包体积优化等等性能优化。
  • 锁、线程安全问题 Synchornized、volatile、线程池。
  • Kotlin 协程原理。
  • Kotlin 高阶函数。
  • Jetpack 常用组件原理,LiveData、ViewModel。
  • 常用开源库原理,Retrofit、Glide、OkHttp、Rxjava等等。
  • 数据结构,HashMap、ArrayList等常用的
  • LRU算法原理
  • 设计模式

差不多了,还有很多只是需要学习,这次面试准备,着重看了wanandroid 中的每日一问模块 看小缘大神回答的很有收获,能学习很多知识点。加油加油!

A公司:

  • ViewModelScope 什么时候关闭的
  • LiveData和EventBus的优缺点
  • Glide原理, Glide的BitmapPool的设计为了解决什么问题
  • 按下列表item的button 同时上下滑动RecyclerView 事件是怎么处理的
  • 启动优化
  • 插件化,资源插件化的原理
  • View.post() 为什么能拿到view的宽高
  • Kotlin 的单例怎么写
  • Kotlin协程怎么做并发
  • synchornized 是怎么工作的
  • HashMap 原理,怎么用HashMap做到线程安全
  • OkHttp的链条流程
  • 用到了哪些设计模式
  • 做了哪些版本适配
  • 数据结构
  • Http协议
  • Json

B公司:

  • LiveData怎么避免粘性消息的
  • HashMap 怎么获取hash值
  • ArrayList和LinkedList区别
  • 四种启动模式
  • kotlin高阶函数
  • kotlin扩展函数底层原理
  • Kotlin inner 关键字
  • 协程原理
  • kotlin object实现的单例线程安全吗
  • 怎么做适配 AutoSize原理

C公司:

  • 混淆的原理
  • 签名v1、v2、v3的区别
  • 性能优化
  • 优化图片加载
  • 哪些数据结构能做到线程安全
  • 视频格式
  • 32/64位平台下char、short、int、long、指针等类型分别占多少字节
  • 自己做一个即时聊天的功能需要怎么设计

D公司:

  • Android应用启动流程
  • 资源热修复、插件化
  • class热修复
  • LeakCanary原理
  • EventBus原理
  • HashMap
  • Kotlin协程原理
  • Intent和PendingIntent
  • EventBus 2.0和3.0的区别

E公司:

  • HashMap原理
  • 马甲包怎么打
  • 怎么获取View的宽高
  • Glide的怎么做生命周期相关管理
  • Glide的缓存结构

F公司:

  • ViewModel原理
  • LiveData原理
  • DataBinding的注解
  • 说说线程
  • 死锁怎么产生
  • 线程池的数据结构是什么

G公司:

  • 说说activity的生命周期
  • Service的启动流程
  • 包体积优化
  • Kotlin有什么优点

H公司:

  • 说说voletile
  • java中都有哪些锁
  • 线程池中核心线程和非核心线程的区别
  • 核心线程在什么情况下会被销毁
  • 说说Looper
  • 怎么判断当前线程是主线程
  • 四种引用
  • Activity A-B的生命周期
  • SP apply和commit的区别
  • 广播有哪几种
  • Service注册方式
  • OkHttp的源码看过吗
  • 子view显示可以超过父view吗,怎么超过
  • 用什么方式实现跨进程通信
  • 用过ViewStub吗

I公司:

  • MVP 和 MVVP 的区别
  • 死锁
  • 算法:25匹马
  • 用数组实现队列
  • 最近有没有解决疑难问题 什么思路
  • 从磁盘加载大图显示
  • 图片怎么压缩
  • 565和8888的区别 底层原理
  • Glide加载图片原理
  • StackOverFlow 是什么异常 怎么产生的

J公司:

  • 即构和声网有什么区别
  • Retrofit 里能学到什么
  • 简述handler
  • ThradLocal怎么实现的
  • Message做什么的
  • 为什么要用ObtainMessage
  • Idle 有没有遇到什么问题
  • Activity启动流程
  • AMS什么时候启动的
  • ActivityThread干啥用的
  • 为什么Zygote需要socket通信
  • ActivityThread啥时候启动的 为什么要通过抛异常方式
  • ASM和APT的区别

K公司:

  • LiveData
  • MVC MVVM
  • 内存泄漏的原因和常见内存泄漏的解决方案
  • RecyclerView加载多图速度优化方案
  • Glide和Picasso的区别
  • Kotlin使用期间有没有遇到坑
分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改