无论你是面试之后需要知识点总结,还是正在准备面试的伙伴,在这里给你们分享一份阿里P8大牛分享给我的学习笔记,里面涵盖了Android所有基础+中高级知识,以及近几年大厂(小米,阿里,华为,字节,金东,腾讯,百度等等)30多家高频经典面试题。如果现在的你需要建立完整的知识体系,需要经验的学习,欢迎去文章末尾领取这份学习笔记 纯分享!记得点赞支持哦!
我的故事
本人16年7月份出来参加工作,至今工作将近4年的时间了,坐标是深圳。由于在目前的公司,感觉没什么成长,就想换一个公司。楼主已经在从实习到现在,已经换了三家公司了,所以这次出来的目标的100人以上,B轮以上或者是不需要融资的那些企业。我前前后后面试了将近7家公司,现在在这里和大家分享一下面试的经历,希望对一些人有帮助。
今年,不知道是不是互联网的寒冬,反正我觉得是移动端的寒冬,岗位很少很少,待遇开的很低很低。 所以奉劝大家,千万不要裸辞。我刚刚开始是在拉钩上试着投了几家自己比较满意的企业。我日,对,我爆粗口了,我对拉钩这个垃圾网站感觉是恶心到我了,投了几家公司,全部被标记为不合适,我还以为我的简历出了问题,各种改,后面从以为HR口中得知,那是一个坑。然后换成boss直聘,才有一些面试机会。下面我按顺序来说一下我的一些面试经历。笔试就不说了
6月阿里遭拒
一面
自我介绍,项目介绍
一个activity启动另外一个activity的生命周期调用(这里扯到了allowtaskreparent和taskaffinity,介绍了很久)
handle的原理,子线程为什么不能更新UI?
(从wms初始化view的源码这块说了几个绕开子线程更新ui报错机制的方法,这里比较加分,感觉面试官看我的眼神都不一样了)view的绘制过程
滑动冲突
接口和抽象类的区别
内部类和静态内部类的区别
string stringbuffer stringbuilder
hashmap的源码结构,arraylist,linkedlist
介绍jvm运行时内存结构
gc的三种方法复制算法怎么弄的,为什么新生代用复制,年老代用整理
常量池在哪
可重入锁,synchronized,volatile,对象锁类锁
对象头markdowm的偏向锁轻量级锁重量级锁
cardtable
四大引用
算法题
给一个数组把重复的数字踢出去
没让写代码,讲自己的思路,想的方法越多越好
二面
二面面试官见到我特别和蔼,一直笑这一面只有一半问技术,另一半问平时怎么学习的,之前的学习经历这种东西
自我介绍+项目介绍
mvp mvvm mvc
mvvm和mvp区别
viewmodel怎么实现的,原理(这个没答上来)
问我有没有了解什么异于常人的地方,不要说那些烂大街的。(还挺有个性:)
说了ssl tls的发展历程,http的发展历程,tcp拥塞控制的几个算法,如何实现udp的可靠传输,quic协议,dns协议的过程
- 之后又问我对安卓的哪些地方感觉设计的比较好
这个不知道怎么回答,就随便说了句,我感觉设计的都挺好的(这是什么烂回答)
- 自己学了安卓,感觉哪些地方比较有意思
我回答的属性动画那里
- kotlin
- 内联函数,高阶函数,泛型,lambda表达式
算法题
- 实现一个循环队列
一开始感觉和牛客网上刷的一道题有点像,就打算用两个栈,他问了下我的思路,说两个栈太浪费空间了。让我用数组
后面被他提醒了几次还是做出来了
7月华为惨败
一面(25min):
1. 自我介绍。
2. 在学校干啥?你们学校老师实验室要本科生?
3. binder跨进程通信(知道,但是没有深入学习,只知道跨进程的几种方式,然后就说了说几种方式)
4. linux进程间通信方式?通道,信号量,共享内存(追问,哪种方式效率最高,哪种最麻烦,我都答共享内存...)
5. 介绍一下你第二个项目,顺便展示一下(面试官点开,滑动了几下,点了点)
6. 你这拍照是怎么实现的,camera1 camera2?(一脸懵逼... 我知道又这两个api,但是...我是用Intent开启相机的...哦! 知道了,调用系统的是吧)
7. 你这app和后端的数据接口怎么设计的?(不是很懂要我回答啥)我就说哪儿用get,哪儿用post,传token啥的,用json格式传的...
8. 你了解华为吗?参观过北研所,感觉很好的,有意向去北研所。
结束(还有一些记不清了,基本上问的很基础)
二面(20min):
(二面差一点错过了,我身边面试者二面都是短信通知,我是被喊名字的,尴尬的是工作人员把我名字喊错了,还好面试者提醒我,叫我去问一下)
1. 递交简历,面试官看了1-2分钟简历,没说话。
2. 为啥选择华为?
3. 你是打算继续做Android呢?还是做java呢?(能继续做Android更好,做Java可以第二志愿.....)
3. 你有啥要问的吗?我觉得你挺不错的,我挺喜欢的!(喵喵喵?就挺不错的了?....内心巨激动....)
4. 反问:“我想知道我哪里做得比较好.....”。你这模型很简单,华为适合你。阳光,积极,但是有一点不足就是压力大的时候可能很难顾及身边人的感受...
5. 反问:“这都看的出来。。。”。面试多了,看的出来的....(内心:这也太准了吧,我真的压力大的时候,很难顾及身边的人,喜欢跑步,也比较阳光吧,毕竟投了一个月,面试不多,一个offer call也没有,我依然保持微笑...)(感觉是参考了性格测试)
6. 我帮你投消费者BG吧,终端的......(给我介绍了一下北京和上海的分工)
7. 然后边录入信息,边问我一些其他的情况
8. 结束
总结:
整体面试体验很好,面试官也很nice,流程啥的也有条不紊,参加面试的人很多,工作人员也是全程支持。
现在变成了面试已完成,感谢你的参与,其实还蛮想去华为的,下次再努力吧!
逆袭字节跳动
字节一面:
Activity生命周期,每个回调方法的作用是什么
事件的分发机制
内存泄漏
遇到过滑动冲突吗?滑动冲突的解决方法
Hashmap原理
Hashmap扩容机制
手撕双重校验锁,volatile的作用
synchronized和volatile的区别
线程池的参数
异常机制
synchronized修饰static 方法和修饰普通方法有什么区别
双亲委派模型,为什么要这样
sharedPreferences的原理,多进程下是否可以使用,apply和commit 有什么区别
算法题:每k个反转链表
简单到怀疑人生。。。虽然双重校验锁卡壳了。。
第二天收到了二面通知
二面:
四大基本组件和作用
Activity生命周期,启动模式,taskAffinity,横竖屏转换,onNewIntent
Service两种启动模式,有什么区别。
广播,广播分类。普通广播、异步广播、有序广播
view的绘制流程
Framelayout wrap_content TextView match_parent 怎么显示
约束布局和RelativeLayout的区别
布局优化
include、viewStub、merge 的使用和区别
mvp、 mvc、mvvm
如何创建一个viewModel
Handler
ThreadLocal
怎么获取view的宽高,如何确定值是准确的,说了view.post(),补充viewTreeObserverOnGlobalLayoutListener
场景题:头条列表有多个不同的card,使用RecyclerView怎么解耦getViewType,获得不同的card
说了用个管理类映射,面试官说用注解、反射,依赖注入(我??我太菜了呜呜呜
java:
- 迭代器,迭代器怎么删除一个元素
- 说一下集合框架(Set、list、map
- Hashmap 原理,红黑树如何自平衡
- hashmap的Concurrentmodification 异常(不会
- 双亲委派模型
- 根类加载器加载什么类(jre包下的类
- GC分代算法
- GCRoots种类
- 四种引用
算法题:二叉树查找,将这条路上的结点存储
反问评价,面试官说不喜欢回答这个问题
问技术栈,kotlin
问跨平台技术,说是在别的地方也有用
问教育业务规划,说的很详细
问对字节的评价, 面试官说这是一家有方法有效率的公司,它的发展有目共睹,在这里工作能学到很多
-
问我怎么选择客户端开发,以及看待客户端的发展。
387+755+791=1953页的3份高质量《大厂面试宝典》合集
面试前准备(387页PDF)
Android大厂面试题集2020版(包含答案整理)第一部分(755页PDF)
Android大厂面试题集2020版(包含答案整理)第二部分(791页PDF)
点赞+评论666后!私信我口令【面试】!即可立马回复你免费下载此 阿里P8学习进阶笔记 的方式!
由于限制网盘链接,在我主页扫描我的二维码,我免费分享给你
-
自行下载直达领取链接:【点击资料下载】
总结+分析
简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。
选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围,平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!
面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。
另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤......所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!
最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。
希望大家都能找到合适自己满意的工作!fighting!