客户端面经+Offer求比较:腾讯、阿里、字节、美团、蘑菇街
二月底开始准备暑期实习,投递岗位都是客户端开发-安卓,现在收到腾讯offer,美团HR面,字阿里都是三面,感觉等不及阿里的后续流程了,发个帖为实习转正和秋招攒人品。
简历里涉及了安卓内存泄漏的Binder的项目,面经里主要回忆了一些基础知识。
阿里
阿里提前批面了三个部门,都是一面挂,正式批投的支付宝终端
钉钉 1h
- 安卓内存泄漏的具体场景
- 如何获取hrof文件
- Binder原理、通信机制
- 使用Binder的注意事项
- Hashmap、Hashtable
- 建造者模式和工厂模式的区别
- Looper、Handler机制
- 手写代码(字符串转化为字符数组,同一个字符串返回同一个字符数组,支持多线程)
飞猪 40min
- Binder原理
- 死锁机制
- Activity的生命周期
- 页面切换的过程
- View的生命周期
- RecycleView
- Handler的机制
数字农业 1h
- Binder通信原理
- Parcelable和Serializable
- 内存泄漏
- JNI层的内存泄漏
- finalize关键字
- 内存优化(网络、数据库、流畅性、稳定性)
- 开机页面如何优化
- 图片加载框架
- String类的实现方式(独占模式)
- 单例模式的实现方式(Enum
- HashMap的实现方式,Java8
- GC回收算法
- 如何判断当前时刻出现的内存问题
笔试
- 从k个人中选择一个队伍、每个队伍队长不同,求所有的队伍数量
- 地图中可以走一步或者飞一步(最多5次),起点到终点的最短距离
支付宝-基础技术
简历评估(主要是项目)
- 内存泄漏有哪些方式
- Binder限制1M的原因
一面 1h
- 项目
二面 40min
- 项目
- C/Cpp中内存分配的方式?内存泄漏的方式?
- 安卓中版本迭代影响最大的是?
- Http中的GET和POST的区别
- TCP三次握手、四次回收、RESET和SYN的区别
腾讯-CSIG-优图
一面 20min + 1h
- C++、Java内存管理的区别
- static关键字
- 死锁
- 构造和析构函数
笔试
- 字符串转整数
- 链表反转(递归)
- 高级链表复制
- 无重复元素的一维数组找第K大的数
二面 30min
- 项目
三面 30min
- 实习时间
- C++、Java内存管理的区别
- 项目
蘑菇街
一面 60min
- LeakCanary
- Fragment中的onSaveInstance能够考虑嘛?
- Binder原理
- HashMap数据结构?null位置固定?
- ConcurrentHashMap如何实现线程同步?
- 线程池参数?典型类型与应用场景?
- 抽象与接口?
- MVP中P中接口过多怎么办?
- RecycleView的缓存机制?大小?
- 设计一个下拉刷新View的注意事项?
- 链表中的环?找到入口?
美团-到店事业群
笔试
- 整数按顺序置换为另外的数字
- 红黑相间的圆环求面积
- 从字符数组中找到字序列个数,子序列满足每一位能整除位置索引
- 打靶连续k次命中得ak分,求打靶N次的数学期望
- 迭代公式求和公式(没怎么看题目)
一面 50min
- Binder、内存泄漏的项目场景
- 输入网址到渲染的过程
- Http的内容?GET和Post的区别?状态嘛?
- TCP三次握手
- 链表和栈、应用场景
- 平衡二叉树
- 链表中倒数第五个?环?
- 斐波那契数列
二面 50min
- 项目介绍
- Array、List、Set
- Set的具体实现机制?hashcode?
- 求一个Set的所有子集?(手写)
- 平时会看什么书?技术博客?
字节跳动-抖音
一面 50min
- 静态内部类、非静态内部类
- 类加载机制
- TCP如何实现可靠传输?
- TCP底层的协议?
- DNS的步骤?
- 如何实现线程同步?跨线程通信的方式?
- 进程与线程的区别?
- 堆排序的复杂度?
- 找出使数组不连续的值?(手写)
二面 70min
- 项目介绍
- 手写单例模式
- 消费者、生产者模式
- handle原理?谁post?
- Binder通信的过程?
- 内存泄漏的场景?
- 图中联通分支数量(手写)