一线互联网移动架构师Android框架体系架构!干货整理

# 面试经验 自己大大小小投了也有20多家公司,不过经历简历筛选以及笔试淘汰,最终就经历了7家公司的面试。下面我就把自己面试中问到的问题贴出来供大家参考,一些具体项目相关的就不贴了。 # 阿里巴巴 > 阿里是3月初开始投的,是自己第一次面试大型的互联网公司,当时自己的准备也不够充分,表现不是很好,经历了三次技术面,最后挂了。 **一面** 1. 自我介绍 2. hashmap和hashtable 3. jdbc 4. 三次握手 5. http状态码 6. HTTPS加密:对称,非对称,CA证书 7. handler 8. 线程池的使用 9. sychonized,volatile 10. binder 11. activity绘制流程 12. 事件响应流程 13. activity周期,启动模式 **二面** 1. 自我介绍 2. 对自己项目的介绍,架构图呈现 3. 对MVP和MVVM的理解。 4. 四大启动模式,以及场景对应 5. Handler的机制介绍,为什么不能在子线程初始化问题 6. 设计模式中的单例介绍,使用场景(Okhttp的Seesion存储等等),在线编写 7. 快排算法 8. OkHttp的源码分析,及整体架构的流程图绘制 9. 四大引用的问题和MVP框架相结合进行回答 10. View绘制流程问题,如何不使用xml,来实现中间位置的定位 11. 事件分发机制流程讲解,以及如何实现单击事件和长按事件的判定 12. 关于为什么选用mqtt协议的问题,优势,原理 **三面** 1. 自我介绍 2. abstract和interface区别 3. int和Integer区别 4. 四种引用 5. Java里面int、char、long的字节数 6. 线程的创建方式 7. RxJava的优缺点 8. EventBus 9. 从网络上加载一个10M的图片,要考虑哪些 10. http与https 11. http 1.0 和 http 2.0之间的区别 12. 设计模式准则 13. Handler机制 14. 算法:判断一个链表是否回文算法,给定一个数组,将数组里面的每一位向后移动k位 # 携程 > 携程当时投的时候就没抱希望,招聘信息上明确指定只招固定的那几所985高校,就随便投了,没想到笔试都没做就直接打电话面试了,不过问的问题确实很深入,结果显然,一面就挂了。 **一面** 1. 集合 2. concurrenthashmap 3. volatile 4. synchronized与Lock 5. Java线程池 6. wait/notify 7. NIO 8. 垃圾收集器 9. Activity生命周期 10. AlertDialog,popupWindow,Activity区别 # 斗鱼 > 斗鱼是一家直播公司,给出的实习待遇是相当好,经室友推荐就投了简历。最后流程走完,得知挂在了二面上,大概原因就是没有拿得出手的项目,实际项目经验不足。 **一面** 1. 线程同步(五个线程如何顺序执行) 2. GC 3. 内部类特点 4. 四大引用范式 5. 新建线程的方式(三个) 6. arraylist和linkedlist 7. 线程池(使用,种类,参数) 8. hashmap(底层实现,冲突解决方式,扩容方式,线程安全?LinkedHashmap) 9. 自定义VIew(View的绘制,自定义View的方法) 10. 性能优化(布局和代码) 11. sp、dp和px的区别(适配问题) 12. handler(基本原理,ThreadLocal原理和使用) 13. 四大组件(问了生命周期和特点和基本使用)* 计网 14. TCP和UDP 15. HTTP建立过程 **二面** 1. 问的都是一些项目问题,比较宽泛,没问具体技术点 # 字节跳动 > 字节跳动是在三月底投的,当时找了一个月,都没拿到拿得出手的offer,有点心烦意乱,就又海投了一波。3.24接了字节跳动的面试,3.29进行的视频面试。一共进行了3轮视频面试,字节的面试官很好,看得出来字节的技术是很强的,也很注重算法。最终拿到offer。 **一面** 1. 数据结构中堆的概念,堆排序 2. 死锁的概念,怎么避免死锁 3. ReentrantLock 4. synchronized 5. volatile 6. HashMap 7. singleTask启动模式 8. 用到的一些开源框架,介绍一个看过源码的,内部实现过程。 9. 消息机制实现 **二面** 1. synchronized与ReentrantLock 2. ReentrantLock的内部实现 3. 用到的一些开源框架,介绍一个看过源码的,内部实现过程。 4. Java中异常 5. App启动崩溃异常捕捉 6. 事件传递机制的介绍 7. ListView的优化 8. 今日头条推荐新闻去重,推荐的时候去掉用户已经看过的新闻。 9. 二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径。手写算法 10. 模式MVP,MVC介绍 11. 断点续传的实现 **三面** 1. 集合的接口和具体实现类,介绍 2. TreeMap具体实现 3. synchronized与ReentrantLock 4. 手写生产者/消费者模式 5. 逻辑地址与物理地址,为什么使用逻辑地址 6. volatile 7. 一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、空间复杂度。手写算法 8. Android进程分类 9. 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。 10. Activity的启动模式 # 腾讯 > 腾讯大家都知道互联网巨头,我是通过实习僧上简历投递获得的这次面试机会,一共进行了两轮电话面试,挂在了二面。 **一面** 1. 自我介绍 2. APP的启动流程 3. APP的安装流程 4. Rxjava的源码 5. 事件分发机制和多点触控 6. https和非对称加密 7. Retrofit的动态代理 8. 几种IPC方式的优劣,以及Binder的原理 9. 本地持久化储存的方法 10. parcelable和serializable **二面** 1. 自我介绍 2. 笔试题1:删除无序链表中的重复结点(能否优化) 3. 笔试题2:先说一下二叉树的有哪些遍历方法。写一个二叉树前序遍历的非递归形式。 4. 讲一下Java的内存。 5. 创建一个字符串对象,这个对象分配在哪里? 6. String str = “123” + “456”;会创建几个对象。 7. 问了操作系统的问题,没学过,所以也忘了问了什么。 8. 数据存储有学过吗?数据库和文件保存有什么区别? 9. Activity有哪些启动模式? 10. 有什么要问的? ### 总结 **其实要轻松掌握很简单,要点就两个:** 1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。 2. 多练。 (视频优势是互动感强,容易集中注意力) **你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。** 对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。**下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。** > * **自行下载直达领取链接:【[点击我即可获得!](https://github.com/a120464/Android-P7/blob/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)】** > * **以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,【[点这里可以看到全部内容](https://github.com/a120464/Android-P7/blob/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)】。** ![](http://www.icode9.com/i/li/?n=2&i=images/20210705/1625437870556219.jpg)
上一篇:一线大厂架构师都推荐的Android零基础大全,你值得拥有!


下一篇:2021届毕业生还没找到Android开发工作,深入剖析