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

54所面经准备

文章目录

      • 1.详细说一说点击一个qq.exe运行的过程
      • 2.什么时候会有用户态和内核态的切换,切换过程干了什么
      • 3.PCB(进程控制块)最重要的是什么?
      • 4.讲解一下jmm内存模型
      • 5.共享编写a++有哪些方法解决并发问题,CAS怎么实现
      • 6.java中的锁,分别保证哪些并发特性
      • 7.spring事务怎么用?有哪些参数
      • 8.springIOC怎么理解解耦
      • 9.java中线程池提交任务的流程是怎么样的
      • 10.线程池的拒绝策略有哪些?
      • 11.无界队列存在什么问题?一般什么场景下使用
      • 12.谈谈java的锁消除和锁升级
      • 13.synchronized锁可重入吗?能保证可见性吗
      • 14.某个服务CPU利用率达到100%,如何排查
      • 15.如果是OOM了?怎么排查?
      • 16.自己用过jmap排查错误吗?
      • 17.mysql是怎么解决幻读问题的?
      • 18.mysql的Innodb执行引擎有哪些锁
      • 19.为什么选择rabbitmq
      • 20.rabbitmq的持久化是怎么做的?
      • 21.线程的安全怎么保证?
      • 22.进程的通信方式有哪些?
      • 23.redis常用数据结构有哪些?使用场景
      • 24.zset底层实现?
      • 25.取出有序集合某个元素的分数,命令是什么?复杂度

1.详细说一说点击一个qq.exe运行的过程

操作系统从硬盘找到该程序,然后将程序加载到内存中,CPU通过cache和内存交互,如果需要改变数据,内存数据再持久化到磁盘即可

2.什么时候会有用户态和内核态的切换,切换过程干了什么

系统调用(访问硬件资源),硬件中断进程调度,切换过程会保存用户态现场

3.PCB(进程控制块)最重要的是什么?

PCB 是进程再操作系统的唯一标识,保存了进程的所有关键信息,最重要的是进程标识符和处理机上下文(寄存器和程序计数器),保证进程能被唯一识别

4.讲解一下jmm内存模型

jmm定义了java中多线程访问内存的规则。每个线程要修改主内存,会先写入自己的工作内存,修改后再写入主内存。比较期望值和内存值是否相同,相同则更新

5.共享编写a++有哪些方法解决并发问题,CAS怎么实现

synchronized,reentrantlock,AutomicInteger三种方式,CAS实现比较期望值和内存值是否相同,相同则更新

6.java中的锁,分别保证哪些并发特性

原子性:一个线程执行不会被打断
有序性:禁止指令重排序
可见性:一个线程对主存修改对另一个线程可见

7.spring事务怎么用?有哪些参数

通过@Transcaction注解使用
有事务传播行为参数,隔离级别,超时时间,是否只读,异常回滚策略(默认对运行时异常回滚)

8.springIOC怎么理解解耦

Spring IOC 通过“控制反转”和“依赖注入”实现了解耦。类不再自己创建依赖,而是由容器统一管理并注入,这样类只依赖接口而不是具体实现,降低了模块之间的耦合度,提高了可扩展性和可维护性。

9.java中线程池提交任务的流程是怎么样的

新来的线程小于核心线程执行,否则进行阻塞队列,阻塞队列慢,就用救急线程执行,顺便把阻塞队列的也执行完成

10.线程池的拒绝策略有哪些?

直接抛出异常,丢弃最新的任务,丢失最早的任务,交给主线程执行

11.无界队列存在什么问题?一般什么场景下使用

任务堆积导致内存溢出,一般用在任务量可控稳定下使用

12.谈谈java的锁消除和锁升级

JIT编译器会判断一个对象是否被其他线程访问,如果没有被访问,就会消除锁操作,因为没有并发安全问题。
锁升级:无锁–偏向锁–轻量级锁–重量级锁

13.synchronized锁可重入吗?能保证可见性吗

是可以重入的,会对该线程持有一个锁计数器,重入加1

14.某个服务CPU利用率达到100%,如何排查

通过top命令查看cpu的占用情况,以及top -Hp pid查看进程对应线程的占用情况,把占用最用的线程ID转换位十六进制,用jstack pid查看它下面的线程堆栈情况,分析某个线程哪行代码再重复执行
一般有写死循环,死锁,频繁垃圾回收等等

15.如果是OOM了?怎么排查?

1.提前设置好记录dump文件,OOM了导出dump文件到visualVm分析代码哪些对象创建的太多了,找到对应的代码行修改
2.jmap -heap 调整堆空间大小

16.自己用过jmap排查错误吗?

jmap -histo 查看对象的分布情况,看看OOM原因

17.mysql是怎么解决幻读问题的?

可重复读级别通过行锁+间隙锁避免幻读
或者使用串行化隔离级别

18.mysql的Innodb执行引擎有哪些锁

行锁:锁单条记录,粒度最小
间隙锁:锁定索引间隙,防止其他记录插入
next-keylock:行锁和间隙锁的组合
意向锁:用于兼容行锁和表锁,避免冲突

19.为什么选择rabbitmq

实现系统解耦,异步处理,保证消息的可靠传递(持久化,ACK,死信队列),并且容易和springboot集成

20.rabbitmq的持久化是怎么做的?

通过使用前开启durable=true开启持久化机制

21.线程的安全怎么保证?

乐观锁,悲观锁,原子类,threadlocal

22.进程的通信方式有哪些?

管道通信,共享内存,消息队列

23.redis常用数据结构有哪些?使用场景

字符串:缓存对象,计数器
哈希:存储对象属性
列表:消息会裂
集合:去重
有序集合:排行榜
Geo:地理位置

24.zset底层实现?

hash+调表,hashkey记录元素,value记录得分
跳表,按照分数排序

25.取出有序集合某个元素的分数,命令是什么?复杂度

zscore key member
时间复杂度 O(log N),因为要在跳表里按排名查找

http://www.dtcms.com/a/443465.html

相关文章:

  • 宣讲家网站美丽乡村建设怎么创网站赚钱吗
  • 如何建立小程序网站网站开发技术项目代码搜索
  • C语言编译执行过程
  • 网站长尾词排名做不上去响应式布局代码怎么写
  • 【Linux】进程信号(1)
  • 男女做那个的的视频网站常见的网页设计工具
  • 做网站时管理员权限的页面wordpress标签前缀
  • 建网站找哪个平台好呢专业简历制作网站有哪些
  • 3.2.2 LangChain.js + LangGraph.js 实战
  • ARL资产侦察灯塔系统一键部署教程(2025最新)
  • 山东省环保厅官方网站建设项目网站建设好找工作吗
  • ui界面设计说明范文网站排名优化价格
  • SSM大学请假管理系统e9kl1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • java基础-11 : 数据结构与算法
  • 洛谷P1036 [NOIP 2002 普及组] 选数 题解
  • 坂田做网站的公司业务员销售管理软件
  • 网站服务器基本配置微信管理系统在哪
  • C语言题目与练习解析:配套《数据在内存中的存储》
  • Effective STL 第1条:慎重选择容器类型
  • 网站做多长时间才有流量双线主机可以做彩票网站吗
  • 外贸型网站建设公司福州最好的网站建设公司
  • 规划网站建设的总体目标张家港网站设计制作早晨设计
  • 安徽高端网站建设免费国外网站模板
  • 国外做建筑平面图的网站网页如何发布
  • 外贸网站如何推广做网站界面用的软件
  • 英文建站系统广州购网站建设
  • 手机版的学习网站ppt模板简约
  • 企业法律平台网站建设方案中国机械加工网价位
  • 网站的建设课程网站栏目怎么做301定向
  • Python求2/1+3/2+5/3+8/5+13/8.....前20项的和