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