前言
笔者17年华东某211大学毕业,软件工程专业。毕业后本地一家中型互联 企业从事Android移动应用开发。年前辞职了,打算年后“金三银四”换个更大一点的舞台。目标有阿里、字节跳动、上海哔哩哔哩。比较中意他们的企业文化。
将近过年的时候,疫情席卷了全国(到现在已经是全世界了)。导致我的面试计划被推迟。在家里待了半个多月,简单的刷了一些面试题。感觉自己在学校的知识学得已经八九不离十了,加上有将近三年的工作经验,计划的阿里P5应该是十拿九稳的。
将近三月底的时候,才得到了阿里 招的信息,我很快投递了简历(简历很漂亮,211毕业、Android垂直领域三年开发经验)。不久后就收到了面试邀请。视频面试,下面是我的三面凉经。
阿里一面:
1.自我介绍
2.JVM内存布局,GC垃圾回收机制
3.对做智能家居有没有兴趣
4.设计模式怎么分类,每一类有哪些
5.乐观锁、悲观锁
6.动态代理的几种实现方式以及优缺点
7.直接在Activity Sleep 5000ms,再post一个runable会不会ANR。
8.looper的唤醒是在Java还是Native层,怎么做到的
9.Binder通信机制
10.如果让你设计一套进程间通信的机制,你会怎么设计
阿里二面:
1.写一个二叉树的深度度优先遍历,递归 非递归
2.Koltin为什么比Java更安全
3.安装包优化有哪几种方式
4.如果一个app无法访问 络,你怎么做数据存储。
5.事件处理函数有哪几个,父View 子View 监听同一个事件,重写哪些方法。在哪个View重写?
6.如果android没用对应的view,flutter能运行吗?手写单例模式,volatile 跟 synchronized区别?
7.如何处理Crash,NativeCrash呢?Google是怎么做到的?如果上 过程中再次产生Crash能不能捕捉到?
8.apk编译打包流程 V1,V2 签名区别
9.binder的Native层代码看过吗
10.Android 沉浸式状态栏 怎么实现的
阿里三面:
1.handler中loop方法为什么不会导致线程卡死,动画的原理,有没有实战过补间动画;bugly上面收集到的最难的bug是怎样的,如何解决的?
2. 络协议okhttp中的缓存机制,dex加载流程,组件化的原理;
3.应用启动流程,activity 启动流程,为什么要每个应用有一个自己的虚拟机,这个虚拟机和JVM的关系。
4.如果让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?
5.React Native跟原生开发的优劣
6.hashmap的基本原理
7.如果要你自己去实现一个图片库,怎么做?
8.插件化的原理有了解过吗?
9.MVC MVP MVVM原理和区别
10.做过哪些页面卡顿优化,是怎样做的。
11.谈谈对热修复的理解
经验总结
以上就是我的阿里之路三面凉经了,前两面还算比较顺利,到第三面基本上没有回答出来几个。细心的朋友可能已经发现了。阿里三面问的大多是底层的原理。总结一下我的失败经验大多是:我并没有去追根溯源搞清楚那些方法、工具、框架到底是怎么实现的,他们的工作原理是什么。我个人觉得自己在大学时期的项目经历已经足够丰富了,但都只是把纸面上别人的东西搬运、组装,变成了我自己东西,其实那终究不是我的东西, 会需要的是创新型的人才,并不是一个敲代码的搬运工。要创新,那必然要搞懂原理,你才能够是一个创造者。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!