Android大厂面试题整理

1、小红书Android面

Java篇

  • 静态变量和实例变量的区别
  • “==” & equals()
  • 浅拷贝 & 深拷贝
  • HashMap , 扩容机制
  • 多个线程如果共享多个资源,需要怎么保证安全
  • volatile,CAS/ABA

Android篇

  • 事件的分发机制
  • Handler原理
  • TCP UDP
  • Kotlin和Java的区别
  • 启动优化
  • 内存优化
  • 多进程通信

2、快手 Android

  • Android/ 布局优化
  • Activity启动模式
  • RecyclerView和ListView区别
  • Handler机制,loop方法为何不会造成ANR
  • View绘制流程
  • SingleTop和standard启动模式下,生命周期回调有何不同
  • onStart和onResume区别
  • Java/ 面向对象三大特性
  • Array和Linked区别
  • HashMap底层
  • 进程间通信方式
  • equals和==区别
  • 线程间加锁的方式
  • 知道啥设计模式
  • synchronized的不同使用
  • 异常
  • 线程池
  • 创建线程的方式
  • OS/ 死锁
  • 网络/ tcp和udp的区别

3、爱奇艺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的整体流程
  • Native层Crash是如何捕获到的?
  • Java层Crash是如何捕获到的?
  • 如何做到发生异常时不会杀死APP?在
    UncaughtExceptionHandler.unCatchException方法调用Looper进行死循环可以
  • 讲一下Handler机制
  • Looper的定时器是用如何实现的?
  • APK包里有什么?
  • APP在运行时是通过什么来获取到layout文件的?
  • 讲一下surfaceview跟textview
  • Activity A 启动 Activity B 时,他们在同一个栈的情况下生命周期以及执行顺序是怎么样的?
  • Destroy()方法是什么时候调用的?

Java

  • 有什么线程同步的机制?
  • volatile关键字讲一下。
  • volatile如何实现可见性?
  • synchronize如何实现可见性?
  • volatile防止指令重排代码级别如何实现?

操作系统

  • 讲一讲操作系统内核态跟系统态的了解。
  • 操作系统内核是什么?
  • 操作系统内核本质上就是操作系统代码的常驻机构。
  • 操作系统内核就是管理所有代码和数据结构的集合。
  • 操作系统内核是软件和硬件之间的媒介。
  • 为什么操作系统要有内核态、系统态的存在?
  • Linux有什么信号?
  • sigill信号在什么情况下会触发?

5、抖音社交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方法执行之前发生了什么
  • System.out.println(“a”)将字符输出到屏幕发生了什么
  • 双击QQ发生了什么
  • 浏览器输入url发生了什么
  • 根据前序遍历和中序遍历输出后序遍历
  • 如果排期只有一周的任务,但是以我的能力需要两周才能完成,这个时候你会怎么办。
  • k个一组反转链表

6、抖音电商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多路复用
  • 数据库
  • 算法 汉字表示的数字转成阿拉伯表示。

7、小米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是干嘛的?

8、美团移动端一面

  • jvm内存模型
  • new 对象的过程
  • 类加载过程
  • ClassLoader源码
  • final关键字
  • 匿名内部类
  • 讲下垃圾回收算法
  • LinkedList && ArrayList
  • hashMap
  • 常用注解,spring中的注解
  • 锁,synchronized底层原理
  • https && http
  • 浏览器输入地址后的过程
  • 状态码 303 304
  • 你知道的设计模式
  • 单例模式 说了双重校验锁,静态内部类 ,不同场景下如何选择
  • 双重校验锁为什么要两次判空
  • volatile,指令重排
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crazy程序猿2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值