你面试时是否经历过这种场景?
明明胸有成竹的问题,被面试官反复追问之后没了信心?
那么Android面试互联网技术人员,应该怎么准备呢?
面试前准备
不同的公司乃至部门,面试的流程和着重点都有颇大的差别。
国内以腾讯为例,微信部门与深圳总部的面试流程和着重点就不一样。微信一面的时候需要五十分钟内手写 4 道偏简单的算法题,但是在深圳总部面试的时候一面却是没有算法题,两小时的考卷。更多的是与面试官聊技术与项目经验。
国外的话,甲骨文五轮的面试可能四轮是系统设计,一轮是算法。亚马逊虽然注重算法,但是非技术问题在面试中占比非常高。
你首先需要知道面试中考察什么内容之后才去开始准备,国内可以通过我们整理的高频题库着手复习。
技术准备
这里主要包括基础、进阶、功能实现、工具使用这几大方面。
- 基础知识:Java基础知识、Android基础知识
- 进阶知识:Android框架、设计模式、性能优化
- 功能实现:网络编程、数据库、多线程
- 工具使用:第三方库、编程工具
这里列举一些面试常见的问题:
- Java基础知识:包括面向对象编程、数据类型、控制语句、异常处理、集合框架等
- Android基础知识:包括Activity、Service、BroadcastReceiver、ContentProvider、Intent、布局、资源文件等
- Android框架:包括MVC、MVP、MVVM、MVI、Android Architecture Components、RxJava等。
- 设计模式:包括单例模式、工厂模式、观察者模式等。
- 性能优化:包括内存优化、布局优化、网络优化等。
- 网络编程:包括HTTP协议、Socket编程、RESTful API等。
- 数据库:包括SQLite数据库、ORM框架等。
- 多线程:包括线程池、Handler、异步任务等。
- 第三方库:包括OkHttp、Retrofit、Glide等常用的第三方库。
- 编程工具:包括Android Studio、Gradle等
这里说一点题外话,可能有的同学有疑问,Android这么多技术点怎么记得住,有没有系列文档。我这里收纳了一份来自阿里大佬整理收纳的面试题合集,有需要的可以在文末查看
个人经验
一定要花更多的时间回忆你过去的经历,包括你参与过的项目,遇到的困难,以及如何解决它们。你的回答会影响面试官对你技术能力的印象,所以一定要回顾和整理你过去的项目经验,项目宜精不宜多,做得再多得项目, 也不及一个好的项目说服力高。
有很多程序员,特别是刚进入这一行的新手,往往缺乏相关的项目经验,也不知道如何增加工作经验。
有很多方法都可以获得工作经验,你可以做一个移动app,放到App Store里,也可以写一个小型的Web应用程序,但这需要一定的自学能力和创造性
如果你感觉有点困难,参加职业培训会是一个不错的选择,在这里,你可以学到更多的专业知识,参加一些工程项目以积累更多的经验。
熟能生巧
在面试中,你需要结合自己的经历立刻给出回答。想让答案脱口而出,我的建议是:把答案的原始资料烂熟于心。这要求你必须对简历的内容细节了若指掌,包括简历里提及的技术,证明你能力的事迹,一些解决过的问题,曾经战胜过的挑战,等等。这样,当有表现机会的时候,你才可以信手拈来。
如果你无法自然流畅地表达,那就需要在面试前多加练习。找个朋友陪你一起练,一定要认真。让你的朋友拿着你的简历随意提问,这相当于模拟面试过程,你可以思考如何把自己的经历同问题联系起来。如果你在练习中遇到了无法回答的问题,这非常棒,因为你发现了一个准备工作的疏漏,这样就能在面试前补救这个问题。
练习,练习,再练习。
最后这里也准备了一些面试题和优秀简历模板