从投第一份简历,到现在正好两个月。感谢两个月来身边的同学,牛客网小伙伴,我的学长,亲人等对我的支持,没有你们,我很难坚持到现在。
三月很惨淡,百度不招Android,腾讯没给面试机会,阿里一面挂,头条两次一面挂... 一共投了二三十家,收到的面试寥寥无几,甚至没有哪一家能进入二面,整个人真的很难受。但是,找工作还是要继续要,渐渐的开始总结面试,把面试录音记录下来复盘,反复复习知识点,查阅其延申的内容,多敲代码,终于在四月迎来的转机。360,华为,蘑菇街,腾讯,拼多多...offer雨般的到来,我一下子觉得之前的付出都值得了。
说了一堆,回馈牛客的时间到了。我面试的是Android实习。
Android
第一行代码,艺术探索,进阶之光。
进阶之光是对艺术探索的补充,艺术探索太理论化了。进阶之光覆盖面更广,书中有很多例子,可以帮助我们理解。
- Activity生命周期和启动模式
- ListView优化,RecyclerView的实现原理,两者比较
- Fragment生命周期以及简单使用
- 广播:标准广播,有序广播,本地广播,以及运用
- 文件存储:文件,SP(缓存),Sqlite
- Content Provider的简单使用
- 网络,HttpConnection
- Service,AsyncTask(源码),IntentService(源码),Handler机制(源码)
- Glide源码(我看的是郭霖的博客),OkHttp源码(看的是进阶之光) 如果需要进一步了解还是要去看源码的
- View机制源码,TouchEvent的三层传输,解决滑动冲突的方案,简单的自定义View,测量布局绘制
- Bitmap加载优化,采样率,LruCache以及它的实现
- 内存泄漏的几个场景,单例,Handler等
- 线程池,几种常见的线程池,线程池相对于线程的优点。
- 几种动画,以及区别(问的少)
- MVC/MVP/MVVM,参考进阶之光
- 进程之间通信方式,网络的Socket;磁盘的文件,ContenProvider,数据库;内存的Intent,Binder
- Binder,问的比较少,面试的时候可以说不知道,大部分面试官不会为难的
- 还有一些比较细的知识点,需要自己去总结了,多去写代码,不要只看不练,如果时间不够,结合自己的简历准备,有着重点的学习/复习。
Java
Java核心卷I,JVM虚拟机,Java并发编程。后两本没有全部看完,主要看的是GC和类加载那一块,并发的话主要是查询知识点顺带看的。
- Java基础,8种基本数据字节数,封装继承多态,接口运用,基本文件,输入输出...之类的
- 几种内部类,尤其是静态内部类不持有外部类的引用(内存泄漏那一块)
- 反射
- 集合框架很重要,ArrayList/LinkeList区别,HashSet/TreeSet区别,HashMap(源码)以及和HashTable,CurrentHashMap,SyncMap的区别。HashMap几种遍历方式,CopyOnWriteArrayList的实现。
- 线程/线程池,四种常用的线程池,线程池处理的流程(进阶之光),锁(类锁/对象锁,可重入锁/不可重入锁,公平锁/非公平锁,简书上有一篇比较好的文章)
- GC三种算法,GC_Roots的选取,GC的时间安全点,安全区,大对象的处理,7中收集器的原理
- 类的加载
- 还有一些关键字:volatile,final(修饰域,方法,类,哪儿运用了),finally,finalize,static(域,内部类,方法,哪儿运用了)
数据结构
- 栈实现队列,队列实现栈
- 排序:插入,冒泡,选择,快排,堆排,归并,要求时间复杂度,空间复杂度,稳定性,要求会写
- 查找:二分法,散列(散列冲突的几种解决方法)
- 树:前序中序非递归遍历,层次遍历(要求5分钟内准确写出来),生成树算法(动态规划/贪心)
- 其他:链表倒置,回溯法,递归的运用
- 建议:剑指Offer,LeetCode上腾讯/头条的训练题,大概加起来200+题
计算机基础
操作系统主要复习:
- 内存管理:内存分配算法,分段,分页....老化,护航效果等等...
- 并发调度:线程,进程,调度算法,进程之间通信等....几种通信方式以及总结
- 死锁产生的原因,以及解决方法
计算机网络主要复习:
- 应用层协议:HTTP(头字段,1,1.1,2各个版本的区别,状态码2/3/4/5),HTTPS(TSL/SSL),DNS,断点续传
- 传输层:TCP(三次握手,四次挥手,滑动窗口,拥塞控制,流量控制),UDP,两者之间区别
- 网络层:IP,(路由表生成)
密码学:(这一块主要因为简历中写了Https,做的准备)
- 对称加密:DES,多重DES
- 非对称加密:RSA,Diffie-Hellman,Elgamal 之间实现原理的区别
- 数字签名,MD5
设计模式
《Android源码分析》,这本书比较难懂,选择部分内容看的,结合进阶之光比较好。
- 创建型设计模式:单例(每种都需要理解原理),工厂,生成器,原型 (前三个最重要)
- 结构型设计模式:装饰器,外观,享元
- 行为性设计模式:观察者,策略
知道Android源码哪些地方使用了这些设计模式就更好了!
其他加分项
- 会使用git/github
- 简单使用Linux(基本指令,权限系统,文件系统)
- 有写博客的习惯
一时半会儿想的起来的只有这么多了。谢谢两个月来,大家的陪伴!十分感谢!
不要放弃,要加油!坚持努力,一切都是上天最好的安排!
网友评论