0
点赞
收藏
分享

微信扫一扫

Android面试大揭秘!从技术面被“虐,面试阿里

Raow1 2022-03-19 阅读 74

针对具体的优化细节,就涉及到相关的开源库及相关原理,可参考的三方库有:

  • LeakCanary ,内存泄漏监测

  • BlockCanary,UI卡顿监测

  • Glide,对Bitmap内存的优化及防止内存泄漏

  • Jetpack , 官方支持库 ,避免内存泄漏

  • AspectJ , AOP切面编程

不同的岗位方向关注的侧重点也会有些不同,我们在后面的分享中也会涉及到。

在大厂的面试中,也有一些面试官(尤其是一面的时候)会拿一些常见的面试题来进行考察,比如UI绘制 , 自定义view ,触摸事件分发 等高频考点也应该着重复习和掌握。

因此,如果没有面试准备方向,找一份面试题集锦来进行热身复习也可以。

笔者在面试期间我整理了一份面试题,在此也贴出来供大家参考,如有需要全套面试题,[点击我]( )就可以了。

Android面试大揭秘!从技术面被“虐,面试阿里

ab21.png)

[]( )如何准备简历?

========================================================================

在跟猎聘网HR聊天的过程中,谈到了他们的简历修改付费项目。其实写简历并不难,难的是如何写出一份适合自己,能突出自身优势的高质量的简历。

这里笔者默认大家已经做完了面试的前期准备工作,而现在我们需要做的,就是把前期准备的比较充分的,有深度有技术含量的点放在我们的简历中。

[]( )高效利用简历的黄金区

我们在准备简历的时候要去换位思考,HR(或者招聘部门)是如何审阅一份简历的。

所谓的黄金区,即简历第一页的起始部分,以笔者的经验,一般会用来放个人简介(包括教育背景,个人自述等)及核心技术要点。

我们来看一份样例

赵xx | Android工程师

年龄:xxx | 经验:x年 | 博客:xxxx

电话 / 微信:xxx | 邮箱:xxx

教育背景:xxx(20xx/9–20xx/6)

专业背景:xxx

个人简介

20xx年至今,从事Android开发x年有余,经历过xxx开发,xxx开发,xxx项目研发,xxx方案调研及实现,xxx定制化Android设备应用研发;

积累了一定的项目经验和技术实力,有较强的技术攻关能力和学习能力,对xxx有一定的研究,针对xxx,xxx,xxx相关源码进行过深入的研究和学习

[]( )简历的核心关注点

针对HR来讲,最关心的点有以下几个

  • 专业是否符合要求

  • 学历是否符合要求

  • 工作年限是否符合要求(针对高开,专家,资深分别有一定的年限限制)

  • 年龄是否符合

针对招聘部门来讲,最关心的点如下

  • 过往项目是否匹配

  • 是否对本部门的项目感兴趣

  • 是否具备一定深度的领域研究和学习能力

因此,在黄金区把这些关注点描述清楚,就是我们的一个目标了。

在上面的Sample中,笔者将年龄,工作年限,教育背景,专业背景都放在了最显眼的位置,就是为了让HR能一眼看到需要了解的信息。

在个人简介中,笔者简单介绍了工作经历,项目经历,以及自身的深入研究领域,这里是为了给用人部门审核时,大致判断是否符合用人部门的需求。

这里要注意的是,突出自己的优势,扬长避短,没有价值(或者简历审核方不关心,或者是自身劣势)的内容尽量不要放在这个区域。

[]( )专业技能点

当HR(或用人部门)初步判断该应聘者基本符合要求时,就会去看专业技能点及项目经验了。

针对面试者来说,在面试的过程中,面试官会着重考察简历上的专业技能点,我们在写技能点时,一般会使用了解,熟悉, 精通这样的词语来进行描述。

而在笔者看来,即使对某方面非常精通,也需要用一些较为圆滑的描述来表达,比如针对xxx有较为深刻的理解,针对xxx有自己的理解,针对xxx有一定的实践和独到见解,来避免面试官问的深度过深。

技能点写什么?

具体的技能点到底写什么,大的方向来讲笔者建议分为两大部分 – Java和Android(如果有native开发经验根据情况编写),具体细节来讲,需要根据前期准备的程度进行填写。

针对高开来讲,所谓的Java基础,已经远不是基础,而是涉及到JVM内存区域,JMM内存模型,多线程并发,封装继承多态及Jvm是何如实现的,为什么要这么实现等等。

而Android基础,也尽量要深挖一些,比如涉及到四大组件,比较常问的一个问题是Activity是如何启动的(或者应用是如何启动的)。

这个问题可深入考察的点非常多:

  • 考察对源码的理解程度

  • AMS是如何跟Zygote通信fork出进程的

  • AMS是如何跟应用层通信的

  • ActivityThread是如何被启动的

  • ActivityThread到底是用来做什么的

  • 主线程Looper如何初始化的

  • AMS是如何绑定ActivityThread的binder对象的

  • binder是如何初始化的,如何完成跨进程调用的,如何跨进程传递数据及传递数据有什么限制等

更多详细内容请点击:[面试必备:Android Activity启动流程源码分析]( )。

这也是为什么建议大家在准备阶段以深度为主进行准备的原因,如果看过相关系统源码,相信这些问题都可以轻松应对。

针对专业技能点,笔者不可能一一涵盖,这里给出一些技能点,大家可以根据自己的情况进行选择。

[]( )Java相关

  • 容器(HashMap、HashSet、LinkedList、ArrayList、数组等)

  • 内存模型

  • 垃圾回收算法(JVM)

  • 垃圾回收机制和调用 System.gc()的区别?

  • 类加载过程(需要多看看,重在理解,对于热修复和插件化比较重要)

  • 反射

  • 多线程和线程池

  • 设计模式(六大基本原则、项目中常用的设计模式、手写单例等)

  • Java 四大引用

  • Java 的泛型

  • final、finally、finalize 的区别

  • 接口、抽象类的区别

Android面试大揭秘!从技术面被“虐,面试阿里

[]( )Android

  • 自定义 View

  • 事件拦截分发

  • 解决过的一些性能问题,在项目中的实际运用

  • 性能优化工具

  • 性能优化 (讲讲你自己项目中做过的性能优化)

  • Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)

  • 缓存自己如何实现(LRUCache 原理)

  • 图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关

  • SurfaceView、TextureView、GLSurfaceView 区别及使用场景

  • 动画、差值器、估值器(Android中的View动画和属性动画 - 简书、Android 动画 介绍与使用)

  • MVC、MVP、MVVM

  • Handler、ThreadLocal、AsyncTask、IntentService 原理及应用

  • Gradle(Groovy 语法、Gradle 插件开发基础)

  • 热修复、插件化

  • 组件化架构思路

  • 系统打包流程

  • Android 有哪些存储数据的方式。

  • SharedPrefrence 源码和问题点;

  • sqlite 相关

  • AMS 、PMS

  • Activity 启动流程,App 启动流程

  • Binder 机制(IPC、AIDL 的使用)

Android面试大揭秘!从技术面被“虐,面试阿里

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BATJ 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

《960全网最全Android开发笔记》

Android面试大揭秘!从技术面被“虐,面试阿里

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

Android面试大揭秘!从技术面被“虐,面试阿里

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

Android面试大揭秘!从技术面被“虐,面试阿里

腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析

Android面试大揭秘!从技术面被“虐,面试阿里

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

举报

相关推荐

0 条评论