字节跳动-C++后台开发
一面
- 自我介绍
- 针对项目提问:
- rockdb原理,了解哪些
- LSM Tree的适用于什么场景
- 解释了一下项目针对rocksdb做了什么研究
- 问了一下遇到的问题可能是由什么原因引起的
- redis数据结构
- redis中有序集合是用什么实现的,讲了跳表
- 跳表插入或查询的时间复杂度
- redis为什么这么快
- 问了mysql内部实现原理
- 问关系型数据库与KV数据库各自的优缺点
- 开始问基本知识,操统和网络:
- TCP滑动窗口
- TCP四次挥手中有一个timewait,什么时候会进入timewait
- 进程间通信
- 类的内存模型,new了一个对象后,内存空间是怎么样的
- 虚函数如何实现
- 虚函数表存放在哪里
- 1道编程题:
- 反转链表中从m到n的部分
阿里云块存储
阿里云块存储一面
- 自我介绍
- 项目相关:
- 发现了什么问题?打算怎么解决?
- 有没有关注过数据库其他方面导致的性能问题?
- 为什么要选这个课题?
- 使用什么工具?该工具其他功能?
- CPU cache了解吗
- 说说缓存一致性
- 操作系统:
- 进程线程的区别
- 进程同步,方法及原理
- 线程同步
- 锁,及原理
- 如何用互斥锁实现读写锁
- 协程
- 线程切换开销,具体有哪些
- C/C++:
- 关键字
- static作用,static变量以及static函数的作用
- 虚函数,作用及原理
- 队列和栈,如何用队列实现栈
- 哈希和map
- 编程题:
- 一个有序数组从中间分成两段,将后一段移到数组前面,查找某数在数组中的位置。
腾讯TEG 云平台架构
- 介绍背景和项目
- 针对项目提问(34min)
- 基础知识:
- static
- C++比较新的特性用过吗
- 多态,虚函数实现原理
- 继承关系中的构造析构顺序
- 什么是IO多路复用
- 七层模型
- 算法题:
- 寻找普通二叉树中的两个节点的最近公共父节点。
腾讯TEG 云平台架构 一面
- 自我介绍
- 项目
- 自定义的一个类如果要在map里面使用需要实现什么函数
- 为什么不是operator<=
- 头文件使用尖括号和双引号的区别
- 继承和模板有什么区别,分别适用于什么场景
- 内存泄漏,C++如何避免内存泄漏
- RAII
- linux 网络抓包命令,查看所有tcp连接的命令
- 什么是堆,讲一下堆排序,总的时间复杂度,建堆的时间复杂度
- 快排的时间复杂度,最坏情况复杂度,如何优化最坏情况?(partition的时候有没有什么技巧)
- 插入排序的时间复杂度,在数组接近有序的时候的时间复杂度
- B和B+树的区别
- LSM树
- send()函数返回成功了数据包一定被发送出去了吗
- 什么时候TIME_WAIT,有什么意义
- 哈希冲突,解决方法
- 缓存淘汰策略
- redis持久化方式
- rdb方式如何防止持久化过程阻塞掉网络请求
- fork函数
- 编程:
- 实现一个存放自定义类Student的List
- 一个字符串数字,删除k个数字得到能表示的最小数字
腾讯TEG 云平台架构 二面
- 自我介绍
- redis内存模型 如何存储key?
- extern C
- static
- static成员函数可以通过对象访问吗
- 虚函数底层原理
- 构造析构虚函数
- vector底层
- 扩容、缩容
- map、unordered map
- linux 内核哪个版本
- 目录 用户目录 etc proc dev
- 三次握手
- 第三次ack丢失的时候客户端和服务器怎么处理
- 慢启动、拥塞避免
- 浏览器输入url
- get 和 post的区别
- 进程线程
- 进程间通信
- 协程
- 为什么切换开销比线程小?