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


本文整理了Android高级架构开发工程师在腾讯、百度、平安、OPPO、招商银行等公司面试中常见的技术面试题,涵盖线程池、内存优化、网络通信、UI设计等多个方面,旨在帮助求职者理解和准备面试。

2701

被折叠的 条评论
为什么被折叠?



