一直想写一篇年终总结的,但是又不知道写点什么,感觉没有什么可总结的,但是今年有很多事情还是值得回顾纪念的,之后再来看这些东西应该会感触颇多。2017 对我来说是值得回味的一年,可以用三个词来概括,成长、成果、成熟。这一年有太多不顺心的事情,也有很多值得纪念的时刻。对于我一个即将离开大学校园走上社会的大学生来说,2017 的很多经历都是弥足珍贵的。
我从今年年初就开始准备找工作的事情了,一开始我还是充满激情与信心的。但是事情往往不会像希望的那般发展,我找实习的经历是相当惨的,这里就不详细写了,不然写完就是我的血泪史。除此之外,从二月底就要开始准备实验室的纳新,,因为这是实验室每年最重要的一件事,当时正赶上找实习,那段时间真的是累,身心俱疲,我是边复习,边投简历,边准备纳新的很多资料,从横幅、海报、视频、各种申请资料到整体流程。每个细节都要自己过一遍,到自己满意,也要大家满意才行。直到三月底所有的准备工作都完成了,纳新结束后才有所缓解。当时实验室已经有大神同学拿到了实习 offer,我又开始全身心投入到复习的状态中,慢慢的,拿到 offer 的同学越来越多,而我还在准备面试,一开始是一面挂,后来就是二面挂,反正就是总差那么一点,期间总共面了阿里 (内推)、微信 (内推)、美团、去哪、腾讯、阿里,除了阿里和腾讯是二面挂之外,其他都是一面挂,相当惨烈,现在想想,那会自己是真的菜。然后到五月底实习基本就结束了,那会实验室有将近一半人拿到了实习 offer,然后我那段时间情绪就很低落。之后跟学长学姐聊天,然后开始重新准备,因为秋招才是最重要的。那会在牛客网看一些面经,意识到自己的不足,然后开始准备强化,每天在 LintCode 刷题,一边做,一边思考,一边整理,然后差不多有一个多月,到七月底的时候基本上把 LintCode 上 Easy 的都做完了 (LintCode)。然后秋招也已经开始了。
年终总结好像写跑题了,,,算了,接着写吧,应该也没几个人看。
我以为我在暑假的准备,在秋招开始后会有所成效,然鹅剧情又没像希望的那般发展。不过还是有成效的,秋招的公司没有太多一面挂的,好多都是二面挂,从 8 月初的 CVTE、360、好未来、美团到九月份的各种大厂,从九月初的天天笔试,到月中开始的天天面试,有时候一天好多场,那种感觉很微妙,从开始的期待到后来的担心,再到后来的失望以及绝望。有时候就在想,找不到工作就回家搬砖吧,但还是会每天爬起来奔波于各个酒店去面试,越往后越慌,大厂越来越少,真的快坚持不下去。到九月底的时候,还一个 offer 都没有(其实那会粗粮已经过了,只不过 HR 还没有联系我),后来十一收假后的第一天,粗粮的另一个部门捞了我一把,然后这次剧本终于按照希望的那样发展了,一个下午,两面技术,三个小时,结束战斗。过了两天 HR 就给了口头 offer,第二天正式 offer 就来了。然后请老铁们吃了顿饭,庆祝,结束!
一星期后,粗粮开始面的那个部门终于联系我了,是 MIUI 系统组,然后又欣慰了一把,对于一个 Android Developer 来说,MIUI 系统组是一个神圣的地方啊。然后我就去了啊。
年终总结写成这样我也是服,写到这就可以结束了吧,当然不是,其实也差不多,写成这样了就要再写一点有价值的东西,下面我把面试中遇到的 Android 和 Java 相关问题罗列下,这些只是我遇到的问题的总结,并不代表 Android 方面的面试问题,希望能对其他 Android developer 有所帮助。
Activity 生命周期,启动模式,保存数据的方式,需要注意各种情况下的处理,结合 Fragment,两者与 Service 通信
Service 启动方式,几种方式之间的区别,start 和 bind 的区别,IntentService,与 Activity 之间的通信,Service 保活
Broadcast 的注册方式,使用以及与其它相关框架的区别,比如 EventBus
ContentProvider 的使用及特点(不是很常见,但是需要注意)
ListView、RecyclerView 的优化,原理,以及结合相关设计模式的实现过程(观察者模式)
Bitmap 的缓存以及压缩处理,结合相关框架,如 Glide,Picasso,每一种的特点以及它们的区别
View 的事件体系,工作原理,滑动冲突,代理等相关内容,涉及滑动,绘制,事件分发,自定义 View,并结合相关设计模式等
数据存储,SharedPreference,File,SQLite,区别及特点
网络请求框架,HttpUrlConnection,Okhttp,Retrofit 等框架的特点,原理,与原生的区别,从请求方式,携带 header 等方面考虑。结合项目以及设计模式
多线程间的数据交互,Handler 原理,深入到 Native 层,以及其它的解决方案,比如 Retrofit,AsyncTask 实现
线程池特点,使用场景以及执行任务时的大致规则,结合网络框架
动画的种类,每一种的实现以及它们的区别
Android 中进程的优先级,以及每一种进程的使用场景
设计模式,结合源码以及框架,比如观察者(ListView,Eventbus),责任链(OkHttp,View 事件分发),项目结构 MVC,MVP 等
常用框架实现,网络请求:OkHttp、Retrofit,图片加载:ImageLoader、Glide、Picasso,事件驱动:Eventbus,动态绑定:ButterKnife
进程间通信,AIDL,Mesenger,File,Socket,Binder,每一种的实现以及底层原理,结合操作系统中进程间通信,管道、信号量、共享内存的对应关系(参考 gityuan.com)
系统启动流程、App 启动流程、应用程序进程启动流程、Activity 启动流程(参考源码情景分析,gityuan.com)
性能调优,结合布局优化,内存分配,缓存处理等方面
JNI 编程,插件化相关知识,动态加载以及 RN 插件
热修复实现以及相关框架 AndFix,Tinker
内部类,抽象类与接口的区别
集合源码,ArrayList,LinkedList,HashMap,Hashtable,LinkedHashMap,ConcurrentHashMap
线程及应用,线程同步
锁及其优化,synchronized、volatile
内存分区,垃圾回收,垃圾回收器,内存分配
类加载机制,内存模型
反射应用及原理
高并发
到这就差不多完了,2018,首先希望能每天都能充实一点,不管是在工作上还是在生活上,然后希望生活乐趣多一点,代码 bug 少一点。最后,自己知道就好。
--- 有点不像面经的年终总结,祝大家 2018,充实,快乐。
本文来源于牛客网
作者:谷哥的小弟
来源: http://www.jianshu.com/p/cb405ebbe91c