前言

本文想分享的是如何准备阿里面试的以及面试过程的所想所得,希望能帮到你。

一丶岗位职责

首先我们先看一下岗位职责

1、负责安卓移动平台开发工作
2.Android框架开发和维护,SDK开发

技术架构升级优化,提升业务研发效率
二丶岗位要求

1、3年以上Android客户端开发经验
2丶JAVA基础扎实,理解io、多线程、集合等基础框架,对JVM原理有一定的了解
3、掌握Android常用组件、框架、和技术的原理
4、精通Android底层framework,精通Android性能调优,熟悉Android源码
5、有强烈的责任心和团队精神,善于沟通和合作;能独立完成设计和编码

三丶关于简历如何突出来写

我觉得简历的作用就是让看简历的人能快速丶准确的捕捉到有用的信息,看到你的与众不同

1.who are you ?(你是谁?)
2.what did you do?(你做了什么?)
3.what do you stand out from(你有什么特别之处?)

重要突出这几天,其实就够了

3.1 内容

主要是包含了以下几个模块:
基本资料: 姓名、电话、邮箱、个人网站(GitHub)
工作经历: 公司名、在职时间、工作内容(简述负责、参与什么业务)
项目经历: 最重要的一点没有之一!展开描述
专业技能: 加分项还是减分项都有可能,慎重对待,展开描述
教育经历: 学校名、就读时间
其它: 简单描述任何你想让面试官知道的东西,比如社区影响力: GitHub 多少 Star、掘金等级 等等

项目经历对于开发来说是一个最重要的部分

3.2亮点

工作上: 这个项目的业务背景是什么,在业务上有什么比较牛逼的地方,推动了业务如何运行等等
技术实现上: 这个项目的整体技术实现思路是怎样的,项目中用了什么比较牛逼的技术,解决了什么比较困难的问题等等

千万不要写精通什么,除非你真的很牛逼,或者某项目中有个很牛逼的技术,但是不是你写的,但是你自己不是很了解。

好看的皮囊千篇一律,有趣的灵魂万里挑一
在日常业务中:

这个项目做了什么牛逼的事情你在项目里做了什么牛逼的事情用了什么牛逼的技术解决了什么困难的问题

项目经历是一个很重要的部分,一定会细问,把自己的牛逼之处突出并且讲明白

3.3自己的专业技能

想拿到30-50K 当然要有相对的专业技能
JAVA基础扎实,理解io、多线程、集合等基础框架,对JVM原理有一定的了解
掌握Android常用组件、框架、和技术的原理
精通Android底层framework,精通Android性能调优,熟悉Android源码
热衷Android开发事业,精通SDK,热修复,性能优化等等

专业技能可能是加分项也可能是减分项,慎重对待

四丶面试复习路线图

我之前复习,大多都在20点以后,因为晚上比较能集中注意力,制定一个学习计划,切勿零散的复习,最好是系统的复习,才能胜却在握

主要内容如下:

BAT的面试题目相关性能优化相关相关多线程相关Java相关源码解析相关网络编程相关算法合集相关数据结构相关设计模式相关一些小知识的总结

4.1丶BAT相关面试点:1.Binder通信原理和机制2.多进程通信3.组件化.插件化的区别以及如何选择4.插件化的理解5.热修复原理6.对于AMS的认识7.AOP 与OOP 有什么区别, AOP 的原理8.QQ换肤原理以及大致思想9.Android虚拟机10.图片压缩的具体步骤和应用11.反编译和加密如何进行12.序列化和反序列化的原理13.Handler的原理和认识

####4.2丶算法合集笔记

1.Hash2.最小生成树算法3.最短路径算法4.KMP算法5.查找算法6.排序算法4.3丶线程.多线程.线程池和面试中的小问题1.开启线程的方式2.run()和 start()方法区别3.如何控制某个方法允许并发访问线程的个数?4.在 Java 中 wait 和 seelp 方法的不同5.导致线程阻塞的原因6.线程如何关闭的思路?7.如何同步以及保证线程安全8.减少APK包的大小9.关于内存泄漏,内存抖动的优化以及解决方案4.4丶小知识的清单1.面向对象和面向对象的区别2.Java和C++的区别3.面向对象的特征4.接口和抽象类的区别4.5丶数据结构和设计模式1.设计模式六大原则简要概述2.设计模式的分类4.6丶java核心小知识清单1 .线程中 sleep 和 wait 区别2.Thread 中的 start()和 run()的区别3.Java 中重载和重写的区别4.Tcp /IP三次握手,四次挥手4.7丶性能优化1.图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?2.WebView 的性能优化 ?3.加载一张高清图片应该占用多少内存4.内存泄露和内存溢出的区别 ?AS 有什么工具可以检测内存泄露5.Bitmap 如何处理大图,如何预防 OOM?6.性能优化,怎么保证应用启动不卡顿? 黑白屏怎么处理?4.8丶Android源码相关1、Android 属性动画实现原理2、补间动画实现原理3、Android 各个版本 API 的区别4、Requestlayout,onlayout,onDraw,DrawChild 区别与联系5、invalidate 和 postInvalidate 的区别及使用6、Activity-Window-View 三者的差别7、谈谈对 Volley 的理解8、如何优化自定义 View9、低版本 SDK 如何实现高版本 api?10、描述一次网络请求的流程11、HttpUrlConnection 和 okhttp 关系4.9丶Android 网络编程1丶网络分层2丶http 协议3丶http 的 get 和 post 的区别4丶socket 和 http 的区别5丶TCP 与UDP 区别总结6丶https7丶加密算法8丶Volley.OKHTTP.Retrofit等

简历上写的项目,仔细认真的过一遍。还有就是关于业务的一些深层次的东西,得好好思考一下。

一些开放性问题还是需要好好思考一下,顺便也准备一下 HR 面可能会问到的一些问题。

在复习某个部分时可能会引出其它知识点,如果也不是很清楚的话也需要系统的再复习一下。

知识体系比较广并且发展迅速,要注重基础基础才是最重要的