链接:https://www.jianshu.com/p/984fff6b6b2a

2019年3月初,离开滴滴准备面试。


整理一下有印象的面试问题,准备找工作的同学可以参考。

高德:专家工程师

1、对Activity启动流程的了解:AMS和ActivityThread涉及到的源码?
2、ANR的实现原理是什么,AMS中涉及ANR的代码有哪些?
3、对MeasureSpec的理解,如何实现一个瀑布流的自定义ViewGroup?
4、内存优化做了哪些工作,LeakCannary实现细节。
5、layout_gravity和gravity的区别。
6、对Binder实现原理的理解。
7、对Flutter框架和实现原理的理解。

小红书:

一面:


1、对Java多线程的理解,Sychronize修饰类和对象的区别?
2、使用过哪些多进程编程场景?AIDL的使用和原理。
3、手写一个单例算法的实现。
4、ART和Davilk虚拟机的区别是什么?


二面:


1、如何实现工程的组件化解耦?
2、handler-looper源码解读,如何保证在msg.postDelay情况下保证消息次序。
3、leakCannary原理,如何判断一个对象是否被回收?如何触发手动gc?


三面:


1、开放问题:优化一个列表页面的打开速度和流畅性。
2、开放问题:设计一个图片加载缓存框架。
3、职业规划和职业诉求。

快手:业务孵化部

一面~三面:


1、过往项目介绍和提问。
2、ListView和RecyclerView区别是什么,两者如何技术选型。
3、算法:实现一个o(n)复杂度的堆和最大数。
4、ART和Davlik垃圾回收区别;
5、开放性问题:如何设计垃圾回收算法?

蚂蚁金服:专家工程师

一面(电面):


1、Android/Java中的Classloader有哪些,区别是什么?
2、Android中的注解有哪几种,分别用来做什么?
3、了解或使用过哪些编译插桩方案,原理和优缺点是什么?
4、如何实现懒汉单例模式?口述代码实现。
5、插件化和热修复的主流方案有哪些?
6、分别如何对java代码和资源实现热修复?


二面:


1、项目实现细节。
2、Flutter框架和实现原理。
3、对ReactNative实现原理的了解。
4、笔试题:实现一个数组的窗口扫描算法。


三面:


1、最有成就的项目是什么?
2、该项目如何向外输出?


四面:


1、设计一个网络优化方案,针对移动端弱网环境。
2、设计一个性能优化方案。
3、对leakcannary原理的了解,c层实现。

饿了么:基础架构组

一面:


1、内存优化使用过哪些方案,取得过哪些效果,衡量指标如何确定?
2、app性能检测手段有哪些?
3、如何实现对一个方法执行耗时无痕埋点?
4、git实现原理是什么,如何搭建git server?
5、git merge和git rebase的区别?git 哈希算法的原理。
6、RPC和RESTful 的区别,项目中用的是哪种?
7、设计一个针对移动端弱网优化项目。


二面~三面:


1、项目细节,有什么设计缺陷和改进方案。
2、Android工程的编译流程。

字节跳动:基础架构组

一面:


1、做过哪些性能优化项目,说说实现细节。
2、TraceView的实现原理,分析数据误差来源。
3、是否使用过SysTrace,原理的了解。
4、TextView setText耗时的原因,对TextView绘制层源码的理解。
5、对Flutter的原理了解,如何实现多Native页面接入。


二面:


1、如何实现app的卡顿监控,线下和线上;比较这几种方法的优劣。
2、了解哪些编译插桩技术,聊聊使用细节。
3、HashMap的实现原理,如何解决哈希冲突?
4、算法题:识别一个字符串是否是ipv4地址。


三面:


1、你最优秀的工程设计项目,是怎么设计和实现的;扩展,如何做成一个平台级产品?
2、做过哪些性能优化项目?说下实现细节。
3、对Glide源码的了解,如何管理bitmap cache的,cache共有几级?
4、对inBitmap的理解。
5、算法:o(n)复杂度实现偶数递增奇数递减单向链接排序。
6、算法:单向链表逆序。


四面:


1、过往经历项目。
2、算法:实现一个数组插入。(处理异常判别,不使用Collections相关接口)。

3、职业发展规划。

Bigo

一面:


1、线程和进程的区别,什么时候使用多线程和多进程?
2、Android中有哪些IPC方式,Binder的优势和实现原理什么?
3、描述AM-AMS binder通信流程。
4、对文件描述符怎么理解?
5、Android中有哪些文件存储方式。
6、技术价值观。


二面:


1、做过哪些流量优化方案?
2、运营项目设计思路,有什么缺陷和改造建议。
3、这个项目的设计优势,对高内聚低耦合的理解?


三面:


1、业务提问。
2、职业预期。

其他合集:美图,作业帮,新东方,贝壳,脉脉

1、Fragment和Activity技术选型,两者如何通信。(新东方)
2、算法题:找到无序数组的最大连续求和。(新东方)
3、gradle中flavorDimensions的含义,在什么场景下使用过?
4、是否使用过CordinateLayout,嵌套滚动是如何实现的?
5、Android中有哪些跨线程通信方式,区别是什么?
6、AsyncTask有哪些使用局限性,是如何使用自定义线程池的?
7、Serivce是如何做到高优先级保活?
8、Android中使用过哪些持久化存储,各自的使用场景是什么?
9、如何不依赖框架实现一个数据库column的数据类型改造?
10、算法题:找到多个员工的共同繁忙时段 

https://github.com/banking/algorithm-dish/blob/master/algorithm-question/src/main/java/TimeAirbnb.java

11、对线程池的理解。(脉脉)
12、ReactNative实现原理,RN列表优化方案。(脉脉)
13、如何实现进程安全写文件?
14、OKhttp针对网络层有哪些优化?
15、对Android编译发布流程的了解。
16、实现对现有工程的flutter迁移。


●编号518,输入编号直达本文

●输入m获取到文章目录

推荐↓↓↓

Java编程

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。