VIVO 一面竟然翻车,含泪整理了这些 Java 面经,看完我悟了
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 集合类
=======
1.?Hashmap 底层(数组+链表+红黑树)hashmap 为什么线程不安全,如何保证线程安全,就扯到 concurrenthashmap hashmap 底层实现 多线程会出现什么情况 扩容机制是什么为什么会死锁 如何解决碰撞 Jdk 1.8 的优化。为什么使用红黑树,它是如何做到效率优化的? hashmap 了解不,原理是什么,位图了解不,跳跃表了解不,红黑树了解不,红黑树插入过程,B+树了解不,B+树特点和插入过程,邻接表和邻接矩阵区别,分别在什么地方用到,插入和查询的流程。
2.?concurrenthashmap1.7 和 1.8 的区别;concurrenthashmap 说说,它是如何保证线程安全的?jdk1.7 的 hashentry 和 segment 锁。具体说说 segment 锁?能讲下 ConcurrentHashMap 的实现原理么 JDK7 或者 8 都行
3.?常用集合类 实现类
4.?list 和 set 区别(重复/不重复)
5.?set,list,map(线程安全的 map,map 怎么实现之类的)
6.?红黑树介绍一下,跟平衡二叉树比较一下,红黑树有哪些应用场景
7.?你常用的数据结构有哪些?
8.?红黑树的特点,AVL 树
9.?一致性哈希函数以及 hashmap 的 put 方法
10.?数组、二叉搜索树、B 树、B+树
11.?堆和栈。堆、栈
12.?二叉树的最大节点个数;2^n-1;
Java 并发
======
1.?java 创建线程的方式,runnable 和 callable 区别(参数不同)1. java 线程的状态有哪些;线程的几种状态
2.?wait 和 sleep 的区别;wait 和 notify 的使用场景;
3.?介绍一下 volatile 以及原理;volatile 介绍一下 Volatile 底层是如何实现的? 说了内存可见性和内存屏障,Volatile 是绝对线 2 程安全的吗?不是,没有保证原子性。volatile 关键字在线程通信的问题
4.?介绍一下 synchornized 以及原理; lock 和 synchornized 的区别;synchronized 锁的升级过程?Synchronized,底层是如何实现的?说了 monitor 对象头,以及两个 monitorenter 和 monitorexit 运用于代码块。对象头是存储了哪些信息?说说 synchronized 的锁优化过程?说了偏向,自旋,轻量和重量。
5.?介绍一下 AQS;
6.?说一下公平锁和非公平锁的原理;
7.?cas 操作是什么,以及可能出现的问题;
8.?线程池,然后你再平时怎么用的,工作原理,有哪些重要参数,饱和策略有哪些;线程池了解吧,说说如何实现线程池?核心参数哪些?有哪些阻塞队列呢?如何优雅的关闭线程池 线程池(线程大小,阻塞队列)线程创建,线程池参数,说说你常用的线程池?说了 new ***d 和 newFixed。以及介绍各个参数
9.?说说你理解的悲观锁和乐观锁?乐观锁有哪些?乐观锁有什么缺点?
10.?阻塞队列 线程间通信方式 创建线程方式 创建线程池方式 线程池常用参数
11.?锁有哪些
12.?说说你常用的并发包 JUI?
13.?问了如何保证多线程通信
14.?你用过 Java 的 J.U.C 并发包吧,给我讲一下 AQS 的原理
15.?CAS 的原理给我讲一下,他是怎么保证内存的可见性的。CAS 会产生什么问题
16.?知道 Java 中的内存模型吧,它有 8 个指令你给我说一下
17.?多线程如何保持同步?
18.?java 可见性的关键字及其原理。
19.?cpu 密集型多线程和 io 密集型多线程的比较。cpu 密集型里如何管理多线程? 用什么样的线程池和阻塞队列?
20.?cpu 线程特别多会产生什么问题?io 密集型里怎么减少需要的线程数?
21.?io 多路复用的原理和实现。怎么减少处理 io(和磁盘 io 交互)所需要的线程?
22.?线程实现方式。有什么区别。线程之间的通讯,进程之间的通讯。
JVM
===
1.?JVM 运行时内存区域划分?哪些线程私有?运行时数据区,私有共享都是哪些?堆区内存如何分配?
2.?对象的生命周期?
3.?JVM 垃圾回收器,cms 和 g1 的特点,两者的区别是什么,比 g1 更加先进的垃圾回收器有了解么,ZGC 原理,能够管理多大的内存,CMS 能管理多大的内存,G1 呢
4.?JVM 内存模型 类的生命周期 类加载过程 双亲委派机制了解吗 进入老年代过程 什么情况下直接进入老年代
5.?JVM 内存分布(堆栈等,程序计数器+jvm 栈+本地方法栈线程不共享,堆和方法区线程共享)
6.?类加载机制,过程,类加载机制?如何自定义实现类加载器?双亲委派模型、类加载器类别,双亲委派模型本质是解决了什么问题?安全性,有哪几种类加载器?类加载的流程。知道哪些类加载器。类加载器之间的关系?双亲委派模型。为什么使用双亲委派模型?
7.?垃圾回收算法,常见的垃圾回收器及他们之间区别,垃圾回收发生在哪里,怎么判断对象存活、GC Roots 具体有哪些、讲讲对象分配与回收,什么可以作为垃圾回收的对象,垃圾回收算法和流程。
8.?栈什么情况下会溢出?
9.?静态变量存放在内存哪个区域?
10.?怎么查看 java 虚拟机内存占用?
11.?如何减少 full gc 的次数?方法区是否需要 gc
12.?4 个引用类型
计算机网络
=====
1.?输入一个 url 后的过程;浏览器从发送请求的全部过程
2.?OSI 七层和 TCP 四层协议,OSI 七层模型/五层模型,每一层有哪些协议,http,tcp,ip 位于哪一层
3.?TCP 三次握手四次分手,tcp 四次挥手为什么要四次,为什么 TCP 是安全的,TCP,UDP 的区别
4.?TCP 报文结构,HTTP 结构, TCP,UDP,HTTP 的报文格式(我懵了)
5.?设计一个应用层协议(没有答出来
6.?HTTP 协议连接过程,HTTPS 连接过程,HTTP 的长连接是怎么做的 HTTP2 和 HTTP1 区别,HTTP 请求过程 http 的几种方法,HTTP 跟 HTTPS 的区别,https 加密过程
操作系统
====
1.?程序,进程和线程的区别
2.?什么时候情况下要用多线程?
3.?进程之间怎么通信的?
4.?一个手机应用程序里面的进程和线程分别是怎么进行的?
5.?死锁,怎么解死锁,死锁条件,怎么预防
6.?进程的状态:阻塞+就绪+执行
7.?手机内存 8g,是 32 位的,一个进程能申请多少内存?
8.?线程的应用,举例,线程的阻塞
9.?主线程和子线程的区别
Linux :
=======
1.?linux 中如何查看 CPU 负载 top
2.?linux 用过嘛(扯到了我训练过深度模型,小哥哥直接来了个场景题)场景题:推荐算法中如何控制广告推送频率(结合强化学习说了一些
3.?Linux 了解不,df dh 区别,如何格式化磁盘,磁盘挂载过程,tcp 丢包如何排查,docker 是用什么实现的
4.?怎么查找特定后缀名或前缀名的文件
Mysql
=====
1.?数据库引擎事务隔离级别,串行化如何实现,数据库的隔离级别?四个。你平常使用的是哪个隔离级别。数据库隔离级别以及分别解决了什么问题
2.?MySQL 的存储引擎有哪些?它们之间的区别?你用的 mysql 存储引擎?为什么选择它?实现原理?
3.?怎么判断一个 SQL 语句有没有走索引?紧接着问 explain 知道哪些字段吗
4.?mysql 存储模型 区别 怎么看用没用索引 怎么判断 sql 语句好坏
5.?数据库中索引 B+树
6.?一个手机应用要更改数据库,它的底层是怎么实现的?
7.?sql 查询过程
8.?MySQL InnoDB 存储引擎中的 MVCC 解决了什么问题,能说下 MVCC 的实现原理么
9.?SQL 语句经常写吧,那我给你出一道 SQL 题(分组求和排序)
10.?你认为什么情况下不应该建立索引
11.?mysql 有几种锁?怎么实现?
12.?innodb 事物的级别
13.?b 树的结构?与二叉树的区别?与 b 树的区别?
14.?写过最复杂的 sql, 手写代码: 统计各个科目考试最高分:最复杂的包括了 sum、case、left join、group by,追问左连接和内联区别,没答上来
15.?聚簇索引跟红黑树
16.?sql :给一个日期范围,统计每天入库的数据总量
17.?sql 语句里 like 和 in 关键字
18.?sql 语句,求平均分超过 60 分的学生学号
19.?数据库 sql 怎么优化 20.?什么情况不能用索引?
21.?SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2 什么时候会发生死锁;怎么解决死锁;N 个资源怎么办?
redis
=====
1.?你知道 redis 的什么东西
2.?redis 中 zset,说了一下跳跃表的插入,删除过程;
3.?位图知道原理嘛(操作系统中的位示图还是 bitmap?不太了解)
4.?redis 数据类型,redis 的应用场景,为什么 redis 快
5.?Redis 的 key 的写入和删除的原理
6.?怎么保证 Redis 的高可用
7.?redis 数据结构?单线程还是多线程?
8.?用什么样的队列?你是怎么实现?我回答的 redis 的 list 实现的)这种队列有什么缺点?
9.?分布式锁;
mq
==
1.?你还用过 rabbitMQ 呀,它能够做什么?
2.?rabbitMQ 是怎么保证消息不丢的,从客户端—消息队列, 消息队列—服务器端的角度考虑
spring
======
1.?开源框架有哪些了解的 为什么用 spring 为什么不用 new 就可以自动生产 能不能自己实现一个
2.?spring security 是干嘛的,原理是啥,jwt 干啥的 3.?后台用什么框架?ioc,aop,其他还有什么框架也可以做到 ioc,aop(2333~不就 spring?)4.?Spring IOC,AOP,注解
设计模式
====
1.?双重检索单例
2.?设计模式分为哪三类,各有什么?设计模式,用过哪些设计模式,讲几个,设计模式和原则
3.?代理模式属于哪一类
4.?生产者消费者模式,生产消费者的,以及多生产者同步
5.?描述适配器,写单例
6.?单例模式,装饰模式,
分布式
===
1.?负载均衡的算法有哪些;
2.?rpc dubbo 的组件有哪些
3.?分布式事务,CAP 定理,有没有使用过相关的产品
4.?zookeeper 了解吗
5.?hbase 索引的结构,kafka 存储的结构,二进制文件的组织方式,kafka 如何避免消息**丢失,zookeeper 在 kafka 中是干啥的,kafka 在 zookeeper 中存储的数据,zookeeper 了解不,zookeeper 的共识算法,分区后如何解决。
6.?protobuf 了解不,grpc 了解不,用的什么协议,HTTP2 和 HTTP1 区别,websocket 建立连接过程
7.?RPC 你了解过吗?
8.?如何分布式存储?
算法
==
1.?排序算法有哪些,简述冒泡和归并排序,冒泡算法的优化,讲讲归并排序,冒泡的优化知道吗;回答相等不交换,还有 flag 做已排序标志的优化;直接插入排序,写一下伪代码或者说一下思路,插入排序,时间复杂度
2.?堆排序原理
3.?快排,快排是什么思想,快排的优化是啥,为啥这么做;
4.?字母排序
5.?100 个数中找出想要的数
6.?一个数组分成 2 个相等或接近的子数组
7.?派单的最短路径问题
8.?很大的数据,内存放不下,如何快速找到中间值
9.?手撕栈
10.?链表找环 链表找环入口,不用双指针怎么做
11.?双向链表实现 ,写了个 add()和 add(index)的
12.?求数组的全排列
13.?中序遍历,递归非递归
14.?求四个数绝对值的最小值
15.?黑猫白猫,混在一起,如何把他们区分开? 黑白灰三种猫混在一起,如何按照黑白灰排好序? 还有两个小问题忘记了。
16.?如何用一个 int 值,表示三种状态?
其他
==
1.?给你 10 个 tomcat 你如何判断自己用哪个(容器?emmmm,求指点)位图知道原理嘛(操作系统中的位示图还是 bitmap?不太了解)所谓的 Bit-map 就是用一个 bit 位来标记某个元素对应的 Value, 而 Key 即是该元素。由于采用了 Bit 为单位来存储数据,因此可以大大节省存储空间。其实就是位示图为原型,01 存储的,建议面试的时候知道多少说多少,知道什么说什么~
2.?序列化相关
评论