INTERVIEW experience ONLINE
https://github.com/Moosphan/Android-Daily-Interview/
https://lrh1993.gitbooks.io/android_interview_guide/content/
https://www.nowcoder.com/discuss/396383934924292096
https://www.nowcoder.com/discuss/456922214454091776
https://www.nowcoder.com/discuss/462666906584043520
我是21年入坑,一年晋升一次,第一次靠业务配合技术,第二次靠数据监控搭建配合数据挖掘找业务优化点,下一步打算挖掘端智能配合动态化加上数据挖掘来继续晋升,另外我是iOS和Android都做,希望对你有帮助 … 展开
作者:吐泡泡的咸鱼
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
怎么在短时间打牢基础?
你就搜搜大多数的面试题经常问那些问题,提起多看几遍,不至于问到的时候,根本不知道说什么,至少你能说出个大概也比什么都说不出来好。当然,这不是教你诈,是你找到工作后,要赶紧把自己薄弱的地方补上来。
我11月顺利拿到了OPPO公司Android工程师offer,我有三年多的工作经验,这次面试历经两轮,终于是拿到了offer,一面是以项目来展开的,简历上的东西一定要熟悉,面试官就是通过简历去问,然后会针对项目中遇到的问题,让你现场给你解决方案。 二面是由部门的主管负责面试,主要也是询问工作上的一些事,大头当然还是项目上的经历,遇到的难点和解决办法,还针对团队合作问题上提了一些问题,类似于结构化面试中的人际关系题,考察的应该是沟通协调能力了吧。
作者:juncos
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
OSI七层网络模型
UDP和TCP的区别,UDP的使用例子,TCP怎么保证连接可靠
HTTP1,HTTP2,HTTP3的协议
TCP三次握手四次挥手,如果中间信息丢失了怎么办,设置超时时间那这个时间具体应该设置多少
HTTPS的加密过程,为什么第一次发送公钥不需要加密
HTTP状态码分别代表什么意思
数据库TABLE和VIEW的区别(我回答不太懂数据库后面就没问了)
死锁产生条件
FragmentManager的Add和Replace区别
Activity因为内存不足销毁了如何恢复数据
点击锁屏后Activity会执行onPause和onStop吗
Recyclerview的复用机制
作者:牛客784018930号
\3. 介绍一下七层模型,每一层的作用
\4. 生产者消费者模型,应用(线程池)
\5. 用过线程池吗,线程池如何实现
\6. 进程间通信方式
\7. http请求的过程
\8. 什么是多态,应用场景
\9. 了解过设计模式吗?单例模式,应用场景
\10. epoll的优势
\11. 手撕简单题
\12. 项目中遇到什么困难,应用场景
作者:已run的小学生很爱看电影
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
\1. kotlin的let,apply,also有什么区别。
\2. kotlin的inline,nonline关键字有什么作用。
\3. 异步调用有几种方式,从简单到复杂。
\4. 如何全局管理异步任务(不知道)
\5. mvvm与mvp的区别。
\6. 逆变与协变。
\7. content provider的作用。
\8. sqlite的底层原理(不了解)
\9. 索引的原理及实现。
\10. 跨端框架的核心实现要点(开放题)
\11. 如何定位ANR和崩溃问题的原因。
作者:摸不着头发
·对面向对象的理解
·ArrayList扩容等
·垃圾回收
·网络七层协议
·TCP三次握手 四次挥手
·https加密的算法
快手客户端一面(40min)
自我介绍
1.ArrayList的扩容机制?
2.底层实现?深拷贝还是浅拷贝?
3.单例模式
4.懒汉线程安全?
5.多线程下如何保证类的线程安全?
6.CopyOnWriteArrayList底层实现?如何实现线程安全?
7.HTTP支持长链接吗?什么时候开始支持的?
8.长连接什么时候会释放?
9.服务端通过timeout还是探测决定是否关闭长连接?
10.TCP有没有这种关闭连接的方式?
11.算法题:给你一个数组,和一个数字m,问这个数组中存不存在一个子序列(不一定连续),使得它的和为m,输出true或false
12.反问
作者:Namcoo
影石:客户端iOS开发,一面面经
\4. 八股:计网和数据结构与算法
4.1 你知道哪些常见的数据结构?
4.2 链表有哪些类型?
4.3 什么是哈希冲突?
4.4 说一下排序算法中冒泡排序如何实现?
4.5 快速排序如何实现?
4.6 堆排序知道吗?如何实现?(麻了已经)
4.7 TCP协议与UDP协议的区别
4.8 TCP三次握手和四次挥手的过程
4.9 TCP滑动窗口、拥塞控制如何实现?
4.10 HTTP1.0、HTTP1.1、HTTP2.0知道吗?他们相比之前的版本有哪些优化?
作者:勤奋的鼠鼠
2023.5.9 美团 移动端 一面(1小时)
了解网络字节序吗
你对移动端客户端开发感兴趣吗
介绍一下中介者模式吧
除了中介者模式你还了解哪些设计模式
面向对象的原则有哪些
C语言源文件编译过程
知道编译器前端和后端吗
死锁是什么,怎么避免死锁
关于前端你学过什么,了解前端的框架吗
你平时都通过什么方式学习
两个算法(判断链表是否有环、链表重排/链表折叠)
反问
作者:genius1008
快手客户端2面
项目
- compose和view写法的优缺点
- 使用recycleview碰到的问题
- glide的缓存加载机制
- compose实现音乐播放栏固定
- 安卓glide中与生命周期的关系
java
- 双亲委派(写一个路径名字一样的String,new String()会创建自己写的还是系统的)
- 受检异常和非受检异常
- 抽象类和接口的区别
koltin
- 作用域函数(应用场景)
- 高阶函数(概念)
- kotlin和java一块编译碰到啥问题
- ::funName 双冒号的写法的理解
- 泛型 out in 与Java泛型中的联系和区别
安卓
- activity a -> b 的生命周期 (哪个阶段界面不可见)
- fragment的构造函数初始化,navigate的跳转。两种方式理解
- 可以异步加载fragment吗,答案:可以。
- serialVersionUID是否了解
算法
- 反转字符串
- 上楼梯动态规划,如果第M阶梯是不能踩的
作者:偷偷look痛苦面具
安卓开发货拉拉日常实习(寄)
\1. 先问项目(提到了滑动冲突怎么解决的)
\2. 安卓有哪几种页面通讯的方式
\3. 用过什么开源框架(消息总线[#%¥#]()?)
\4. jetpack全家桶用过哪些
\5. livedata有什么能力
\6. java里弱引用和强引用分别用在什么场景
\7. 用到什么布局(为什么不用constraintLayout)
\8. glide和OkHttp的任务调度是怎么实现的(比如同时发起很多请求)
\9. handlerMessage什么时候会发生内存泄漏(要怎么预防)
\10. handler和Activity两者是怎么相互引用的?(这里没听懂,面试官语速太快太模糊了)
\11. handle和Activity在链表中的顺序是怎么样的?
\12. http协议有哪些跟缓存相关的属性?
\13. kotlin比java新的地方在哪
\14. 知道哪些高阶函数
作者:JojoYo
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
东方财富校招安卓二面50min(已过)
2.为什么选择东财
3.介绍项目,具体的一些功能会问怎么实现的
4.问第三方库如okhttp、picasso等底层原理如缓存机制等(一个也没答上来,literally
5.穿插问面向对象、安卓、java、计网的常规知识,网上面经可以概括者不加赘述
6.深入问handler(比如messagequeue为空时候,looper在做什么)
7.问设计模式,要求挑一个深入分析,问你对这些模式的理解
8.安卓怎么判断activity发生内存泄漏(其实我没答上来,面试官问有简易方法么?我说as内置的资源监视工具里面看是否在使用的时候内存占用不停增加,面试官说嗯应该可以。。
9.threadlocal,动态代理,这俩我说没用过不了解
10.recyclerview的缓存机制(知道但不懂,我说做项目用list view出现了重复刷显示的问题,所以换了recyclerview解决
11.图片有哪些格式,他们的区别?(报菜名,并且一问三不知
过于基础的不贴了,这位面试官感觉技术特扎实,但是他对技术的考量应该有一定阈值,大部分是在给你施加压力考察在压力中应变的能力。比如问了很多源码我一概不知,他这时候说那你对什么比较了解?我把handler整套流程憋出来了,并且说我是在xx项目遇到xx问题所以深入了解了handler
作者:歇息必取
东方财富校招Android一面(春招)
\2. 多实现接口,如果接口里面有入参出参一样的同名方法,会实现几个
\3. 说一下final,static
\4. static方法能调用非静态吗,非静态能调用static吗
\5. final的arraylist,往里面add东西会咋样(摸黑了,完全不确定,当时瞎蒙了个答案
\6. 面试官给了一段代码,问运行结果:代码是new了个空arraylist(string,integer)问这时候int i=arraylist.get(“key”)然后print会输出啥
\7. 如果是Integer i呢,会是啥(好家伙两个全答错)
\8. 安卓问得不多且比较基础,忘了
\9. 倒水问题,3l和5l桶子要4l水怎么搞
\10. 算法思路,链表右移动k位和数组右移动k位怎么搞
\11. 左右括号匹配,最少情况要加多少次括号,写在纸上拍照
三、大概说说项目,反问
作者:歇息必取
百度安卓春招二面凉经
java内存分配 方法区:方法没有运行的时候,实在这里存储的
栈区:方法如果进行运行,在没有进行新生成数据的时候,代码就是在栈中存储。
堆区:new出来的东西会在这块内存中开辟空间并产生地址
GC算法:
app启动流程
recyclerView
kotlin基础
安卓内存泄露
Retrofit 图片缓存
树、图的存储结构
http可以用UDP吗
线程进程区别
作者:想去广西嗦粉的小黄鸭在学习
B站安卓客户端实习面经
## 一面
1.自我介绍
2.项目
3.介绍一下多线程 问题很宽泛讲了一大堆
4.输入bilibili.com之后发生了什么
5.扩展:输入完了直接弹出一个广告可能是哪个环节出了问题,怎么解决
我猜是DNS解析出了问题,不知道怎么解决 面完之后想到清浏览器缓存、加强前端校验之类的
6.http协议1.0 2.0xx 版本之间的区别 有了解吗 (没了解)
7.TCP和UDP的区别
8.TCP为什么是可靠的
9.死锁了解吗 (没复习 但扯一点)
10.深拷贝、浅拷贝
11.你学习过安卓的哪些东西
12.介绍一下view渲染流程
13.写题 括号匹配
面完10分钟 hr约第二天下午二面
作者:FANIII__
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
火币
Global部门
一面
1.HashMap原理
2.创建HashMap要放入1000个不同hashCode的键值对,初始最大值多少
3.ArrayList的remove方法原理
4.对线程池的理解
5.使用线程池的考虑因素
6.线程池核心线程数数量的设计考虑因素
7.CPU密集型和IO密集型
8.DCL单例模式原理
9.Fragment的replace,hide,add,show的区别
10.多渠道打包
11.APK瘦身
12.Kotlin相比较java的好处
13.Retrofit中的Call对象如何转换成okhttp的call对象(这个题目是埋坑的)
14.Retrofit设计模式
15.项目中的组件化架构方案
16.对Arouter的理解
17.在Google Play上架过吗
18.对国外机型的适配方案
19.对低端机型和弱网的适配方案
20.线上问题排查方案
21.Room有什么问题
22.EditText的监控方法
二面
1.Android art 和 dalvik的区别
2.协程的理解
3.协程相对于线程的区别
4.内存优化
5.内存检测工具
6.优化方面可以做的内容
7.启动优化
8.单例能否继承(对象初始化过程)
9.APK体积优化
10.加载so有几种方法
11.okhttp责任链设计模式
12.Activity的onDestory回调时机
13.Activity调用finish后是否立即onDestory
14.Activity A 启动 Activity B,Activity A 的onDestory和Activity B 的onCreate执行顺序
15.Activity A 启动 Activity B,然后调用finish,Activity A 的onDestory和Activity B 的onCreate执行顺序
16.Activity的singleTop和singleTask的区别
17.Handler工作机制
18.Looper如何识别Handler
19.K线图的绘制和优化(非金融相关不用考虑这个问题)
钱包部门
1.Kotlin 闭包
2.Kotlin 静态方法
3.链表逆序
4.Handler的postDelay原理
5.P2P网络
6.okhttp发送请求的拦截方式
7.okhttp的拦截器设计模式
8.线上ANR监控策略
9.线上卡顿监控策略
10.区块链钱包的签名和交易原理
作者:天大地大我最大
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
View绘制前的流程
算法题
给出二叉树的前序中序,输出后序
先来了一道算法题:找出最左边的次数最多的字母。
算法题:删除排序链表中的重复元素(力扣82)
快排和反转链表
判断一个树是不是平衡二叉树,
算法:旋转链表 LC61
题意是这样子的:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。
输入:head=[1,2,3] k = 1
输出:[3,1,2]
22.算法题:二分法查找目标数
爱奇艺
- Android消息机制
- Android View绘制流程,当一个TextView的实例调用setText()方法后执行了什么
- Android dalvik虚拟机和Art虚拟机的优化升级点
- Android屏幕渲染机制
- 热修复的原理,你都了解过哪几种热修复框架
- OkHttp的原理
- Android 线程池的实现原理
- JavaGC机制
- HashMap的实现机制,怎么样HashMap线程安全
- 可重入锁的实现,公平锁非公平锁都是什么定义?
- 都用过那些常用的数据结构,说说对树的了解?
- Activity启动模式,allowReparent的特点和栈亲和性
- WebView优化
- 有没有Jni使用经验
- 有使用过RxJava吗?
- 说说你对设计模式的理解,开发过程中主要用到了哪些设计模式?
- 快排写一下,动态规划了解吗?
小米
- 冒泡排序的链表实现
- 写个快排
- 写个单例模式 -Activity启动模式
- 异常生命周期
- 从点击应用图标到进入应用,Android系统都做了哪些工作,期间涉及到的进程切换有哪些?
- 说说你了解的IPC方法
- 说说Binder的大体实现
- 怎么控制另外一个进程的View显示
- 广播中怎么进行网络请求
- 说说Android中线程池的实现
- HashMap如果Hash冲突了怎么解决?
- 双线程通过线程同步的方式打印12121212…….
腾讯
- HTTPS是怎么实现的?
- Android事件传递流程和OnTouchListener的关系
- Activity启动模式
- Android线程池实现原理
- 双指缩放拖动大图
- 客户端网络安全实现
- Webview优化
- Android应用保活
- RemoteViews实现和使用场景
- RecyclerView绘制步骤和复用机制
- Binder的大体设计模式
- Activity遵循什么设计模式
- EventBus源码解析,遵循什么设计模式
- Handler为什么会发生内存泄漏
- Java内存模块分区和GC机制,GC算法有哪些
- Finalize机制
- 强引用 弱引用 软引用 虚引用的区别和使用场景
- LeakCanary的使用和实现原理
- 介绍一下你在开发过程中使用到的设计模式
- 快排
- 对服务器众多错误码的处理(错误码有好几万个)
阿里
- Android消息机制
- Android事件传递流程
- Android View绘制流程
- Activity启动模式
- Android IPC机制
- Android线程池设计原理
- EventBus源码和设计模式
- Android应用保活
- Android UI优化
- Android启动优化
- 快排 堆排 单例
- 进程线程在操作系统中的实现
- HTTPS的组成是什么?
- ClassLoader的双亲委托
- Android中的ClassLoader
- 有过Jni使用经验吗?
- 有过跨平台开发经验吗?
今日头条
- 视频加密
- Android Native Crash
- 视频组成
- 播放器原理
作者:Android小崽
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
哈啰安卓一面面经
问了一个半小时 很多问题没记住 挑几个说一下
1、进程通信方式有哪些
2、线程通信方式有哪些
3、进程线程区别
4、JAVAGC如何判断是否回收以及僵尸线程
5、AOP了解吗
6、为什么安卓用BINDER 有啥优点
7、GC回收算法有哪些
8、http的流程以及和https的区别
9、OSI七层有哪些 TCP UDP在哪些层 交换器路由器在哪些层
10、UDP STL 和TCP区别
11、对称加密和非对称加密有哪些算法 什么区别
12、有哪些数据结构 增删改查的复杂度多少
13、算法的五大基本要素有哪些?为什么算法效率不是基本要素?
14、算法题 判断二叉树深度
1、Glide
2、http和https
3、view绘制流程
4、TCP/UDP
5、Handler和AsyncTask
6、TCP\UDP
7、MVP
8、Retrofit
9、AsyncTask Handler
作者:想去广西嗦粉的小黄鸭在学习腾讯一面 50分钟
1.MVVM与mvc、mvp架构的区别与联系
2.mvvm用到的设计模式
3.viewmodel的实现原理
4.viewmodel怎么更新数据的
5.安卓的线程通信
6.looper阻塞为什么不会造成ANR
7.广播里怎么执行耗时操作
8.阻塞多久会出现ANR
9.开发遇到的一些异常,怎么处理
10.线程安全的队列有哪些
11.concurrenthashmap详解
12.fragment的生命周期
13.安卓里解决多线程冲突的方法
14.volatile详解、synchronized详解,两者区别
15.activity生命周期
16.onStart与onResume解释
17.安卓中进程间通信方式
18.内核态与用户态
21.TCP传输中header里的字段
22.http状态码
23.Java GC机制
24.进程、线程、协程的联系与区别
25.死锁的必要条件
26.银行家算法
27.TCP拥塞控制
28.四次挥手详解
29.TCP与UDP区别
30.TCP怎么保证可靠传输
31.DNS解析过程
32.TCP报文里的字段
33.算法题:计算二叉树的高度(递归与非递归两种方式)
腾讯二面,35分钟
1.mvvm,mvp,mvc
2.详细介绍项目
3.网络传输层的协议
4.TCP报头
5.TCP三次握手,为什么三次
6.linux内存管理机制
7.虚拟内存与物理内存
8.常用数据结构
9.堆排序原理
vivo一面 45分钟
1.面向对象三大特性,多态怎么实现
2.静态方法与变量是否可以继承,原因
3.Java代理是否用过,怎么实现
4.Java异常详解
5.项目中遇到的异常
线程安全的队列
7.类加载的过程
8.类加载器,双亲委派模型
9.对象生命周期
10.判断对象是否可以回收的方法
11.有哪些GC roots
12.Java引用类型
13.抽象类与接口区别,各自优缺点
14.Java线程间通信, volatile详解、synchronized详解
15.线程的状态
16.进程、线程、协程
17.死锁怎么造成的
18.线程池详解
19.线程池怎么做到线程复用
20.thread local详解
21.Java泛型,泛型擦除机制
22.TCP与UDP区别,优缺点
23.TCP可靠传输机制
24.介绍http协议
25.https请求流程
26.b树、b+树、红黑树
27.红黑树怎么增加、删除节点
28.输入一个URL到网页显示的过程
29.localhost 与127.0.0.1的区别
30.MVVM、MVC、MVP的区别与联系,各自优缺点
31.activity的生命周期
32.安卓中的数据存储,sharedpreference详解
字节一面 1小时
1.进程、线程、协程
2.进程间能共享内存吗
3.安卓中挂起函数怎么实现的
4.安卓中实现多线程的方法
5.线程池详解
6.线程池设计模式,怎么自己设计一个线程池
7.handler详解,是否会内存泄漏,泄露的原理
8.匿名内部类,原理是什么
9.Java GC算法
10.Java引用类型,弱引用的作用,引用队列。
11.安卓图片缓存,加载
12.安卓中的布局,布局优化方法,常用标签
13.安卓四大组件
14.activity四大启动模式
15.onnewintent方法
16.本地广播
17.jetpack组件
18.viewmodel设计模式,mvc,mvp,mvvm介绍
19.retrofit的具体实现,其中接口的作用,注解的作用
20.hashtable,hashmap与 concurrenthashmap详解
21.哈希冲突解决方法,
22.算法题:随机生成不重复的100个数0-99
字节二面,50分钟
1.https详细介绍
2.get与post区别
3.请求状态码
4.cookie与session
5.Java内部类
6.泛型擦除机制
7.Java内存回收
8.GC roots
9.Java加锁方式
10.线程安全的单例模式(双重检测),为什么要两次判断,volatile作用
11.安卓的事件分发机制
12.算法题:获得二叉树的最大宽度,写出最优解
字节三面,50分钟
5道代码题
1.写一个泛型方法,实现删除数组中的元素功能
2.写一个单例模式
3.返回二叉树的第k大数
另外两个记不得了,代码写的很差,所以三面卒。。。
顺丰一面,30分钟
1.面向对象三大特性与面向过程区别
2.怎么判断对象相等,equals详解
3.抽象类与接口区别
4.Java跨平台的原因
5.JVM,GC算法
6.安卓view绘制流程
7.view怎么确认位置与大小,测量模式
8.常用的viewgroup,与view区别,在事件处理过程中有什么区别
9.安卓事件传递机制
10.listview详解,缓存机制与recyclerview区别
顺丰二面,15分钟
1.项目详细介绍
2.安卓中的listview与recyclerview
3.安卓中的网络请求方式
4.项目中的设计模式
美团一面,1小时
1.安卓项目介绍
2.mvc,mvp,mvvm架构
3.jetpack组件
4.lifecycle介绍
5.viewmodel实现原理
6.retrofit介绍
7.retrofit怎么实现多线程
8.线程池详解
9.多线程会遇到什么问题
10.死锁的条件,手写一个死锁代码并运行出来
11.怎么避免死锁问题
12.可重入锁
13.安卓怎么进行ui操作
14.安卓点击事件的处理
15.下拉刷新原理
16.安卓存储方式
17.contentprovider介绍,能实现耗时操作吗
18.service介绍,生命周期与 contentprovider区别
19.https请求过程
20.算法题:返回第k大的数,先说下你能想到的方法,再选一个最优方法。
美团二面,50分钟
1.Java入口函数
2.方法签名
3.方法修饰符
4.static关键字详解,说下自己知道的关键字
5.Java基本类型
6.字符串详解
7.字符串的常用操作
8.Java io
9.Java异常介绍,是否所有异常都需要捕获
10.对Java抽象的理解
11.接口与抽象类区别
12.类编译过程
13.介绍对安卓中intent的理解
14.自定义view过程
15.介绍service
16.service与activity通信
17.输入URL到返回页面的完整过程
18.怎么加速http连接
19.虚拟内存
20.线程并发会遇到哪些问题,怎么解决
21.详细介绍自己的项目,项目可以有哪些改进的地方
22.算法题:二分法查找目标数
作者:Android大牛
小米安卓开发一二面面经一面9.29
1、手撕:使用一个固定长度数组实现队列,包括添加和取数据的功能
2、时间复杂度、空间复杂度,如何优化
3、链表如何优化,可以降低查询的时间复杂度?
4、hashmap插入数据的流程?
5、如何计算hashmap数据插入的位置?
6、如何解决哈希冲突?
7、多线程如何解决线程冲突?
8、手撕:手写一个单例模式
9、volatile 和 synchronized 有什么区别?
10、synchronized 和 lock 有什么区别?
11、synchronized 底层是如何实现加锁操作的?
12、对象、锁、对象监视器相互之间的关系?
13、乐观锁如何实现?缺点有哪些?
14、ThreadLocal 是如何存储的?
15、ThreadLocalMap中遇到冲突是如何处理的?
16、框架部分是如何学习的?遇到问题如何解决?
17、如果转安卓开发,将怎样制定学习路线?
18、对小米的了解?(我说我老米粉了,给面试官整笑了)
反问
(面试之前沟通时我说不会安卓,他也就没问我安卓的东西,面试官人还挺好的)
二面9.30
1、为什么会转码?(…每次面试必问)
2、有一千个键值对的数据,如何设计HashMap的初始容量大小?
3、HashMap的扩容机制是什么样的?
4、ConcurrentHashMap 是如何实现线程安全的?如果让你设计锁的数量你会怎么设计来提高效率?
5、synchronized 底层是如何实现的?
6、ReentrantLock 如何实现公平锁与非公平锁?
7、公平锁与非公平锁的释放有什么区别?
8、线程的 wait 和 block 有什么区别?和 sleep 有什么区别?
9、JVM 中创建一个对象的过程是什么样的?
10、JVM 如何判断一个对象需要被回收?
11、如果电脑内存是4G,已经使用了3G,现在启动一个程序需要超过1G的内存,会发生什么?(内存回收)
12、SpringBoot相比于Spring有什么优势?
13、Spring中控制反转和依赖注入有什么区别和联系?为什么要进行控制反转?有什么好处?
14、单例模式的好处有哪些?应用场景有哪些?
15、三种工厂模式有什么区别?
16、类加载过程是什么样的?
17、双亲委派模型有什么作用?
18、项目中如何设计单点登录?如何实现你这边登陆,另一边强制下线的功能?
19、OSI七层模型介绍一下?应用层有什么协议?
20、三次握手变成两次可不可以?为什么?
21、手撕:二叉搜索树第 k 小的节点
小米面试官感觉都挺好的,不会的问题会进行引导,二面多问些场景题。
作者:CodeWH
2.==和equals的区别
3.重载和重写的区别
4.值传递和引用传递
5.static、final作用
6.所有类的父类
7.this()和super()
8.int和Integer的区别
9.线程池和线程
10.锁了解哪些(说了分布式锁,又问我分布式锁是什么)
11.项目的难点,解决
Java反射原理
Java面向对象的理解,封装,继承,多态
HashMap底层原理
接口和抽象类的区别
你是怎么学习的,你的学习能力怎么样
Activity的启动模式有哪些
多进程通信的方式
Android intent如何传递数据
Android广播
谈谈Android性能优化
https和http的区别
三次握手
你都用过哪些设计模式?
作者:被光选中的人
字节跳动安卓工程师一、二面社招
一面|1h
聊了好久,一面也太正式了,问得较为基础,但是问得真的挺多的,心累。
项目介绍
Java四次引用
垃圾回收机制
线程安全的集合有哪些(问得比较细)
进程间通信的方式
HashMap的底层实现
eventbus原理
View的绘制过程
Surfaceview可以在非主线程绘制吗
Glide的缓存机制
内存优化(追着问)
TCP三次握手
算法:合并区间
算法:排序数组
二面|45min
二面在源码这块真的问得很深,Android部分问得比较多,不能小看啊
Java虚拟机
okhttp的请求机制
RxJava实现原理
handler处理流程,looper和handler是一对一还是一对多,为什么主线程loop不会ANR?
AsyncTask的底层是怎么实现的
消费者与生产者模型
Activity的生命周期,从Activity A启动Activity B生命周期的变化
touch事件的传递机制
TCP与UDP的区别
常用的数据结构
算法:序列化和反序列化二叉搜索树
作者:田鸡不是鸡
对Java面向对象的理解(重点讲三大特性,哪些可以继承下来)
你知道Java哪些数据类型呢?
接口和抽象类的区别
进程间通信的方式
线程池参数
HashMap的扩容机制,它线程安全吗?
ArrayList和LinkedList区别
String、StringBuffer、StringBuidler的区别
讲讲activity的生命周期
Android框架有了解过吗?binder原理
安卓是如何进行数据存储的?
TCP三次握手,为什么三次?
用过哪些设计模式吗?单例模式有哪些实现方法
客户端技术成长路线分享
- 计算机网络、操作系统、计算机组成原理、数据结构与算法、数据库原理等计算机基础课:学习这些一方面是为了应付面试,就Android的面试,很多公司爱问http/https,tcp/udp,hashmap,linkedhashmap,用户态/核心态等八股;更重要的是,对Android开发及体系的全面理解,Android应用层建立在linux操作系统上,所以才有Java和C++分别去写应用层代码和系统层代码,而系统层代码会做一些系统调用,这就需要了解一些操作系统。
- Java:由于笔者之前学习的是Java后端开发,所以Java基础还比较扎实,语言的学习一定是需要不断地实践思考的。在学习Java的同时也需要去搞懂Java中的多线程(包括各种锁和线程管理)、JVM、集合类实现原理,这部分一定需要去慢慢啃原理甚至源码。
- kotlin:kt目前作为Google主推的Android开发语言,以其空安全、简便性和各种语法糖会更进一步受到Android开发工程师的喜爱,同时支持Java和kt相互调用。同样地,kt的学习也需要不断地去实践,写一些小demo,更重要的是去识别kt与Java之间的区别,以及kt所拥有的新特性(协程、扩展函数、更优秀的函数式编程、一些常用的关键字如by lazy、lateinit、apply、run、with、object等等)。总之,kt学习过程中一定是需要和Java去对比着来的。
- Android基础 推荐Android第一行代码(尽量看最新的版本,用kt写的)
- Android四大组件(Activity、Service、ContentProvider、BroadcastReceiver)的使用;
- Activity的生命周期,Activity显式跳转和隐式跳转,各种操作的生命周期变化(包括横竖屏切换、Activity间跳转、Activity非正常销毁生命周期变化),Activity的LaunchMode;
- Android动画;
- Service两种启动方式及生命周期;
- 网络编程、SqlLite、SharedPreferences;
- Fragment管理,与Activity之间的通信;
- Intent、Bundle、Parcelable使用;
- 常见的控件和布局使用,ContraintLayout;
- 常见的UI框架如ViewPager、ViewPager2、ListView、GridView、RecyclerView的使用,ListView和RecyclerView的缓存机制,RecyclerView的LayoutManager自定义布局,ViewPager2原理。
- Android进阶 推荐Android系统源代码情景分析
笔者认为学习Android Framework非常有必要,一方面对于整个Android体系的把握,另一方面做Android Framework可以往智能车载系统开发等方向走。笔者花了1-2个月的时间看了Android系统源代码情景分析,看完以后对我触动很大,也理解了Android体系工作过程,所以笔者还是非常推荐读者有时间的话都学习一下Framework的知识,只要你肯专研,其实也并没有想象中那么难。
- c++学习,学c++一方面是为了看懂系统源码,特别是binder基本上是用c++写的;另一方面NDK相关开发用的就是c++;
- Android Framework,包括handler(Android线程间通信、Android应用层心脏)、Binder(Android 进程间通信、Android系统层心脏)、AMS、PMS、WMS工作原理;
- Android 启动流程(包括系统开机流程、应用启动),Launcher工作原理,zygote工作原理;
- 自定义View,View绘制(ViewRootImpl中三大绘制整个过程),滑动冲突;
- Hook,动态代理;
- AIDL使用和原理(其实本质上还是用的Binder),Messager使用和原理;
- Android启动优化,Android应用整个启动流程和可以优化的点(1、业务,2、线程处理耗时任务,3、线程池管理,4、界面渲染,5、避免启动卡顿,6、闪屏),还有一些启动优化常用的工具如systrace;
- Android卡顿优化,卡顿产生的原因,卡顿的检测;
- Android内存优化,内存泄漏产生的原因和检测,内存溢出产生的原因和检测,LeakCanary原理;
- 构建原理(gradle、groovy),Dalvik虚拟机和dex文件;
- ANR原理和解决手段;
- 开源库使用和源码,okhttp、retrofit、livedata、databinding、rxjava、glide等,glide缓存机制和内存优化;
- MVC、MVP、MVVM使用;
- Android开发架构,组件化、模块化;
- 黑科技:插件化、热部署(笔者也还在学);
作者:_Hawper
欧科云链安卓工程师
一面
项目提问(这里就不说了,大家看自己项目就好,项目尽量不要写得模棱两可)
Java基本的数据类型有哪些?
注解的类型有哪些?
sychronized和lock的区别
Java创建线程的方式
JVM的内存模型
自定义view的流程
HashMap的实现原理,和HashTable区别,线程不安全的原因
Activity生命周期,横竖屏切换的 Activity 生命周期变化?
view事件分发机制
https请求到响应的过程(加密过程)
TCP拥塞控制
单例模式的实现方法,如何破坏一个单例模式?
二面
项目介绍
有用过kotlin,那问这块没问题吧?
Kotlin有没有static 关键字?那创建静态函数怎么办
构造方法有哪些
协程Flow有哪些应用场景?
(问了四五道就没问了,内心OS:要不还是问Java吧)
Handler原理
looper死循环会不会卡死?为什么?
内存泄漏的情况有哪些,讲一种检测方法
okhttp拦截器
Retrofit的调用过程(我给你点提示,你自己思考一下)
mvp是什么?
TCP三次握手,如何保证安全传输的
现在Android岗位真的不多了,各位面试Android的朋友可以抱个团,共享下最新情况,我可以给大家分享一份自己整理的Android面试手册,需要的话可以给到大家,也可以看我专栏哦,都是新鲜面经。
作者:汉尼拔哈哈
海信
项目介绍(听你讲完项目觉得你Android这块是没啥问题的,还是问了下Android架构和性能优化这块,让我具体谈谈)
对Java面向对象思想的理解
讲一下Java的基本数据类型(没答全,开头棒喝)
深拷贝和浅拷贝分别是什么?
Java 容器都有哪些?List、Set和Map的区别知道吗?
String 类可以继承吗?为什么?它和StringBuilder、StringBuffer有什么区别?
线程的 sleep() 方法和 yield() 方法有什么区别呢?
线程不安全的情形有哪些?
为什么要使用线程池?
GC Root有哪些呢?那你就讲Java垃圾收集机制就行
MVC架构是怎样的?
https和http的区别,它是如何来保证安全性的?
TCP三次握手的步骤?两次握手为什么不行?
作者:汉尼拔哈哈
荣耀Android技术面面经
荣耀是一个很值得去的地方,我9月初投的简历,国庆上来陆续进行了面试,荣耀是有一轮技术面、一轮综合面以及一轮HR面,我也都感受了一遍,这里重点给大家讲一下技术面的内容,希望能够帮到大家。
技术面丨50min
自我介绍
项目中遇到的难题 使用了什么技术来解决
Java垃圾回收
HashMap底层原理
哈希表解决冲突的方法
什么是多态,怎么去实现呢
接口和抽象类的区别,它们各自的使用场景呢
安卓的四大组件
Activity回调的方法
你都用过哪些设计模式?
实现多线程的几种方式
用过哪些数据结构
Java面向对象
synchronized
equals和hashCode方法
广播的两种启动方式
三次握手
kotlin有了解过吗(聊了一会)
作者:牛牛!向前冲!
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
小米安卓面经(已offer)
9.5 一面 25min
- 自我介绍
- 写代码带来的快乐
- 设计模式
- 单例模式的好处
- 线程安全
- 形成死锁的条件,破解死锁的方法
- gc是什么
- 垃圾标记方法(拓展了很多)
- 强引用,弱引用
- 对操作系统的了解
9.9 二面 40min
- 自我介绍
- 多线程
- 线程池
- 并行与并发
- 死锁
- arraylist与linkedlist
- hashmap
- hashtable与concurrenthashmap
- 手撕快速排序
- 手撕单例模式
- 内存泄露
- 项目中碰到的异常
作者:rsthh
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
蚂蚁金服Android客户端一面面经
一面|40min
java四种引用
JVM内存区域
乐观锁和悲观锁
gradle打包流程
线程和进程的区别
线程池的参数
多线程同步问题,怎么保证线程安全?
Android签名流程
Android的四大组件有哪些?活动的生命周期
http的缓存机制
tcp滑动窗口,三次握手
hashmap的底层结构
常用的设计模式,重点问了单例模式的实现
对AMS的了解
讲一个红黑树和一个排序算法的时间复杂度问题的分析思路
二面|35min
实习项目和小应用开发过程(扒裤子)
HTTPS是怎么保证安全的
DNS协议
tap和udp的区别
对称加密
Android签名机制
okhttp如何处理网络缓存的
作者:汉尼拔哈哈
OPPO安卓岗一、二面的面经
一面|35min
数组和链表的区别
hashmap原理
java中的异常处理与分类
线程池的参数
java垃圾回收机制
GC ROOT包括什么
dns协议
thread
fragment的生命周期
handler的作用
hashmap相关
TCP传输层
https怎么保证他的安全性
http与https的区别
单例模式
二面|45min
view绘制流程
双亲委派机制
内存泄漏的原因及方案
try catch finally 中遇到的return问题
讲一下排序算法的思路
作者:统一鲜橙多
商米-安卓开发-一面面经
技术问题包括数据结构、算法、计算机网络和安卓的知识
数据结构:
数据结构的分类
数组和链表最大的区别
5个元素没有排序,数组和链表查找哪个更快一些?
如果排序了,哪个会快一些?为什么?
hashmap具体是怎么实现的?
hash冲突如何解决?
栈和队列的区别
二叉查找树的概念
树退化成链表如何解决?
B树以及B树可以解决什么问题?
图的遍历以及具体代码如何实现?(迭代)
算法:
时间复杂度和空间复杂度的概念
常见的排序算法以及时间复杂度
链表的反转怎么实现?
安卓:
安卓的四大组件
activity的声明周期
activity的启动模式
事件的触发流程
计算机网络:
5层结构以及相应的作用
传输层的主要协议有哪些
作者:鲸鱼sama
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
商米安卓校招面经分享
先说结果:技术面挂了,但是感觉收获还是蛮大的。
简历过了,先是笔试关,一共8道题,全是lc上刷到过的原题,毫不犹豫的过了。
面试一开始,面试官根据简历上的项目经历问问题。
然后问Java语言基础,问到了泛型,有没有自己定义过泛型?(没有)
Java中父类对象能否强制转换为子类对象?(印象中这题并没有刷到过,就回答的没有,面试官再追问 那有没有一种可能,在某种特殊情况下父类对象能强制转换为子类对象?)此时我心里已经发凉了,他这么追问的意思是,肯定能强制转换,只是我不知道,这也不是题库里能见到的题。这题过了。
然后是问c语言基础,宏定义
再就是数据结构和算法,堆排序的实现过程,快速排序的实现过程(快速排序的实现过程用语言给他描述了,然后他再追问细节,第二轮排序的时候,数组是不是要移动?)人麻了,稀里糊涂不知道讲的什么,这题过。
再然后是操作系统和计算机网络。Java多线程。计算机网络的7层模型。线程和进程的区别。线程和函数的关系。创建线程需要什么参数?哪些参数是必要的?如何用函数创建一个线程?
然后,大学成绩怎么样?(绩点3.3)问高数,x立方的导数是多少?(3x方,很简单)如何用微积分计算圆锥体的体积?(具体过程不记得了,毕竟三年没学高数了,答的用极限的思想,把圆锥体抽象成无限个圆柱体,底面积乘高,两层类似f的符号相乘得出圆锥体的体积。)
然后再是概率论,如何计算数学期望?(答,数学期望类似平均值,比如在有10个点的散点图中,数学期望即这10个点的y值相加除以10)
最后是华为经典题,一个桶5L,另一个桶7L,如何得到6L?(答出来了)面试官立马追问,有没有一种数学理论可以给这个问题提供支持来证明,1L,2L,3L,4L,6L是不是都可以得到还是只能得到其中的某几种?(到这里,我是真的麻了,考这种题真的无从准备,面试官是啥问题都能深挖深挖再深挖)(最后一题有知道的同学可以评论区留言)
作者:AlaJackie
2022百度Android面试题汇总+解析思路
1、 Activity的启动流程
——从Launcher到AMS——从AMS到ApplicationThread——从ApplicationThread到Activity
2、 handler机制的原理
3、 跨进程通信的几种方式
4、 wait 和 sleep 的区别
5、 String,StringBuffer,StringBuilder 的区别
6、 View 和 SurfaceView 的区别
7、 View 的绘制原理
8、 简述 JNI
9、 简述 TCP,UDP,Socket
10、 进程和线程的区别
11、 内存泄露如何查看和解决
12、 View 的分发机制
13、 RecyclerView 和 ListView 的区别
14、 谈 MVC ,MVP,MVVM
15、 Android 性能优化
16、 SharedPreference 跨进程使用会怎么样?如何保证跨进程 使用安全?
17、 activity,fragment 传值问题
18、 activity 与 fragment 区别
19、 Fragment 中 add 与 replace 的区别?
20、 说下 Activity 的四种启动模式、应用场景 ?
——standard标准模式;singleTop 栈顶复用模式;singleTask 栈内复用模式;singleInstance 单实例模式
21、 横竖屏切换的 Activity 生命周期变化?
22、 Android 线程间通信有哪几种方式
——1. 共享内存(变量);2.文件,数据库;3.Handler;4.Java 里的 wait(),notify(),notifyAll()
23、自定义view的基本流程
24、 tcp和udp区别
25、 微信视频是用了tcp还是udp
26、 udp的优点
27、 http基于tcp还是udp
28、 为什么很多用https而不用http
29、 加密算法有了解吗
30、 什么是对称加密和非对称加密
31、 https的加密是对称的还是非对称的
32、 service在项目中怎么使用?
33、 怎么在子线程中更新UI?
同花顺 安卓 09.23 二面 50min
- 自我介绍
- 面向对象和面向过程的区别
- 面向切面编程你知道么,和面向对象的区别和细节
- 有无面向切面编程的案例
- 开闭原则的细节
- 设计模式的其他设计原则
- synchronized了解么
- ThreadLocal了解么,他有什么问题
- 快排的思想
- 快排解决topk问题(我哭死啊,我没有想到当前的会使用快排来进行解决topk,我之前都是使用堆排序)
- 快排和堆排来进行解决topk问题
- 自己手上的意向offer有那些
- 地点会考虑哪一些么
- 不知道你最近看过一些B站的虚拟人物么,你觉得当前的技术方面是怎么来进行实现的
- 看过那些书籍
- 假如说你来同花顺,你对团队怎么来看
- 你有那些优势和缺点
- 假如说同花顺给你一笔资金,你会怎么考虑来进行创业
- 反问:1:部门的一些情况;2:使用到的技术栈(安卓)
作者:叶子与花(o-ωq)).oO困
传音 Android开发 一面+二面
09/13 一面
volatile 在Java和C++中的区别
synchronized 原理 锁的升级
JVM内存模型
NoSQL与关系型数据库区别
垃圾回收算法
内存泄露检测方法
JVM调优
09/19 二面
设计模式作用
动态代理与静态代理
线程与进程的使用场景
线程安全与不安全的例子
TCP三次握手
HTTP3
Java内存泄露场景
OOM能捕获吗
运行时异常与编译时异常
安卓相关知识
作者:牛客100861101
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
滴滴安卓客户端一二面面经
一面
(40min)
算法:
- 反转链表
- 合并两个排序的链表
- 自我介绍
- 安卓学习路线
- http和https的区别
- TCP与UDP区别
- TCP流量控制
- Cookie与Session的作用与原理
- 进程和线程的区别
- 进程间通信方式
- 多线程里的关键字
- synchronized应用场景
- wait() 和 sleep() 的区别
- Java内存回收机制
- 垃圾收集器有哪些
二面
(30min)
算法:
- 合并两个有序数组
- 合并区间
- 自我介绍
- 选择这个岗位的原因
- 项目盘点
- 当系统内存不足时,会存在单个 Activity 直接被系统回收的情况吗?
- 安卓中的消息机制是什么样的
- 分发给Handler的消息是怎么处理的
- 消息机制中,如何更新UI
- 用过哪些安卓相关的开源框架
作者:统一鲜橙多
链接:https://www.nowcoder.com/?type=11023_0
来源:牛客网
1.介绍RPC,RPC和其他协议HTTP有什么区别,然后扣项目细节。。。(录像都不敢看,不想写了)