记录了牛客网面经专区,从2020/4/22到2020/9/16的面经
Android
基础
Activity
- activity和application有什么区别
- 生命周期(*)
- 启动模式(*)
- 初始化数据应该在onCreate还是onStart——onCreate
- activity和fragment通信(*)
- 文件
- handler
- attach回调
- eventbus
- bundle
- fragment和activity有什么区别
- activity和window关系
- Activity、View、Surface、SurfaceView之间的联系
Broadcast
- 静态广播和动态广播区别?
- 有序广播的应用
service
- 服务start和bind区别
View
- 讲一下View的绘制,performMeasure是哪个调用的(*)
- Draw和onDraw什么区别
- 自定义view需要干什么
- View事件分发机制原理(*)
- 安卓动画有哪些
- ListView缓存,有没有想过ListView是怎么实现的
- RecyclerView瀑布流
- RecyclerView缓存(详细讲)
- RecyclerView性能优化
- 如何自己设计一个RecyclerView。。。
- 数据错乱处理方式
- 为什么不用notifiChangeAll()
- 知道DiffUtil吗,源码
图片加载
- 图片如何高效加载
- 设计一个图片加载框架,怎么做
- 缓存有没有做过呢
- DiskLrucache 缓存
- 批量加载图片怎么做
- LRU算法是什么?用在什么场景?简述软件和硬件实现方法?
其它
- 数据存储有学过吗?数据库和文件保存有什么区别?(*)
- android怎么实现多进程通信
框架源码
Handler(****)
- Handler机制
- 能否让message被push到非主线程的线程里?(提示looper)
- threadLocal的原理
- looper 为什么设计成死循环
- looper死循环为什么不会阻塞主线程
- 如果在looper中加很多延时命令, 会阻塞吗
- 是否可以阻塞,如何阻塞
- Handler引起的内存泄露怎么解决,软引用,弱引用具体使用场景
- 两个子线程之间可以通过Handler传递消息吗
- MessageQueue的数据结构,为什么是链表不是队列
Binder(-)
- Linux的进程通信机制,android的进程通信机制
- bundle
OkHttp
- okhttp
EventBus
- eventbus
性能优化
- 内存泄漏的场景和解决方法(*)
- 单元测试了解吗
- 内存泄漏 有没有解决办法
- Activity—》onDestory()
- 弱应用 弱引用的具体实现
- 安卓11 有哪些新特性
- mvc MVP mvvm 区别
- 安卓变得越来越流畅,你知道底层角度安卓系统做了哪些工作吗 ???
Java
基础
- java基本数据类型说一下,long最大值多少
- String字符串实际对象的问题(*)
- String str = “123” + “456”;会创建几个对象。
- 我看你代码题里用了 StringBuilder,那你说下 StringBuilder 和 StringBuffer
- string stringbuilder stringbuffer有啥区别?
- ==和equal区别,hashcode何时需要被重写
- java中的异常处理(答了try catch)
- 四种引用的特点(****)
- 重写和重载的区别
- 内部类
- 知道int和INT的区别吗?bool和BOOL的区别呢?(????啥玩意)int和integer的区别?(应该是想问包装类吧)
- 序列化(Serilizable和Parcelable)
- 函数一直递归会有什么影响?(栈溢出?)如果不传参,栈还会溢出吗
集合
- ArrayList 和 LinkedList(****)
- HashMap 和 CurrentHashMap
- get的时间复杂度
- 如何优化冲突
- List,Set,Map什么区别,ArrayList, LinkedList区别
- HashMap原理,为什么每次扩容都是2的倍数,为什么由头插改成了尾插,环化是怎么引起的(****)
多线程
- Java 里有哪些加锁的方式(*)
- Java 的线程池参数怎么设置
- 加两次锁会死锁吗
- sleep和wait的区别,为什么前者在object类中而后者不在(*)
- volatile和synchronized的区别,他们的实现原理是什么(*)
- volatile用来干嘛的?
JVM
- jvm内存模型(2)
- 创建一个字符串对象,这个对象分配在哪里
- 堆栈内存具体是怎么申请的
- 是否了解反射,背后的机制是否了解
- 类加载机制
- 注解,反射机制的原理
- 垃圾回收原理以及算法
- GC的标记算法种类,引用计数法的问题怎么解决
- GC,FullGC什么时候会触发
计网
在浏览器输入百度然后回车之后的整个过程(详细到协议层都发生了什么)
TCP/UDP(*)
- 断点重传
- TCP和UDP区别
- Tcp特点
- TCP的可靠性和拥塞控制
- TCP如何保证可靠
- 三握四挥
- 为什么是三次握手,两次不行吗
- UDP怎么变可靠,应用场景,Udp(游戏,视频,其中音频不可以)
http/https(*)
- HTTP和HTTPS,怎么加密的
- http和https的区别
- https安全吗?提到了第三方证书
- http1.0 1.1 2.0 区别
- http1.0 1.1 2.0 解决了什么问题
IP
- https能不能防dns劫持?
- dns劫持该怎么办
操作系统
- 线程和进程(*)
- 进程的调度算法
- 进程之间的通信方法(IPC)
- 线程的各种状态有什么?
- 线程的同步方法
- 死锁是什么,遇到过吗
- 操作系统中异常是怎么处理的(1)
- 操作系统中的中断(1)
- 32位的操作系统能存多大的数据(1)
- 虚拟内存是什么
- 虚拟地址到物理地址
数据结构
- 快排和堆排的原理
设计模式
- 是否了解设计模式和面向对象原则?讲一讲项目中用到的设计模式(讲了观察者和单例还有工厂)还问了怎么样算一个好的接口:函数名要明确、函数职责明确、有标准的输入输出这一点没有答上来,原来面试官想问的是边界测试的问题
- 单例,单例有多少种写法
算法题
- 第k大的数(2)
- 反转链表(2)
- 二叉树遍历(3)
- 给两个字符串a,b,判断a中是否包含了b的所有字符
- 版本号比较大小
- 生成长度为N的随机数组
- 最小的k个数
- 大数相加(注意:带正负号的情况;再注意:带小数的情况)
- 一个字符串里面,最长不重复字符的长度
- 括号匹配
- 计算0~n(不包含1)之间,所有的3和5的倍数的和。如n=10,输出3+5+6+9=23
- 正负数交替排列,找和最大的子序列
- 链表有环
- 接雨水
- 二叉树结点最近公共祖先
- 最长公共子串长度
- 两个无序数组,每个数组中的元素都是唯一,多种方法找出二者重复的元素
- 求最大公约数
- 2数之和
- 两个数组合并,有序输出。不去重
- 删除无序链表中的重复结点(能否优化)
智力题
- 1000 杯水,有一杯有毒,小鼠喝下后1小时死亡,现在有 10 只小鼠,怎么在 1 小时内找出有毒的那杯水
社招面经
可以看下,不难,跟咱们面试差不多。 有一说一,工作1-3年内的社招面试题真的不难