首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
贪玩的美羊羊在分享面经
山东大学 C++
发布于北京
关注
已关注
取消关注
@晓宜:
腾讯春招后端一面(八股篇)
前言前几天在网上发了腾讯面试官问的一些问题,好多小伙伴关注,今天对这些问题写个具体答案,博主好久没看八股了,正好复习一下。面试手撕了三道算法,这部分之后更,喜欢的小伙伴可以留意一下我的账号。1.讲一下数据库的事物特性和底层原理四大特性⑴ 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。⑶ 隔离性(Isolation)隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。⑷ 持久性(Durability)持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数原理数据库系统是通过并发控制技术和日志恢复技术来避免这种情况发生的。并发控制技术:并发控制技术是实现事务隔离性以及不同隔离级别的关键,实现方式有很多,按照其对可能冲突的操作采取的不同策略可以分为乐观并发控制和悲观并发控制两大类。乐观并发控制:对于并发执行可能冲突的操作,假定其不会真的冲突,允许并发执行,直到真正发生冲突时才去解决冲突,比如让事务回滚。悲观并发控制:对于并发执行可能冲突的操作,假定其必定发生冲突,通过让事务等待(锁)或者中止(时间戳排序)的方式使并行的操作串行执行。我们这里介绍基于悲观锁的机制:核心思想:对于并发可能冲突的操作,比如读-写,写-读,写-写,通过锁使它们互斥执行。锁通常分为共享锁和排他锁两种类型共享锁(S):事务T对数据A加共享锁,其他事务只能对A加共享锁但不能加排他锁。排他锁(X):事务T对数据A加排他锁,其他事务对A既不能加共享锁也不能加排他锁基于锁的并发控制流程:事务根据自己对数据项进行的操作类型申请相应的锁(读申请共享锁,写申请排他锁)申请锁的请求被发送给锁管理器。锁管理器根据当前数据项是否已经有锁以及申请的和持有的锁是否冲突决定是否为该请求授予锁。若锁被授予,则申请锁的事务可以继续执行;若被拒绝,则申请锁的事务将进行等待,直到锁被其他事务释放。可能出现的问题:死锁:多个事务持有锁并互相循环等待其他事务的锁导致所有事务都无法继续执行。饥饿:数据项A一直被加共享锁,导致事务一直无法获取A的排他锁。对于可能发生冲突的并发操作,锁使它们由并行变为串行执行,是一种悲观的并发控制。日志恢复技术日志恢复技术保证了事务的原子性,使一致性状态不会因事务或系统故障被破坏。同时使已提交的对数据库的修改不会因系统崩溃而丢失,保证了事务的持久性。撤销事务undo:将事务更新的所有数据项恢复为日志中的旧值重做事务redo:将事务更新的所有数据项恢复为日志中的新值。2.讲一下数据库的隔离级别① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。② Repeatable read (可重复读):可避免脏读、不可重复读的发生。③ Read committed (读已提交):可避免脏读的发生。④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。3.讲一下数据库的的索引机制索引(index)是帮助MySQL高效获取数据的数据结构(有序),提高数据检索的效率,降低数据库的IO成本(不需要全表扫描),通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。MySQL的InnoDB引擎采用的B+树的数据结构来存储索引,b+树阶数更多,路径更短,磁盘读写代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据,B+树便于扫库和区间查询,叶子节点是一个双向链表4.说一下Redis和MySQL数据同步的方案延时双删策略在写库前后都进行redis.del(key)操作,并且设定合理的超时时间。为什么在写入之后还要删除?因为写入之前可以有读请求读到了未修正的数据,然后写入了缓存,这个时候缓存和真实数据不一致,但是读请求只会读到缓存就返回数据,造成数据更新不及时异步更新缓存(基于订阅binlog的同步机制)MySQL binlog增量订阅消费+消息队列+增量数据更新到redis步骤:读Redis:热数据基本都在Redis写MySQL:增删改都是操作MySQL更新Redis数据:MySQ的数据操作binlog,来更新到Redis5.讲一下向某个网站从发送请求到收到数据这个过程中发生了什么。1.浏览器中输入网址。2.通过DNS解析域名的实际IP地址DNS 解析首先会从你的浏览器的缓存中去寻找是否有这个网址对应的 IP 地址,如果没有就向OS系统的 DNS 缓存中寻找,如果没有就是路由器的 DNS 缓存, 如果没有就是 ISP 的DNS 缓存中寻找。3.与 WEB 服务器建立 TCP 连接。TCP 协议通过三次握手建立连接。客户端通过 SYN 报文段发送连接请求,确定服务端是否开启端口准备连接。状态设置为 SYN_SEND;服务器如果有开着的端口并且决定接受连接,就会返回一个 SYN+ACK 报文段给客户端,状态设置为 SYN_RECV;客户端收到服务器的 SYN+ACK 报文段,向服务器发送 ACK 报文段表示确认。此时客户端和服务器都设置为 ESTABLISHED 状态。连接建立,可以开始数据传输了。4.若协议是https则会做加密5.浏览器发送请求获取页面html6.服务器响应html7.浏览器解析 HTML8.浏览器渲染页面6.讲一下进程与线程的区别,以及你对操作系统的理解进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。7.线程如何数据交互,进程如何数据交互?线程的数据交互锁机制:包括互斥锁、条件变量、读写锁互斥锁提供了以排他方式防止数据结构被并发修改的方法。读写锁允许多个线程同时读共享数据,而对写操作是互斥的。条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。信号量机制(Semaphore):包括无名线程信号量和命名线程信号量信号机制(Signal):类似进程间的信号处理进程的数据交互管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道 (namedpipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量(semophore ) :信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。消息队列( messagequeue ) :消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。信号 (sinal ) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。共享内存(shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。套接字(socket ) :套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同设备及其间的进程通信。原文链接:https://blog.csdn.net/qq_51118755/article/details/136550189
点赞 10
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-28 16:28
电子科技大学 C++
快手二面、三面、HR面
最近无聊便想着那之前没有写完的面经跟大家分享一下,希望能帮上大家,目前也没有太多精力继续面试了,姑且打算结束秋招。二面二面的时间我记得好像是9.9,因为一面是9.3。目前我就记得二面的时候,面试要我打开我的项目然后共享给他挨着讲逻辑,讲思路以及尝试优化的方法等,这个是重点,最后的手撕题目的话有点忘记了,我记得好像是hot100或者150的题目,大家多刷刷还是有用的。三面三面应该是leader吧,体验很不错,面试时间是:9.17自我介绍之后是对一些基础的简单提问,然后之后就是一些算法的思想啊,或者针对简历上写的东西的一些提问。还有部分是关于系统设计的这一类的。HR面HR面时间是:9.25日就是一...
查看6道真题和解析
点赞
评论
收藏
分享
10-29 13:40
门头沟学院 财务
快手税务专员面经
1. 请做一个简短的自我介绍。 2. 你是通过什么渠道了解到快手税务专员岗位的?这个岗位最吸引你的地方是什么? 3. 你在校期间参加过哪些社团活动?在活动中负责过需要“细致耐心”的任务吗?具体是什么? 4. 过往学习中,你有没有遇到过“任务 deadline 紧”的情况?当时是怎么安排时间完成的? 5. 如果你入职后,发现发票管理的流程比课本上学的更复杂,你会怎么快速上手? 6. 你平时使用Excel处理数据时,常用哪些功能?有没有自己摸索过提高效率的技巧(如快捷键、函数)? 7. 你对“税务专员”的工作内容有什么初步理解?觉得这份工作和“会计岗位”的核心区别是什么? 8. 你对快手的业务有哪...
查看10道真题和解析
点赞
评论
收藏
分享
10-25 18:35
华东交通大学 Java
26届双非本,11月补录还有机会吗😭
后端转测开第一人:
双非本 没大厂实习 后端肯定没机会了 直接转测开吧
点赞
评论
收藏
分享
10-24 11:08
已编辑
上海大学 Java
招银网络
杭州 软件开发 劝退价
TTT___TTT:
这个价是前端吧
点赞
评论
收藏
分享
10-27 00:56
已编辑
华中科技大学 Java
后端方向意向求选择
美团 北京 食杂零售 小象超市京东 北京 零售 广告网易互娱 上海 游戏服务端网易雷火 杭州 游戏服务端目前还没有开始谈薪,但是我想了解一下各家的薪资大概处于哪个区间,以及这几个岗位的业务前景和跳槽难度如何。希望大伙给点建议和信息什么的~
投递美团等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
造谣刑法老师媚男,反被老师法院起诉
1.2W
2
...
现在出海,是不是相当于十年前加入互联网?
9475
3
...
秋招小失败-后端小小劝退(大结局)
6392
4
...
9本秋招后端收获9+offer, 我做对了什么?
5276
5
...
你们说,人会一直倒霉吗?
4993
6
...
一个大专学历15年IT之路的感悟
4736
7
...
字节懂车帝日常一面二面面经(已挂)
3083
8
...
别问了,在校生千万千万别逃课!
2912
9
...
秋招能拿多个大厂offer的其实就两种人
2886
10
...
挑战全网最早的美团开奖!
2788
创作者周榜
更多
正在热议
更多
#
校招生月薪1W算什么水平
#
35651次浏览
195人参与
#
哪一瞬间觉得自己长大了
#
38638次浏览
493人参与
#
“vivo”个offer
#
39456次浏览
281人参与
#
如果上班像打游戏,你最想解锁什么技能
#
8666次浏览
71人参与
#
vivo工作体验
#
28310次浏览
124人参与
#
为了实习逃课值吗?
#
29520次浏览
272人参与
#
工作后明白的那些道理
#
22133次浏览
225人参与
#
一人一个landing小技巧
#
124301次浏览
1447人参与
#
我是面试官,请用一句话让我破防
#
27275次浏览
129人参与
#
实习最想跑路的瞬间
#
87883次浏览
543人参与
#
中美关税战对我们有哪些影响
#
43561次浏览
363人参与
#
机械制造2023笔面经
#
149982次浏览
840人参与
#
如果重来一次你还会读研吗
#
202028次浏览
1932人参与
#
AI时代,哪些岗位最容易被淘汰
#
3737次浏览
27人参与
#
中美关系回暖,你会选择出海吗?
#
7278次浏览
109人参与
#
华为保温
#
108195次浏览
408人参与
#
哪些行业值得去?
#
5808次浏览
51人参与
#
i人适合做什么工作
#
11966次浏览
97人参与
#
美团开奖
#
224490次浏览
1155人参与
#
读研or工作,哪个性价比更高?
#
78686次浏览
769人参与
#
如果秋招能重来,我会____
#
38351次浏览
303人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务