马上过35岁生日了,和大家聊聊最近的情况。
半年前还在迷茫该学什么,怎样才能走出现在的困境,半年后已经成功上岸阿里,感谢在这期间帮助我的每一个人。
伊始
30多岁工作的时候总是有种力不从心的感觉,正值壮年却活得像个五六十岁的人。
在北京工作,靠着家里支持买房,房贷车贷、孩子的学费、培训班的费用、以及琐碎的日常生活费已经让我喘不过气来。
工资勉强高过支出,但我还能再工作几年呢?
陷入迷茫
工资比不过年轻人,还要被年轻人管着,心里很不舒服,还是得干啊,不过我想他们也不愿意管着年龄大的人吧,而且我加班也不如他们厉害。后来还是被劝退了,拿到了一笔赔偿金,但是没了工作的我如何保证家庭的支出啊!
投了很多简历都石沉大海,面试邀请少,有几家公司还挂在了三面,很可惜。准备学习时却发现不知道该学什么,没有一个方向,幸好还有这笔赔偿金让我有缓冲的机会……
偶遇贵人
偶然间在网上看到了一篇技术文章,点进他的个人主页,有很多关于面试技巧的文章,作者个人信息里显示他在阿里做Android开发,可以做一些面试指导。也许是运气到了,闲聊了两句,他似乎对于我的困境很是了解,给我指明了学习方向,并根据我的情况额外给予了我很多相应的资料。
告诉我,未来的路还很长,38岁面进阿里的都还有,让我别慌,稳扎稳打地先把基础打牢,再根据现在面试的重点针对性的提升自己相关的技术,后面再好好整理下简历,准备下面试……
疯狂学习三个月,拼出一个奇迹
这三个月学习真的很辛苦,值得庆幸的是最后付出得到了收获,成功上岸阿里!
这三个月我是如何度过的?
每天只要一有时间都忙着学习,家庭琐事全交给媳妇了,保证自己的学习时间每天4h以上。
梳理框架
基本可以说是从零开始,一点点梳理自己掌握的框架,看看自己还能掌握的技术有哪些,说真的,不梳理不知道,每天对于业务CRUD已经让我除了工作经验连刚毕业的大学生都不如了。
打牢基础
基础真的很重要,在补基础的时候按照他提供的方法,只补基础,不深入学,先完善自己的技术栈,凭借着已有的经验,我复习得很快,没多久就掌握的差不多了。
逐渐深入
到这一步才开始深入学习,由于前面已经打好的基础,到这一步学起来感觉不是很难,掌握好学习的节奏,慢慢深入就可以了,这没什么好说的。
修改简历
经过这段时间的学习,简历上的技术栈相对以前来说要好看了很多,再根据他的指点,对简历上的项目进行了一些优化,突出用过的技术,遇到问题的解决方法等,并换位到HR角度去看自己的简历有没有什么不足的地方,先让自己的简历拿到足够多的面试机会。
面试准备
根据简历上的内容,尝试着自己对自己模拟面试,从基础开始,由浅入深,同一个知识点换不同的角度、逐渐深入,先问出自己能问的所有问题再尝试着解答,看看自己能够达到什么程度,对自己有一个明确的了解……
向大厂投递简历
到这里我是非常的慌的,我不认为自己还能进大厂,不过还是按照他的建议向阿里、字节等大厂投递了简历,没想到短短几天收到了四个大厂的面试邀请,突然对自己有点自信了!
大厂面试
大厂的面试问得真的很深,还要前面有所准备,一面的时候还有些紧张,后面就慢慢自信起来了,哪怕是和HR聊薪资也敢往上要了,最后拿到了阿里、京东、滴滴三个大厂offer,字节算法面的很多,也是被卡在这了,没面过。最后还是觉得去阿里,虽然阿里给的不是最多的,但我面试的部门相对轻松一些,可以更好地兼顾家庭。
面经、笔记分享
我是如何拿到阿里offer的已经告诉你了,和各位小伙伴相比差的就是这段时间学习时的资料了,这里我将最重要的面试笔记拿出来,分享给大家。
一面
1.mmap + native 日志优化?
2.广播和 EventBus 的区别?
3.常用设计模式你了解哪些?
4.跨进程通信有哪些?
5.简单讲讲 binder 驱动吧?
6.跨进程传递大内存数据如何做?
7.说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
8.启动优化怎么优化?
9.你写的 rxpay 和 rxlogin 具体怎么实现的?
10.kotlin + fullter 方面的
二面
1.单例设计模式都写写,静态内部类是怎么保证线程安全的?
2.synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。
3.主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
4.自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按时间分别是怎么实现的?
5.四种启动模式,在源码分析中的原理是怎样的?
6.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
7.开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?
三面
1.讲讲 handler 的底层实现原理?
2.说说你做的日志记录优化?
3.你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进程传递大内存数据你具体会怎么做?写一写。
4.在公司做过哪些优化?
5.过程中遇到的一些最难解决的问题?
6.提到了动态修复替换加载 so ,那你知道怎么修复 class 吗?怎么修复资源呢?
7.还有什么要问的?
面试复习路线,梳理知识,提升储备
自己的知识准备得怎么样,这直接决定了你能否顺利通过一、二、三面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。
更多的ms可以查看我的个人介绍!!!