2020.05 我的三年 Java 面经
2020.05 我的三年 Java 面经
要是你过了很久,从哪里又划拉出这篇文章,建议不要打开,浪费时间
上来先说明下,找面经的朋友一定注意面经的时间性,我的面试经历时间点在 2020.05~2020.06
以我的面试经历来看,由于技术迭代快,面经的参考有效性不超过一年,往后迭代会更快
面试时有面试官直接说过,有些知识我回答得偏旧,建议不要走我老路
知识
我三年 Java 开发,以下是面试过程中的一些点,Java 面试宝典.pdf 之类的建议自行准备
我总共面试7家,整个过程就是面试 -> 整理面经 -> 面试,到后边就觉得面的点都得差不多,实在答不上的,只能怪我自己笨些,不能强求
总得来说,JVM、JMM、多线程、数据库问得最多,中间件其次,框架和分布式之类的反而最少
数据库
- 大表分页查询优化
增加有效可利用的索引,其目的是减少每次查询时的系统负载。- 用固定页码做索引: 前提条件是页码总数只增不减少, pageTotal%pageSize 例如第 1-100 条数据的索引就是 index_page_1,以此类推.
- 每次携带最大的主键 id,使其查询时带上 id :例如: where id>{maxId} limit 10
- 优化:根据现有业务按列分表,将用于排序的列数做最小拆分,尽量不要有大规模字符串,查询后用 in(ids)方式聚合
- 增加一个扩展表,用于分页: pagination(id,page_number) 原理同第 0 条
- explain 语句解释器各字段含义
explain结果每个字段的含义说明 - 大表加索引的处理
mysql在线修改表结构大数据表的风险与解决办法归纳 - 表字段括号数字
代表最小显示位数 - MySQL死锁
MySQL死锁和避免死锁 - Mysql 锁和锁算法
Mysql 锁和锁算法
多线程相关
- 线程池实现
自定义线程池 - 线程池ThreadPoolExecutor类使用详解
java线程池ThreadPoolExecutor类使用详解 - ConcurrentHashMap
详解ConcurrentHashMap及JDK8的优化 - ReentrantLock——可重入锁的实现原理
ReentrantLock——可重入锁的实现原理 - 原子类及内部原理
Java原子类及内部原理 - ThreadLocal
ThreadLocal理解
ES
Redis
- redis lua脚本
Rdeis并发问题
多端命令顺序写:A 读写 B 读写
redis 单线程:A读 B读 B写 A写,引起数据错误
用 lua A读写变为一个操作
luaA luaB,保证事务,不引起事务问题 - 对象结构和数据结构
redis的5种对象与8种数据结构(一)
redis的5种对象与8种数据结构(二) - Redis集群 和 一致性hash
Redis集群 和 一致性hash算法
网络
- 浏览器输入 URL 回车之后发生了什么
浏览器输入 URL 回车之后发生了什么 - DNS
不再惧怕DNS面试题:大牛用1张大图,9个步骤轻松应对 - HTTP与HTTPS
HTTP与HTTPS之面试必备
基础
框架
- Gateway
- JPA
- Eureka
- Zookeeper
业务场景题
- 六百万消息推送 支持横向拓展实例(考察横向拓展实例)
- 大表加索引(考察数据库操作)
- jvm线程池实现库存缓存应对秒杀场景,线程池中线程增加小额库存(考察基础)
- 子店铺如果可以更改商品属性,不同店铺的数据缓存如何处理(考察中间件)
工作亮点
工作中的工作内容的闪光点,没有不用强求
但是至少工作内容要熟悉,不要一问,做了什么答不上来,两三句太敷衍
杂谈
其实五六月疫情控制住了,工作机会开始回暖,上家公司裁人很突然,还好不是在疫情最严重的时候裁的,万幸
面试准备的话,两三周,每天三四小时有效时间就行了,大神当我没说过,我是个普通人
看的时候注意松弛有度,要有耐心,不要一直看,我是很难保持长时间的专注的,但是每天一点,要坚持
面试,心态放平些,一半准备,一半运气,是真的,运气真的占一半,面试公司、面试官都是运气的一部分,正常发挥就好,不要太紧张
然后说说丧气话,我们要客观的认识到一点,内卷是客观存在的,面试的这些东西和工作内容相差很远,这就是八股文,这就是现状,而且会愈演愈烈,争的是名额,名额永远有限,甚至原来越少,那么就和考试一样,录取线会一抬再抬
我不是想贩卖焦虑或者劝退,而是我想说的是,做好决策就行,结果和决策没半毛钱关系,好决策是基于现状,结果是未来的东西,不要事后诸葛亮,或者事后后悔药,负责任的下决定,选什么都行
祝生活一帆风顺,完