总结拼多多,美团Android面试经验,美团安卓面试
一面
- 自我介绍
- hashmap和hashtable
- jdbc
- 三次握手
- http状态码
- HTTPS加密:对称,非对称,CA证书
- handler
- 线程池的使用
- sychonized,volatile
- binder
- activity绘制流程
- 事件响应流程
- activity周期,启动模式
二面
- 自我介绍
- 对自己项目的介绍,架构图呈现
- 对MVP和MVVM的理解。
- 四大启动模式,以及场景对应
- Handler的机制介绍,为什么不能在子线程初始化问题
- 设计模式中的单例介绍,使用场景(Okhttp的Seesion存储等等),在线编写
- 快排算法
- OkHttp的源码分析,及整体架构的流程图绘制
- 四大引用的问题和MVP框架相结合进行回答
- View绘制流程问题,如何不使用xml,来实现中间位置的定位
- 事件分发机制流程讲解,以及如何实现单击事件和长按事件的判定
- 关于为什么选用mqtt协议的问题,优势,原理
三面
- 自我介绍
- abstract和interface区别
- int和Integer区别
- 四种引用
- Java里面int、char、long的字节数
- 线程的创建方式
- RxJava的优缺点
- EventBus
- 从网络上加载一个10M的图片,要考虑哪些
- http与https
- http 1.0 和 http 2.0之间的区别
- 设计模式准则
- Handler机制
- 算法:判断一个链表是否回文算法,给定一个数组,将数组里面的每一位向后移动k位
携程
携程当时投的时候就没抱希望,招聘信息上明确指定只招固定的那几所985高校,就随便投了,没想到笔试都没做就直接打电话面试了,不过问的问题确实很深入,结果显然,一面就挂了。
一面
- 集合
- concurrenthashmap
- volatile
- synchronized与Lock
- Java线程池
- wait/notify
- NIO
- 垃圾收集器
- Activity生命周期
- AlertDialog,popupWindow,Activity区别
斗鱼
斗鱼是一家直播公司,给出的实习待遇是相当好,经室友推荐就投了简历。最后流程走完,得知挂在了二面上,大概原因就是没有拿得出手的项目,实际项目经验不足。
一面
- 线程同步(五个线程如何顺序执行)
- GC
- 内部类特点
- 四大引用范式
- 新建线程的方式(三个)
- arraylist和linkedlist
- 线程池(使用,种类,参数)
- hashmap(底层实现,冲突解决方式,扩容方式,线程安全?LinkedHashmap)
- 自定义VIew(View的绘制,自定义View的方法)
- 性能优化(布局和代码)
- sp、dp和px的区别(适配问题)
- handler(基本原理,ThreadLocal原理和使用)
- 四大组件(问了生命周期和特点和基本使用)* 计网
- TCP和UDP
- HTTP建立过程
二面
- 问的都是一些项目问题,比较宽泛,没问具体技术点
字节跳动
字节跳动是在三月底投的,当时找了一个月,都没拿到拿得出手的offer,有点心烦意乱,就又海投了一波。3.24接了字节跳动的面试,3.29进行的视频面试。一共进行了3轮视频面试,字节的面试官很好,看得出来字节的技术是很强的,也很注重算法。最终拿到offer。
一面
- 数据结构中堆的概念,堆排序
- 死锁的概念,怎么避免死锁
- ReentrantLock
- synchronized
- volatile
- HashMap
- singleTask启动模式
- 用到的一些开源框架,介绍一个看过源码的,内部实现过程。
- 消息机制实现
二面
- synchronized与ReentrantLock
- ReentrantLock的内部实现
- 用到的一些开源框架,介绍一个看过源码的,内部实现过程。
- Java中异常
- App启动崩溃异常捕捉
- 事件传递机制的介绍
- ListView的优化
- 今日头条推荐新闻去重,推荐的时候去掉用户已经看过的新闻。
- 二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径。手写算法
- 模式MVP,MVC介绍
- 断点续传的实现
三面
- 集合的接口和具体实现类,介绍
- TreeMap具体实现
- synchronized与ReentrantLock
- 手写生产者/消费者模式
- 逻辑地址与物理地址,为什么使用逻辑地址
- volatile
- 一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、空间复杂度。手写算法
- Android进程分类
- 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
- Activity的启动模式
腾讯
腾讯大家都知道互联网巨头,我是通过实习僧上简历投递获得的这次面试机会,一共进行了两轮电话面试,挂在了二面。
一面
- 自我介绍
- APP的启动流程
- APP的安装流程
- Rxjava的源码
- 事件分发机制和多点触控
- https和非对称加密
- Retrofit的动态代理
- 几种IPC方式的优劣,以及Binder的原理
- 本地持久化储存的方法
- parcelable和serializable
二面
- 自我介绍
- 笔试题1:删除无序链表中的重复结点(能否优化)
- 笔试题2:先说一下二叉树的有哪些遍历方法。写一个二叉树前序遍历的非递归形式。
- 讲一下Java的内存。
- 创建一个字符串对象,这个对象分配在哪里?
- String str = “123” + “456”;会创建几个对象。
- 问了操作系统的问题,没学过,所以也忘了问了什么。
- 数据存储有学过吗?数据库和文件保存有什么区别?
- Activity有哪些启动模式?
- 有什么要问的?
总结
可以看出,笔者的工作学习模式便是由以下?「六个要点」?组成:
? 多层次的工作/学习计划 + 番茄工作法 + 定额工作法 + 批处理 + 多任务并行 + 图层工作法?
希望大家能将这些要点融入自己的工作学习当中,我相信一定会工作与学习地更富有成效。
下面是我学习用到的一些书籍学习导图,以及系统的学习资料。每一个知识点,都有对应的导图,学习的资料,视频,面试题目。
如:我需要学习?Flutter的知识。(大家可以参考我的学习方法)
CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
- Flutter 的思维导图(无论学习什么,有学习路线都会事半功倍)
- Flutter进阶学习全套手册
- Flutter进阶学习全套视频
大概就上面这几个步骤,这样学习不仅高效,而且能系统的学习新的知识。