小红书Android一面

Java篇
- 
静态变量和实例变量的区别
 - 
静态变量有static关键字修饰
 - 
静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用,也就是说,你创建了多个对象,他们共用了一个静态变量,而实例对象是属于自己的独有的,不会被共享!(可以Class.var使用),位于方法区
 - 
实例变量必须创建对象后,才可以通过这个对象来使用。即new Class().var,位于堆区
 - 
“==” & equals()
 - 
浅拷贝 & 深拷贝
 - 
HashMap , 扩容机制
 - 
多个线程如果共享多个资源,需要怎么保证安全
 - 
volatile,CAS/ABA
 
Android篇
- 
事件的分发机制
 - 
Handler原理
 - 
TCP UDP
 - 
Kotlin和Java的区别
 
快手 Android

一面:
- 
一个平面上n个点,找出k条线穿过max点数
 - 
100位面试者,每人要四轮面试,怎么分配面试官
 
二面:
- 
手撕:最长单调区间
 - 
Android/ 布局优化
 - 
Activity启动模式
 - 
RecyclerView和ListView区别
 - 
Handler机制,loop方法为何不会造成ANR
 - 
View绘制流程
 - 
SingleTop和standard启动模式下,生命周期回调有何不同
 - 
onStart和onResume区别
 - 
Java/ 面向对象三大特性
 - 
Array和Linked区别
 - 
HashMap底层
 - 
进程间通信方式
 - 
equals和==区别
 - 
线程间加锁的方式
 - 
知道啥设计模式
 - 
synchronized的不同使用
 - 
异常
 - 
线程池
 - 
创建线程的方式
 - 
OS/ 死锁
 - 
网络/ tcp和udp的区别
 
爱奇艺Android工程师

一面:
- 
介绍项目
 - 
Android布局嵌套深有什么问题
 - 
kotlin协程
 - 
HashMap原理
 - 
算法:手写快排
 
二面:
- 
Activity启动模式
 - 
Activity A → B的生命周期在这四种启动模式下的状态
 - 
广播类型
 - 
有序广播如何实现的按顺序收到广播
 - 
持久化存储方式
 - 
SharedPreferences的格式
 - 
xml解析方式
 - 
json与xml的区别,json为什么比xml更好
 - 
Android view绘制流程
 - 
surfaceView
 - 
sp, dp, px的区别
 - 
机型大小适配
 - 
适配语言
 - 
ANR 什么时候出现,如何排查
 - 
Android动画
 - 
startService与bindService的区别
 - 
Service保活方式
 - 
java泛型,<? extends T>能否add元素
 - 
重写equals方法需要重写hashCode方法吗
 - 
ThreadLocal
 - 
wait,sleep,yield,join的区别
 - 
算法1:字符串全排列
 - 
算法2:删除链表中倒数第n个节点
 
4. 微信视频号安卓工程师

Android:
- 
讲一下Android发生Crash的整体流程。Android在遇到非可检异常时就会触发该线程的 unCatchExcepttionHandler中的unCatchException()方法,最终在该方法的 process.kill()方法中杀死该进程,appCrash完成。
 - 
Native层Crash是如何捕获到的?Android NativeCrash发生时会向该进程发出错误的不可处理信号,Linux系统收到该信号后无法处理便会杀死进程,发生Crash。Android当中捕获的方法主要是使用了Linux系统下的核心转储机制,在发生Crash前系统会记录下当前的上下文信息,形成tombstone文件,存储起来,再杀死线程,这个tombstone文件就是我们要分析的对象。
 - 
Java层Crash是如何捕获到的?JavaCrash的捕获有几个关键部分
 - 
RuntimeInit类中的LoggingHandler类,用于打印日志时使用
 - 
RuntimeInit类中的KillApplicationHandler类,是一个系统默认的 UncaughtExceptionHandler,用于发生JavaCrash时kill掉进程
 - 
RuntimeInit类中的commonInit方法,其内部就是初始化了所有线程的set UncaughtExceptionHandler()。因此在发生非可检异常时,就会调用该线程的UncaughtExceptionHandler.unCatchException方法,在该方法内部进行捕获。
 - 
如何做到发生异常时不会杀死APP?在 UncaughtExceptionHandler.unCatchException方法调用Looper进行死循环可以。
 - 
讲一下Handler机制
 - 
Looper的定时器是用如何实现的?通过nativePollOnce(ptr, nextPollTimeoutMillis);定时睡眠nativeWake(mPtr);进行唤醒
 - 
APK包里有什么?主要有5个部分:
 - 
dex文件:.class文件编译后的产物
 - 
Assets:资源文件,如图片等,主要是通过AssetsManger来进行加载。
 - 
Resource:资源文件,layout等,通过R.xxxxxx.id来进行引用
 - 
Library:so库引用目录
 - 
META-INF:APK 签名有关的信息
 - 
APP在运行时是通过什么来获取到layout文件的?
 - 
讲一下surfaceview跟textview。
 - 
Activity A 启动 Activity B 时,他们在同一个栈的情况下生命周期以及执行顺序是怎么样的?
 - 
Destroy()方法是什么时候调用的?
 - 
调用finish()方法。
 - 
Handler中已经没有要处理的message。 满足这两个条件才会调用。
 
Java:
- 
有什么线程同步的机制?
 - 
volatile关键字讲一下。
 - 
volatile如何实现可见性?
 - 
synchronize如何实现可见性?
 - 
volatile防止指令重排代码级别如何实现?
 
操作系统:
- 
讲一讲操作系统内核态跟系统态的了解。
 - 
操作系统内核是什么?
 - 
操作系统内核本质上就是操作系统代码的常驻机构。
 - 
操作系统内核就是管理所有代码和数据结构的集合。
 - 
操作系统内核是软件和硬件之间的媒介。
 - 
为什么操作系统要有内核态、系统态的存在?
 - 
Linux有什么信号?
 - 
sigill信号在什么情况下会触发?
 
算法题:
- 
给一个数组,每个值表示的是在坐标系中的点下标,找出该数组在组成的最长直线为多少,相同最长长度直线有几条?
 - 
给一段数字,给出其可能组成的所有IP地址。
 
抖音社交Android工程师

一面:
- 
项目
 - 
volitale与synchronized的区别
 - 
手写单例
 - 
匿名内部类如何持有外部类对象
 - 
内存泄漏的概念
 - 
内存泄漏的场景
 - 
内存泄漏检测的工具
 - 
handler原理,sendMessage与sendMessageDelay如何保证Message放入MessageQueue中的顺序
 - 
两个Message相隔5秒,这5秒内线程会一直阻塞吗
 - 
自定义 View如何特殊处理wrap_content,padding的实现
 - 
MVVM和MVP 的区别(引出了一系列问题,不是很了解就直接说不了解比较好)
 - 
LiveData与RxJava的区别
 - 
LiveData生命周期感知如何实现
 - 
介绍RxJava
 - 
https与http的区别,中间人如何修改密钥
 - 
算法:二叉树z字形打印
 
二面:
- 
项目
 - 
final、finally与finalize的区别
 - 
java开启一个线程的方式
 - 
Thread.start()与直接调用run()的区别
 - 
Java默认提供了几种线程池
 - 
thread{ i++ }执行10次结果,如何让i最后等于10
 - 
synchronized与reentrantlock区别
 - 
死锁
 - 
悲观锁乐观锁
 - 
gc垃圾回收
 - 
垃圾标记阶段,Python如何实现的断开循环引用
 - 
Retrofit返回的是什么数据类型
 - 
服务器返回的数据有哪些类型,为什么不能用xml类型返回
 - 
请求数据这个过程发生了什么
 - 
get与post请求的区别,get与post携带数据的区别
 - 
java注解
 - 
kotlin扩展函数原理
 - 
算法:两个链表相加
 
三面:
- main方法执行之前发生了什么
 
public class Main {`    `public static void main(String[] args) {`        `System.out.println(Main.class.getName());``   ``   `    `}``}
- 
System.out.println(“a”)将字符输出到屏幕发生了什么
 - 
双击QQ发生了什么
 - 
浏览器输入url发生了什么
 - 
根据前序遍历和中序遍历输出后序遍历
 - 
如果排期只有一周的任务,但是以我的能力需要两周才能完成,这个时候你会怎么办。
 - 
k个一组反转链表
 
抖音电商Android工程师

一面:
- 
实习学到的架构
 - 
MVVM
 - 
Dagger原理
 - 
livedata原理
 - 
进程和线程
 - 
操作系统IO模型
 - 
进程通信方式
 - 
管道通信原理
 - 
TCP协议如何实现可靠传输
 - 
UDP如何实现可靠传输
 - 
java创建线程
 - 
线程池原理
 - 
线程池拒绝策略
 - 
synchronized与reentrantlock实现方式的区别
 - 
AQS原理
 - 
handler原理
 - 
Retrofit原理
 - 
算法: 二叉树右视图 — 非递归实现
 
二面:
- 
Navigation的优缺点
 - 
如何实现的自定义navigate方法切换fragment,如何让被覆盖的fragment感知到生命周期
 - 
gc如何判断垃圾对象
 - 
成员变量与局部变量的区别,局部变量的值一定是存放在堆中吗()
 - 
jvm类加载的时机
 - 
jvm类加载过程
 - 
双亲委托机制是什么
 - 
双亲委托机制什么时候会被破坏
 - 
内存泄漏是什么
 - 
volatile的作用
 - 
写一个死锁
 - 
算法:判断A是否是B的子树
 
三面:
- 
自己是如何学习Android的
 - 
实习过程中做的需求说一下
 - 
实习过程中的难点说一个
 - 
实习过程中和哪些人接触的比较多
 - 
如何和别人沟通的
 - 
实习的收获
 - 
挑一个项目说一下
 - 
里氏替换原则
 - 
http状态码
 - 
http多路复用
 - 
数据库
 - 
拿了哪些offer
 - 
算法 汉字表示的数字转成阿拉伯表示。
 
小米android开发

- 
http与https的区别。
 - 
Java构造器工作工程。
 - 
Java中的引用类型有哪些。
 - 
http,http1.1,http2.0有啥区别。
 - 
TCP/IP最大容量的意义是什么?
 - 
还有Integer与int类型区别?各自怎么比较大小?
 - 
还有垃圾回收机制还有final的用法
 - 
为什么HashMap在1.8中采用了红黑树?你能说下啥是红黑树吗?啥是平衡二叉树?啥是二叉搜索树?啥是满二叉树?
 - 
Java1.7采用数组加链表与1.8采用红黑树有啥区别?
 - 
HashMap 线程不安全原因是啥?分版本作答
 - 
如果线程安全的话 要用哪个?我说Hashtable。他说HashTable效率太低,怎么安全又效率高?
 - 
对称加密与非对称加密?
 - 
SSL是干嘛的?
 
美团移动端一面

- 
jvm内存模型
 - 
new 对象的过程
 - 
类加载过程
 - 
ClassLoader源码
 - 
final关键字
 - 
匿名内部类
 - 
讲下垃圾回收算法
 - 
LinkedList && ArrayList
 - 
hashMap
 - 
常用注解,spring中的注解
 - 
锁,synchronized底层原理
 - 
https && http
 - 
浏览器输入地址后的过程
 - 
状态码 303 304
 - 
你知道的设计模式
 - 
单例模式 说了双重校验锁,静态内部类 ,不同场景下如何选择
 - 
双重校验锁为什么要两次判空
 - 
volatile,指令重排
 
面试题汇总
2246页《2022最新Android 大厂高频面试题解析大全》(持续更新中~)
内容概要:包括 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈!内容特点:条理清晰,含图像化表示更加易懂。
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。


所有资料全都已打包整理好,需要的朋友可以【点击这里免费获取】,希望对正在准备面试的你有所帮助!
2021版《Android高级开发面试题》2.0


1932页《2022年Android中高级面试题汇总》(持续更新中~)
Android开发面试题的资料一直在持续的更新,根据目前所能收集到的数据进行整理的一系列资料,同事也欢迎广大朋友提供资料,如后续有更新也会继续进行补充。

所有资料全都已打包整理好,需要的朋友可以【点击这里免费获取】,希望对正在准备面试的你有所帮助!
有了这套学习资料,坚持刷题一周,你就会发现自己的知识体系有明显的完善,离大厂Offer的距离更加近。
最后
ok,终于啰嗦完了,不过句句发自肺腑,真心希望能帮助到一些同学。
祝大家都能在心仪的公司,拿着不错的薪水,开心的写bug~


京公网安备 11010502036488号