成章数据一面

- 简单做完自我介绍后,上来直接问项目muduo,问问这个one loop per thread 的架构,以及重构前和重构后并发量提升了多少。我的回答就是多Reactor模式,多个线程,每个线程内部实现无锁编程。
- 然后就问这个线程的共享变量是怎么做的,就给了一个实际的场景题,如果是一个很大的LRU缓存,每个线程都要去访问,怎么提高缓存命中率,然后我想不出来,感觉就是一个redis的单线程,我就说了可以进行LRU分块,每个线程访问固定的缓存,然后用一个特定的线程来进行缓存同步。
- 反正中间交流得磕磕绊绊的,问的问题都有点偏场景题
- 算法题
struct LockInfo
{
uint64_t row_id;
uint64_t owner_tx;
std::vector<uint64_t> waiting_txs;
};

bool DetectDeadLock(std::vector<LockInfo> &lks){}

row_id 为数据库中某个表项的主键, owner_tx代表持有该表项锁的事务, waitting_txs代表等待该主键表项的锁的事务

填充这个函数,来检测死锁。
写的时候脑子荡掉了,没有想到多个事务循环等待的死锁,只想到了两个事务。然后最后相当于求一个图是否有闭环,
一时半会没写出来,用广度优先搜索对每个事务进行遍历,暴力求解。
面试公司:成章数据;面试职位:C/C++;面试体验:没有压力,属于引导型,属于鼓励型,面试结束提了一些值得学习的地方;面试难度:对工程能力要求较高;面试结果:感觉没戏;#数据人的面试交流地#
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务