Android开发1年半,2本学历,传说中的Curd程序员,面试
个人背景
如标题所示,我的个人背景非常简单,Android开发经验1年半,学历普通,2本本科毕业,毕业后出来就一直在Crud,在公司每天重复的工作对我的技术提升并没有什么帮助,但小镇出来的我也深知自我努力的重要性,想要改变“命运”,没有背景没有资本的人,只能通过勤奋获得。
幸运女神往往会眷顾努力的人,所以当好运降临到我头上,我并不诧异,目前拿到了美团30K的offer,下文也不说废话,主要分享我这次“美团面试经历”和“个人学习方法”,希望能帮助到你们。
内容过多,不适合在文章全部阐述,下文的面试题以及学习资料都有整理在pdf里,需要完整pdf版的,可以私信我看到全部资料内容。
美团面试经历(还原最真实的3面)
美团一面:
1、手写算法题。猫扑素数;1到n,求1的个数;单词反转;
2、Activity的加载模式。
standard,singleTop,singleTask,singleInstance。
3、什么时候会用到singleTask?
在MainActivity的时候用到
4、Handler机制?
5、一个线程是否只有一个Looper?
6、如何保证一个线程只有一个Looper?
7、多线程的方式有哪些?
8、ANR异常发生条件
(1)5s内没有响应用户输入事件
(2)10s内广播接收器没有处理完毕
(3)20s内服务没有处理完毕
9、如何分析ANR?
10、自定义View和ViewGroup
11、事件处理:分发,拦截,处理。
12、GC算法
13、View动画,属性动画,帧动画。再说下View和属性动画区别。
美团二面:
1、OkHttp原理?
2、Retrofit原理?为何用代理?代理的作用是什么?
3、ButterKnife原理?用到反射吗?为什么?
4、ANR异常如何查找并分析?
5、JVM内存模型?性能调优?
6、垃圾搜集算法有哪些?G1算法?
7、Http和Https的区别?
(1)Https是ssl加密传输,Http是明文传输
(2)Https是使用端口443,而Http使用80
(3)HttpsSSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比Http协议安全
(4)Https协议需要到CA申请证书
8、加密算法有哪些?对称加密和非对称加密的区别?
(1)MD5,SHA1,Base64,RSA,AES,DES
(2)对称:使用相同密钥,需要在网络传输,安全性不高。
(3)非对称:使用一对密钥,公钥和私钥,私钥不在网络传输,因此安全性高。
9、TCP的三次握手?两次行不行?为什么?TCP攻击知道吗?如何进行攻击?
10、内存优化如何做?
11、看过哪些源码?
12、会对代码进行review吗?何时review?怎么review?
13、项目中遇到的让你棘手的问题?多久解决,怎么解决?
14、平时如何学习?何时学习?怎么学习?学习渠道?
美团三面:
1、前几次面试感觉如何?
2、你现在的APP日活是多少?
3、你现在如何处理崩溃日志?
4、你觉得小团队好还是大团队好? 5 你的优点和缺点说下?
6、你的发展方向说下?是先讲究宽度还是讲究深度,为什么?
7、为什么离职?
8、其他小问题,如哪里人啊?现在工资怎样?要求如何,何时到岗啊?有什么问题要问我的吗?
让“努力”成为自己的背景(如何学习?)
1、看视频进行系统学习
这1年多的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:
2、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。
所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
3、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
总结
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
文章内容中涉及到的Android面试题、源码文档,技术笔记等学习资料,均可以免费分享给大家学习,只需你动动手多多支持即可!需要的同学可以私信我获取!