50w 字 + 的 Android 技术类校招面试题汇总(附答案,kotlin 枚举反射
(3).锁分哪几类?(4).CAS 无锁编程的原理。(字节跳动)(5).ReentrantLock 的实现原理。(6).AQS 原理 (小米 京东)(7).Synchronized 的原理以及与 ReentrantLock 的区别。(360)(8).Synchronized 在 JDK1.8 之后做了哪些优化 (京东)(9).Synchronized static 与非 static 锁的区别和范围(小米)(10).volatile 关键字干了什么?(什么叫指令重排) (字节跳动)(11).volatile?能否保证线程安全?在 DCL 上的作用是什么?(12).volatile 和 synchronize 有什么区别?(B 站 小米 京东)(13).两个线程用不同的对象,怎么样?(字节跳动)(14).什么是守护线程?你是如何退出一个线程的?(15).sleep?、wait、yield?的区别,wait?的线程如何唤醒它?(东方头条、字节跳动)(16).sleep 是可中断的么?(小米)(17).实现非阻塞式生产者消费者(字节跳动)(18).如何开启一个线程,开启大量线程会有什么问题,如何优化?(美团)(19).线程生命周期。(20).ThreadLocal 是什么?(21).AyncTask 的原理。(22).AsyncTask 中的任务是串行的还是并行的?(23).线程池管理线程原理。(24).线程池的相关参数,有哪些类型的线程池,线程池任务如何调度,任务队列只是先进先出的队列吗,任务有优先级怎么办,知道优先级反转吗? (美团)(25).有三个线程 T1,T2,T3,怎么确保它们按顺序执行?(26).Android 中操作多线程的方式有哪些?(27).怎样获取当前线程是否是主线程 (字节跳动)(28).HandlerThread 是什么?(29).线程间如何通信?(30).RxJava 线程切换原理,RxJava1 和 RxJava2 的区别有哪些?
**3.4 网络
编程**(1).描述 TCP 三次握手与四次挥手的过程与意义。a.TCP 的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?b.三次握手为什么不是两次一次 五次六次(美团)(2).TCP 与 UDP 的区别是什么?(腾讯)(3).Http 与 Https 的关系是什么?(4).SSL 握手的过程。(5).Http 的 post 与 get 请求的区别是什么?(6).输入一个 URL 到浏览器发生了什么?(美团)
四、Android 体系
(1).?Acitvity 的生命周期是什么样的?
a.?Acitvity 的生命周期,如何摧毁一个 Activity? (美团)
(2).?Activity 的 4 大启动模式,与开发中需要注意的问题,如 onNewIntent()?的调用;
a.?Activity 的启动模式,区别 (美团)
b.?singleInstance 如果不指定栈名,是怎么分配的?(字节跳动)
(3).?Intent 显示跳转与隐式跳转,如何使用?(美团)
(4).?Activity A 跳转 B,B 跳转 C,A 不能直接跳转到 C,A 如何传递消息给 C?(美团)
(5).?Activity 如何保存状态的?
(6).?请描诉 Activity 的启动流程,从点击图标开始。(B 站)
a.?APP 是怎么启动的?
b.?启动一个 Activity 的流程分析
(7).?Service 的生命周期是什么样的?
a.?Service 两种生命周期以及区别
(8).?你会在什么情况下使用 Service?
(9).?startServer 和 bindServier 的区别?(美团)
(10).?Service 和 Thread 的区别?
(11).?IntentService 与 Service 的区别?
(12).?ContentProvider 如何自定义与使用场景是什么?
(13).?BroadcastReciver 的静态注册与动态注册的区别?
(14).?广播的分类与工作原理
(15).?可以再 onReceive 中开启线程么,会有什么问题?
(16).?什么是有序广播?
(17).?Application、Activity、Service 中 context 的区别?能否启动一个 activity、dialog?
(18).?Fragment 的生命周期? ?(美团)
(19).?Fragment 的构造函数为啥不让传参?(B 站)
(20).?Fragment add 与 replace 的区别,分别对 Fragment 的生命周期影响(美团)
五、View System
(1).View 绘制流程与自定义 View 注意点。(东方头条、美团)Android 中的每一个 UI 控件都是集成自 View,然后这些 View 都具有相同的绘制流程,必须经过 measure,layout 和 draw.view 的绘制流程是在 Window 添加过程中,ViewRootImpl 类的 setView 方法开始的(2).在 onResume 中可以测量宽高么(3).事件分发机制是什么过程?(东方头条)(4).事件冲突怎么解决?(东方头条)(5).View 分发反向制约的方法?(字节跳动)(6).自定义 Behavior,NestScroll,NestChild。(东方头条)(7).View.inflater 过程与异步 inflater(东方头条)(8).inflater 为什么比自定义 View 慢?(东方头条)(9).onTouchListener onTouchEvent onClick 的执行顺序。(58 京东)(10).怎么拦截事件 onTouchEvent 如果返回 false onClick 还会执行么?(58 京东)(11).事件的分发机制,责任链模式的优缺点 (美团)(12).动画的分类以及区别(车和家)(13).属性动画与普通的动画有什么区别?(车和家)(14).插值器 估值器的区别(车和家)(15).RecyclerView 与 ListView 的对比,缓存策略,优缺点。(美团)(16).WebView 如何做资源缓存?(字节跳动)(17).WebView 和 JS 交互的几种方式与拦截方法。(字节跳动)(18).自定义 view 与 viewgroup 的区别(19).View 的绘制原理(20).View 中 onTouch,onTouchEvent 和 onClick 的执行顺序(21).View 的滑动方式(22).invalidate() 和 postInvalicate() 区别(23).View 的绘制流程是从 Activity 的哪个生命周期方法开始执行的(24).Activity,Window,View 三者的联系和区别(25).如何实现 Activity 窗口快速变暗(26).ListView 卡顿的原因以及优化策略(27).ViewHolder 为什么要被声明成静态内部类(28).Android 中的动画有哪些? 动画占用大量内存,如何优化(29).自定义 View 执行 invalidate()方法,为什么有时候不会回调 onDraw()(30).DecorView, ViewRootImpl,View 之间的关系,ViewGroup.add()会多添加一个 ViewrootImpl 吗(31).如何通过 WindowManager 添加 Window(代码实现)?(32).为什么 Dialog 不能用 Application 的 Context?(33).WindowMangerService 中 token 到底是什么?有什么区别(34).RecyclerView 是什么?如何使用?如何返回不一样的 Item(35).RecyclerView 的回收复用机制(36).如何给 ListView & RecyclerView 加上拉刷新 & 下拉加载更多机制(37).如何对 ListView & RecycleView 进行局部刷新的?(38).ScrollView 下嵌套一个 RecycleView 通常会出现什么问题?(39).一个 ListView 或者一个 RecyclerView 在显示新闻数据的时候,出现图片错位,可能的原因有哪些 & 如何解决?(40_.Requestlayout,onlayout,onDraw,DrawChild 区别与联系(41).如何优化自定义 View(42).Android 属性动画实现原理,补间动画实现原理
六、Android FrameWork
1.Android 中多进程通信的方式有哪些?a.进程通信你用过哪些?原理是什么?(字节跳动、小米)2.描述下 Binder 机制原理?(东方头条)3.Binder 线程池的工作过程是什么样?(东方头条)4.Handler 怎么进行线程通信,原理是什么?(东方头条)5.Handler 如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)6.handler.post(Runnable) runnable 是如何执行的?(字节跳动、小米)7.handler 的 Callback 和 handlemessage 都存在,但 callback 返回 true handleMessage 还会执行么?(字节跳动、小米)8.Handler 的 sendMessage 和 postDelay 的区别?(字节跳动)9.IdleHandler 是什么?怎么使用,能解决什么问题?10.为什么 Looper.loop 不阻塞主线程?a.Looper 无限循环为啥没有 ANR(B 站)11.Looper 如何在子线程中创建?(字节跳动、小米)12.Looper、handler、线程间的关系。例如一个线程可以有几个 Looper 可以对应几个 Handler?(字节跳动、小米)13.如何更新 UI,为什么子线程不能更新 UI?(美团)14.ThreadLocal 的原理,以及在 Looper 是如何应用的?(字节跳动、小米)15.Android 有哪些存储数据的方式?16.SharedPreference 原理,commit 与 apply 的区别是什么?使用时需要有哪些注意?17.如何判断一个 APP 在前台还是后台?18.如何做应用保活?19.一张图片 100x100 在内存中的大小?(字节跳动)20.?Intent 的原理,作用,可以传递哪些类型的参数?21.如果需要在 Activity 间传递大量的数据怎么办?22.打开多个页面,如何实现一键退出?23.LiveData 的生命周期如何监听的?(B 站)
七、性能优化专题
1.App 稳定性优化 2.App 启动速度优化 3.3、App 内存优化 4、App 绘制优化 5.App 瘦身 6.网络优化 7.App 电量优化 8.安卓的安全优化 9.为什么 WebView 加载会慢呢?10.如何优化自定义 View11.FC(Force Close)什么时候会出现?12.Java 多线程引发的性能问题,怎么解决?13.TraceView 的实现原理,分析数据误差来源。14.是否使用过 SysTrace,原理的了解?15.mmap + native 日志优化?
八、三方源码理解
1.Glide :加载、缓存、LRU 算法 (如何自己设计一个大图加载框架) (LRUCache 原理)2.EventBus3.LeakCanary4.ARouter5.插件化(不同插件化机制原理与流派,优缺点。局限性)6.热修复 7.RXJava (RxJava 的线程切换原理)8.Retrofit (Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的)9.OkHttp
评论