2021年Java面试总结题
Posted 小坏蛋至尊宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年Java面试总结题相关的知识,希望对你有一定的参考价值。
1、SpringCloud与Dubbo对比优缺点?
组件简介?Feign遇到的问题(多requestbody参数)
Feign底层通信包?Feign拦截器设置header。
( 在Feign中,Client是一个非常重要的组件,Feign最终发送Request请求以及接收Response响应都是由Client组件来完成的。Client在Feign源码中是一个接口,在默认情况下,Client的实现类是Client.Default。Client.Default是由HttpURLConnection来实现网络请求的。
另外,Client还支持HttpClient和OkHttp来进行网络请求。只需要在pom文件上加上HttpClient依赖即可。另外需要在配置文件中配置feign.httpclient.enabled为true,从@ConditionalOnProperty注解可知,这个配置可以不写,因为在默认情况下就为true。同理,如果想要在Feign中使用OkHttp作为网络请求框架,则只需要在pom文件中加上feign-okhttp的依赖,
)
2、SpringCloudGateWay与Zuul对比?
网关限流,熔断?
(限流作为网关最基本的功能,Spring Cloud Gateway官方就提供了RequestRateLimiterGatewayFilterFactory这个类,适用Redis和lua脚本实现了令牌桶的方式。
自定义过滤器在网关层面限流)
3、服务注册中心ZooKeeper、Eureka、Nacos对比?
SpringCloud Bus Config Git配置中心?
CP AP AP+CP
Eureka需要配合MQ实现配置动态刷新,
Nacos采用Netty保持TCP长连接实时推送。
(Spring Cloud Bus集成了市面上常见的RabbitMQ和Kafka等消息代理。其会连接微服务系统中所有拥有Bus总线机制的节点,当有数据变更的时候,会通过消息中间件使用消息广播的方式通知所有的微服务节点同步更新数据。(如:微服务配置更新等)
实现Bus刷新功能需要在所有的config client端应用中增加spring-cloud-starter-bus-amqp依赖,这个依赖是消息总线集成的RabbitMQ消息同步组件。)
4、Spring循环依赖,Starter原理?
5、Tomcat怎么处理http请求,Http请求报文头?
6、Netty相关概念组件?零拷贝技术?分包拆包?
Netty的高效并发编程主要体现在如下几点:
1) volatile的大量、正确使用;
2) CAS和原子类的广泛使用;
3) 线程安全容器的使用;
4) 通过读写锁提升并发性能。
Netty除了使用reactor来提升性能,当然还有
1、零拷贝,I/O性能优化
2、通信上的粘包拆包
2、同步的设计
3、高性能的序列
Netty采用了第三种模型:主从线程Reactor模型。
定义了两个EventLoopGroup,其中bossGroup对应的就是主线程池,只接收客户端的连接(注册,初始化逻辑),具体的工作由workerGroup这个从线程池来完成。可以理解为老板负责招揽接待,员工负责任务完成。线程池和线程组是一个概念,所以名称里有group 。)
7、美团面试题:jvm full gc后内存使用没怎么变化?
怎么回事,怎么排查?
答,可能内存泄露,不太会排查
8、加密算法?
(加密算法分 对称加密 和 非对称加密,
其中对称加密算法的加密与解密 密钥相同,非对称加密算法的加密密钥与解密 密钥不同,此外,还有一类 不需要密钥 的 散列算法。
常见的
对称加密 算法主要有 DES、3DES、AES 等,常见的 非对称算法 主要有 RSA、DSA 等,
散列算法 主要有 SHA-1、MD5 等。)
9、Mybatis一二级缓存是什么?
10、线程池参数?
手写代码:20万个手机号,十个线程批量发送?
11、mysql 锁 共享锁 排它锁?
12、Feign超时时间配置?异常?重试?
(1.feign的读超时时间readTimeout必须要小于hystrix的超时时间timeoutInMilliseconds,才会重试。上面的配置前者是3000,后者是500,一旦触发超时降级,就不会重试,hystrix的超时是最高优先级,如果在重试期间,时间超过了hystrix的超时时间,会立即熔断。
2.feign底层是ribbon,但feign优先级高于ribbon。
将feign的readTimeout设置为500,hystrix的timeoutInMilliseconds设置成1000即可。)
13、Tomcat线程池?和netty对比?
Jetty轻量级在哪里?
14、Spring事务原理?传播机制?底层如何实现?
15、工作中最有压力的时候?
1、Http2和Http1对比?
2、阻塞与非阻塞 、同步与异步?
3、JVM调优,频繁Full JC?
内存溢出与内存泄漏区别对比?
4、Redis几种数据类型与底层数据结构?单线程模型 高效原因?
MySQL索引优化?
5、AOP原理?SpringBoot启动流程?
XTransfer的面试题目
1: Mysql实现可重复读的具体原理
2:标记清除算法和复制算法的区别,及分别的使用场景
3:多线程的使用
4:进程和线程的区别
5:syncronized和lock的区别
6:公平锁和非公平锁实现的具体原理
7:事务的隔离级别
通联数据 技术面试
问题参考: 先问项目,画架构情况,问一个Java框架题。
其他:1、写sql,2、数据结构、3、读过什么书籍,知道class文件的结构吗?
重要信息:技术面问题:
(1)根据简历上的项目经验问:项目实践经验,项目相关的技术栈了解的深度。
(2)技术知识:
Kafka:副本分区机制
数据库:事务的隔离级别、可重复读这种隔离级别下如果事务并发可能会出现什么问题、索引什么场景失效 ;
框架:Spring boot启动流程、Spring 的事务传播机制
Redis:线程模型、阻塞非阻塞同步异步区别、单线程如何保证查询如此高效 ;
JVM:内存泄漏与内存溢出区别
算法:时间复杂度、快排时间复杂度、链表反转方法
(3)沟通能力
11,CEO(王总)面试一般问的问题: 注重软性沟通
让自我介绍一下 问了一下这边的开发模式
然后问对于现在公司和通联数据业务不同怎么看
然后问人选能给他们带来什么好处。
然后问人选有什么问题要问。
需要 注意CEO面试雷区:关于人事制度 福利待遇 不要问CEO 哈。 不要有抱怨这种,这些问题等后面HR聊再问~
其他的面试题目
1. 多线程:线程池是怎么搭建的;日志的信息怎么保持一致性
2. 数据结构;
举例:链接超过10w,内存储是多少?
内存里面的碎片怎么处理?
分配原则:参数,增长比例?
碎片怎么变小?
3. Spring boot Springcloud的组件是什么?
怎么服务发行和注册的?
服务器在不同环境下怎么调用的?
4.ES的使用情况,详细说一下?
5. kafka的时间消费?
通过时间怎么去消费;
消费的时候怎么保持有序。
得物APP 面试技术点
毒APP 技术点:
DBA 对MySQL事务,存储过程不了解,对TiDB原理不了解,CTO复试不通过。
CTO阿里P9 喜欢聪明皮实
Java技术点:
redis底层协议,dubbo网络这些 还有hystrix原理 实战,
设计一个高并发系统, 问了系统设计和高可用 项目技术点的考察,一些细节的提问。
根据某些特定技术场景的技术选型 问的大多是场景性题目 技术相对一般,业务基础和技术深度不足,结算相关内容了解也不够多;
对activeMQ、rpc协议(其公司内部自用dubbo)等了解都不够深入 ;
对于spu\\sku、类目等概念比较清楚,但是对于高并发情况下如何支撑大流量没有太多经验,对于缓存的一致性处理、expiretime实现机制等了解不多,服务治理不清楚,zk相关基础比较弱,mysql索引有一定了解。
达不到专家水平,但是又很难沉下去做技术。技术相对一般,业务基础和技术深度不足,结算相关内容了解也不够多,对activeMQ、rpc协议(其公司内部自用dubbo)等了解都不够深入 Redis大key问题不了解,以及影响原因不清楚。
以上是关于2021年Java面试总结题的主要内容,如果未能解决你的问题,请参考以下文章
面试题系列|前端面试题前端高频面试题总结(2021年最新版)
Java面试总结 Boss沟通过:500+,面试:20,已投简历130+
1-3年Java开发工程师面试心得分享,精选面试题40道[2021-12-10持续更新]