对于面试的思考
我想面试对于程序员来说是很重要的一件事件,面试结果的好坏直接决定了能否进入某个公司以及以什么级别和待遇进入某个公司,本人是一个刚刚工作四年的Android工程师,毕业以来都是待在阿里,回想这几年,在Android的路上,摸爬滚打,但是就是害怕面试,每次面试都会问一些,有的没得知识点,甚是讨厌, 这不又是悲催的九月,开始面试了,先总结下,回顾下知识点。希望对大家有帮助
什么是合适的候选者
在介绍如何面试之前,这里先从公司的角度来分析:”到底什么样的候选者是公司所需要的技术人才?“就我在百度的一些面试官经验来说,一个具有如下特征的Android程序员是我们所需要的:
- 具有本科及以上学历(名校更好)
- 具有2年及以上的工作经验(名企更好)
- 技术扎实,有技术追求和工作激情
- 良好的沟通和协作
在上面的四条中,其中第3条是最为重要的,即技术,在百度技术是大家所推崇的,因此技术是决定能否通过面试的最重要最直接的原因。一般来说,越是大公司,其对技术的要求就越高,尽管部分岗位并不需要那么好的技术,但是为了对候选者做出区分,其面试过程仍然会面试一些稍微深入的话题,相信大家都有所体会。
除了技术以外,良好的沟通和协作能力也是比较重要的。也许很多人觉得这个比较抽象,心里会想:”你怎么知道我有没有良好的沟通和协作能力呢“?其实这个问题并不难,面试过程就是一次沟通过程,如果不能和面试官很好地沟通,这就说明候选者的沟通有问题,其次就是自身得熟悉面试中所会问到的问题,了解到底技术掌握到什么程度才能比较轻松地通过面试。
java
- 基本数据类型有哪些。
- 集合都有哪些,哪些是线程安全的, 以及集合之间的对比,哪个集合可以实现有序且不重复。
- 限定修饰符,final static 用法
- 什么是面向对象,面向对象的好处,以及面向对象的特点
- 为什么匿名内部类访问局部变量需要加final
- 什么是多态,多态的意义是什么。
- string。stringBuffer stringBuilder区别。
- 网络协议, http https请求。怎么保证通讯安全。
- sock通讯。 数据包怎么发送。黏包问题怎么解决
- tcp/ip协议
多线程
- 实现多线程的方案都有哪些
- 线程池的使用
- run 和start方法区别
- threadLocal是否使用过,知道原理么?
- 怎么实现多线程安全访问同一数据源
- 生产消费者设计模式怎么实现的。
Android
- Handler通讯机制,必须分析源码,怎么做到跨线程的
- handler内存泄漏怎么解决,为什么加static就可以避免内存泄漏
- 四大组件生命周期
- activity 启动模式,以及特点
- activity之间传递数据的方式都有哪些
- service 开启方式,以及不同的生命周期,多次start 或者bind 生命周期,多次start ,然后一次stop此时还有几个服务
- service中是否可以做耗时操作。前台服务开启方法
- broadcast 有序广播,无序广播启动方法是什么,这两个广播又什么区别。
- 静态广播接收者,和动态广播接收着,区别。
- contentProvider。
- 网络框架 选一个进行源码分析
- 图片加载框架 选一进行源码分析
- Oom ,anr 处理,以及怎么定位分析。
- apk优化,适配方案,多渠道打包,加固
- aop编程
- 主流框架使用
- 自定义view流程
- 事件分发机制
- mvp ,mvc架构优缺点
- 设计模式 讲解 可以做到手写
总而言之,言而总之,每个知识点,都要掌握的很好,尤其是源码分析的地方要做到,心中有源码,源码在心中,面试中的很多问题需要从源码中找答案,希望大家都会找到一个好工作。
读者福利:我把最近一两年面试过的一些Androida面试题还有一些朋友分享过的大厂Android面试题资料,整理成了PDF文档,一起分享给大家。
需要资料的Android工程师朋友们,点击下方卡片扫码即可免费领取,希望可以帮助大家在工作上和跳槽找工作起到一定的作用。