无论你是面试之后需要知识点总结,还是正在准备面试的伙伴,在这里给你们分享一份阿里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!

更多推荐

6月阿里遭拒-7月华为惨败,90天深造1953页的《大厂面试宝典》,获字节跳动offer!(经验+面试题+学习路线总结)