2021 年 Android 程序员职业规划,阿里 P7 大牛亲自讲解
阿里面经
面试形式是电话面试,算法是面试官会给你邮箱发一个链接,然后在那个网站里面就可以同步共享屏幕,网站类似于一个编辑器,不能编译,写了代码面试官会看,交流还是在电话里面完成。
一面(1 小时)
重载与重写
final 修饰符
抽象类和接口
GC 机制、原理
finalize( )的理解
GC 机制如何判定哪些对象需要回收
GCRoots 有哪些
四种引用
垃圾收集算法
Hash Map 与 Hash table 的区别
怎么让 Hash map 线程安全
Thead Loocal 了解吗?
线程同步的几种方式
加锁与 synchromized 区别
Volatile 了解吗
JVM 内存模型
leakCanary 内部机制
Handler 内部机制
MNC 与 MVP 的区别,以登陆模块为例讲一下每层的工作
EventBus 的原理
布局优化 include.merge,viewStub
view 的绘制流程,自定义 View
时间分发机制的区别
JVM 与 Dalvik 区别 (Android 虚拟机)
二面(50 分钟)
自我介绍
abstract 和 interface 区别
int 和 Integer 区别
四种引用
Java 里面 int、char、long 的字节数
线程的创建方式
RxJava 的优缺点
EventBus(???不会)
从网络上加载一个 10M 的图片,要考虑哪些
http 与 https
http 1.0 和 http 2.0 之间的区别
设计模式准则(全忘了)
Handler 机制
算法:判断一个链表是否回文
算法:给定一个数组,将数组里面的每一位向后移动 k 位
三面(40 分钟)
HashNlap 与 Hashtable 的区别
Hashtable 怎么实现了线程安全,效率低。为什么?
Android 线程池通信的方式
TCP 三次握手
内存泄漏的几种情况
进程的优先级
非静态内部类为什么持有外部类的引用
在 JVM 中非静态寸内部类的,class 是单独的还是在外部类的 class 中?内部类的 class 文件名为“外部类¥内部类.class”
Activity 启动模式
Activity 启动流程
Handler 机制?为什么会存在内存泄漏?
MVP 是怎么实现的
Glide 原理?怎么实现缓存
面试心得
1. 算法题怎么答
面试官可能会问到你闻所未闻的算法,这时候你不应该自己瞎想,而是先和面试官把问题讨论清楚。要知道,通过沟通弄明白复杂的问题也是一种能力,在和面试官交流的过程中,不仅仅可以搞清楚题目真正的意思是什么,还可以展现自己良好的交流沟通能力。所以千万不要因为紧张或者害羞而浪费这次大好的机会。有些题目似曾相识,但是暂时没有思路。这时候不妨告诉面试官,给我一些时间思考这个题。然后不要急,不要慌,就当他不存在,拿出纸和笔慢慢算(这充分说明了面试戴耳机的重要性)。你一定要坚定一个信念:“任何一道稍微有难度的算法题,除非做过,否则一定是需要时间想的”。所以,合理的安排思考时间吧。如果十几分钟都想不出来,可以直接放弃。
2. 遇到不会的问题怎么处理
这个问题有可能是面试官故意说得含糊不清,考察你的交流能力,也有可能是无意的,或者是你的理解方式出现了偏差。不管是以上哪种问题,你都应该先和面试官交流,直到你搞懂了面试官要问你什么,而不是按照自己的理解说了一堆无用的东西。举个例子,面试官可能会问了一道算法题:“如何判断两个无限长度的链表是否有交点?”。对于“无限长度”可以有不同的理解,如果真的是有无穷多个节点,那显然这个问题是无法解决的。但如果链表仅仅是有环,那么还是可以解决的。如果面试官的本意是链表有环,但你错误的理解成了无穷多个节点,那么必然会导致无法回答这个问题。而且这并非能力不足,而是属于交流沟通方面的失误,这也正是我想分享的“技巧”。
3. 遇到真的不会的问题怎么处理
遇到不会的问题果断承认啊。如果是基本问题,比如问你哈希表怎么实现,你说不会,那么这次面试可能就悬了。如果是有一定难度的问题,那么你承认不会,也是一种明智之举,毕竟人无完人,一个问题不会并不能全盘否定一个人的能力。
4.心态
面试的时候一定要控制好心态,一个好的心态往往更容易拿到 offer。
总结
开发是面向对象。我们找工作应该更多是面向面试。哪怕进大厂真的只是去宁螺丝,但你要进去得先学会面试的时候造飞机不是么?
作者 13 年 java 转 Android 开发,在小厂待过,也去过华为,OPPO 等,去年四月份进了阿里一直到现在。等大厂待过也面试过很多人。深知大多数初中级 Android 工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和 PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图
开源分享:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
评论