模拟面试题

以下是一份3年的简历内容,其中软件技能部分,大概会问以下问题,欢迎各位一起回答一下。

『熟悉消息中间件RabbitMq的使用及其实现原理。』

项目中使用过Rabbitmq,是什么场景使用的?不用的话能不能解决问题?

Rabbitmq和其他的同类消息中间件相比有什么优缺点吗?

Rabbitmq如何保证不丢数据? 如何保证消息的消费不会重复?

什么是业务幂等,什么是请求幂等,你们采用的哪一种?为什么?

如果业务层没有做到幂等,还有什么办法在数据库层面避免脏数据产生吗?

『有扎实的Java基础功底,熟悉JVM内存模型、Java高级特性和类库』

JDK、JVM和JRE有什么区别?

如何设置堆大小?

如何知道堆大小设置的是否合理?

创建多线程有几种方式?

JVM内存模型介绍一下吧。哪些部分是线程共享的,哪些部分是线程独享的?

堆和栈的区别? 数组分配在堆还是栈?

所有对象都在堆上分配内存吗?

什么是逃逸分析?什么是变量替换?什么是栈上分配?

如何查看堆的使用情况?如何分析堆内存溢出问题?

一、使用jps查看线程ID

二、使用jstat -gc 3331 250 20 查看gc情况,一般比较关注PERM区的情况,查看GC的增长情况。

三、使用jstat -gccause:额外输出上次GC原因

四、使用jmap -dump:format=b,file=heapDump 3331生成堆转储文件

五、使用jhat或者可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)分析堆情况。

六、结合代码解决内存溢出或泄露问题。

线上频繁FGC如何排查和定位问题?

『熟悉Java网络与服务器编程、Java多线程编程等。』

什么是线程,进程?并发和并行?

并发编程用过哪些关键字?

synchronized的实现原理?

volatile的实现原理?

volatile为什么不能保证原子性?

双重校验锁实现的单例中,用了synchronized为什么还要用volatile?

知道什么是CAS吗?知道什么是乐观锁吗?

『熟悉Mysql数据库,了解sql诊断和性能分析策略,有sql优化和数据库运维经验。』

什么是关系型数据库?

除了关系型数据库还有其他数据库吗?

关系型数据库和其他数据库有什么区别?

有什么优缺点?

InnoDB中索引如何实现的?

使用了什么数据结构?

B树、B+树区别是什么?

做过哪些SQL优化?

数据库有慢SQL,如何排查问题?

先通过日志定位到慢SQL,然后使用explain命令查看SQL的执行计划,查看其索引使用情况,再进行索引优化

慢SQL会引起什么问题?

SQL慢,会拖长事务,拉长请求的RT。大量慢SQL就会大量占用数据库连接,导致后续请求排队,严重会导致应用服务器的CPU飙高、LOAD飙高,直到机器被打挂。

B+树索引和HASH索引的区别?

B+树索引中叶子节点上存储的是什么的东西?有什么区别?

在 InnoDB 里,索引B+ Tree的叶子节点存储了整行数据的是主键索引,也被称之为聚簇索引。而索引B+ Tree的叶子节点存储了主键的值的是非主键索引,也被称之为非聚簇索引。

什么是最左前缀匹配?什么是索引下推?

索引越多越好吗?

数据库挂了怎么办?

关系型数据库和NOSQL有什么区别吗?各有什么优缺点?

『熟悉Nosql数据库Redis,了解Redis事务控制;主从复制及持久化恢复等。』

Redis的线程模型?

单线程的Redis如何保证高效的?

Redis的事务控制怎么理解?

如何解决缓存和数据库之间的数据一致性问题?

『熟练使用常见的开源框架,如Spring, Dubbo, Mybatis, SpringMVC,SpringBoot,SpringCloud等』

为什么要使用Dubbo?

SpringBoot的starter机制了解吗?

MyBatis和Hibernate有什么区别?

为什么用MyBatis

熟悉linux系统常用操作命令』 Linux机器LOAD飙高如何排查?

『熟悉计算机网络相关协议,学习过操纵系统、数据结构、算法相关课程并掌握;』

计算机OSI七层模型?

TCP三次握手四次关闭的流程介绍一下? 为什么是三次握手,2次或者4次行不行?

手写快排。

两个文件,各存放50亿条URL,每个URL占64字节。内存限制是4G,找出两个文件中相同的URL

描述一下网页中输入网址敲击回车之后的全过程。

『熟悉 Springboot, Spring, SpringMVC, Mybatis, Netty 等开源框架;』

Spring IOC ,AOP原理?

Spring bean的初始化过程?

Spring bean注入有几种方式?

jdk和cglib动态代理有什么区别?

Mybatis和Hibernate有什么区别?

『了解 Redis,消息队列等开源中间件,了解分布式基础理论, CAP, Paxos 等;』

什么是CAP?如何证明CAP?

简单介绍下Paxos解决的是什么问题?

『熟悉 IDEA/Eclipse/Vim 等开发工具,熟悉 Maven, Git 等管理工具,熟悉 Restful 编码风格, Postman 测试工具。』

GIT和SVN有什么区别?

maven有什么用?

如何解决jar包冲突?

『电商秒杀项目』

QPS从430提升到850做了什么?QPS是850的时候,RT是多少?

Redis预减库存后,如何同步到数据库?失败了怎么办?

数据库如何防止超卖?

如何防止恶意秒杀?

如何防止脚本秒杀?

这个项目中你主要担任的是什么角色?

简单介绍下你负责的功能 如何理解分布式,和集群有什么区别?

你们的项目室分布式部署的,那么是用户、商品、订单等模块是独立部署的的吗?

那多个业务模块之间的系统交互是如何实现的,用的RPC框架吗?

哪种RPC框架?

Dubbo和gRPC有什么区别?

优缺点对比? 下单的时候,支付和订单扣减有没有遇到过数据不一致的情况,如何解决?

Mybatis是干什么的?

你们的商品表是怎么设计的?什么是SKU?

库存的扣减是怎么进行的?如何避免超卖?

购物车的组合支付是怎么做的?

如何保证原子性?

你们的数据量有多大?

订单表大概有多少个字段?

Redis具体在什么场景中使用作为缓存?

如何保证Redis和数据库中数据的一致性?

缓存击穿有了解吗?

么是负载均衡?

介绍一下nginx实现负载均衡的具体方案 Spring的IOC和AOP介绍一下?

Spring中bean的生命周期介绍一下 Spring中bean是单例的吗?

你在项目中有遇到什么技术难题吗?

你是如何解决的?

你觉得你们做的电商网站有哪些还可以优化的地方吗?

1、线程和进程的区别?

2、Java是单进程还是多进程?

3、Java虚拟机做GC的时候为什么会stop the world

4、如何理解高并发?多少并发量算是高并发?

5、如何应对秒杀这种高并发场景,谈谈自己可能得实现思路

6、知道几种排序算法?时间复杂度和稳定性分别说一下?手写快排。深度优先搜索和广度优先搜索手写其中一个。

7、什么是OSI七层模型,介绍下TCP三次握手,四次关闭。

8、为什么要3次握手,2次或者4次有什么问题?

9、知道什么是TCP粘包吗?

10、直到IPV4 和 IPV6的区别吗?

11、Mysql和Redis有什么区别和联系?

12、有了Mysql为什么还要使用Redis

13、Mysql的常用引擎有了解吗?区别是什么?

14、Innodb的锁机制介绍一下

15、死锁的四个必要条件,避免方法

16、什么是数据库连接池?为什么要用?

17、有40亿个不重复的unsigned int的整数,没排过序,现在给一个数,如何快速判断这个数是否在这40亿个数当中。

1、什么是负载均衡,如何使用Nginx实现的负载均衡?

2、Nginx实现的负载均衡是几层负载均衡?

3、介绍下你理解的单点登录和你的实现方式?

4、Spring Session的核心原理

5、权限统一校验你们怎么做的?知道什么是RBAC吗?

6、为什么使用拦截器实现?为什么不用开源的框架?

7、Spring 拦截器的实现原理?和监听器的区别?

8、为什么要用分布式锁,不用行不行。

9、详细阐述Redis实现分布式锁的技术方案

10、其他实现分布式锁的方案对比。

11、如何对宕机死锁的情况进行优化的?效果如何?

你可能感兴趣的:(面试,模拟面试题)