前言
不得不说,前两年的移动开发确实很火,可以说随便能鼓捣出来点东西都很容易找到工作。而现在明显降温了,对人才的要求也越来越苛刻,所以跟前两年比需求确实少了很多。但是安卓不仅仅局限于手机,智能家居车载系统电视机顶盒智能机器人的触摸板设置大部分都是搭载的安卓系统,所以市场的需求还是很大的。
本文希望达到的目的是为职场新人和毕业生提供一个面试经验的分享,使读者在找工作时有一个参考少走弯路,通过本文的阅读将收获到:
- 面试前的准备,简历编写规范和重点;
- 面试经历,大厂和小厂的区别和考察点;
- 安卓面试常问的知识点解析;
- 目前主流框架的使用,如何快速上手项目;
- 附历年大厂面试题总结。
概述
对于我们程序员而言,面试就是将自己所学的技术与面试官表达出来。以前上学准备找工作的时候,发现最先找到工作的不是技术最好的而是善于沟通活跃度高的人,而我听的最多的抱怨是 “为什么我明明知道这个东西,面试的时候却不知从何说起”。
本文会从我的自身经历出发谈一谈面试前如何做好充分准备,怎么流畅的表达自己的技术,以及进入项目时如何从一开始的手足无措、盲目下手到后来的淡定从容。
面试前准备
简历编写
对于任何阶段的面试者来说拥有一份精致的简历是很重要的,所谓精致就是要突出重点,特别对于技术类的简历来说废话越少越好。好的简历要有辨识度,记得以前听 HR 聊天时说:“明明没啥东西写了两三页,看到后面才知道他要干嘛,简直浪费纸”大部分人写简历都会用网上的模板,当然用模板写会节省很大的人力而且格式也更好看。然而模板上面有很多套话,
这段自我评价估计很多人都会感到很熟悉,甚至一部分人的简历上面还有,因为每个人都可以这样写。想一想这种评价 HR 每天看了多少遍,再看下面这张简历案例,在评价栏罗列出自己的技术点,突出重点一目了然。
刚毕业出来找工作的同学来说,没有上图有那么多干货可以写,怎么才能突出重点呢,教一个小技巧,大家可以浏览几十家不同类型公司的任职要求,你会发现有两到三条几乎是相同的,那么这两到三条技术点就是你必须要掌握的了,而且技术评价里面一定要写出来。
简历编写要适度不要给自己挖坑,掌握不能写成精通了解不能写成掌握,精通在了解怎么用的同时还要了解它的底层实现,掌握的话就要知道它的用法以及出现问题怎么解决。了解的话就要知道这个技术点可以处理什么问题,了解一些 API 怎么调用。
技能储备
- 毕业一到两年:
Java 基础知识方面需要掌握的有:面向对象的理解、基本类型与引用类型、构造方法、常用类(内部类、匿名类、抽象类)、三大特性(封装、继承、多态)、重写与重载、接口与接口的实现等等。这些问题面试官会在掌握的层面上去问你,主要是考察你的基础知识是否扎实,毕竟安卓是用 Java 编写的。
Android 方面需要掌握的有:四大组件的简单使用、activity 的生命周期、fragment 的绑定、activity 和 fragment 之间的传值、 recyclerview 实现列表九宫格瀑布流式布局的实现、viewHolder 的复用问题、数据存储的几种方式的特点、常用框架 Glide、Retrofit、eventBus、butterknife 的使用。
- 毕业两到三年:
Java 基础知识需要掌握的有:对于两到三年的安卓程序员来说,Java 不仅仅是停留在一些基础知识的使用上了,而是在用的同时要有自己的理解。比如说封装,面试官不会问你什么是封装,而是会问你封装过公司的哪些代码/功能,你是如何封装的。这个时候考察的就是你是会写代码还是只会模仿代码,如果没有自己在项目中封装过代码的话可以去阅读下网上一些优秀的框架的源码学习一下别人是怎么封装的。
当然不仅仅是封装还有很多知识点都要按照这个要求去掌握,比如:Java 泛型、反射、集合框架、接口与抽象类、设计模式等等。掌握这些除了看视频学习还可以阅读一些优秀的源码。不懂的地方再查一查博客,理解透了后一定要在自己项目上运用,这样学习才能印象深刻面试官问到也能有列可举。
Android 方面需要掌握的有:APP 启动原理,想要详细了解的可以看我的另一篇 chat (APP 启动原理及启动优化详解 )、图片压缩与性能优化、自定义 view 、事件分发流程、屏幕适配、组件化和插件化、Glide 的缓存与复用、OkHttp 的责任链与连接池、序列化与反序列化、分析一个你最熟练框架的源码等等。可以看到,对于两到三年的程序员来说不仅掌握的知识点更多,而且还需要对原理有一定的了解。
面试经历分享,大厂和小厂的区别
大厂面试经历
本人刚出来找工作的时候面试了很多家,那时候是移动开发的爆发时期,其中有万能钥匙等中大型公司也有一些刚创业的小公司,当然大厂最终面试失败了。记得去万能钥匙面试的时候,去面试的人特别的多,需要在大厅等待,一批一批的去面试,先是群面,了解基本情况过后,就是单独面谈等待面试,总共三轮面试,面试官会通知面试结果出来的时间。
面试官提到的问题有:为什么从上一家离职、如何看待我们公司、自己以后的职业规划是什么、技术方面问了 Java 的内存回收机制,内存溢出和内存泄漏、如何避免 OOM 异常、什么是 AIDL,AIDL 怎么使用、 android 线程间通信有那几种方式、Glide 三级缓存怎么实现的。
大小厂考察点的区别
- 大厂