腾讯云一面(处男面)面经

上来先手撕lru , si完 问优化 
● 1. 如何实现一个lockfree 的 并发控制的缓存
  ○ 问ringbuffer的优点?  无锁并发 
● 2. lru结合lfu 实现兼顾折中, 结合优点的算法实现

● 也可以使用结构体记录, 在数据存储 基本单元上
● 面试官给的思路: 设计多个lruclass, 或者多个队列, hot, warm, cold 队列
  ○ 访问频率高的就放入hot里边( 比如多少次以上评价为高
  ○ 那么可以使用结构体, 记录每一个访问的次数
  ○ 那如何解决这个过期呢? 还能设计一个过期时间, 每次要检索这个数据的时候, 获取这个过期时间,看是否过期, 过期就直接丢掉,  不能访问了 

● 另一个思路 :  整体还是按照lru来,替换之前检查一下,前三个即将被替换的里面选择频率最低的删除,但是每个最多连续比较三次(我瞎说的)
  ○ 避免某些短时间频繁访问的节点被删除
    ■ 防止抖动现象产生 

布隆过滤器+ redis bitmap 的原理

● 自己的思路, 使用一个散列函数, 根据你当前的访问频率(设计一个struct node ), 去决定你随机的在list里边的插入位置
  ○ 如果频率比较高, 就将其在get 的时候放到靠近队头的位置
  ○ 频率比较低, 将其get 的时候放在队尾的位置(反正你短期大量访问, 后续频率上来了也会 逐渐的放到队头的
  ○ 并且反正插入和查询都是O1 
    ■ 如果是伪高频,  插入位置比较低, 后续也会直接被淘汰, 说明你根本不是真正的短期热数据
● 如果再问频率优化?
  ○ CMS, caffeine 的本地淘汰策略算法
● lru和lfu 的区别, lfu适合短期高频, 而lfu适合长期高频 数据

paxos和raft 的区别
● paxos 对比raft 的优点?
● raft 为啥容易实现? 和paxos对比? 不允许空洞->强leader->容易实现
● 选主的时候有没有 可能设计一个方案, 无锁选主? 
  ○ 1. 回答哨兵机制, 交给另一个集群哨兵去做选举这件事( 从而让数据节点专心做数据
  ○ 2. 问其他思路, 我说不锁不行, 不锁的话可能导致选票许诺给多个人->整个集群的逻辑总票数增加 -> 脑裂问题

均摊分析, 插入1e数据 ,扩容因子为4的 hash插入 的复杂度( 不会

● 两阶段提交的缺点 
  ○ 全局阻塞, io次数多( 根据mysql 的两阶段提交谈了谈, 三级队列优化思路
  ○ 没有事先通知 参与者, 不知道他可不可达, 宕机没 就直接提交了( 浪费网络带宽
  ○ 协调者比重太大,  一旦故障, 其他参与者也会跟着阻塞
  ○ 可能导致的数据库不一致, 比如commit阶段 ,参与者并没有收到提交请求, 导致落后 ( 可以引入mq解决消息消费问题
    ■ 回答 数据同步机制, 结合项目增量和全量, 以及mysql 的集群组提交策略(半数以上
● 解决,引入tcc,  不过侵入性较大, 并且实际效率也不一定高 (
全部评论
接好运
点赞 回复 分享
发布于 03-26 17:59 湖北
接好运
点赞 回复 分享
发布于 03-27 08:32 浙江
接好运
点赞 回复 分享
发布于 03-27 09:07 湖北
接好运
点赞 回复 分享
发布于 03-27 09:44 上海
mark
点赞 回复 分享
发布于 03-28 11:44 广东
接好运
点赞 回复 分享
发布于 03-31 10:14 安徽

相关推荐

CSIG腾讯云一面 40min1.用户态实现协程实现(xv6实现)2.协程的调度方式?(RR)3.协程调度是否是抢占式?4.如何做到抢占式调度?(介绍了OS)5.协程和线程的区别?6.协程产生IO或网络socket如何让出调度?7.如何管理IO事件?8.断点续传的场景?9.使用什么协议进行数据传输?10.实现私有协议如何进行分包?(处理粘包)11.客户端切分4k大小写缓冲区,如何进行分片?12.已经在IP层分包为什么要在TCP分段?13.TCP如何进行重传?14.场景换成UDP,IP层分包为1 2 3 ,假设第3个包丢失那会怎样?(那就是丢了)15.成功接收的两个包可以被应用层处理么?16.发送方的包很小小于MSS,那协议栈会立刻发送么?(nagle算法和延迟ack)17.使用UDP传输,UDP传输该如何做保证可靠性?18.UDP实现传输的优势?19.为什么不使用HTTP作为业务层协议?20.TCP长连接如何保活?(keep alive和应用层心跳)21.服务端如何断包,确定包的完整性?22.服务端收到的不是完整的协议包该如何处理?23.MySQL连接池?24.使用什么数据结构来管理连接?25.如何对数据库连接进行保活?26.使用什么数据结构来管理心跳?(小顶堆,保活连接时间)?27.编译型语言和解释型语言区别?28.内核态和用户态的区别?29.两数之和(两者方法 双指针和哈希表之后分析算法区别)30.反问:面试结果什么时候出?31.预计到岗时间,时长,哪里人?CSIG腾讯云二面 40min1.哪里人2.河北人为什么不去北京实习,来深圳?3.主要编程语言?4.对其他编程语言了解么?5.构造函数能不能是虚函数?6.虚表为什么影响构造函数?7.析构函数能是虚函数么?8.头文件全局变量定义存在哪些隐患?(强符号冲突)9.C++内存分区?10.堆区和栈区的区别?11.C++vector为什么有size和capacity两个接口?12.了解vector的reserve么?13.C++ map set为什么没有vector的reserve预分配数据呢?14.三次握手在accept前完成还是后完成?15.调用accept前后程序状态会发生什么状态改变?16.介绍下快速回收(四次挥手)?17.开启快速回收,什么情况下会拒绝新连接的到来?18.项目中锁内存优化,如何发现锁内存性能存在问题的?(课程评测机制 和 从原理分析为什么要优化?)19.本CPU上得不到足够的内存,如何获取更多内存?20.有没有对比真实商用的OS的机制?21.介绍下第二个项目的收获?22.使用什么加密用户密码?23.服务端如何处理?24.salt存储在数据库,为什么要存?25.salt明文存在泄露风险?26.100本书,两个人轮流拿取,每次最多拿5本最少1本,先拿如何保证拿到最后一本书?(先取4本剩6的倍数)CSIG腾讯云三面 40min 追问到不会为止1.自我介绍2.介绍下协程的实现?3.协程栈内存如何分配?4.实现lazy allocation的场景是什么?5.设计实现malloc和free?6.对于小内存分配该如何管理?7.对分配出的小内存在节点记录大小有什么问题?8.如何优化?给了提示:每页分配切分为固定大小进行分配9.依据上述提示进行设计?10.了解自动内存回收策略么?11.给个设计思想,说了引用计数?12.引用计数在C++有类似机制么?13.shared_ptr和unique_ptr的区别?14.shared_ptr存在那些问题?15.循环引用为什么不使用裸指针和shared_ptr来解决而使用weak_ptr和shared_ptr来解决?16.介绍下IM的注册登录流程?17.为什么使用SHA256加密密码?18.为什么需要加盐?19.volitile介绍下?20.为什么需要缓存?介绍下缓存21.内存屏障,什么场景下需要使用?CSIG腾讯云部门HR面-1.面试体验?0.是准备本科毕业就工作么?1.介绍一个项目?2.项目都是独立完成么?3.介绍项目的难点,如何解决的?4.团队沟通觉得那些点比较在意?5.最近在学什么?6.可以实习多久? #暑期实习#  #腾讯#
点赞 评论 收藏
分享
一小时项目+八股拷打,简历从头问到尾,问到不会为止,最后十五分钟手撕LRU(典中典)(1)实习拷打(引申了一个ABA问题,不会,当头棒喝)(2)LRU用在OS的哪些地方(3)mmap使用的是物理地址吗(4)mmap会将整个文件映射到内存里吗(5)Page Fault具体过程(6)发生Page Fault后要将虚拟地址映射到物理地址,如何判断映射到哪个文件的哪个部分?(答了根据虚拟地址的偏移量对应到文件起始地址的偏移量,被追问如何确定要映射哪个文件,懵)(7)时钟中断(8)OS如何选择从内核态返回哪个线程(答了调度器会从“线程表”里根据调度算法,选择下一个线程)(9)“线程表”具体是什么数据结构(队列、红黑树、链表)(10)协程(11)你实现的协程是非抢夺式的,如果有一个协程死循环了怎么办(答时间片耗尽后线程强制切换上下文,被追问当前线程已经被这个协程“占据”了,又该如何实现上下文切换。懵了,面试官说可以用信号)(12)打开文件的具体过程(13)项目介绍(14)TCP粘包(15)JWT流程,JWT可能被伪造吗(16)raft协议,读操作可以位于任意节点上吗?(我回答是,面试官表示质疑,引申下面的问题)(17)强一致性的实现,假设客户端连上一个follower,但此时最新的日志还没从leader上同步过去,客户端又想读取到最新的数据该怎么办(不会,面试官说follower返回数据的同时返回一个“日志长度”)(18)raft选举(19)投票规则(答了任期,面试官说还有一点)(20)Proactor(21)忘了问的啥,掰扯了一下IO模型(22)epoll,对比其它两个(23)普通的IO会阻塞轮询,阻塞的时候可否做其它事情,让别的进程读(没get到面试官意思)(24)ps命令会显示哪些信息(追问会显示进程状态吗)(25)HTTP(26)http优化,keep alive(27)继续优化,若有一个复杂场景,服务器需要频繁推送,怎么处理(答了2.0多路复用,主动推送,升级成websocket,结果都不是面试官想要的,最后没辙了答了一个本地缓存,面试官和我都发出愉快的笑声)(28)数据库索引(29)索引常见数据类型(30)索引查找(31)联合索引(32)redis日志(33)AOF日志解决了什么问题
点赞 评论 收藏
分享
评论
9
50
分享

创作者周榜

更多
牛客网
牛客企业服务