9 面阿里 Java 岗,最终定级 P6 拿 P7 工资,分享学习经验
一面:
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 的内核是什么?
这大佬最后定级的是阿里 P6+,拿的是 P7 的工资,60W 的年薪,这就是真实的 P6+的年薪,这位大佬 23 岁,注意年龄是 23 岁!拿到了阿里 60W 的年薪
这位大佬最近分享了一份 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(* )在不同引擎的实现方式?
需要领取这套 600+道面试题的朋友麻烦帮忙转发一下这篇文章+关注我,然后点我头像进入个人主页,点击右上角小信封给我发送【面试】二字免费获取!
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.什么是缓存雪崩?处理问题?
——【传送门免费货区】
评论