重新发一下 markdown的:
本帖记录了今年提前批之前牛客上vivo的所有面经,我做了分类汇总,本来是用来为vivo提前批准备的,谁知道简历都没过,现在人还在人才库里。😔 我还是很想去vivo的,希望正式批能有机会吧。
vivo 面经分类汇总
Java基础
1.JDK JRE
2. Java异常了解吗?说说平时遇到的异常?说出6种常见的java异常。写程序遇到过哪些异常 运行时异常有哪些
3. 面向对象 面对对象的几大特性 多态怎么理解
4. 修饰符:public;protect;default;private优先级
5. 对string类的理解。stringbuffer 和 stringbuilder
6. 反射机制介绍一下
7. bio,nio,aio分别介绍一下,nio的实现方式
8. 问了public等变量定义修饰词的时间域
9. 问了反射机制,还有问了动态代理的好处和坏处,好处答不上来
10. 接口和抽象类的区别。
11. 有一个public static final的HashMap,里边对象的属性能不能修改?
12. 为什么java 平台无关性 机器码和字节码区别 JVM加载代码的一个流程
13. java数据类型以及自己的应用 自动拆箱和自动装箱以及自己的应用即什么时候用到的,列举几种情况
14. 什么是值传递和引用传递,区别及应用
15. 重载和重写
16. static方法是否能重写,接口和抽象类的区别
17. 你觉得java是一种什么样的语言以及java特性
18. lamda表达式了解吗?1.8新特性有什么?(面试宝典对接口抽象这个问题是错的,过时了)
19. 内存泄露怎么造成的,怎么排查
20. 讲讲final修饰符。
21. 一个对象占多少内存。
22. 最短路径问题
23. java浅拷贝和深拷贝
24. 内存泄露的原因和处理
25. java反射机制,优点缺点
26. 说说静态变量和非静态变量的区别,用类名调用静态变量和用实例对象调用静态变量有区别吗?非静态方法里可以有静态变量吗?
27. static能不能被重写?
- 重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。
语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。
即:语法上static支持重写,但是运行效果上达不到多态目的
28. 序列化,反序列化,什么时候用? 如何对一个对象序列化
Java集合类
- Hashmap底层(数组+链表+红黑树)hashmap为什么线程不安全,如何保证线程安全,就扯到concurrenthashmap hashmap底层实现 多线程会出现什么情况 扩容机制是什么为什么会死锁 如何解决碰撞 Jdk 1.8的优化。为什么使用红黑树,它是如何做到效率优化的? hashmap了解不,原理是什么,位图了解不,跳跃表了解不,红黑树了解不,红黑树插入过程,B+树了解不,B+树特点和插入过程,邻接表和邻接矩阵区别,分别在什么地方用到,
插入和查询的流程。 - concurrenthashmap1.7和1.8的区别;concurrenthashmap说说,它是如何保证线程安全的?jdk1.7的hashentry和segment锁。具体说说segment锁?能讲下ConcurrentHashMap的实现原理么 JDK7或者8都行
- 常用集合类 实现类
- list和set区别(重复/不重复)
- set,list,map(线程安全的map,map怎么实现之类的)
- 红黑树介绍一下,跟平衡二叉树比较一下,红黑树有哪些应用场景
- 你常用的数据结构有哪些?
- 红黑树的特点,AVL树
- 一致性哈希函数以及hashmap的put方法
- 数组、二叉搜索树、B树、B+树
- 堆和栈。堆、栈
- 二叉树的最大节点个数;2^n-1;
Java并发
- java创建线程的方式,runnable和callable区别(参数不同)1. java线程的状态有哪些;线程的几种状态
- wait和sleep的区别;wait和notify的使用场景;
- 介绍一下volatile以及原理;volatile介绍一下Volatile底层是如何实现的? 说了内存可见性和内存屏障,Volatile是绝对线2程安全的吗?不是,没有保证原子性。volatile关键字在线程通信的问题
- 介绍一下synchornized以及原理; lock和synchornized的区别;synchronized锁的升级过程?Synchronized,底层是如何实现的?说了monitor对象头,以及两个monitorenter和monitorexit运用于代码块。
对象头是存储了哪些信息?说说synchronized的锁优化过程?说了偏向,自旋,轻量和重量。 - 介绍一下AQS;
- 说一下公平锁和非公平锁的原理;
- cas操作是什么,以及可能出现的问题;
- 线程池,然后你再平时怎么用的,工作原理,有哪些重要参数,饱和策略有哪些;线程池了解吧,说说如何实现线程池?核心参数哪些?有哪些阻塞队列呢?如何优雅的关闭线程池 线程池(线程大小,阻塞队列)线程创建,线程池参数,说说你常用的线程池?说了new ***d 和newFixed。以及介绍各个参数
- 说说你理解的悲观锁和乐观锁?乐观锁有哪些?乐观锁有什么缺点?
- 阻塞队列 线程间通信方式 创建线程方式 创建线程池方式 线程池常用参数
- 锁有哪些
- 说说你常用的并发包JUI?
- 问了如何保证多线程通信
- 你用过Java的J.U.C并发包吧,给我讲一下AQS的原理
- CAS的原理给我讲一下,他是怎么保证内存的可见性的。CAS会产生什么问题
- 知道Java中的内存模型吧,它有8个指令你给我说一下
- 多线程如何保持同步?
- java可见性的关键字及其原理。
- cpu密集型多线程和io密集型多线程的比较。cpu密集型里如何管理多线程? 用什么样的线程池和阻塞队列?
- cpu线程特别多会产生什么问题?io密集型里怎么减少需要的线程数?
- io多路复用的原理和实现。怎么减少处理io(和磁盘io交互)所需要的线程?
- 线程实现方式。有什么区别。线程之间的通讯,进程之间的通讯。
JVM
- JVM运行时内存区域划分?哪些线程私有?运行时数据区,私有共享都是哪些?堆区内存如何分配?
- 对象的生命周期?
- JVM垃圾回收器,cms和g1的特点,两者的区别是什么,比g1更加先进的垃圾回收器有了解么,ZGC原理,能够管理多大的内存,CMS能管理多大的内存,G1呢
- JVM内存模型 类的生命周期 类加载过程 双亲委派机制了解吗 进入老年代过程 什么情况下直接进入老年代
- JVM内存分布(堆栈等,程序计数器+jvm栈+本地方法栈线程不共享,堆和方法区线程共享)
- 类加载机制,过程,类加载机制?如何自定义实现类加载器?双亲委派模型、类加载器类别,双亲委派模型本质是解决了什么问题?安全性,有哪几种类加载器?类加载的流程。知道哪些类加载器。类加载器之间的关系?双亲委派模型。为什么使用双亲委派模型?
- 垃圾回收算法,常见的垃圾回收器及他们之间区别,垃圾回收发生在哪里,怎么判断对象存活、GC Roots具体有哪些、讲讲对象分配与回收,什么可以作为垃圾回收的对象,垃圾回收算法和流程。
- 栈什么情况下会溢出?
- 静态变量存放在内存哪个区域?
- 怎么查看java虚拟机内存占用?
- 如何减少full gc的次数?方法区是否需要gc
- 4个引用类型
计算机网络
- 输入一个url后的过程;浏览器从发送请求的全部过程
- OSI七层和TCP四层协议,OSI七层模型/五层模型,每一层有哪些协议,http,tcp,ip位于哪一层
- TCP三次握手四次分手,tcp四次挥手为什么要四次,为什么TCP是安全的,TCP,UDP的区别
- TCP报文结构,HTTP结构, TCP,UDP,HTTP的报文格式(我懵了)
- 设计一个应用层协议(没有答出来
- HTTP协议连接过程,HTTPS连接过程,HTTP的长连接是怎么做的HTTP2和HTTP1区别,HTTP请求过程
http的几种方法,HTTP跟HTTPS的区别,https加密过程
操作系统
- 程序,进程和线程的区别
- 什么时候情况下要用多线程?
- 进程之间怎么通信的?
- 一个手机应用程序里面的进程和线程分别是怎么进行的?
- 死锁,怎么解死锁,死锁条件,怎么预防
- 进程的状态:阻塞+就绪+执行
- 手机内存8g,是32位的,一个进程能申请多少内存?
- 线程的应用,举例,线程的阻塞
- 主线程和子线程的区别
Linux :
- linux中如何查看CPU负载 top