作者 | 沉默王贰
前言
先说说自己的基本情况吧,陕西某双非一本本科,软件工程专业,从大二第一学期开始自学Java,Android,大二大三逃了两年课,在图书馆自学两年,秋招提前批拿到了网易云音乐和金山WPS的 Android开发工程师 offer。目前的话,我已经很满意了,不投了,收手
坑逼学校不让出去实习,也没办法,强制在学校实习。从7月20号在校实习结束之后,开始准备秋招,投简历。投了70+份简历,目前为止的话,面了6家大厂,拿了两家offer,还有几家待面(贝壳找房,蘑菇街),剩余的笔试也都没做。面的7家分别是:
- CVTE(HR面挂)
- 金山WPS(offer)
- 途牛(二面主动放弃面试,因为有更好的啊~)
- 360(因时间没安排好,放了二面面试官鸽子,被挂 无奈~~~)
- 腾讯 MIG QQ浏览器(HR挂)
- 网易云音乐(offer)
因为也知道自己学校不好(高考发挥重大失误),大一内心非常挣扎,一直不愿做一个平凡的人。大一在课余时间看了一百多本书,大二开始自学安卓,入了安卓的坑,也深知去大厂,必须非常牛逼,牛逼到面试官可以忽略你的学历。因此大二,大三课全逃,在图书馆潜心修炼两年。所幸逃了两年课,只挂了一门,编译原理,还是开卷,无语。
好了,开始上面经吧:
面经
CVTE一面:
介绍项目架构
MVP,MVC 介绍及优缺点
Butterknife源码(直接问源码~~~~)
EventBus源码
腾讯Bugly 原理及实现,如果是你的话,你怎么实现日志上传传策略,答到 后台sevice+守护线程
安卓跨进程通信方式
内存泄露,如何检测内存泄露 LeakCany原理
Binder 原理
(加一个)冷启动优化
项目中文件的下载
断点续传的实现
Java线程安全,jmm,可见性,原子性,有序性 synchornized和lock的区别,以及原理
TCP 如何实现 可靠传输?
拥塞控制的四种方法,这个实在想不起来
安卓学习了多长时间,平时怎么学习安卓?
CVTE二面:
设计模式的六大原则,对六大原则的理解,在项目中的应用
说说你最熟悉的三种设计模式
单例模式如何实现线程安全
Builder模式 和set方法有什么区别
观察者模式 推和拉,有什么区别
MVC MVP MVVM 的区别,在项目中的应用
MVP如何进行解耦合,P如何实现V 和M 的交互
看过什么源码?
Retrofit源码,如何实现动态代理,和rxjava如何交互,可不可以设置多个convertFactory,如果设置了怎么办?如何动态确定
Volley源码,缓存超时如何判断
然后是编程 题,不能使用 java数据结构,实现栈,需要考虑 线程安全 ,泛型 ,扩容, 限定 5分钟
能不能优化,scyronized 和 volitle 区别,votile原理
IPC方式?
Binder原理?Binder连接池(这个真不会)
Client调用Server方法的过程?
看过Framework那些源码?
自定义View 需要注意的问题,MesureSpec, 自定义View 动画的实现
Handler原理?子线程如何实现Handler,Message如何存储在MessageQueen?
有没有学习什么新技术,有没有看今年的Google IO 大会。
面试官看了我的博客,问了一些简单的问题
金山WPS一面
介绍一下Volley,okhttp,retrofit
volley的基本流程,OKhttp的拦截器链,retrofit的动态代理
photoview如何实现
Glide与Picasso区别
如果让你设计图片加载框架,你如何设计(三级缓存机制)
插件化,热修复,andfix原理,如何做到机型适配(native如何做到机型适配 我很慌啊~~~~)
Hashmap原理,如何实现线程安全,HashTable,CourrentHashmap原理
介绍一下java中的锁
单例模式,dcl存在的问题,如何解决
http/https区别,HTTPS加密如何实现。
get/post区别,post 如何实现密文传输
事件分发机制
activity的四种启动模式,及其应用场景
Handler的使用及其原理,子线程如何实现
eventbus干什么的,和handler有什么区别
eventbus能否实现IPC
IPC方式
AIDL底层,没问Binder原理
金山WPS二面
hashmap的实现方式
hashmap如何查找元素
static关键字
final关键字
volatile关键字
单例 线程安全的实现方式,细节
事件分发
volley源码
java函数的访问权限
图片缓存框架的区别
java垃圾回收
算法:
二叉树遍历
中序遍历的下一个节点(剑指offer原题,看了四五遍,还没记住,该打)
翻转链表
二叉树深度
途牛一面
应用上线细节(说要搜我上线的应用)
retrofit源码涉及的设计模式
handler asynctask HandlerThread 的源码
热修复与插件化
Java类加载机制
线程,线程池,线程池核心参数
30M图片的加载,如何预防oom
内存泄漏 的检测与预防
事件分发机制
自定义view
listview 与recycleview 的复用和回收
tcp udp区别
三次握手和四次挥手(这个真没背,那图怎么记啊)
360一面
static关键字
syrizoned原理
自定义控件
事件分发
滑动冲突
四种引用
弱引用的使用
内存泄漏
插件化 dla原理
65535方法的解决
360二面
介绍一下项目
service的使用
IPC java 安卓 把知道的IPC 全说出来,p/v 信号量 管道 信号量 ,复制黏贴版 什么的
性能优化
ANR
OOM
内存泄漏
UI卡顿
BItmap优化
Listview优化
launcher的启动过程
volley源码
butterknife源码
热修复,andfix,sophix,hotfix原理
因为金山二面,和360在同一天面试,金山二面约了45分钟,结果聊了70分钟,错过了360二面的时间,二面面试官一脸嫌弃的看着我。当然这也怪我没安排好时间,希望大家以后面试时间好好安排一下。
腾讯 一面
activity的四种启动模式,具体场景分析
volley,OKhttp有什么区别
OKhttp 复用连接池怎么实现的(这个没看过,面完赶紧看)
volley的源码,OKhttp源码,eventbus源码
httpclient,httpURLconnection内部实现(太原理了,没看过)然后问httpclient,httpURLconnection是哪个组织开源的,黑人问号脸???,还有这种操作。哈哈 。我知道。httpclient是Apache开源实现的,httpURLconnection是sun开源实现的
activity的启动流程(面试完了赶紧看),说没看过,看过其他framework源码,说来一下handler,asynctask源码
Android的任务栈
类的加载过程
不允许写代码,如何定位anr。
service的保活
极光推送的原理 ,心跳包的发送间隔时间(我回答的是5s,面试官让我好好思考思考,然后回答根据具体的应用场景进行判断。巴拉巴拉一大堆)
热修复原理,andfix,hotfix源码?
方法数超过65535怎么办?分包是哪个版本开始支持的,之前的版本不支持,如何加载dex文件。
腾讯 二面
介绍第一个项目的功能,大部分问题是根据第一个项目问的
用户登录与服务器进行交互的过程,如何优化。加密:HTTPS,base64,md5,非对称加密算法 及其使用场景。
listview 如何进行优化,无限下拉加载如何优化
bitmap的优化
jpg和png图片的区别(这个打错了,面试官让我下去查一下)
三级缓存机制,什么时候内存缓存,什么时候磁盘缓存
热修复,阿里andfix,腾讯 hotfix 原理,方案对比
腾讯面试官 还是主要看 思考过程,对安卓整体的理解,而不是答案。后面网易也是一样的。
可能是因为春招面过,评价不太好(当时准备基础,没想到面试官面问框架源码,16分钟,gg),导致秋招无法通过。
网易云音乐一面
安卓常用的布局,特点。LinearLayout和relaviteLayout 区别
fragment与view的区别
fragment的切换方式
fragment的生命周期
fragment的内存泄露
bitmap优化
反射的作用?编译时还是运行时?
java IO 多线程
抽象类和接口的区别
hashmap的底层实现,hash算法,为什么选择hashcode 高16位于低16位异或?直到问到不会~~
synchronized 与reentrantlock 的区别? 等待可中断的内部实现(what~~~ 说了一下如果是我我该怎么实现)
eventbus的内部实现 一直问到不会~~~
handler内部实现 一直问到不会~~~
网易云音乐二面
用过数据库?写了一条sql,问我怎么建索引,然后把 or改成and 问怎么修改优化?(本菜鸡不太会)没怎么用过数据库,只用原生写过一个小demo,安卓基本都orm框架了吧。然后解释了我的数据库是怎么做的。
数据库设计规范,三大范式(数据库课程逃了一学期,老师吹逼不好好讲,没办法,会写sql语句,只知道第一范式)
volley源码,一直问,一直问到不会
项目的难点 MVP的设计架构,MVVM
Drawable 的子类 ,方法(表示只知道 colordrawable,bitmapdrawable,然后继续追问,就说,看过安卓开发艺术探索,有一张专门讲drawable,因为用的少,没怎么看,就放过了)
Drawable 和bitmap区别(又来)
okhttp源码,brigeIntecptor 作用是什么?说一下 http header
Http和HTTPS的区别,HTTPS工作原理
事件分发机制
自定义view
最后问我你觉得你那块需要继续深入?
具体的HR面 面经我就不贴了吧,都大同小异,真诚一些就好,意愿表达强烈一些,也不能太实诚,具体的话,多面多总结吧~~~~
关于这些面试题我已经把答案和思路整理成了PDF,另外还有一些自己平常看的资料,今天分享出来,希望可以帮助到大家
如果你有需要的话,可以点击Android学习PDF+架构视频+面试文档+源码笔记获取免费领取方式
最后
现在工作也找到了,得给自己找点事做,本来说想混吃等死,玩了一周,感觉很空虚,同学基本不是准备考研就是跑招聘会,无聊,接下来的话准备:
- 继续深入学习安卓
- 学吉他
- 继续博览群书
- 找女朋友 O(∩_∩)O哈哈~
希望我写的这些能帮助到大家。希望大家沉住气,都能拿到满意的offer
我也转载两句我喜欢的诗鼓励大家吧
朋友,坚定地相信未来吧
相信不屈不挠的努力
相信战胜死亡的年轻
相信未来、热爱生命
也许迷途的惆怅会扯碎我的脚步
可我相信未来会给我一双梦想的翅膀
虽然挫折的创伤让我寸步难行
可我坚信光明就在远方
网友评论