8年Android:从普通大专到阿里只用了5个月,我是如何在迷茫期后拿到Offer,定级阿里P7?

前言

要说程序员最想要进入的大厂,阿里,腾讯,百度必定是首当其冲,而互联网大厂必定是阿里巴巴首当其冲,今天就来分享一下我面试阿里的一些经历与心得。

不想进大厂的程序员不是好程序员!

80%的oer掌握在20%的人手中”这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部 分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。

本人也是经历了大半年的准备才拿到了阿里的offer


个人经历

普通专科毕业,12年转行进入软件开发行业。在杭州工作两年,14年来到深圳,从事Android开发一晃8年。

总的来说,工作8年,做过一些尝试和努力,但可能没有遇到好的机会或者选择的方向错了,导致至今混得不尽如人意。


人生转折

出于对现状的不满,我决定要努力奋斗了!

因为觉得这样确实是在浪费自己时间,(看着同期的同学都在茁壮成长) 与其坐以待毙,不如我自己先出去试试水,去一家能够迅速成长的公司。提完离职申请,我开始有意识看些面试问题,重拾培训时的笔记,背题目,看些基本的知识问题……

人生的路,一步慢,步步慢。如果在一开始就落后的话,只会与那些早有准备的人越离越远。

这段时间看过的书

《Android从入门到精通》
《第一行代码2 Android(第二版)》
《Android开发进阶 从小工到专家 》
《Android进阶之光 》
《Android开发艺术探索》
《Android群英传》
《疯狂Android讲义 》

这些书也只是看了一部分,并没有全部看完,有时会经常带着问题就进入了梦乡,所以这段时期我的进展并没有太大明显。

分享下这段时期面试总结的一些经验

1、面试一定要带简历,这是态度问题,不然容易第一印象就不好。

2、简历上最核心的2点,

  • 自己掌握的技术栈说明,让面试官清楚知道你掌握技术栈;
  • 项目中使用了哪些技术栈,体现自己对这些技术栈的实际项目的运用情况。
  • 另外简历不要超过3页。很多早期的项目经验和大篇幅的项目功能介绍,并没有什么意义。

3、准时,实在有突发情况,要提前打电话商量修改面试时间。

4、至少提前几周准备面试,因为Android知识体系真的很庞大,不复习下直接面试,就像送人头一样,很容易错失难得的面试机会。

5、Android基础一定要掌握好,不然丢分非常严重。之前面试一个高级Android,竟然回答不出年轻代的垃圾回收机制,一下子我都不想继续聊下去了。

6、框架的核心特性要熟悉,并对其实现原理有一定的了解。

7、听清楚面试问题再回答,不要答非所问,太过自由发挥。你和面试官聊得越有共鸣,你通过的几率越高。不知道可以直接说不知道,然后再阐述下自己的认知和了解,以探讨的方式让面试官和你互动,这样也能偷师点东西。

8、了解不深的技术栈名词和机制,尽量回避,不然只要你提到,面试官就可能展开深入的问下去。

9、多积累一些技术圈的人脉,很多时候内推进入会容易很多。

10、多积累一些可展示的技术成就和作品,比如参与了某某著名网站或者APP的核心模块开发,在GitHub上开源了什么框架或者参与了什么开源框架的开发,著名博客网站的一些排名,运营某某技术公众号。

由于我自己学习的过程过于杂乱无章,所以这段时期面试的效果并不理想


小转折

经过这段时期面试的失败我总结了一个道理:学习需要的也不是一腔热血,需要的是长期的规划,这里分享一个思维导图,大家可以自行进行查漏补缺和规划:

需要这份引领行业“腾讯65W”年薪Android高级工程师成长曲线高清图的小伙伴可以点击获取

经历了这段时期系统性的学习后,筹备了半年终于又一次得到了去阿里面试的资格。


第一面

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、其他小问题,如哪里人啊?现在工资怎样?要求如何,何时到岗啊?有什么问题要问我的吗?

最后,你懂的,主要就是HR走流程了,主要问了未来的职业规划。

历经半年筹备,终入职阿里巴巴


最后

这半年多时间一直都在针对学习路线找相关的资料,也通过一位大牛朋友要到了一份Android高级架构师整理的Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。

每个知识点解析的很深,对大家应该很有帮助,它把大部分的Android知识集结在一起深入的解析出来(非常建议大伙看一看)

这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效的帮助大家掌握知识、理解原理。

分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。也是希望可以帮助到大家提升进阶

相信它会给大家带来很多收获。如果你有需要的话,可以点击获取

喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~

猜你喜欢

转载自blog.csdn.net/ajsliu1233/article/details/108986560