一面:
1. 离职原因;
2. Zookeeper在项目中的使用及原理;
3. Springcloud的一些组件介绍;
4. 分布式锁:
Redis实现方式:
redis:为什么使用setnx,或者说set 和setNx有什么区别;
setNx:系统在10:05 设置一个值,并给出5分钟的过期时间,系统刚刚set完之后redis集群崩溃,10:11分系统重启成功,那么redis中set的值是否还存在?
考察点:
1、redis 的持久化:刚set完是否能够被持久化到快照或者binlog日志中;
2、假设redis被持久化,且系统重启时间超过了redis设置的过期时间,那么key是否会被清理;
zookeeper实现方式:
5. 多线程的创建方式:
1、继承thread类;
2、实现runnable接口;
3、实现callable接口;
4、线程池方式进行创建及每个参数之间的逻辑关系;
6. 服务器CPU数量及线程池数量的关系;
1、服务器cpu数量(n);
2、是IO密集型(2n个线程)应用还是计算密集型(n+1个线程)应用;
7. Mysql的sql优化
优化方向:
1、 Mysql使用过程中走索引的语句:
2、 索引的优化:
3、 亿级的数据必须使用like进行查询,如何优化?
8. 如何做一个秒杀系统;
1、MQ做限流:保证只有1000个人可以访问系统;
2、使用redis做缓存;
3、redis往mysql中进行持久化
9. 自己认为自己的技术怎么样?
二面:
1. Mysql是集群还是单节点;最大的表中数据量大约是多少?3000w-4000w;
2. Mysql主从配置是DBA去做还是自己去做?mysql主从同步的机制的原理?mysql主从复制主要有几种模式?
3. Redis持久化方式:rdb、aof;redis中哪个版本开始可以对分布式使用;
4. Nginx的使用场景;
1、请求转发;
2、负载均衡;
5. Spark主要用来做什么的?
第三面至第八面所有面试题
1.ConcurrentHashMap底层原理
2.手写一个LRU
用LinkedHashMap
3.HashMap底层数据结构
4.为什么用红黑树不用普通的AVL树
5.为什么在8的时候链表变成树
6.为什么在6的时候从树退回链表
7.线程池7个参数,该怎么配置最好
8.说一下volatile
9.volatile的可见性和禁止指令重排序怎么实现的
可见性:缓存一致性协议
禁止指令重排序:JMM模型里有8个指令完成数据的读写,通过其中load和store指令相互组合成的4个内存屏障实现禁止指令重排序
10.CAS是什么
11.PriorityQueue底层是什么,初始容量是多少,扩容方式呢
最小堆,
11,若原始大小<64,则扩容为原来的2倍+2,不然就扩容为原来的1.5倍
12.HashMap的容量为什么要设置为2的次幂
13.你知道跳表吗,什么场景会用到
ConcurrentSkipListMap,用在多线程下需要自定义排序顺序时
14.CopyOnWriteArrayList知道吗,迭代器支持fail-fast吗
线程安全ArrayList,写时复制,迭代器是采用快照风格,不支持fail-fast
15.innodb的底层数据结构
16.为什么用B+树不用B树
17.为什么用B+树不用红黑树
18.coding:无序数组怎么寻找第k大的数,写一个二叉树层次遍历
19.不知道大小的数据流取其中100个数,怎样的取法能最随机
20.n个物品每个物品都有一定价值,分给2个人,怎么分两个人的价值差最小
21.假设百度每个页面能放100个网页,每个页面都有一个评分,怎样快速找到第8页的所有网页
第九面
面试他的是一位阿里P9,这位大佬只问了一道题是:LINUX的内核是什么?
这位大佬最近还分享了一份Java全栈知识点的面试题涉及:Java基础题、Java集合、异常&反射、IO&NIO、多线程、JVM、Linux、Mysql、Spring、Mybatis、Nginx、Redis、Dubbo、SpringBoot、Kafka 、SpringCloud、简历这些模板。(面试题全部都是有答案的,受制于文章篇幅问题,免费获取方式在文末!)
Java基础题(32道题)
17.Locale类是什么?
18Java中final. finally. finalize的区别与用法
19.hashCode0和equals0的区别
20.深拷贝和浅拷贝的区别是什么?
21Java中操作字符串都有哪些类?它们之间有什么区别?
22.String str= "a"与String str=new String("a")- 样吗?
23.抽象类能使用final修饰吗?
24.static关键字5连问
25.重载(Overload) 和重写(Override) 的区别。重载的方法能否根据返回类型进行区分?
26Java的四种引用
27.Java中Comparator与Comparable有什么不同?
28. Java序列化,反序列化?
29.什么情况需要Java序列化?
30.序列化的实现?
31.如果某些数据不想序列化,如何处理?
32.Java泛型和类型擦除?
java集合(19道题)
面试指导脑图
1.Java集合框架的基础接口有哪些?
2.Collection和Collections 有什么区别?
3.List. Set. Map是否继承自Collection接口?
4.Collections.sort排序内部原理
5.List. Set. Map 之间的区别是什么?
6.HashMap和Hashtable有什么区别?
7.如何决定使用HashMap还是TreeMap?
8.说一下HashMap的实现原理?
9.说一下HashSet的实现原理?
10.ArrayList和LinkedList的区别是什么?
11.为何Map接口不继承Collection接口?
12.ArrayList和Vector有何异同点?
13.Array和ArrayList有何区别?
14.在Queue中poll0和remove0有什么区别?
15.LinkedHashMap有什么特点?
16.HashMap的底层实现原理? (高频问题)
17.HashMap并发安全的问题
18JDK1.8与JDK1.7的性能对比
19HashMap操作注意事项以及优化?
异常&反射(12道)
1.error和exception有什么区别?
2.说出5个常见的RuntimeException?
3.throw和throws的区别?
4.Java中异常分类
5.如何自定义异常
6Java中异常处理
7.什么是Java反射机制?
8.举例什么地方用到反射机制?
9.java反射机制的作用
10.Java反射机制类
11 .反射机制优缺点?
12.利用反射创建对象?
IO&NIO(22道)
6.阻塞10 (blocking 10)
7.非阻塞I/O (nonblocking 10)
8.I/O多路复用模型(10 multiplexing)
9.信号驱动I/O模型
10.异步/O(asynchronous 10)
11.NIO与10的区别?
12.NIO和I0适用场景
13.NIO核心组件
14.什么是channel
15.Java NIO中最常用的通道实现?
16.Buffer是什么?
17.核心Buffer实现有哪些?
18.buffen读写数据基本操作
19.Selector是什么?
20.通道可以监听哪几个事件?
21.为什么要用Selector?
22 Selector处理多Channe|图文说明
多线程(100道题)
1.什么是进程?
2.什么是线程?
3.线程的实现方式?
4.Theaed类中的start0和run0方法有什么区别?
5.线程NEW状态
6.线程RUNNABLE状态
7.线程的RUNNING状态
8.线程的BLOCKED状态
9.线程的TERMINATED状态
10.线程状态转化图
........................................
90.为什么使用线程池
91.线程池工作流程
92.创建线程池参数有哪些,作用?
93.向线程池提交任务
94.关闭线程池
95.线程池如何合理设置
96.Executor
97.Executor框架的主要成员
98.FixedThreadPool
99.SingleThreadExecutor
100.CachedThreadPool
JVM(50道题)
1JDK、JRE、 JVM关系?
2.启动程序如何查看加载了哪些类,以及加载顺序?
3. class字节码文件10个主要组成部分?
4.画一下jvm内存结构图?
5.程序计数器
6Java虚拟机栈
7.本地方法栈
8Java堆
9.方法区
10.运行时常量池?
11.什么时候抛出StackOverflowError?
12.Java7和Java8在内存模型上有什么区别?
13.程序员最关注的两个内存区域?
14.直接内存是什么?
15.除了哪个区域外,虚拟机内存其他运行时区域都会发生OutOfMemoryError?
16.什么情况下会出现堆内存溢出?
18.空间什么情况下会抛出OutOfMemoryError?
19.如何实现StrackOverflowError?
20.如何设置直接内存容量?
21.Java堆内存组成?
22.Edem : from : to默认比例是?
23.垃圾标记阶段?
24.引用计数法?
25.根搜索算法?
26JVM中三种常见的垃圾收集算法?
27标记-清除算法?
28.复制算法?
29.标记-整理算法?
30.分代收集算法?
31.垃圾收集器?
32.Stop The World?
34.PartNew收集器?
36.Parallel Scavenge?
37.Parallel Old收集器?
38.CMS收集器?
39.CMS垃圾回收的步骤?
41.CMS收集器优点?缺点?
42.G1收集器?
42. G1收集器是如何改进收集方式的?
43.虚拟机进程状况工具?
44.虚拟机统计信息工具?
45.jstat工具主要选项?
45.配置信息工具?
46.内存映像工具?
47虚拟机堆转存储快照分析工具?
48.堆栈跟踪工具?
49.除了命令行,还有什么可视化工具?
50.类加裁过程?
Linux(50道题)
...............................
34.源码安装通常的路子?
35.vim编辑器几种操作模式?基本操作?
36.查看设备还有多少磁盘空间?
37.默认进程信息显示?
38.实时监测进程
39.如何中断一个进程?
40.如何把一个进程放到后台运行?
41如何停止一个进程?
42.验证网络可连接命令是什么?什么原理?
43.查看某端口是否被占用?
44如何查找匹配的文件?基于文件属性?
45.如何查看当前主机名?如何修改?如何重启后生效?
46.如何写一条规则, 拒绝某个ip访问本机8080端口?
47.哪个文件包含了主机名和ip的映射关系?
48.如何用sed只打印第5行?删除第一行? 替换字符串?
49.打印文件第一行到第三行?
50.如何用awk查看第2行倒数第3个字段?
Mysql(50道题)
...............................
35.视图的优缺点?
36.主键和唯一索引区别?
37.如何随机获取一条记录?
38.Mysql中的数值类型?
39.查看当前表有哪些索引?
40.索引不生效的情况?
41.MWC?
42.sq|语句的执行流程?
43.如何获取select语句执行计划?
44.explain列有哪些?含义?
45.MySql最多创建多少列索引?
46.为什么最好建立一个主键?
47.字段为什么要求建议为not nul?
48.varchar(10)和int(10)代表什么含义
49.视图是什么?对比普通表优势?
50.count(* )在不同引擎的实现方式?
Spring(50道题)
Mybatis(28道题)
Nginx(16道题)
1.什么是nginx?
2.nginx主要特征?
3.nginx常用命令?
4.工作模式及连接数上限?
5.nginx负载均衡几种算法?
6.nginx有几种进程模型?
7.如何定义错误提示页面?
8.如何精准匹配路径?
9.路径匹配优先级?
10.如何把请求转发给后端应用服务器?
11.如何根据文件类型设置过期时间?
12.禁止访问某个目录?
13.nginx负载均衡实现过程?
14.负载均衡配置?
15.设置超时时间?
16.开启压缩功能好处?坏处?
Redis(50道题)
34.Redis的Java客户端官方推荐?实际选择? ;
35.Redis事务?
36.Redis事务开始到结束的几个阶段?
37.Redis中key的过期操作?
38.Redis过期键删除策略?
39.Pipeline是什么?为什么要它?
40.如何获取当前最大内存?如何动态设置?
41.Redis内存溢出控制?
42.Redis内存溢出策略?
43.Redis高可用方案?
44.Redis集群方案?
45.Redis Cluster槽范围?
46.Redis锁实现思路?
47.什么是布隆过滤器?
48.什么是缓存穿透?处理问题?
49.什么是缓存预热?
50.什么是缓存雪崩?处理问题?
Dubbo(36道题)
SpringBoot(30道题)
Kafka(25道题)
SpringCloud(35道题)
简历指导
需要领取这套1200+道面试题的朋友麻烦帮忙一键三连一下这篇文章+关注我,扫码获取!