版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fenggering/article/details/82911441
最新经历了一个月的找工作时期,参与了十几场面试吧,有一线大厂,也有潜力股小公司,面试过后,我都会把能想起来的面试题记录下来。现在事情告一段落,于是做一个总结。
某视频app公司面试题:
- Activity启动模式。
- Activity生命周期,从A页面打开B页面,两个页面的生命周期。
- onStartCommand的返回值和参数的作用。
- Synchronized关键字。一个线程访问某个类的Synchronized成员方法A,同时另一个线程可以去访问这个类的Synchronized成员方法B吗?
- App的启动优化。
- Handler,Looper,MessageQueue的关系。Handler通过sendMessageDelayed发送延时消息, 消息什么时候入队列?
- 主线程的Looper死循环为什么不会导致ANR?
- Android 动画的实现方式。
- 项目中有没有用到组件化,如何实现组件化。
- Hybrid开发中Android和H5的交互有哪些方式。
- 项目是怎样的架构,为什么这么搭建。
某物流公司的面试题;
- 本地广播和全局广播的区别,本地广播的实现原理。
- 常见第三方框架及其实现原理。
- SQLite数据库操作。
- Http请求中包含哪些内容,上传文件和发起请求的post请求的区别。
- 线程池有哪几种,如何运用。
- 设计实现大批量数据上传的方式。
- MVC,MVP,MVVM架构的区别。
- 如何解决Handler导致的内存泄漏。
- 进程间通信的方式。
某A厂电商及CN物流岗位的面试题:
- View的绘制流程。
- 实现延时任务的几种方式,postDelay,AlarmManager,TimerTask的区别。
- 做过哪些优化性能的工作?如何考量优化的成果。
- http和http2.0,以及https的不同。
- Art虚拟机和Dalvik虚拟机。
- 三级缓存的原理。
- LruCache算法的原理。
- 项目中用到了哪些设计模式,Android源码中用到设计模式的场景。
- Java8有什么新特性。
- Java类如何加载,类加载的过程。
- 页面卡顿如何解决,viewHolder起什么作用。
- 如果有大数据量网络请求,该如何优化
另某Y厂电商KL应用岗位面试题;
- 在浏览器输入网址到打开网页,中间的过程。
- 如何统计工程的代码量?如何去掉代码注释的影响?
- 模式匹配
- apt ,aop
- 标签注解的原理
- 热修复的原理。
- 线程池的原理,如果核心线程数5,最大线程数10,新来的线程会怎样?
- 如何在服务器接口未准备好的情况下调试接口?
- 如何抓取Https传输的数据?
- Android 与Js的交互,接口存在的安全隐患及修复
- 不同方式创建字符串,通过==和quuals比较的结果
某Y厂多媒体岗位面试题:
- 对第三方框架的了解。EventBus可以跨进程通信吗?
- Android P有什么新特性,后台限制策略是通过怎样的API来处理的?
- HashMap的原理,hashCode的作用,重写equals为什么要重写hashCode方法
- Synchronizd修饰静态方法也修饰了非静态方法,可以在两个线程同时被调用吗?
- padding和margin的区别。给固定大小及wrap_content的textView设置padding,它的可点击区域会变化吗?
- 如何自定义view, Canvas的作用
- onMesure()方法的参数,MeasureSpec的结构
- 动画有哪几种?属性动画怎么用,插值器什么作用
- 讲一下include,merge 和viewstub。 viewstub可以被重复加载吗?在view树里是怎样的存在?
- 对线程的理解,线程同步有哪几种方式
- final关键字的作用,为什么匿名内部类里用到的变量必须是final类型的?
- handler, Looper, MessageQueue的关系,这三个可以一对多吗?怎么保证message能被其对应的handler处理?
- 触摸事件传递过程。有个竖向滑动的ViewGroup里嵌套了横向滑动的view,如何处理滑动冲突?
- onSavedInstanceState触发的时机。
补充:
- synchronized的实现原理,和lock的区别。
- 多进程操作文件,怎么解决同步?
- CAS同步方法。
- binder的实现。
- 插件化的原理。如果自己去设计插件化的框架,怎么设计?注意哪些地方?
- 第三方框架及其原理。在用第三方框架时有没有做比较,了解项目之外的第三方框架吗?
- 如何分析ANR问题?腾讯Bugly这样的框架是什么原理。
- JNI开发,及原理。
- Java反射的原理。
上面这些都是技术的问题,还有一些频繁被问到的体现技术能力的问题:
- 在工作中做过的最有难度的需求是什么,是怎么实现的。
- 工作中遇到的最难的Bug是怎样的,及解决过程。
- 工作中代码优化、性能优化等,是怎么做的,代码规范性如何保证。
- 在团队中担任怎样的角色,团队的开发流程是怎样的。
- 有开源项目吗?
- 平时怎么获取新知识。
另外,作为Android开发,只会Android和java的知识是不够的,虽然可以应付一般工作,但是如果想进阶的话,下面这些技能起码要掌握一二:
- Java虚拟机。推荐看《深入理解Java虚拟机》
- 设计模式。经典书籍很多,比如《大话设计模式》
- 数据库操作。
- Http,TCP/IP相关
- Android源码,底层实现。
- 跨平台开发技术,比如ReativeNative,flutter,week等。
- Android和其他方向的行业新技术,新动态
- Kotlin,python,Linux等。
这些面试题的答案贴出来的话太多了,而且还不一样全面准确。需要的话各位自己去研究,把这些都搞清楚并能在面试中流畅应对的话,相信通过中高级Android 面试是没问题的了。
祝成功~
扫描二维码关注公众号,回复:
3647218 查看本文章