Java 面试连环炮(上)
武培轩
共 4269字,需浏览 9分钟
· 2020-10-12
本内容来源于和尚 16 年毕业的学长,先在 58,后阿里,如今准备跳槽了,以下内容为他的最近面试经历
我最近从大厂离职之后在合肥呆了个把月,之前已经准备了半个多月,从7月底开始投简历面试,目前是java高级职位,到现在为止已经面了24+公司了,手上也有一些意向offer。现在把跟面试官对垒的面试问题总体记录一下。请注意这里只有问题,没有答案,也没有标准答案。本系列会分为三个系列博客去讲我面过的一些公司出的一些题,以某个知识点或者框架出发扩展深入。来,看你能撑多少炮!
全炮分为(上)(中)(下)
一、 redis连环炮
redis数据结构
redis有哪几种数据结构? zset用过吗,底层数据结构是什么? 为什么使用跳表?跟B+树怎么比?查找的时间复杂度是多少? GEO是干嘛的?举个场景? HyperLogLog是干嘛的? Redis可以做消息队列吗?有什么缺点?
redis持久化
redis持久化了解吗?有哪些方式? RDB和AOF的区别&各自的优缺点? 说一下redis持久化的过程? redis持久化方式你们是怎么选型的? 了解过redis混合持久化吗?是一个文件还是多个文件? redis进行持久化的时候会阻塞主线程吗? 如果数据量比较多持久化时间较长会出现什么情况?
redis 实现分布式锁
redis分布式锁了解吗? 假如我的业务代码执行时间不是很稳定? 使用redis做分布式锁会有什么问题呢? 你怎么解决锁超时的问题?有什么方案吗?跟zk的分布式锁有什么区别?
redis集群部署
redis集群部署模式有哪些,介绍一下 ?介绍一下cluster模式和sentinel模式的区别? 介绍一下sentinel模式如何感知sever节点上下线的? redis-server的ping/pong协议了解吗?怎么用的? 讲一下redis主从复制的过程? 主从模式下假如主节点挂了之后? 数据如何同步? redis cluster模式下通过key插入/查找value的过程了解吗?
redis高可用
有哪些可能导致redis存在性能问题的因素? redis cluster模式下如何扩容和缩容的? redis在使用过程中明明内存充足但是插入数据失败怎么排查? 如何解决redis的内存碎片问题?产生的原因是什么? redis的内存达到机器内存极限值之后有哪些策略可以避免? redis数据删除的策略有哪些? 缓存击穿/缓存雪崩/缓存穿透了解吗? 介绍一下产生这种问题的原因?你有什么解决思路吗? redis-mysql缓存一致性了解吗?缓存一致性方案有哪些?
二、MySQL连环炮
MySQL 锁
MySQL锁了解吗? 悲观锁怎么实现的?乐观锁了解吗?各自适用的场景能介绍一下吗? 间隙锁是什么意思?解决了什么问题? 如何确定间隙锁锁记录的范围?MVCC了解吗?解决了什么问题?
MySQL 索引
Mysql索引了解吗,有哪些索引类型? innodb索引结构是怎么样的? 为什么使用B+树呢?为什么不使用B树呢?有什么优势? B树这种结构一般还有什么场景下会用到呢? 假如有a,b联合索引,where a=? 会走索引吗?where b=?会走索引吗, where a>? and b
MySQL 性能优化
MySQL性能优化做过吗? 你做过SQL的性能优化吗?举个例子?Mysql引起的CPU消耗过大怎么排查? 假如一条sql执行的很慢你怎么排查?假如我要查的字段长度相对固定,但是没走索引你会怎么建索引呢? 你执行explain的话会看哪些指标?这些指标分别代表什么含义呢? 如果查询的字段确实有加索引但是实际上走了全表扫描你该怎么排查呢? 假如我数据库某张表数据特别大,但是要分页查,翻页越来越慢怎么解决,比如select a from table limit 1000000,100这个sql怎么提高查询效率。
MySQL 存储引擎
MySQL存储引擎有哪些? innodb和MyIsam有什么区别? mysql存储引擎是基于表的还是基于数据库的?为什么? 讲一下一条sql从client端到mysql server端到返回结果中经历了什么?
MySQL 持久化理论
Mysql事务用过吗?了解ACID吗?解释一下什么意思? mysql事务的隔离性原理是什么?其他几个的原理呢? MySQL事务的隔离级别了解?分别解决了什么问题? 可重复读是什么意思?幻读是怎么产生的?MySQL脏读是怎么产生的? 读已提交相对于读未提交解决了什么问题? Mysql支持了这几个隔离级别的原理知道吗?
MySQL分库分表
分库分表用过吗?有哪些框架? TDDL了解吗?TDDL的分层架构组件讲一下? 假如我要查100条,如何聚合结果?在server端做还是在client端做呢?数据量这么大client端做会不会有问题? 假如我有一张表用户-订单表,你怎么设计分表规则?以用户id做分片分表的话,但是我想通过订单id查最近10条订单怎么查?有什么方案? 分库分表的跨库事务你怎么解决的?有哪些方案或者思路?
MySQL 架构&高可用
假如让你去设计一个项目你怎么去考虑这个项目在mysql层的高可用? 有哪些架构模式?一主多从的方式如何做数据同步的?主从延迟怎么解决? 假如我的写并发量比较大,数据库突然down机了,怎么保证数据一致性。mysql->redis的数据同步怎么做的?解析binlog吗?
三、消息队列连环炮
消息队列技术选型
说说你用过哪些消息队列?各自有什么优缺点?各自的适用场景? 现在企业一般都是建立一个集群支持不同的业务线,你有没有想到这么做的优缺点?
消息队列产品-kafka
kafka接收消息和转发消息的流程画一下? 发送一条消息到kafka集群中,kafka是怎么保证消息不丢失的? 在消息队列场景中有消息重复的问题,kafka是怎么解决的? kafka中消息发送到消费者端是不是每个机器都会消费? 假如消费者集群有些宕机了,如何保障重新消费消息? 假如消息太多,我的消费者集群已经加了200台,仍然消费不了怎么解决?
消息队列产品-rocketmq
rocketmq用过吗?有哪些特性? 源码有阅读过吗? 事务消息的原理是什么? 来画图说一下事务消息生产消费的过程? rocketmq如何保障消息的顺序的? rocketmq如何保证消息不丢失的?底层做了哪些优化?
消息队列高可用
如果是你去做一个消息队列你会考虑哪些方面保障消息队列的高可用?
四、java基础&高级连环炮
java锁
java 锁了解吗? java中有哪些锁呢? 说一下sychronized的原理? 说一下sychronized和Lock的区别? 说一下java中多线程情况下竞争锁比较激烈导致锁升级的过程? 产生死锁的条件是什么?怎么避免? volatile怎么用?有什么特性? 重排序了解吗?volatile怎么解决的? 还有什么方式可以解决重排序的问题? 基于volatile的单例模式解决了什么问题?sychronized和volatile的区别讲一下? 讲一下懒汉式的单例模式怎么写?
java多线程
java多线程用过吗?怎么用的?有什么缺点? 线程池的原理了解吗?有哪些线程池?构造线程池的参数有哪些? 线程池的拒绝策略有哪些?什么时候会触发拒绝策略?阻塞队列有哪几种?,线程池的线程工厂参数你是怎么设置的?为什么呢? 假如我假如有台机器每秒产生50个任务,每个任务执行1秒,CPU是2核的你怎么设置这些参数呢? 线程池执行任务的时候出现异常没抛出异常你怎么解决?有哪些方案? 线程池执行任务结束调用shutdown和调用shutdownNow方法的区别? 假如我想获取线程执行任务之后返回的结果怎么做? Future.get()会阻塞主线程吗?那如果任务执行时间太长调用Future.get()会怎么样?
java类加载
java类加载了解吗?有哪些类加载器? rt.jar是谁加载的 ?什么是双亲委派模型? 假如我要注册JDBC驱动去操作数据库,这个注册的过程你了解吗? 打破双亲委派模型的例子有哪些? java中有些使用了代理模式去创建类,大量创建的类存在哪里? 如果类不用了怎么卸载?有哪些方式? java热加载做过吗?原理是什么? Tomcat的热部署用过吗?原理是什么?
java并发容器
java concurrent包里的并发容器了解吗 concurrentHashMap在1.7和1.8的实现区别? 为什么使用红黑树而不用平衡树?说一下插入kv的过程? blockingQueue用过吗?怎么用的? CopyOnWriteArrayList知道吗?怎么用的? concurrentHashMap什么时候会扩容? HashMap有什么问题?
java数据类型
假如3*0.01=0.03吗?为什么?怎么解决?有哪些方案? BigDecimal大数计算的原理是什么? Integer a= 1000 Integer b=1000 ,a=b? a=100,b=100,a=b?为什么?
五、jvm连环炮
jvm垃圾回收算法
java引用有哪些?怎么判断引用的对象是否需要被回收? JVM中有哪些可以作为GCROOTS? JVM垃圾回收算法有哪些?各自有什么优势和使用场景? 你们部署服务的时候JVM配置的什么回收器?参数配的是啥? 年轻代用什么垃圾回收器?老年代呢?说一下CMS垃圾回收的过程? 在哪些阶段会产生STW?CMS会产生内存碎片吗?为什么?怎么解决? CMS压缩内存的时候会STW吗?为什么? G1回收器了解吗?有什么特性?
jvm调优
JVM调优做过吗?怎么调的?使用的什么命令? 分析过GC日志吗?线程栈dump文件中有哪些信息? 线程状态有哪些?CPU load飙高怎么排查? 分析过dump文件吗?怎么判断有内存泄漏的?怎么解决的? 产生FGC的原因有哪些?如果频繁FGC你有什么思路? 如果FGC基本正常,YGC时间逐渐增大导致服务抖动怎么排查? JVM 编译模式了解吗?C1,C2各自怎么进行字节码编译的? 有什么优缺点?如何解决代码冷启动问题?
jvm内存模型
java内存模型了解吗? 常量池在哪?元数据区存的是啥?哪些是线程共享的?栈溢出的场景有哪些? 新建一个对象的过程说一下? 有哪些场景下会用非堆内存?一般用非堆存什么东西?非堆中的对象会GC吗?为什么?
评论
豆瓣9.7,这部Java神作第3版重磅上市!
文末赠书Java 程序员们开年就有重磅好消息,《Effective Java 中文版(原书第 3 版)》要上市啦!该书的第1版出版于 2001 年,当时就在业界流传开来,受到广泛赞誉。时至今日,已热销近20年,本书第 3 版已是 Java 程序员的必读神书,被誉为“Java 四大名著之一”,甚至连
编码之外
0
五一抢票难,Github上这几个Python项目,你可以试试
又到五一长假啦(虽然其实就放了1天),大家是打算家里蹲or出去玩,又或者是在公司加班呢...今天给大家介绍三个和12306相关的项目,看看你是否用得上。/01/ py12306py12306购票助手,顾名思义,12306买票的~需要在python 3.6以上版本运行程序。1. 安装依赖gi
Crossin的编程教室
0
好未来测开一面,挺简单!(0428面试原题解析)
大家好,我是二哥呀。今天继续给大家分享春招面试题《好未来测开一面原题》,附详细答案,我会用通俗易懂+手绘图的方式,让天下所有的面渣都能逆袭 😁二哥的 Java 面试指南内容较长,建议正在冲刺 24 届春招和 25 届暑期实习、秋招的同学先收藏起来,面试的时候大概率会碰到,1、二哥的 Linux 速查
沉默王二
0
大量 Java 开源项目停更...
点击关注公众号,Java 干货及时推送↓推荐阅读:投了 100 多份简历后…出品 | OSC开源社区(ID:oschina2013)Sonatype 发布了最新的一份《软件供应链状况》报告,深入探讨了如何在充满选择的世界中定义更好的软件,并探讨人工智能 (AI) 对软件开发的深远
Java技术栈
0
Java 神作,必读!
Java 程序员们开年就有重磅好消息,《Effective Java 中文版(原书第 3 版)》要上市啦!该书的第1版出版于 2001 年,当时就在业界流传开来,受到广泛赞誉。时至今日,已热销近20年,本书第 3 版已是 Java 程序员的必读神书,被誉为“Java 四大名著之一”,甚至连 Java
小哈学Java
0
Java与lua互相调用简单教程
来源:网络👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目
小哈学Java
0
【送书福利】《Java面试八股文:高频面试题与求职攻略一本通》
先来唠唠最近粉丝面试回来跟我聊天,基本上都提到一个点,在面试过程中八股文占比很高(八股文70%、项目20%、10%算法)除了一些搞算法突出的厂除外。其实现在很多厂八股都是逐渐深入的方式来问,所以大家在学习的过程中,针对一些重点的内容,最好深入去学习,不然还是比较难应对这种追问式的问题。最近刚好从一位
Java后端技术
0
面试通过,背调凉了。。
整理来源|网络背调,可以很精准的检验应聘者简历中所写和所讲的是否属实,已经成为招聘企业检验员工是否合格的重要手段之一,也是应聘者在面试过程中十分反感的一点。我们经常会看到有人在网络上吐槽自己因为背调错失了高薪offer,而企业也会因为背调感到头疼。因为面试者能力很强,但是却在背调中发现有作假情况,这
码农突围
0