当前位置:   article > 正文

刚参加完阿里Android开发岗面试:一面+二面+三面+HR四面,定级P6,面试经验分享总结!(含必考题答案)_创魔阿里小考场答案

创魔阿里小考场答案

这是一篇面试总结文,是一篇从我本身出发,把面试过程中遇到的问题,以及一些小小的建议阐述出来,希望对正在面试或者将要面试的你有一些小帮助。

背景描述

首先描述下背景,楼主是一个3年多经验的Android开发工程师,先后服务于2家互联网公司,均从事于Android开发的工作。离职前我在最后这家公司已经工作了将近2年的时间。

那为什么要离职呢?

其实这个问题一直都不是一个单一性的问题,它一定是一个多元化多维度的问题。对于我来说,主要体现在以下几个方面。

  • 当前所使用的技术对自身成长不是很大了。
  • 当前所负责的项目发展空间到了瓶颈。
  • 认为自己的职场履历需要一段大厂经历。
  • 这一点本来不太想说,但是确实也是自己比较在意的一点,那就是组织架构频繁变动,导致业务线频繁变更,这一点对业务很不利,需要一直磨合。

面试过程

阿里一面:

  1. 先介绍下你最成熟的一个项目是哪个?
  2. 能在纸上简单的画一下你这个项目的架构图吗?
  3. 说一说在项目中做过哪些优化?
  4. 在项目启动的时候,为了提速打开APP,你说你做了dex分包的预加载操作,为什么需要多开一个进程单独进行dex的预加载?
  5. dex一般都解压到哪里?如何做的?

阿里二面:

1.你做的应用商店感觉最难的点在哪?
2.为什么选用Fresco作为图片加载框架?
3.安卓系统版本之间对Bitmap怎么处理的?安卓2.3之前把像素数据存储在native层中,之后的系统把byte存储java层中,8.0后又放回native中,但有自己的回收机制?
4.你用CC框架组件化,为什么不选择阿里的 Arouter框架,C有什么好处?使用过程中遇到过什么问题?
5.你平时怎么做性能优化的?
6.你用过哪些工具做性能优化,冷启动怎么优化?
7.插件化你懂吗?
8.有对公司做过什么突出的贡献吗?

阿里三面:

1.你觉的你做的项目最有挑战性的是什么?
2.你是怎么做技术选型的?说一下为什么选用CC而没有选 ARouter,你在用组件化框架的时候有没有遇到什么问题?
3.MVC和MVVM,MVP能说一下你的理解吗?
4.你对自己负责的项目在性能优化上做了哪些努力?
5.你平时是怎么学习的?
6.你对自己的未来职业规划是怎么样的?

阿里HR面:

聊人生谈理想,主要还是考察你对工作是否持积极的态度,以及你是否稳定,自信发挥就可以了。

面试耗时将近30分钟。

面试总结

在自己拿到阿里offer之前,一直都在想一个问题:我到底该如何做才能离大厂更近?三年的成长与思考让我认清了这点,虽然中间也遇到过很多坑,但却真正让我对自己有了一个清晰的定位,也有了比较明确的目标。

正因为如此,我每天所学习的都给我莫大的动力,让我不断进步,并最终实现自己的目标。所以迷茫才是最可怕的,只有摆正心态,对找工作保持十二分的热情,勤奋努力,才能离目标更近一步。

但是有了目标和努力外,不一定就能实现目标,说到底还有一个运气的成分在里面,只能说你找到心仪的工作概率更大而已。遇到一个好的面试官绝对赚了。遇到的这几位阿里的面试官我感觉都挺好的,没有因为他们资历深就为难我,所以还是非常感谢这几位技术面试官的。

阿里面试注意事项

  • 部门选择:从这三次面试经历来看,部门不同,问到的技术栈都有所区别,所以在面试前最好是根据自己所面试的部门做相应的准备。

  • 岗位选择:根据岗位介绍能够洞见的关键信息并不多,基于有限的信息,所谓合适通常需满足以下几点:①自身的核心竞争力与所应聘的岗位具有较高的匹配度;②对岗位的工作内容感兴趣,至少不排斥;③岗位所在的业务具有良好的前景;④工作地点可接受。

  • 应变能力:几轮面试下来,给我最大的一个感受就是一定要培养自己的应变能力。在面试过程中,面试官会根据和你交流的过程中,找一些细节进行提问,一旦应变能力不强,就容易慌了张影响面试发挥,导致失败。

面试核心知识点梳理

除了阿里以外,其他七七七八八的互联网公司我也面过不少,不说身经百战,那也面临过一些枪林弹雨的。所以,对于面试会问到什么技术栈,还是做了一些详细的梳理,这些面试梳理还是相当有说服力的。

针对面试核心知识点的梳理,我提供了以下的思维导图和面试核心点PDF:

Android 相关

1. Android 之 SharedPreferences 内部原理浅析
2. Android 源码分析-消息队列和 Looper
3. Android 源码分析—带你认识不一样的 AsyncTask
4. Android 性能优化之使用线程池处理异步任务
5. Android Context 完全解析,你所不知道的 Context 的各种细节
6. LocalBroadcastManager 的实现原理,与 BroadcastReceiver 异同
7. Android进程间通信(IPC)机制Binder简要介绍和学习计划
8.Activity的启动方式和flag详解
9.Android源码分析-资源加载机制
10.Android中Thread、Handler、Looper、MessageQueue的原理分析
11.Android 源码解析 之 setContentView
12.Android AsyncTask 源码解析
13.Android IntentService完全解析 当Service遇到Handler
14.深入剖析 Android中的 ArrayMap

部分内容截图

Java 相关

1.Java 四种线程池的用法分析
2.Java 有几种文件拷贝方式?哪一种最高效?
3.使用 FileChannel(文件通道)来实现文件快速复制
4.JVM 类加载机制详解 JVM 类加载过程
5.JVM 类加载机制详解类加载器与双亲委派模型
6.Java 实现线程同步的几种方式
7.Java IO 流之字节流与字节缓冲流
8.Java内存管理:深入Java内存区域
9.Java垃圾回收
10.Java中的ThreadLocal

部分内容截图

Kotlin 相关

1.从原理分析 Kotlin 的延迟初始化: lateinit var 和 by lazy
2.From Java To Kotlin
3.怎么用 Kotlin 去提高生产力:Kotlin Tips
4.使用 Kotlin Reified 让泛型更简单安全
5.Kotlin 里的 Extension Functions 实现原理分析
6.Kotlin 系列之顶层函数和属性
7.Kotlin 兼容 Java 遇到的最大的 “坑”
8.Kotlin 的协程
9.Kotlin 协程「挂起」的本质
10.资源混淆是如何影响到Kotlin协程的

部分内容截图

网络相关

1.(建议精读)HTTP 灵魂之问,巩固你的 HTTP 知识体系
2.HTTPS 原理浅析及其在 Android 中的使用
3.HTTP 断点续传(分块传输)
4.HttpDns 原理是什么
5.《客厅 TV-APP HttpDNS 技术接入与实战》
6.HttpDns 接入以及全局替换的实现
7.TCP、UDP、HTTP、SOCKET 之间的区别
8.TCP 与 UDP 的区别

插件化&热修复&模块化&组件化 &增量更新&Gradle

1.Android 插件化库比较
2.深入理解 Android 插件化技术
3.插件化(不同插件化机制原理与流派,优缺点。局限性)
4.热修复
5.模块化实现(好处,原因)
6.项目组件化的理解
7.Android Gradle Plugin 源码分析
8.Android Gradle Plugin 源码阅读与编译

部分内容截图

图片相关

1、 图片库对比
2、LRUCache 原理
3、图片加载原理
4、自己去实现图片库,怎么做?
5、Glide 源码解析
6、Glide 使用什么缓存?
7、Glide 内存缓存如何控制大小?
8.Fresco 图片框架内部实现原理探索

部分内容截图

Flutter 相关

1.Flutter 原理与实践
2.揭秘 Flutter Hot Reload(原理篇)
3.Flutter 动态化探索
4.Flutter 如何和 Native 通信-Android 视角
5.深入理解 Flutter Platform Channel
6.Flutter Engine 编译指北
7.深入理解 Flutter 多线程
8.Flutter 状态管理 - 初探与总结
9.Flutter | 状态管理指南篇——Provider
10.深入理解Flutter应用启动
11.Flutter渲染机制—UI线程

算法与数据结构

1.时间复杂度 / 空间复杂度
2.常用的排序算法有哪些?
3.字符串反转
4.链表反转(头插法)
5.如何查找第一个只出现一次的字符(Hash查找)
6.如何查找两个子视图的共同父视图?
7.无序数组中的中位数(快排思想)
8.如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
9.二叉树前序、中序、后序遍历
10.最大 K 问题
11.广度、深度优先搜索算法
12.String 转 int。核心算法就三行代码,不过临界条件很多,除了判空,还需要注意负数、Integer 的最大最小值边界等;
13.如何判断一个单链表有环?
14.100 亿个单词,找出出现频率最高的单词。要求几种方案;
15.链表每 k 位逆序;
16.镜像二叉树;
17.找出一个无序数组中出现超过一半次数的数字;
18.计算二叉树的最大深度,要求非递归算法。
19.String 方式计算加法。

小伙伴们如果需要这份完整版的阿里面试核心点PDF,扫描下方二维码【免费】领取。

写在末尾:

一些建议和行业愿景文章写到这里差不多可以停笔了,但是又好像还想说点什么,或许是对同行的你一些小建议,也或许是对整个行业的一些愿景。

近几年来,铺天盖地而来的“程序员35岁”制造了不少年龄焦虑,试问自己被公司裁员,被社会淘汰真的是年龄导致的吗?大多数还是与自己能力相关,在我接触到的认知里,互联网公司35岁以上的技术经理,技术大牛仍有不少。实际上,无论你是什么行业,能力不过关,都会被淘汰,而避免被淘汰的唯一办法:坚持学习。

所以,最后希望同为代码献身的我们,不负初衷,不畏困难,拥抱发展!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/437230
推荐阅读
相关标签
  

闽ICP备14008679号