面试总结

750 阅读7分钟

2022

Flutter

  1. flutter 多线程 、单线程怎么运行的 、如何做并发 Flutter线程模型 www.jianshu.com/p/606389756…
  2. flutter 三棵树
  3. flutter wiget 生命周期 widget A 起 widget B 经历了什么
  4. flutter 与 native 通信 哪几种
  5. flutter 路由如何做的 ,混合开发路由实现
  6. flutter key 有哪些,怎么使用的
  7. provider getX select 使用 原理? conentprovider 包裹的 consmuer 什么情况下用
  8. flutter 引擎 --> engXX Group
  9. 反复刷新的话 用什么组件 10.flap 动态化
  10. 多继承 什么场景下使用 12.flutter 怎么计算控件高度 13.flutter 滚动曝光实现
  11. flutter didappear 实现

快看漫画

1.java的锁、底层锁的性能差异 2. 注解 3. service loader 实现 4. dex2oat dexopt 5. Arouter 6. bundle 设计思路、原因(内存、binder机制) 7. 线程内存管控

贝壳

1.jvm 内存区域、各个储存 2.handler 3.事件分发

2019

自如

  1. activity 启动模式
  2. LeakCanary 原理
  3. 性能优化具体
  4. 内存优化
  5. 自定义View 事件分发
  6. 自定义View 表盘实现 Canvs方法
  7. 动画有哪些
  8. 源码中的设计模式
  9. 快排

美团

一面:

  1. int 与 Integer 区别,自动装箱与自动拆箱用的具体方法
  2. view 事件分发
  3. 接口与抽象类区别
  4. 泛型,String 插入到 Integer map里面
  5. hashmap hashmap的离散算法具体是什么,怎么计算的
  6. synchronized obj与class 方法和静态方法区别
  7. glide 三级缓存
  8. eventbus 原理
  9. 注解
  10. ARouter 原理
  11. LeakCanary 原理
  12. handler
  13. kotlin 高阶函数 与java的优势 伴生对象,扩展方法
  14. ConstraintLayout 、grop的使用和坑
  15. 组件化设计
  16. 字节码增强技术 了解多少
  17. Looper 创建地点
  18. 什么是死锁,死锁如何避免
  19. 引用传递与值传递区别,java是什么
  20. mvp mvvm
  21. fragment 如何判断显示,hide与show会影响吗
  22. viewpage 加载fragment 当fragment滑动到后面,生命周期变化
  23. Instant Run工作原理及用法

二面:

  1. 内存泄露有哪些场景
  2. handler 泄露原因,如何解决
  3. message 创建方式 ,message 内存泄露?
  4. 保活方式
  5. opengl的lookup滤镜原理
  6. hashcode equals 重写
  7. AIDL 是什么,如何同步,上一句话bindservce 下一句话可以获取 对面进程的进程信息??

三面:

  1. apk的打包方式,gradle 构建流程
  2. aapt的作用,R文件的作用,R文件中的id每个的含义
  3. aar 是否包括R文件,为什么
  4. manifest 合并是在什么时候
  5. 1代签名 2代签名 谷歌play 签名

京东云

  1. 一个对象new之后 的生命周期
  2. GC算法 最新JVM算法组合 分代
  3. 锁的升级 synchronized
  4. 栈是否会将对象放到堆中
  5. 8大基础类型 字节 1个汉字多少字节
  6. 线程创建的方式
  7. 线程池的使用 各种线程池 具体项目中如何使用
  8. 集合类的关系 接口继承关系
  9. 类的加载
  10. bulid 模式 new的地方放在哪 (static 内部类)
  11. 什么是垃圾
  12. 设计模式
  13. 快排
  14. 堆排序
  15. 向线程池提交任务的两种方式 execute submit

猎豹

  1. 线程反复创建会有什么问题
  2. 创建线程的方式
  3. handler idelHandler
  4. surfaceflinger 原理
  5. surface 渲染原理
  6. 类的加载
  7. https http
  8. 常用的 返回码
  9. 网络连接框架
  10. 注解
  11. binder
  12. glide原理
  13. 设计模式
  14. 自定义view
  15. 动画
  16. 内存优化 性能优化
  17. 网络架构

YY

  1. 通话流程..
  2. 如何加载大图,在不压缩的情况下
  3. 图片加载到手机中内存的大小,ARGB_8888 等
  4. 约束布局的好处,性能
  5. 补间动画 和属性动画区别 性能优势
  6. 事件分发,滑动冲突如何解决
  7. 矩阵 错切
  8. handler 底层 native
  9. hashmap 扩容 离散算法
  10. synchronized 锁 方法和代码块区别
  11. 性能优化 工具,不使用工具的时候可以用什么方式
  12. 内存溢出 排除
  13. 视频播放
  14. js与Android调用

阿里

一面:

  1. 应用启动流程
  2. 矩阵使用
  3. 进程间通信 除了AIDL
  4. 多进程的进程启动 为什么要用frok
  5. ThreadLoacl
  6. hash冲突的解决方案有哪些
  7. 性能优化 步骤
  8. 内存泄露排查
  9. synchronized 锁 方法和代码块区别
  10. 读锁与写锁的区别

二面:

  1. JIT AOP 是什么
  2. 进程和线程区别
  3. classlode 双亲 ClassCastException原理 是否可以load相同的类名 双亲委派机制为什么要这样做
  4. js为什么写的更快 相对于java
  5. 组件的抽离 有什么更好的办法

腾讯

算法:

  1. 单例 多线程考虑

面试题:

  1. hashcode 不重写,equals 重写会有什么问题

    在存储map中会有重复的对象

  2. hashmap 多线程会有什么危害

    死锁

  3. handler.next 阻塞之后,CPU为什么会休眠... 之类

    www.zhihu.com/question/34…

  4. 内存泄露监控,原理

  5. https 打开浏览器经历了什么

    github.com/skyline7548…

  6. APK 打包流程 ,资源打包

    1. java文件生成过程 aapt生成R文件 aidl将.aidl生成java文件
    2. 通过aapt工具来生成生成资源索引文件,一般来说生成的文件名是resources.ap_
    3. 使用jdk中的javac工具,生成class文件
    4. 通过dx工具生成dex文件,dx工具与aapt存放目录一致。
    5. 通过apkbuilder打包apk
    6. 签名,可以使用jarsigner工具签名和apksigner工具签名
    7. zipaligin,是一个zip文件整理工具用来优化apk文件

    www.jianshu.com/p/a134d00e8…

  7. 签名的作用,数字签名的应用,签名的具体流程

    1. 防伪,应用升级时的标志
    2. 可以让相同签名的不同应用在相同进程
    3. 代码或者数据共享

    blog.csdn.net/zwjemperor/…

  8. dialog 启动后 Activity生命周期

    无影响

  9. 启动透明Activity 生命周期变换

    A onPause B onCreate B onStart B onResume

  10. 类的加载顺序,类里面的参数 静态代码块

    (静态变量、静态初始化块)>(变量、初始化块)>构造器

  11. public static final 可以反射吗?

    可以

  12. 可见性 具体如何可见

    方法操作完会出栈,如果方法A使用到了全局变量X,先入栈A, X拷贝副本进入A栈桢,同时,A内部调用B方法。当B执行完,B先出栈,A再出栈,最后将X刷入主内存

  13. 一个类 F, X为F的static 成员, Activity A 赋值给 F.X = "abc",Activity A 启动 Activity B ,从 Activity B里取出 F.X 什么时候为null

    1.多进程

  14. gc 的根具体是什么

    1. Java栈中的引用的对象
    2. 本地方法栈中JNI引用的对象
    3. 常量池引用的对象
    4. 静态属性引用的对象

    GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被GC所管理,因而选择这些区域内的对象作为GC roots,被GC roots引用的对象不被GC回收。

  15. view 分发

  16. 方法签名

    由方法名加参数组合,重写需要子类与父类方法签名相同

2017

滴滴

算法:

  1. 二维数组路径最优(动态规划算法)
  2. 树的遍历

面试题:

  1. ThreadLocal
  2. 多线程三要素
  3. 锁的概念由来
  4. synchronized和volatile区别
  5. hashmap底层实现 算法
  6. gc原理 底层算法
  7. view高度
  8. 泛型
  9. context区别

猎豹

算法:

  1. 链表反转
  2. 快排

面试题:

  1. 进程如何启动
  2. view 绘制 ,view 事件分发
  3. synchronized和volatile区别
  4. Activity 启动流程
  5. 多态
  6. 亲和力 taskAffinity (1.设置 FLAG_ACTIVITY_NEW_TASK allowTaskReparenting 如果有一个已存在的任务具有与新activity相同的亲和力,那么这个activity就被启动并安置到这个已存在的任务中.如果没有这样的任务,才开始一个新的任务.)
  7. 动画
  8. classload 原理
  9. 单例 静态内部类
  10. 如何保证ContentPrivod的线程安全
  11. 用户态 内核态