近日一好友去阿里面试面试失败了分享了一个他最不擅长的算法面试题。题目是这样的。
题目给定一个二叉搜索树(BST)找到树中第 K 小的节点。
出题人阿里巴巴出题专家文景阿里云 CDN 资深技术专家
参考答案
- 考察点
1.描述一下android的系统架构
2.Android线程间通信有哪几种方式
3. 如何避免OOM异常
4.Android程序运行时权限与文件系统权限的区别
5.Hybrid 通信原理是什么有做研究吗
6.Framework工作方式及原理Activity是如何生成一个view的机制是什么
7.ANR是什么怎样避免和解决ANR
8.Devik进程linux进程线程的区别
9.卡顿 {如何检测卡顿卡顿原理是什么怎么判断页面响应卡顿还是逻辑处理造成的卡顿} BlockCanary 的原理
二、Android热修复、插件化、组件化1.谈谈对 ClassLoader 的理解
2.自定义 ClassLoader
3.插件化为什么会出现如何代码加载资源加载代理 Hook
4.如何从一个老项目一步步实现组件化主要问思路考察架构能力和思考能力。需要考虑很多每一步做什么顺序很重要
5.组件化和模块化的理解与区别
6.class文件加载Dex原理
7.Gradle自动补丁包生成原理
三、Android Framework、 ROM定制、Ubuntu、Linux之类的问题1.Binder 机制IPC、AIDL 的使用
2.Activity 启动流程App 启动流程
3.Android 图像显示相关流程Vsync 信号等
4.为什么使用 Parcelable好处是什么
5.AMS 、PMS
6.类加载机制
7.Ubuntu编译安卓系统
8.对Dalvik、ART虚拟机有什么了解
9.JVM内存区域开线程影响哪块内存
四、架构设计和设计模式1.MVC MVP MVVM原理和区别
2.项目中常用的设计模式
3.说说EventBus作用实现方式代替EventBus的方式
4.Fragment如果在Adapter中使用应该如何解耦
5.实现一个Json解析器(可以通过正则提高速度)
6.从0设计一款App整体架构如何去做
7.Fragment如果在Adapter中使用应该如何解耦
8.谈谈你对Android设计模式的理解
五、算法1.手写一个冒泡排序
2.快速排序的过程、时间复杂度、空间复杂度
3.蚁群算法与蒙特卡洛算法
4.两个不重复的数组集合中求共同的元素。
5.2000万个整数找出第五十大的数字
6.求1000以内的水仙花数以及40亿以内的水仙花数
7.写出你所知道的排序算法及时空复杂度稳定性
8.二叉树给出根节点和目标节点找出从根节点到目标节点的路径
六、网络和安全机制1.TCP的3次握手和四次挥手
2.HTTP与HTTPS的区别以及如何实现安全性
3.App 是如何沙箱化为什么要这么做
4.谈谈你对WebSocket的理解
5.请解释安卓为啥要加签名机制?
6.HTTP1.0与2.0的区别
7.视频加密传输
8.https中哪里用了对称加密哪里用了非对称加密对加密算法如RSA等是否有了解?
七、Flutter相关1.Flutter 中的生命周期
2.Widget 和 element 和 RenderObject 之间的关系
3.Flutter中的Widget、State、Context 的核心概念是为了解决什么问题
4.State 对象的初始化流程
5.讲一下flutter的几个特点/优缺点
6.Flutter 如何与 Android iOS 通信
7.说一下什么是状态管理为什么需要它
8.说一下 BLoC 模式
推荐学习资料
- 脑图 由于文章篇幅问题点击链接查看详细文章以及获取学习笔记GitHub
/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**