前言
金三银四已经接近尾声了,朋友,你还在池子里泡着吗?还没有被捞上来吗?
今天给学习Android的朋友分享一些Android常见的面试题,希望能够帮助大家成功拿到offer,毕竟金三银四都要过完了,还没有工作的朋友得焦头烂额了吧?
那就赶紧背一背面试题吧!
目录
第1章 算法和数据结构面试题汇总
1.1 请说一说HashMap,SparseArrary原理,SparseArrary相比HashMap的优点、ConcurrentHashMap如何实现线程安全?
1.2 请说一说HashMap原理,存取过程,为什么用红黑树,红黑树与完全二叉树对比,HashTab、concurrentHashMap,concurrent包里有啥?
1.3 请说一说hashmap put()底层原理,发生冲突时,如何去添加(顺着链表去遍历,挨个比较key值是否一致,如果一致,就覆盖替换,不一致遍历结束后,插入该位置) ?
1.4 请说一说ArrayList 如何保证线程安全,除了加关键字的方式 ?
1.5 请说一说ArrayList、HashMap、LinkedHashMap ?
1.6 请说一说HashMap实现原理,扩容的条件,链表转红黑树的条件是什么 ?
1.7 请说一说二叉树遍历步骤?
1.8采用递归和非递归对二叉树进行遍历?
1.9对称和非对称加密,MD5的原理?
1.10对称加密和分对称加密算法的区别
第2章 Java核心基础面试题汇总
2.1 Java中提供了抽象类还有接口,开发中如何去选择呢?
2.2 重载和重写是什么意思,区别是什么? (京东)
2.3 静态内部类是什么?和非静态内部类的区别是什么?
2.4 Java中在传参数时是将值进行传递,还是传递引用?
2.5 使用equals和==进行比较的区别
2.6 String s = new String(“xxx”);创建了几个String对象?
2.7 finally中的代码一定会执行吗?try里有return,finally还执行么
2.8 Java异常机制中,异常Exception与错误Error区别
2.9 序列Parcelable,Serializable的区别?(阿里)
2.10 为什么Intent传递对象为什么需要序列化?(阿里)
第3章 Java深入泛型与注解面试题汇总
3.1 泛型是什么,泛型擦除呢?
3.2 List能否转为List
3.3 Java的泛型中super 和 extends 有什么区别?
3.4 注解是什么?有哪些使用场景?(滴滴)
第4章 Java并发编程面试题汇总
4.1 假如只有一个cpu,单核,多线程还有用吗 ?
4.2 sychronied修饰普通方法和静态方法的区别?什么是可见性?(小米)
4.3 Synchronized在JDK1.6之后做了哪些优化 (京东)
4.4 CAS无锁编程的原理(字节跳动)
4.5 AQS原理 (小米 京东)
4.6 ReentrantLock的实现原理
4.7 Synchronized的原理以及与ReentrantLock的区别。(360)
4.8 volatile关键字干了什么?(什么叫指令重排) (字节跳动)
4.9 volatile 能否保证线程安全?在DCL上的作用是什么?
4.10 volatile和synchronize有什么区别?(B站 小米 京东)
4.11 死锁的场景和解决方案 腾讯
4.12 锁分哪几类?
4.13 ThreadLocal是什么?
4.14 Java多线程对同一个对象进行操作(字节跳动)
4.15 线程生命周期,线程可以多次调用start吗? 会出现什么问题? 为什么不能多次调用start?
4.16 什么是守护线程?你是如何退出一个线程的?
4.17 sleep 、wait、yield与join的区别,wait 的线程如何唤醒它?(字节跳动)
4.18 sleep是可中断的么?(小米)
4.19 怎么保证线程按顺序执行?如何实现线程排队 ?(金山)
4.20 非阻塞式生产者消费者如何实现(字节跳动)
4.21 线程池管理线程原理
4.22 线程池有几种实现方式,线程池的七大参数有哪些? (美团)
4.23 如何开启一个线程,开启大量线程会有什么问题,如何优化?(美团)
4.24 pthread 了解吗?new 一个线程占用多少内存?(快手)
4.25 HandlerThread是什么?
4.26 AsyncTask的原理
4.27 AsyncTask中的任务是串行的还是并行的?
4.28 Android中操作多线程的方式有哪些?
4.29 Android开发中怎样判断当前线程是否是主线程 (字节跳动)
4.30 线程间如何通信?
第5章 Java虚拟机原理面试题汇总
5.1 描述JVM类加载过程
5.2 请描述new一个对象的流程
5.3 Java对象会不会分配到栈中?
5.4 GC的流程是怎么样的?介绍下GC回收机制与分代回收策略
5.5 Java中对象如何晋升到老年代?
5.6 判断对象是否被回收,有哪些GC算法,虚拟机使用最多的是什么算法?(美团)
5.7 Class会不会回收?用不到的Class怎么回收?(东方头条)
5.8 Java中有几种引用关系,它们的区别是什么?
5.9 描述JVM内存模型
5.10 StackOverFlow与OOM的区别?分别发生在什么时候,JVM栈中存储的是什么,堆存储的是什么?(美团)
5.11 StringBuffer与StringBuilder在进行字符串操作时的效率(字节跳动)
5.12 JVM DVM ART的区别
第6章 Java反射类加载与动态代理面试题汇总
6.1 PathClassLoader与DexClassLoader的区别是什么?
6.2 什么是双亲委托机制,为什么需要双亲委托机制?
6.3 Android中加载类的方法有哪些?有什么区别?
6.4 ClassNotFound的有可能的原因是什么?(阿里)
6.5 odex了解吗?解释型和编译型有什么区别?
6.6 说说反射的应用场景,哪些框架?
6.7 反射为什么慢?(滴滴)
6.8 动态代理是什么?如何实现?
6.9 动态代理的方法怎么初始化的?(字节跳动)
6.10 CGLIB动态代理(字节跳动)
6.11 为什么IO是耗时操作?
第7章 网络编程面试题汇总
7.1 请你描述TCP三次握手与四次挥手的过程与意义
7.2 谈谈你对TCP与UDP的区别是什么的理解(腾讯)
7.3 谈谈你对TCP 流量控制与拥塞控制的理解(oppo)
7.4 谈谈你对Http与Https的关系理解
7.5 SSL握手的过程都经历过什么
7.6 谈谈你对Http的post与get请求区别的理解
7.7 输入一串URL到浏览器都经历过什么? (美团)
7.8 断点续传原理(腾讯)
7.9 如何保证下载文件的完整性(网易)
第8章 Kotlin 核心面试题汇总
8.1 Kotlin内置标准函数let的原理是什么?
8.2 Kotlin语言的run高阶函数的原理是什么?
8.3 Kotlin语言泛型的形变是什么?
8.4 Kotlin协程在工作中有用过吗?
第9章 高级UI面试题汇总
9.1 View的绘制原理
9.2 View绘制流程与自定义View注意点
9.3 自定义view与viewgroup的区别
9.4 View的绘制流程是从Activity的哪个生命周期方法开始执行的
9.5 Activity,Window,View三者的联系和区别
9.6 在onResume中是否可以测量宽高
9.7 如何更新UI,为什么子线程不能更新UI?
9.8 DecorView, ViewRootImpl,View之间的关系
9.9 自定义View执行invalidate()方法,为什么有时候不会回调onDraw()
9.10 invalidate() 和 postInvalicate() 区别
9.11 Requestlayout,onlayout,onDraw,DrawChild区别与联系
9.12 View的滑动方式
9.13 事件分发机制是什么过程?
9.14 事件冲突怎么解决?
9.15 View分发反向制约的方法?
9.16 View中onTouch,onTouchEvent和onClick的执行顺序
9.17 怎么拦截事件?如果 onTouchEvent返回false, onClick还会执行么?
9.18 事件的分发机制,责任链模式的优缺点
9.19 ScrollView下嵌套一个RecycleView通常会出现什么问题
9.20 View.inflater过程与异步inflater
…
第10章 Framework内核解析面试题汇总
10.1 Android中多进程通信的方式有哪些?
10.2 描述下Binder机制原理?(东方头条)
10.3 为什么 Android 要采用 Binder 作为 IPC 机制?
10.4 Binder线程池的工作过程是什么样?(东方头条)
10.5 AIDL 的全称是什么?如何工作?能处理哪些类型的数据?
10.6 Android中Pid&Uid的区别和联系
10.7 Handler怎么进行线程通信,原理是什么?(东方头条)
10.8 ThreadLocal的原理,以及在Looper是如何应用的?(字节跳动、小米)
10.9 Handler如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)
10.10 handler.post(Runnable) runnable是如何执行的?(字节跳动、小米)
10.11 Handler的Callback存在,但返回true,handleMessage是否会执行?(字节跳动、小米)
10.12 Handler的sendMessage和postDelay的区别?(字节跳动)
10.13 Looper.loop会不会阻塞主线程?
10.14 Looper无限循环的阻塞为啥没有ANR
10.15 Looper如何在子线程中创建?(字节跳动、小米)
10.16 Looper、handler、线程间的关系。例如一个线程可以有几个Looper可以对应几个Handler?
10.17 子线程发消息到主线程进行更新 UI, 除了 handler 和 AsyncTask, 还有什么
10.18 IdleHandler是什么?怎么使用,能解决什么问题?
10.19 Android 系统启动流程
10.20 Zygote进程的启动流程
…
第11章 Android组件内核面试题汇总
11.1 Acitvity的生命周期,如何摧毁一个Activity? (美团)
11.2 Activity的4大启动模式,与开发中需要注意的问题,如onNewIntent() 的调用
11.3 Intent显示跳转与隐式跳转,如何使用?(美团)
11.4 Activity A跳转B,B跳转C,A不能直接跳转到C,A如何传递消息给C?(美团)
11.5 Activity如何保存状态的?
11.6 请描诉Activity的启动流程,从点击图标开始。(B站)
11.7 Service的生命周期是什么样的?
11.8 你会在什么情况下使用Service?
11.9 Service和Thread的区别?
11.10 IntentService与Service的区别?
11.11 ContentProvider如何自定义与使用场景是什么?
11.12 BroadcastReciver的静态注册与动态注册的区别?
11.13 广播的分类与工作原理
11.14 什么是有序广播?
11.15 介绍一下Android中的Context?
11.16 Fragment的生命周期? (美团)
11.17 Fragment的构造函数为啥不让传参?(B站)
11.18 Fragment add与replace的区别,分别对Fragment的生命周期影响(美团)
11.19 如何判断一个 APP 在前台还是后台?
11.20 说Activity、Intent、Service 是什么关系…
第12章 程序性能优化与数据持久化面试题汇总
12.1 一张图片100x100在内存中的大小?(字节跳动)
12.2 内存优化,内存抖动和内存泄漏。(东方头条)
12.3 什么时候会发生内存泄漏?举几个例子(美团)
12.4 Bitmap压缩,质量100%与90%的区别?(东方头条)
12.5 TraceView的使用,查找CPU占用(东方头条)
12.6 内存泄漏查找 (酷我音乐)
12.7 Android四大组件(以及Application)的onCreate/onReceiver方法中Thread.sleep(),会产生几个ANR?(美团)
12.8 当前项目中是如何进行性能优化分析的
12.9 冷启动、热启动的概念(酷我音乐)
12.10 优化View层次过深问题,选择哪个布局比较好?(美团)
12.11 为何要用 ContentProvider?它与 sql 的实现上有什么区别?
12.12 app对内存是如何限制的? 应该如何合理使用内存?
12.13 为什么冷启动会有白屏黑屏问题?
12.14 如何对apk进行瘦身
12.15 说下冷启动与热启动是什么, 区别, 如何优化, 使用场景等
12.16 LeakCanray 2.0为啥不需要在application里调install?(B站)
12.17 如何避免大图片 OOM
12.18 怎样检测函数执行是否卡顿 (字节跳动)
12.19 ANR 线上问题如何监控(滴滴)
12.20 Android 有哪些存储数据的方式?
第13章 开源框架面试题汇总
13.1 组件化在项目中的意义(阿里)
13.2 组件化中的ARouter原理(阿里)
13.3 谈一下你对APT技术的理解(美团)
13.4 谈谈Glide框架的缓存机制设计(B站)
13.5 谈谈你对Glide生命周期的理解(腾讯)
13.6 项目中使用Glide框架出现内存溢出,应该是什么原因?(美团)
13.7 谈谈OkHttp框架的原理(B站)
13.8 Android如何发起网络请求,你有用过相关框架码?OkHttp框架解决了你什么问题?(美团)
13.9 RxJava框架线程切换的原理,RxJava1与RxJava2有哪些区别?
13.10 谈谈LiveData的生命周期是怎么监听的? (B站)
写在最后
2024全套详解Android面试题已经整理好了,附有答案和解析,需要的朋友自行领取!祝大家成功上岸!