赞
踩
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
20、你们用过缓存吗
21、你说说下分布式锁怎么做的?
分布式锁也是一个锁,需要满足几个特性,1 可重入 2 可以识别加锁的身份防止ABA问题 3 考虑是否需要续约
key是所需要加上的锁的业务资源唯一编码,value是当前线程的uuid,uuid存在threadLocal内 加锁的时候用的jedis,先设一个过期时间,然后用ex,若不存在key则添加新key,若已经存在则直接失败
解锁用的阿里云企业版的CAD(compareAndDelete),原子比较并解锁,本质是通过lua脚本进行的类似事务操作
22、除了redis还有什么可以做分布式锁?
23、如果让你用Mysql做分布式锁你怎么做
新建一张表,主键为需要锁的锁key,col1为线程uuid,col2为ttl时间
加锁的时候在一个事务中选取当前key的record,若存在则判断ttl,若不存在则直接可以插入
解锁的时候直接把record删除即可
起一个定时任务来遍历表,清楚过期键防止无限膨胀
24、zookeeper了解吗
25、那我们继续聊聊Redis吧,Redis有什么数据结构?
26、Zset怎么实现的?
27、什么是跳表?
28、如果我要找一个score为A的节点应该如何去找?
29、zrange是如何实现的?
30、Redis持久化
RDB:快照存储,可以选择是否阻塞,使用场景在数据库上下线、主备复制等情况中
AOF:类似于binlog,每个里面都是一个写事件,是优先读取的策略,支持多策略写入(强同步、按时间刷盘、交由操作系统决定刷盘等),AOF为了防止文件膨胀也支持重写
31、AOF重写的时候会不会block主线程?
32、在载入的时候是怎么做的
33、Redis有哪些多机部署方案?
34、在主备环境下,如果一个备库中途断链了,重新上线的时候怎么执行同步?
35、如果备库的offset过于落后已经不在buffer当中了呢?
36、cluster如何做的故障转移?
37、Mysql了解吗,里面有哪些锁?
类型分类:共享锁(S),独占锁(X),意向锁(与表锁互斥)
粒度分类:行锁、表锁
38、行锁怎么实现的?
39、讲一下事务隔离级别吧
40、你们用的是哪个隔离级别
41、在默认隔离级别下会产生幻读问题吗?
42、描述一下幻读
43、MVCC机制了解吗?
44、讲一下原理
每一行record都存在两个隐藏行,一个是当前的事务id,一个是指向undolog的指针 mvcc机制运行
在rr和rc两个隔离级别下 在每次生成ReadView的时候,会将当前的活跃事务ID维护在列表当中,如果访问的Record的ID比最小活跃事务的ID还要小说明之前已经提交了,可以直接读取,如果与最大事务ID还要大就证明该事务在这个快照时没提交,需要根据undolog去找对应的历史版本,如果在最大和最小之间,那么若其为活跃事务则找历史版本,若不是则直接读取
在RC级别下,每次Select都生成新的ReadView,所以能看到不同事物间的提交
在RR级别下,只在第一次Select的时候生成ReadView,所以会产生幻读,因为快照读和真实读的结果不一致
45、慢sql怎么处理?
46、你关注explain的那些col?
key:真实用到的索引
possible_key:可能用的索引
rows:扫描行数,越大越拉垮
filter:过滤数据比例,这个col可以验证索引有效性
extra:包含是否使用索引、sort是否时filesort等
47、https了解吗?
client发一个随机数给server
server发证书+随机数回来
client拆证书找第三方验证证书有效性,取出公钥
client拿公钥加密第三个随机数发server
server私钥解密
48、线上机器cpu100%你怎么处理?
容器化时代,一定要top看下是不是st过高,存在超卖的可能性
如果不是的话top看下哪个进程有问题,然后看这个进程哪个线程吃了cpu
jstack直接把线程dump出来然后找对应有问题的线程再分析
也有可能是内存泄漏导致的频繁GC问题,可以拉GClog然后在jmap把heap dump出来看下
49、你们线上JVM一般调整什么参数?
XMX&XMS固定防止内存抖动
堆空间调整:年轻代Age调整、年轻代eden:s0:s1比例调整
收集器调整:大促前把CMS的预清理次数调低一些,CMS的清理阈值调高一些
50、反问
什么团队?
做什么业务的?
自我反思
====
虽说这次是抱着试水的心态去的,但是这一连50问着实是有点傻眼了,而且也发现了自己的很多漏洞,如下:
我的简历过长,难以被面试官抓住重点
项目使用技术栈没有体现出来
涉及相关项目重难点表述不是很清楚,分布式锁、多租户的分库分表以及中间件隔离方案、性能问题排查等
各类技术栈停其实都还留在使用层,没有深入去挖掘
语速太快了,70分钟的面试大大小小回答了50个问题,我感觉放慢点够我回答两轮了
最后总结个人所得(供大家参考学习)
=================
这次一面结束之后我反思很久,发现自己真的是有很多不足和漏洞,所以最近一直在规划自己的学习路线去不足,不论你是复习备战面试还是自己学习,我相信我所说的多少还是有点用处的。
1.1 首先,第一个应该去梳理整个体系的知识大纲
========================
整个体系的知识大纲
我将整个体系分为5个专题:并发编程、性能调优、Spring全家桶、缓存数据库、分布式&微服务
1.2 其次,根据上面的分类,按照大纲来学习(最后看面试专题)
===============================
对于每一个专题,去搜集相应的面试学习笔记,比如下面我所收集的(若是对我收集的这份知识体系大纲以及下方每个专题对应的面试+学习笔记感兴趣,点击传送门 即可!!
1. 并发编程(手写笔记:并发编程+并发编程_原理+并发编程_应用+并发编程_模式)
并发编程
并发编程_原理
并发编程_应用
并发编程_模式
性能调优
Spring全家桶手绘的各思维脑图
Spring全家桶进阶学习的笔记
MySQL+Redis+MongDB
分布式&微服务
1.3 最后来看面试专题
============
我从基础-中级-高级开始一步一步逐步深入,这些面试问题一样都有分类整理,点击传送门 即可!!
基础部分
Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
dnimg.cn/20210301170338670.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmE2ODg4,size_16,color_FFFFFF,t_70)
Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中…(img-rdyJkzrt-1714460662583)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。