我的 2015

毕业工作三年,一直埋头应用层开发,专业理论知识有恢复出厂设置的危险,而且深感各方面提升都遇到了瓶颈;
而去年疯狂地尝试各种新技术,导致战线拉得太长;所以今年自然是回归主旋律、填坑为主:代码写得少,书看的多,总结归纳的多。
通过对基础理论的复习巩固和专业领域的深挖,不仅重新(初步)完善了知识体系,还顺利拿到鹅厂 offer,也算弥补了四年前校招的缺憾。

夯实理论基础

数据结构与算法

去年正好复习过常用数据结构和查找排序算法,做了笔记,并用 Golang 写了实现,所以只是简要温习了一遍;

参考: 《算法》;

操作系统

  • 进程管理(同步/死锁、进程调度策略);

  • 内存管理(页面置换算法);

参考: 《操作系统:精髓与设计原理》;

计算机网络

  • 网络分层模型;

  • HTTP 协议(Header 字段、Status),HTTPS 通信过程;

  • TCP 协议(三次握手/四次挥手、超时控制、滑动窗口机制、拥塞控制、提高网络利用率);

  • UDP 协议;

  • 二进制协议(ProtocolBuffer);

参考: 《计算机网络:自顶向下方法》《图解 TCP/IP》《HTTP 权威指南》;

密码学

  • 对称加密、非对称加密、消息摘要、数字签名等常用算法;

参考: 在线资料;

深挖专业领域

Android

  • init 启动过程、zygote、SystemServer、WatchDog;

  • Binder 通信机制;

  • Surface 系统、WindowManagerService;

  • PackageManagerService;

  • PowerManagerService;

  • ActivityManagerService、OomAdj/LowMemoryKiller;

参考: 《深入理解 Android : 卷 I》《深入理解 Android : 卷 II》;

Java

  • Java 内存模型、内存分配和 GC 触发策略;

  • GC 算法(分代、拷贝、根搜索、标记清理/标记整理),回收器(Serial、ParNew、CMS、G1 等);

  • ClassLoader、DexClassLoader、PathClassLoader;

  • JNI、NDK;

参考: 《深入理解 Java 虚拟机》;

其他内容的学习

由于项目中有 C/C++ 代码,并且涉及到图像处理,所以对相关内容做了学习:

  • C/C++ 语法复习及盲点梳理,继续学习 C++11 的线程和并发相关内容;

  • OpenCV 入门(Filter 相关函数稍作了解);

参考: 官方文档;

参与开源社区

创建的 issue

参与的 issue

16 年计划

技术相关:

  • 继续跟进 Android 相关新技术;

  • 继续复习操作系统的文件管理模块,以及 Linux 操作系统的一些重要原理(epoll 等);

  • 复习数据库原理(之前考虑到做 APP 开发不像 web 开发对数据库设计要求这么高,面试被问到可能性不大,所以没专门复习);

  • 复习计算机体系结构、数字电路、微机原理等底层理论知识;

  • 继续复习数学相关内容(微积分/概率统计/线性代数);

  • 继续熟悉 OpenCV 图像处理和人脸识别相关内容;

其他方面:

  • 学驾照,真的不能再拖了;

  • 学素描,去年就开始计划的…