我的2017年秋招就这样过去了,因为距离去公司实习还有一段时间,又不想浪费时间,于是乎,打算总结一下个人在找工作期间的一些心得,介绍一下个人认为面试需要准备的一些知识。这篇文章主要讲知识,其他的比如简历、面试套路等都一笔带过。
首先,我必须表明我在秋招时所投的岗位全部都是“Android开发工程师”,也就是说这篇文章可能只有对做Android开发的小伙伴有一点帮助。废话不多说,下面就开始吧!主要内容分为“基础知识”和“专业知识”两部分。基础知识指的是计算机岗位共同需要的,专业知识则是指Android开发岗位才要求的。
基础知识
- 数据结构
- 面试算法
- 计算机网络
- 计算机操作系统
- 设计模式
专业知识
- Java基础
- Android基础
- 相关源码
- 第三方开源库
- 面试经验
上面给出了两部分内容的一个目录大纲,分类是以我在面试中实际被问到的情况为依据的。比如像阿里这样的大厂则比较注重面试者的基础,如数据结构,排序算法,设计模式都有问到。 而网易则比较重视实际项目,项目这一块问得比较多,但是作为一个面试者来说应该是各方面都懂才好,这样各类型公司的面试你就都不慌了。
数据结构:
相信大多数计算机专业的同学在学习期间都有学习过数据结构这门课,所以复习起来不是那么的困难,而对于面试来说掌握的知识是:线性表,队列,树和图相关知识。
面试算法
其实算法这一块可以和数据结构结合起来,因为很多面试算法编程题目考的也是数据结构的知识,比较常见的算法编程题涉及的相关知识如下表:
- 排序算法
- 字符串问题
- 队列和栈相关问题
- 链表
- 二分搜索
- 二叉树
- 位运算
- 排列组合
- 概率
- 动态规划
- 智力题
计算机网络
计算机网络也是许多公司喜欢问到的,如果时间充裕,个人建议可以好好阅读一下计算机网络相关书籍,丰富一下自己的知识体系。下面是一些面试中常被问到的点:
- OSI七层模型与TCP/IP的七层模型?
- TCP和UDP的区别?
- TCP三次握手和四次挥手?为什么需要这样的次数?
- HTTP协议,GET和POST的区别?
- HTTPS与HTTP的区别?
- SSL的加密过程
- 常见的加密算法?
上面只是一部分,更多的计算机网络相关知识,也可以参考这篇文章:计算机网络
计算机操作系统
计算机操作系统在我的面试过程中被问及的次数较少,但是在笔试题目中出现的概率较高,这里暂时不写。
设计模式
设计模式在面试过程中被问及的概率较大,大部分是问面试者是否知道某个设计模式或者项目中适用到哪些设计模式?以及这样做的好处是什么?最基础的知识点有:单例模式,以及单例模式的线程安全与非线程安全的几种写法!建议大家学习的时候根据每种设计模式的应用场景去学习,多问一下自己问什么要这样,以及这样做的好处在哪?这样便可以知其然,知其所以然,而不是纯粹的靠记忆!
Java基础
Java基础是必定会问到的,常考的有以下几点:
- Java集合,如List和Set的区别?
- static关键字的作用?
- 进程与线程的区别?
- 抽象类与接口的区别?
- 四大引用
- Json、Xml的数据解析
- Java虚拟机的相关知识(Java内存模型、垃圾检测机制,垃圾回收算法)
- Java并发相关知识(各种锁、死锁 ,volatile、线程安全、线程调度以及线程池)
Android基础
- Activity、Fragment、Service以及Application的生命周期
- IPC的几种方式
- 四种启动模式
- mvc 、mvp和mvvm的区别与联系
- 自定义控件的相关知识
- 内存泄漏和应对方式
- 说一下Android 中的JNI和NDK
- Activity的生命周期和横竖屏切换的生命周期
- 对于sqlite的理解 (数据库相关知识)
- 项目架构与难点?
相关源码
这部分包含Java和Android两部分的相关源码:
Java部分
- ArrayList,LinktedList的的相关源码?
- HashMap,LinktedHashMap的相关源码?
- concurrentHashMap的相关源码?
Android部分(推荐Android开发艺术探索)
- Handler机制
- 事件分发机制
- RecyclerView的源码,说出为什么他比ListView要好 ?
- Activity的启动过程(源码理解)
- Binder机制
第三方开源库
- 网络库(okhttp + Retrfit)
- 图片加载框架(Glide)
- 事件订阅及分发(EventBus)
- RxJava等
面试经验
这一块主要是面经了,多看一下别人的面经与要面试公司的面经,这可能对你有所帮助!
后记:
推荐的书籍与网站
书籍:
- 数据结构(严蔚敏)
- 剑指Offer
- 深入理解Java虚拟机
- 深入理解Java并发
- 计算机网络(自顶向下)
- 设计模式之禅
网站:
- 牛客网
- 赛码网
- LeetCode