记录了牛客网面经专区,从2020/4/22到2020/9/16的面经

Android

基础

Activity

  1. activity和application有什么区别
  2. 生命周期(*)
  3. 启动模式(*)
  4. 初始化数据应该在onCreate还是onStart——onCreate
  5. activity和fragment通信(*)
    1. 文件
    2. handler
    3. attach回调
    4. eventbus
    5. bundle
  6. fragment和activity有什么区别
  7. activity和window关系
  8. Activity、View、Surface、SurfaceView之间的联系

Broadcast

  1. 静态广播和动态广播区别?
  2. 有序广播的应用

service

  1. 服务start和bind区别

View

  1. 讲一下View的绘制,performMeasure是哪个调用的(*)
  2. Draw和onDraw什么区别
  3. 自定义view需要干什么
  4. View事件分发机制原理(*)
  5. 安卓动画有哪些
  6. ListView缓存,有没有想过ListView是怎么实现的
  7. RecyclerView瀑布流
  8. RecyclerView缓存(详细讲)
  9. RecyclerView性能优化
  10. 如何自己设计一个RecyclerView。。。
  11. 数据错乱处理方式
  12. 为什么不用notifiChangeAll()
  13. 知道DiffUtil吗,源码

图片加载

  1. 图片如何高效加载
  2. 设计一个图片加载框架,怎么做
  3. 缓存有没有做过呢
  4. DiskLrucache 缓存
  5. 批量加载图片怎么做
  6. LRU算法是什么?用在什么场景?简述软件和硬件实现方法?

其它

  1. 数据存储有学过吗?数据库和文件保存有什么区别?(*)
  2. android怎么实现多进程通信

框架源码

Handler(**

  1. Handler机制
  2. 能否让message被push到非主线程的线程里?(提示looper)
  3. threadLocal的原理
  4. looper 为什么设计成死循环
  5. looper死循环为什么不会阻塞主线程
  6. 如果在looper中加很多延时命令, 会阻塞吗
  7. 是否可以阻塞,如何阻塞
  8. Handler引起的内存泄露怎么解决,软引用,弱引用具体使用场景
  9. 两个子线程之间可以通过Handler传递消息吗
  10. MessageQueue的数据结构,为什么是链表不是队列

Binder(-)

  1. Linux的进程通信机制,android的进程通信机制
  2. bundle

OkHttp

  1. okhttp

EventBus

  1. eventbus

性能优化

  1. 内存泄漏的场景和解决方法(*)
  2. 单元测试了解吗
  3. 内存泄漏 有没有解决办法
    1. Activity—》onDestory()
    2. 弱应用 弱引用的具体实现
  4. 安卓11 有哪些新特性
  5. mvc MVP mvvm 区别
  6. 安卓变得越来越流畅,你知道底层角度安卓系统做了哪些工作吗 ???

Java

基础

  1. java基本数据类型说一下,long最大值多少
  2. String字符串实际对象的问题(*)
  3. String str = “123” + “456”;会创建几个对象。
  4. 我看你代码题里用了 StringBuilder,那你说下 StringBuilder 和 StringBuffer
  5. string stringbuilder stringbuffer有啥区别?
  6. ==和equal区别,hashcode何时需要被重写
  7. java中的异常处理(答了try catch)
  8. 四种引用的特点(**
  9. 重写和重载的区别
  10. 内部类
  11. 知道int和INT的区别吗?bool和BOOL的区别呢?(????啥玩意)int和integer的区别?(应该是想问包装类吧)
  12. 序列化(Serilizable和Parcelable)
  13. 函数一直递归会有什么影响?(栈溢出?)如果不传参,栈还会溢出吗

集合

  1. ArrayList 和 LinkedList(**
  2. HashMap 和 CurrentHashMap
  3. get的时间复杂度
  4. 如何优化冲突
  5. List,Set,Map什么区别,ArrayList, LinkedList区别
  6. HashMap原理,为什么每次扩容都是2的倍数,为什么由头插改成了尾插,环化是怎么引起的(**

多线程

  1. Java 里有哪些加锁的方式(*)
  2. Java 的线程池参数怎么设置
  3. 加两次锁会死锁吗
  4. sleep和wait的区别,为什么前者在object类中而后者不在(*)
  5. volatile和synchronized的区别,他们的实现原理是什么(*)
  6. volatile用来干嘛的?

JVM

  1. jvm内存模型(2)
  2. 创建一个字符串对象,这个对象分配在哪里
  3. 堆栈内存具体是怎么申请的
  4. 是否了解反射,背后的机制是否了解
  5. 类加载机制
  6. 注解,反射机制的原理
  7. 垃圾回收原理以及算法
  8. GC的标记算法种类,引用计数法的问题怎么解决
  9. GC,FullGC什么时候会触发

计网

在浏览器输入百度然后回车之后的整个过程(详细到协议层都发生了什么)

TCP/UDP(*)

  1. 断点重传
  2. TCP和UDP区别
  3. Tcp特点
  4. TCP的可靠性和拥塞控制
  5. TCP如何保证可靠
  6. 三握四挥
  7. 为什么是三次握手,两次不行吗
  8. UDP怎么变可靠,应用场景,Udp(游戏,视频,其中音频不可以)

http/https(*)

  1. HTTP和HTTPS,怎么加密的
  2. http和https的区别
  3. https安全吗?提到了第三方证书
  4. http1.0 1.1 2.0 区别
  5. http1.0 1.1 2.0 解决了什么问题

IP

  1. https能不能防dns劫持?
  2. dns劫持该怎么办

操作系统

  1. 线程和进程(*)
  2. 进程的调度算法
  3. 进程之间的通信方法(IPC)
  4. 线程的各种状态有什么?
  5. 线程的同步方法
  6. 死锁是什么,遇到过吗
  7. 操作系统中异常是怎么处理的(1)
  8. 操作系统中的中断(1)
  9. 32位的操作系统能存多大的数据(1)
  10. 虚拟内存是什么
  11. 虚拟地址到物理地址

数据结构

  1. 快排和堆排的原理

设计模式

  1. 是否了解设计模式和面向对象原则?讲一讲项目中用到的设计模式(讲了观察者和单例还有工厂)还问了怎么样算一个好的接口:函数名要明确、函数职责明确、有标准的输入输出这一点没有答上来,原来面试官想问的是边界测试的问题
  2. 单例,单例有多少种写法

算法题

  1. 第k大的数(2)
  2. 反转链表(2)
  3. 二叉树遍历(3)
  4. 给两个字符串a,b,判断a中是否包含了b的所有字符
  5. 版本号比较大小
  6. 生成长度为N的随机数组
  7. 最小的k个数
  8. 大数相加(注意:带正负号的情况;再注意:带小数的情况)
  9. 一个字符串里面,最长不重复字符的长度
  10. 括号匹配
  11. 计算0~n(不包含1)之间,所有的3和5的倍数的和。如n=10,输出3+5+6+9=23
  12. 正负数交替排列,找和最大的子序列
  13. 链表有环
  14. 接雨水
  15. 二叉树结点最近公共祖先
  16. 最长公共子串长度
  17. 两个无序数组,每个数组中的元素都是唯一,多种方法找出二者重复的元素
  18. 求最大公约数
  19. 2数之和
  20. 两个数组合并,有序输出。不去重
  21. 删除无序链表中的重复结点(能否优化)

智力题

  1. 1000 杯水,有一杯有毒,小鼠喝下后1小时死亡,现在有 10 只小鼠,怎么在 1 小时内找出有毒的那杯水

社招面经

可以看下,不难,跟咱们面试差不多。
有一说一,工作1-3年内的社招面试题真的不难

腾讯Android岗社招面筋分享
记百度腾讯oppo的Android社招面经