2020 - 阿里 Android + 前端面试题及部分答案(拿到 offer)

面试时间:2019.12.16 1面、2020.12.21 2面、2020.1.08 3面技术 & HR面
面试部门 + 岗位:蚂蚁金服-数据体验技术部门-前端专家
面试感想:主要是对面试内容有点懵,1面是 Android 知识,2面是前端知识,3面主要是项目方案设计之类的宏观知识,实属有点让我不知道这个岗位是做 Android 还是前端。虽然也问了主要工作做啥,但大概是我领悟力不行,依然...黑人问号.gif。前两面不仅重基础知识,还重视更深层次的理解,比如对项目使用知识源码级别的掌握(怎么掌握2面中有个例子-_-),整体没有算法面试。
面试建议:如果特别想进阿里或者非进阿里不可,一定要提前准备,提前规划!比如面试公司顺序、最长能等一家公司多少时间。阿里面试流程真的好慢好慢啊,我第一个面试,最后一个结束,过了还有体检、背调才能发 offer。之前自己就是没搞清楚流程,然后又因为时间太久,加上一些其他原因,没等住 offer 发下来...

1面 - Android 知识

  1. 有什么做得比较好的 Android 性能优化事情?

尽量说一个自己做过的。

  1. Android应用中哪些是 Context,一个应用有多少个 Context?

Android Context 熟悉还是陌生

  1. Context 的使用上如何避免内存泄漏?

  2. Application、Activity、Service 的创建顺序是什么?

Application和四大组件启动时的方法顺序

  • 1.每个应用程序在第一次启动时,都会首先创建 Application 对象。创建时机是在ActivityThread.handleBindApplication方法中,创建 Application 时同时创建 ContextIml 实例;
  • 2.之后通过 startActivity() 或 startActivityForResult() 请求启动一个 Activity 时,如果系统检测需要新建一个 Activity 对象,会调用到 ActivityThread.performLaunchActivity() 方法,创建一个Activity 实例时同时创建 ContextIml 实例;
  • 3.通过 startService 或 bindService 时请求新创建一个 Service 对象,系统就会回调ActivityThread.handleCreateService() 完成相关数据操作,创建一个 Service 实例时同时创建ContextIml 实例
  • 注:ContextIml 对象与 Application、Activity、Service 对象是一一绑定的
  1. 如何跨进程拿 Context?如 Activity 还没启动的时候如何拿 Context?
  • getApplication 与 getApplicationContext 区别:getApplication() 用用来获取 Application实例的,但这个方法只有在 Activity 和 Service 中才能调用。如果在一些其它的场景,比如BroadcastReceiver 中也想获得 Application 的实例,这时需要借助 getApplicationContext() 方法。也就是说,getApplicationContext() 方法的作用域会更广一些,任何一个 Context 的实例,只要调用 getApplicationContext() 方法都可以拿到我们的Application对象;
  • Application 中方法的执行顺序为:Application 构造方法 → attachBaseContext() → onCreate()。如果在 attachBaseContext() 中或执行前,调用 getApplicationContext() 得到的值为null
  1. 点击桌面图标的启动过程?涉及的进程和组件

默认Home应用程序(Launcher)的启动过程源码分析

  1. 对Activity的理解是什么?

问题范围较大。从页面结构讲的 (Activity、Window、View、LayoutInflater),用户交互入口

  1. Activity 的生命周期有哪些?

实例详解 Activity 生命周期

  1. Fragment 的理解,与 Activity 的区别

  2. Java 引用类型的分类和区别

  3. 对 Handler 的理解

  4. 进程通信的方式有哪些,Android 中的有哪些?

  • Java 中的进程通信方式:管道(pipe)、有名管道(namedpipe)、信号量(semophore) 、套接字(socket)、消息队列(messagequeue) 、共享内存(shared memory) 、信号(sinal)
  • Android 中的进程通信方式:AIDL(基于 Binder)、Messenger (基于 Binder)、Socket、Binder (基于 mmp 共享内存)、文件
  1. 为什么会出现oom?

为了整个Android系统的内存控制需要,Android 系统为每一个应用程序都设置了一个硬性的Dalvik Heap Size 最大限制阈值,这个阈值在不同的设备上会因为 RAM 大小不同而各有差异。如果应用占用内存空间已经接近这个阈值,此时再尝试分配内存的话,很容易引起OutOfMemoryError 的错误。

  1. 哪些原因会导致 oom?
  • 虚拟机堆内存不足:内存泄漏(内存缓增)、大对象/大图片(内存突增)
  • 内存碎片,无足够连续内存空间:循环中创建对象、字符串拼接...
  • 系统底层限制:FD 数量超出限制、线程数量超出限制、其他系统限制
  1. debug 包有什么修改方式使不出现 oom?
  • Android为每个进程分配内存时,采用弹性的分配方式,即刚开始并不会给应用分配很多的内存,而是给每一个进程分配一个“够用”的内存大小,这个值由具体的设备决定
  • 在AndroidManifest.xml中的application标签中设置largeHeap为true,可以申请最多的内存的限制
  • 这个内存限制的值是在 /system/build.prop文件中可以查看与修改
  1. 有哪些原因会引起内存泄漏?

Android 内存泄露与分析工具

  1. 内存泄漏有什么方式检测?用过哪些工具,其中的原理是什么?

Java内存问题 及 LeakCanary 原理分析

  • 基本原理:用ActivityLifecycleCallbacks接口来检测Activity生命周期,主要是在onDestroy()方法中,手动调用 GC,然后利用ReferenceQueue+WeakReference 监听对象回收情况 ,来判断是否有释放不掉的引用,再结合dump memory的hpof文件, 用HaHa分析出泄漏地方;
  • LeakCanary会单独开一进程,用来执行分析任务,和监听任务分开处理。Application中可通过processName判断是否是任务执行进程;
  • 利用主线程空闲的时候执行检测任务,在MessageQueue中加入了一个IdleHandler来得到主线程空闲回调;
  • LeakCanary检测只针对Activiy里的相关对象。其他类无法使用,还得用MAT原始方法
  1. 对 BroadCast 的理解,分类有哪些?

  2. MRN 比 原生 RN,有什么优势?还是只是为了做而做?

  3. MRN 页面成功率现在有多少?是如何保证成功率的?

  4. MRN 框架开发中,你在其中的角色是什么?

  5. 现有的 MRN、week 等动态化底层原理是什么?

  6. 有了解过其他公司的动态化方案吗?

  7. Flutter 有了解过吗?有什么不同?

  8. 你对加班怎么看?

2面 - 前端知识

1.所做业务需要应对政策变更,都有什么样的政策变更?

2.除了缩短发版时间,还有什么手段可以快速应对政策变更?

3.有没有类似配置的手段控制业务流程没有?举例说下

4.最近两个项目的方案设计和框架选型,详细介绍下

5.你们是怎么保证 RN 页面加载的性能的?

6.React 渲染 View 到屏幕的过程

需要看 React 的源码过程

7.React 多次 setState 会多次调用吗?

不会。setState 是异步的,多次会合

8.什么情况下多次调用 setState 会出现多次调用?

React 实现壁垒,需要对源码实现足够了解!(有木有,学习源码的正确姿势~)

9.Redux 是怎么与 React 连接起来的?

10.产品思维、技术深度、沟通协作,你觉得哪个是你的优势,举个例子

说的项目管理,最后应该被映射到沟通协作了...

3面 - 技术+HR

【Boss 面】
1.详细说一两个你近期的项目,为什么做、技术方案设计、意义之类的...

2.MRN 初期问题多,为啥你们的动态化方案还选择这个?

本着不重复造轮子的原则

3.RN 怎么实现动态化的?

4.Native 页面跟 RN 页面的优劣对比

5.如果给你一个 App,你如何来选择哪些页面用 Native,哪些用 RN?

6.你觉得你们现在的业务,有哪些技术体系还需要完善的?

7.主动发现业务问题,是通过怎样的方式来发现问题?

8.你之前做 Android,为什么要学习前端?

9.有没有关注一些最新的技术

10.近一年多的绩效,为什么给你这样的绩效?

11.现在的职级、入职时候的职级

12.为什么要换工作?

【HR】
1.介绍下自己的性格特点

2.有什么兴趣爱好

3.看你有跳舞的兴趣爱好,年会能上去跳舞吗?

4.你觉得你的缺点是什么,还有哪些需要提高点的?

5.你觉得阿里能带给你什么?


感谢小伙伴的支持,看到最后啦。努力感谢送福利🤗💕 字节跳动 GIP 研发团队 Android/iOS 校招提前批超稳通道 / 社招内推实时进度 快快上车~(特别是2021毕业的学弟学妹们抓住机会哦)

文中若有不对的地方,欢迎大家批评斧正,谢谢~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容