当前位置: 首页 > news >正文

【java】常见面试题目

文章目录

    • 一、JAVA基础篇
    • 二、多线程篇
    • 三、SQL篇
    • 四、No-SQL篇
    • 五、MQ篇
    • 六、框架篇
    • 七、JVM篇
    • 八、常见算法题

一、JAVA基础篇

1、ConcurrentHashMap是如何保证线程安全的,HashMap为什么是线程不安全的? HashTable为什么是线程安全的,HashSet为什么是线程不安全的?

2、volatile是如何保证变量,在线程之间是互相可见的,为什么它无法保证原子性?

3、JDK8中新增的Lambda、Stream的流式编程

4、Future、CompleteFuture的基本原理

5、创建线程的3种方式:Thread 、Runnable、Callable

二、多线程篇

1、线程池的底层是如何实现的,常用的线程池有哪些?任务队列有哪几种?各自有什么特性?拒绝策略有哪几种,分别有什么区别?

2、synchronized如何保证线程安全的?

3、ReentrantLock底层是如何实现的,其创建的公平锁和非公平锁是如何实现的?AQS指的是什么?

4、CAS(Compare and swap) 的基本原理是什么?如何避免CAS过程中产生的ABA的问题?

5、悲观锁、乐观锁、公平锁、非公平锁、自旋锁分别是什么意思?

6、过度加锁是指什么意思?

三、SQL篇

1、MySQL的聚簇索引和非聚簇索引区别,查询过程分别是怎样的?什么是回表?

2、MySQL底层的数据结构是什么?数据页和索引页之间是怎么管理的?

3、MySQL的索引是如何生效的?索引的代价是什么?索引失效和索引生效的机制是怎样的?

4、数据库的事务隔离级别 : Read Uncommitted、 Read Committed、 Repeatable Read、Serializable,四种隔离级别分别会带来什么样的问题?(脏读、不可重复读、幻读)

5、数据库对于这些事务隔离是如何保证的?(MVCC、Next-Key-Locks)

6、分布式事务TCC 模式、XA 模式、AT 模式、SAGA 模式,分别是如何实现的?各自有什么缺点?

四、No-SQL篇

1、Redis的过期策略

2、Redis的底层数据持久化分为RDB和AOF,各自有什么优点和缺点?

3、Redis分布式锁是怎么回事?

4、缓存雪崩、缓存击穿、缓存穿透分别是什么?如何解决?

5、布隆过滤器的底层实现怎样的?它有什么缺点?

五、MQ篇

1、Kafka集群原理、主从节点各自功能是什么?数据是如何持久化的?

2、KafkaProducer在发送消息时,是如何选择分区的?RecordAccumulator线程和Send线程的作用分别是什么?发送的消息有哪几种压缩方式?

3、KafkaConsumer中,ConsumerGroup和GroupCoordinator是如何工作的?

4、如何提高消费者集群的消费能力?消费者集群中,什么情况下会发生Rebalance,会有什么影响?

发生Rebalance时,分区重配策略Range、Round Robin、Sticky分别是怎样的?

六、框架篇

1、Mybatis是怎么通过动态代理实现查询?MapperProxy和MapperMethod分别是什么作用?

2、Spring的AOP是如何实现的?JDK自带的动态代理和基于Cglib的动态代理有什么区别?

3、Airflow的六个模块(WebServer、Worker、Flower、Scheduler、Postgres、Redis),分别是有什么作用?如何提高airflow的性能?

4、BeanFactory 和 FactoryBean有什么区别?

5、Kubernates 主节点 : API-Server、 Scheduler、 Controller、 etcd ,从节点 : Kubelet、Kube-proxy、 Docker ,各自的功能是什么?

6、Kubernates的 Ingress、Service、Deployment、Pod、Container之间是怎么关联的?

7、同一节点Pod内部容器、同一节点不同Pod内的容器、不同节点Pod内的容器,是如何通信的?

8、Hadoop框架的内部结构是怎样的?Map和Reduce的工作机制是怎样的?

9、Hadoop是如何基于作业jar包,开展map和reduce计算的?在这过程中,Shuffle起到了什么作用?

七、JVM篇

1、JVM内分为哪几个部分?在JVM中,是如何新建一个类的?

2、JVM的GC算法有:标记清理法、标记整理法、标记复制法,分别有什么优缺点?

3、一个对象是如何从年轻代到过度代,再到老年代的?

4、Minor GC 和 Major GC的区别是什么?

5、如何对JVM性能调优?

八、常见算法题

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Modular military character
  • 全球AI新闻速递527
  • nginx代理前端html
  • 【Docker实战】进入四大数据库的命令行模式
  • C++的数论相关算法
  • 05.爬虫---urllib与requests请求实战(GET)
  • 【机器学习结合AI绘画工具】——开启艺术创作的新纪元
  • Vue 子组件向父组件传值
  • ros 学习记录(四)仿真环境中键盘控制turtlebot3运动
  • MySQL - 信贷业务报表
  • 半年不在csdn写博客,总结一下这半年的学习经历,coderfun的一些碎碎念.
  • Hudi 多表摄取工具 HoodieMultiTableStreamer 配置方法与示例
  • RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置
  • SylixOS nty模块使用说明
  • Spring框架温习
  • [译] 怎样写一个基础的编译器
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • MySQL-事务管理(基础)
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python进阶细节
  • scrapy学习之路4(itemloder的使用)
  • 测试如何在敏捷团队中工作?
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端工程化(Gulp、Webpack)-webpack
  • 前言-如何学习区块链
  • 一文看透浏览器架构
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​zookeeper集群配置与启动
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #{} 和 ${}区别
  • #if和#ifdef区别
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (含笔试题)深度解析数据在内存中的存储
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (一)为什么要选择C++
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)用.Net的File控件上传文件的解决方案
  • ***测试-HTTP方法
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Core 成都线下面基会拉开序幕
  • .net mvc部分视图
  • .NET Standard 支持的 .NET Framework 和 .NET Core