2021.3.29 腾讯后台开发-实习 一面

这篇博客介绍了腾讯后台开发实习面试中涉及到的Java多线程内存管理,包括线程与进程的区别、synchronized和volatile的可见性实现。同时,讨论了MySQL的索引作用、B+树以及隔离机制。此外,还概述了MySQL主从复制的目的及其实现原理。
摘要由CSDN通过智能技术生成

1 线程和进程的区别?Java多线程的内存管理
进程是资源分配的最小单位,线程是CPU调度的最小单位,一个进程中包含多个线程。
内存管理:MM(java内存模型) 描述Java程序中各种内存(线程共享变量)的访问规则。所有变量都存在于主内存中,每个线程都有自己独立的工作内存,线程间不可以直接互相操作其工作内存中的变量,以及主内存的变量,只能以主内存为媒介做改变。
多线程的可见性实现有两种方式
1) synchronized给线程加锁,实现可见性
获取互斥锁–清空工作区内存–从主内存copy值到工作内存–执行代码–把值放回到主内存中–释放互斥锁。
2)volatile关键字,实现可见性不实现原子性
volatile通过加入内存屏障和禁止重排序实现可见性,store是在写之后强制把工作内存的值刷新到主内存中,load相反先从主内存取值到工作内存,然后再读。
如何实现原子性?加锁 synchronize或者reentranlock。

2 mysql的索引作用?为什么?mysql的隔离机制?什么是聚簇索引,介绍一下B+树。
索引类似于字典中的目录,可以快读定位所要查找的内容,提高查询速度。
聚簇索引:将索引和数据放在一起,通过找到索引值直接找到数据。
索引的实现是B+ 树,B+ 树非叶子节点不存储数据,仅存储键值,叶子节点存储数据,按照顺序排列。B+ 树索引是聚簇索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值