Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说2019校招Android面试总结[通俗易懂],希望能够帮助你!!!。
作者:heng222
来源:牛客网
自我介绍
项目
为什么选择OKHTTP框架
加载图片框架?(学一下Glide)
JSON解析框架?(学一下Gson,FastJson)
技术选型?
页面个数?
OSS上传凭证怎么设计缓存?怎么加密?(加密算法??)
还有哪些项目可以说的?
Android
Activity生命周期?启动透明Activity生命周期?按Home键生命周期?
后台杀死APP后怎么恢复数据?
一个APP可以多进程嘛?
ListView和RecyclerView区别?
RecyclerView卡顿怎么排查?
RecyclerView怎么实现多Type?
RecyclerView的ItemView层级过深怎么优化?
Android多进程?
怎么设计Android线程间通信?
Handler机制?子线程可以用Handler吗?
ANR?
Java
private protected public 关键字的用法区别!!!
接口,抽象类区别?抽象类要不要实现接口的方法???
Map的线程安全?读多写少选哪个集合?(CopyOnWrite,不懂原理没敢说)
网络
HTTP/HTTPS区别
TCP了解么?握手与挥手过程?
长连接?
push怎么实现?
腾讯
提前批一面 35min
项目介绍
实现的功能,基于OKHTTP实现网络请求
HTTP(s)
介绍下HTTP协议
HTTPS公钥暴露怎么办
HTTP分段上传文件怎么保证正确
HTTP缓存
Java
进程 线程区别
子线程间通讯
解决死锁的办法,怎么判断发生死锁
算法题
奇数偶数数组,重新排序保证顺序不变,奇数在前偶数在后
2数/3数之和
提前批二面 30min (挂)
自己介绍
项目介绍
项目梳理
图片压缩算法? 聊聊关于Android图片压缩那点事儿
Bitmap JPG区别 图像处理:JPG、PNG及BMP的区别?
断点重传?怎么动态确定范围? Android 实现断点上传文件 RandomAccessFile
断点下载?CRC原理 文件校验MD5、SHA1、CRC32、sha256、cksum
设计模式
MVC优点缺点
MVP中的MVC的C实现在哪
单例模式的饿汉与懒汉的选择,使用场景Java单例模式的不同写法(懒汉式、饿汉式、双检锁、静态内部类、枚举)
HTTPS加密方式
腾讯正式批测开一面 25min
Crash
ANR怎么解决
设计世界杯32强对战数据结构
2个球 100楼找那一层摔下来会坏\
测开具体工作
腾讯正式批测开二面 1h
项目
聊细节
Android
图片,语音大内存数据的性能排查,定位?
Handler内存泄漏问题
ART Dalvik区别?
GC机制?
CountDownLatch原理?
算法题
不使用for查找数组最大值?
闲聊
自我优势
百度
百度一面 1h
自我介绍
项目介绍
编码规范有用吗?
Android
Android四大组件安全性
Activity启动模式
IntentFilter匹配规则,action和category区别?
Handler 阻塞为什么不卡死?
点击事件分发机制,onTouchEvent返回false? dispatchTouchEvent返回false?
Looper
对象池,手写对象池实现
ContentProvider原理
sp支持跨进程么?怎么解决跨进程,怎么实现进程同步
帧动画实现: 100张图,200ms显示一张,读取一张图要400ms,怎么解决避免卡顿(多线程读)
Bitmap内存复用限制条件
线程时间片分配原理
百度二面 45min
项目
梳理项目
难点
技术框架
算法题
手写二分法
电梯状态机设计
优缺点
优点
缺点
专业
百度三面 45min
技术
最长公共子串
类加载机制
okhttp原理
热修复原理
其余闲聊
优点缺点
大学遗憾
组织哪些活动
长期坚持的事情
专业去向
网易
网易技术一面 1h
自我介绍
项目介绍
华为解bug映像最深的
Android
TouchEvent传递过程? onTouchEvent返回flase怎么办
怎么设计缓存
Android数据持久化
数据库怎么批处理(原理)
SP支不支持多线程?SP怎么实现多线程
View绘制过程
Handler消息机制
Java
B线程怎么实现等待A线程完成工作
线程怎么结束工作 Java结束线程的三种方法
Java哪些方法支持中断
设计一个有限资源的请求
怎么设计对象池(对象的存与放回)
线程池的线程什么时候创建
Java中的锁
可重入锁性能
笔试题
两个数组交换一个值,让和相等,找到这两个值
网易技术二面 1h
自我介绍
华为实习
参与的项目
解的bug
参与的编程规范说一下
Lint工具?
设计模式
单例模式
volatile关键字原子性
Android
进程间通信方式(与linux进程间通信区别)
Socket怎么验证安全性
广播(全局 本地区别)
怎么实现文件的多进程通讯(A进程改了文件怎么通知B进程读取)
二级缓存怎么设计(网络 数据库 view间关系)
View
Activivty生命周期
onSaveInstanceState onRestoreInstanceState区别,调用时机
广播注册应该在Activity哪个生命周期里
怎么统计onCreate的次数
Fragment与Activity区别
Fragment生命周期管理
Fragment与ViewPager怎么做到重复加载
View绘制过程 MeasureSpec的三种模式
Framelayout LinearLayout ReativeLayout怎么做到View在右下
margin padding区别
gone invisible的区别
requestLayout、invalidate与postInvalidate区别
Android动画 怎么取消循环动画 repeat模式
drawable与view区别 有哪些drawable
网易技术三面 50min
自我介绍
项目介绍(不用说太细)
Android
图片传输过程中URL加上默认大小如果是wrap_content怎么办
图片相关缓寸,编码,内存复用
svg (其他图片格式)
drawable mutate了解不
okhttp 桥接拦截器和缓存拦截器
设计自定义DNS解析器
打点系统设计:写文件过程中会有buffer,此时进程被杀怎么办,怎样设计日志系统 打点日志被用户篡改怎么办,保证日志安全性
磁盘内存映射原理
有没有看过开源打点框架
平时开发有没有遇到过资源复用
最近了解啥Android新动向不
自己学习计划
美团(现场一天面完)
自我介绍
项目
实习项目
项目最难点
技术选择
OSS STS凭证设计
Lint工具是编译期的嘛?原理?
场景题
美团首页设计?
RecyclerView多Item的难点?
设计模式
MVP MVVM使用场景
HR
有什么offer现在?
选择offer依据?
上海花费高?
怎么解决沟通问题?
小米
小米技术一面 1h20min
面试官介绍
面试官自我介绍
了解专业情况
Java
数组 链表区别
TCP三次握手过程
进程/线程区别
进程/线程的通讯方式
ThreadLocal原理
弱/软引用区别
算法
快排原理,最好&最坏时间复杂度
怎么判断单向链表是否有环
写一个单例
求Sqrt(n) 二分法
其他
最自豪的一件事
怎么和他人合作
怎么了解手机行业
小米技术二面 1h
面试官介绍
面试官自我介绍
了解Android学习情况
Android
MessageQueue.next到底处于什么状态(睡眠?阻塞?) 应该是阻塞状态,底层
epoll到底怎么实现的(还是没能说清楚?机制?native层呢还是系统层) epoll(Linux系统)监听文件描述符
应用程序的main方法在哪?怎么实现不退出?
广播的机制?
应用程序的退出?进程优先级
Java
线程的状态
自旋和阻塞区别
int型长度?与机器有关么?
32位/64位系统指的是什么?
设计模式
用过哪些设计模式
算法
回文序列
微博
微博一面 45min
Java
抽象 接口区别
有哪几种内部类
哪几种集合,List Map区别
线程同步方式
重载 重写区别
怎么实现多态
运行时异常有哪些?(只答了空指针,数组越界,IO,还有ClassNotFound)
内存泄漏举例?怎么定义内存泄漏?
GC机制?
Android
Activity生命周期?onRestart什么时候执行?别的生命周期?
四大组件?
Service两种启动方式?区别?生命周期流程?能不能在Application中启动Service(可以,有context了)
局部广播
ListView RecyclerView区别?ListView定量更新(根据位置取出来直接更新)
图片大怎么加载?图片加载框架设计?
Handler机制?
AsyncTask?
线程池参数?
ANR机制?
ANR,Crash怎么上传到服务器? CrashHandler UncaughtExceptionHandler???
网络加载框架,怎么设计网络请求接口
计算机网络
HTTP/HTTPS区别?
微博二面 20min
自我介绍
项目介绍
计算机网络
HTTP/HTTPs
状态码,100是啥意思
专业
课程
二值化算法
其他
大组招人
能不能来实习
建议
主要针对非科班同学:最好系统的看下操作系统和计算机组成原理,推荐清华大学陈渝的操作系统公开课,因为看完操作系统后才能系统的认识计算机的原理,能更好的从底层去认识上层
多看源码,包括Java层的代码在JVM中的实现源码(如synchronized的实现源码),Android Framework的源码(更好认识Android层的实现),Android开源库源码(OKHttp,Retrofit,RxJava,EventBus,Glide,Gson...,更好的学习优秀开源库源码,做到用的熟,懂原理)
多问自己为什么,比如两个技术点优缺点分别在哪,各自的使用场景(如单例模式下饿汉与懒汉的优缺点,使用场景),这样才能更契合实际应用开发,针对不同场景使用不同技术点
及时复盘总结面试中遇到的问题,分为两方面,一是知道但不能深入的,这种需要继续多看多总结,另一种是没接触过的,这种可以先了解下,万一面试又遇到了,可以回答下了解到的,之后再去深入总结(毕竟时间有限,不可能面面俱到,只能不断学习总结)
-------------------------
牛客网是全国最大的IT题库,刷真题,练算法,看面经,得内推,全面提升你的技术水平、推荐最好的工作给你!牛客网官网链接:https://www.nowcoder.com/discuss?type=2&order=0?from=toutiao
*本文由原作者首发于牛客,非经原作者授权,不得转载。
*与面经原作者交流,请点击下方了解更多。