Android 高级架构开发工程师常见的面试题(腾讯,百度,平安,OPPO,招商银行)

感觉面试看上去很高大上, 各个面试官很牛逼的样子,其实很多也是临时靠百度搜的一些面试题.或者觉得能够体现自己的技术水平的题目(很多其实都是装逼用的,背背就好了,所谓面试感觉是请你造航母去的,进去后,发现特么只是去干拧螺丝的活.)

 以下是一些朋友去这些标题公司面试被问到的一些面试题:

 

  1. 线程池原理
  2. 图片加载框架原理
  3. OKHttp的实现原理
  4. 各种内存优化,谈谈你对内存优化的理解
  5. 垃圾回收机制
  6. 谈谈对同步请求和一步请求的理解
  7. 怎么保证数据的同步和异步
  8. 讲讲Socket,socket连接到底是怎么连接的?
  9. 谈谈你对IO的理解
  10. Glide原理讲一下
  11. 热修复原理
  12. 谈谈你对模块化,组件化,插件化的理解,以及应用场景
  13. IntentServer的底层原理实现
  14. Handle为什么能够跨线程通讯
  15. 什么是IPC?Aldl为什么能够跨进程通信
  16. 通讯协议Rxjava和Retrofit的结合使用
  17. 谈谈你对线程安全的理解
  18. 健将Voltale关键字
  19. 自定义线程池原理,你如何定义,为什么需要自定义线程池?
  20. 你会NDK吗? SDK写过吗?
  21. 子线程可以声明Handle吗?如何可以,应该怎么做,如果不可以,为什么不可以
  22. looper轮询器可以有几个?
  23. 谈谈内存原理的理解
  24. 多点触控怎么控制
  25. 什么是对象池
  26. 抽象类去实现接口,需不需要重写接口里面的方法,为什么?
  27. 你用过哪些推送,谈谈你对极光推送的底层原理实现?
  28. 讲讲EventBus的设计实现
  29. 单例模式有几种,他们有缺点是什么?
  30. 策略模式的应用场景
  31. 适配器模式的应用场景
  32. 适配器模式的应用场景
  33. 讲讲MVC,MVP,MVVM的异同?
  34. 工厂相关模式
  35. 什么是增量下载,什么是增量更新?
  36. 你用过数据库吗,如果用过你如何保证数据的线程安全?
  37. 后续继续增加和更新中...................................
  38. 什么事膨胀锁?
  39. 线程安全有多少实现方式?
  40. Handler为啥不能在子线程声明,声明后,报运行时异常?,又为啥是运行时异常?
  41. 主线程为啥是五秒ANR?
  42. TCP协议栈讲讲?
  43. 一个线程可以有几个handler?
  44. Git怎么提交两次请求,保证是同一个ID?
  45. 如何快速的定位ANR,OOM? 不要说插上手机玩出来的
  46. 2G的厂商文件里,怎么快速的定位到问题?(adb 来操作)
  47. 网络请求怎么定位到异常?
  48. 影响一个APP耗电量的因素有哪些,如何降低应用的耗电量,你会从哪些方面入手?
  49.  Android 应用 SharedPreferences  和 应用缓存存放的路径是否一样?如果是一样,他们存放在哪里,如果不一样,他们又分别存放在哪里? (前者是存放在内部存储位置,dada/data 目录下,后者是存放在sd卡下面,手机清除缓存是不会清除掉SP下面保存的数据的.)
  50. 谈谈你对多线程的看法?
  51. 线程池中的线程的数量,你是根据什么来确定的
  52. 如果网络请求的数据过多,造成页面卡顿, 后台已经实现了分页加载的情况下,如何减少反序列化造成的CPU开销? 减少解析数据造成的时间开销和页面卡顿?
  53. 谈谈你对时间分发机制的理解?
  54. 谈谈你对自定义View的理解
  55. 你如何实现屏幕适配的? 你采用的是什么方法?
  56. 什么是冷启动,什么是热启动?
  57. 用过Retrofit+Rxjava吗?如果当前页面销毁后,当前页面的网络请求还在,如何避免应用程序崩溃?你会怎么解决这问题?(1.Rxjava有个dispose的对象,在destroy调用就会取消订阅,加入lifecycle,动态监听生命周期 2.入oKGo请求一样,做全局初始化,网络请求的时候传入一个Tag,需要取消的时候就取消相应的Tag. 3.或者用LiveData,生命周期绑定后,就不用管理了)
  58. 如何一个页面的数据发生了改变,它又会影响到其他很多页面和Fragment中的数据,这个时候你会怎么去实现?(方式一: 用最新的框架:LiveData,这个框架可以实现该功能,方式二:采用EventBus去实现,3,其他方式自己百度和思考)
  59. 谈谈你对RxAndroid 底层原理的实现?(实际考察你,对观察者和订阅者的理解, 这边博客浅显易懂,分析源代码:https://blog.csdn.net/briblue/article/details/52411707)
  60. 如何你的App UI界面卡顿了,你如何定位到具体哪一行代码,造成的卡顿,另外你如何解决这个问题?
    1. RxAndroid和RxJava 有什么区别,这种新技术的出现是为了解决什么问题?  RxAndroid的哪个类,用来调度线程的切换?(Schedulers),RxAndroid 可以指定线程吗?他的实现指定方法是什么?
    2. 答案:
      Observable.create(new Observable.OnSubscribe() {
          @Override
          public void call(Subscriber subscriber) {
              try {
                  Thread.sleep(9000);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
              subscriber.onNext("RxAndroid 找到一个好朋友");
          }
          }).subscribeOn(Schedulers.io())
          .observeOn(AndroidSchedulers.mainThread())//Android 特有的Thread
          .subscribe(new Action1() {
              @Override
              public void call(String s) {
                  mTvMsg.setText(s);
              }
      });
      --------------------- 
      作者:frank909 
      来源:CSDN 
      原文:https://blog.csdn.net/briblue/article/details/52447098 
      版权声明:本文为博主原创文章,转载请附上博文链接!

       

 部分面试题:Android 高级架构开发工程师常见的面试题(腾讯,百度,平安,OPPO,招商银行)_第1张图片

    Android 高级架构开发工程师常见的面试题(腾讯,百度,平安,OPPO,招商银行)_第2张图片Android 高级架构开发工程师常见的面试题(腾讯,百度,平安,OPPO,招商银行)_第3张图片

 

 

 

你可能感兴趣的:(安卓)