辗转面试近半个月,下周正式入职头条,今天凌晨五点醒来,有点失眠,满脑子都是几件事,想找个出口记录一下。
当年硕士毕业的时候,按乡下亲戚的话算得上“别人家的孩子”,211硕士,应届时的薪资比较可观,程序员起点高,在三线城市买房买车,然后相亲结婚都是后来顺理成章发生的事,余不一一。
可是美好状态的保鲜期真的不长,职场好几年,因为过早的满足于现状,没有了干劲和冲劲,越来越感觉自己一事无成,不知道从什么时候开始,只愿意做分内的事情,所有的工作都中规中矩,薪资涨得慢又微薄,直到计划年前要小孩的时候,才恍然回过神,觉得自己好像不能确定给小孩很好的未来。
在原来的公司,很长一段时间每天的状态都很疲惫,得过且过,工作真觉得有什么困难也不至于,在半大不小的公司做Android程序员,只要不太懒都还能继续混,偶尔看着新入职的年轻人殷勤加班,问这问那的觉得很能折腾,甚至有点羡慕。
可能人到了中年就越来越怕折腾,习惯频繁的告诉自己要知足一些,肩上是父母和家庭,你没有一点出错的余地,蜗牛的壳很重,但也是它的家,要背好背稳。
跳槽的契机是和同学的一次聊天,被花里胡哨所谓“追求生活质量”的想法一冲脑,加上要准备养育小孩的压力,竟然开始真正找机会和联系内推面试了。
努力争取到的大厂机会有华为、阿里、头条,除此之外,还有一些和老公司差不多规模的,面试没有什么特别要讲的,就先略过。
1.华为四面
被问到的面试题:
自定义 View!
View 的绘制流程。
自定义View的步骤。
PhoneWindow 实例是在哪个类哪个方法中实例化的?
Selector 是怎么实现的?
View 动画是怎么实现的?
为什么移动后点击事件还在原来的位置?
Android 系统源码方面
事件拦截和分发进程间的通信方式
应用的创建启动流程
Handler 是怎么导致内存泄露的
第三方库的源码,Glide、OkHttp 和 Retrofit MVC,MVP和 MVVM 开发模式优缺点
常用设计模式理解
Binder 驱动和虚拟机
数据结构和算法,Java 的常用集合和实现原理
ArrayListLinked
HashMap 的实现原理
缓存淘汰策略
红黑树和二叉树
最短路径规划
海量数据筛选
手写算法!
性能优化
如何检测一段代码的执行时间?
界面卡顿如何修复?
滑动不流畅怎么处理?
50fps 有什么办法可以提高到 60fps?
内存泄露怎么检测?
leakcanay 的原理?
线程和线程池
wait() 和 sleep() 的区别?
同步锁线程池的参数详解?
AsyncTask 源码参数详解?
2.阿里
被问到的面试题:
自定义view、书架模块化
app的启动流程
helloword jvm是如何进行绘制到屏幕上的(类的加载过程)
java jvm垃圾回收机制
有没有看过什么源码?
okhttp原理、gilde等
如何使用okhttp去使用代理模式
https 如何连接,如何去申请证书,如何验证证书,证书如何传递
有什么工作是你主动提出来的,为什么要替换图片库,在shenm场景提出来的,别人提出了些什么
android中内存泄露是什么,有一些什么场景,有什么常用的工具(原理)
一次完整的http请求是什么样的
okhttp如何支持HTTP2的
3. 头条
被问到的面试题:
简述Android事件传递机制, ACTION_CANCEL事件何时触发?
Android的进程间通信,Liunx操作系统的进程间通信
JVM虚拟机内存结构,以及它们的作用
简述Android的View绘制流程,Android的wrap_content是如何计算的
android的IPC通信方式,是否使用过
Android的多点触控如何传递
AMS以及PMS概述、启动流程等
面试的过程很考验心态和技术熟练度,个人很幸运实现了向前的大跨步,期待未来。
最近休息时间读了一本叫《饱食贫民》的书,写的是日本泡沫经济时代的个体故事,其实程序员不能常青的坎在上世纪90年代泡沫经济的日本就一直是个热搜了,计算机领域的更新代谢速度一直都很快,想站在浪尖上就要急流勇进,害怕被淘汰的“社畜”,唯一的出路就是再学点儿、多学点儿。
一直前行,才会不惧洪流
祝愿大家技术上长生不老,体力和精神也一直良好,早日年薪百万。
以上。