Tiktok基础架构新加坡面经
背景
楼主21届本科毕业,目前在新加坡Shopee Infra团队从事数据库中间件开发,最近面了新加坡Tiktok的基础架构(分布式KV),目前3轮技术面结束,正在等待HR面,每一轮面试都有反问环节,反问环节也没问什么有意义的内容,所以下面忽略
一面
一面整体上非常单调,大概50分钟,主要两部分:项目和算法题,项目介绍了30分钟,然后面试官围绕项目问了几个问题,最后刷了一道算法题三数之和
。
二面
二面没有问太多我现在做的中间件项目,整体上50多分钟,猜测可能是一面已经问完了,问了一些我字节实习期间做的项目,主要是问问工作量,比如多长时间、代码量、设计文档多少页这种。
然后问了简历上性能调优的工作,主要是对组内的中间件进行性能测试,然后想办法提升网络吞吐量。
我:通过批量网络IO减少系统调用次数,改同步为异步并发,删除一些go-mysql的重复操作
面试官:听你说了减少系统调用次数来提升性能,read网络系统调用哪里最耗时呢?
我:系统调用涉及到用户态到内核态的切换,用户栈内容需要拷贝到内核栈中,这是一次耗时,最耗时的地方是数据从网卡到内核,从内核到用户的两次拷贝,另外如果发生了进程切换,那么现有进程的TLB将会发生失效,TLB失效也会造成一定的影响,但是这个影响不是那么直观。虽然x86支持PCID技术,能够避免进程切换时TLB失效,但是这种做法在多处理器下会导致进程的TLB项遍布在多个处理器的TLB中,如果想要使该进程的TLB失效,就可能需要处理器间中断操作
面试官:对TiKV了解吗
我:当时计划做binlog server的时候,研究过TiKV的协议部分,因为binlog server很重要的一点是需要实现mysql master的部分功能
面试官:TiKV是如何实现多行语句事务呢?这部分代码有看过吗?
我: 没有
面试官:一些概念性的问题:什么是事务,MySQL事务隔离级别,什么事事务的一致性,什么是强一致性,弱一致性,最终一致性。了解CAP理论吗?
我:CAP理论内容忘了,其他的都还行。
还有一些问题忘了
最后是一个算法题:二分相关的,mid中的easy
三面
上来问了Shopee Infra的一些事情,问我leader是谁,他说了好几个我们database组的人,看来对我们组有了解。
- 你自我介绍说了网络,操作系统,你对网络和操作系统很了解吗?
- 操作系统你看过哪些模块的源码,是怎么看的
- 操作系统中文件系统的一些命令,比如iostat这种,内核是怎么实现的
- 又问了下字节实习的项目,工作量以及哪些是我干的
- 问我热爱技术为什么要去新加坡,毕竟...懂得
- 问我平时都干嘛
- 问我聊不了解CRDT
- 问我组中间件的整体架构,然后部署方式,了解到是单进程方式后,让我设计一个分布式的系统统一管理云云,算是一个系统设计题
- 问我聊不了解TiDB,我说我看过一些代码,debug过
- 紧接着问我知不知道Linux是如何实现debug的
- 还有一些其他问题忘了,没有算法题
状态
HR面约了时间,等待HR面
#社招面经##字节跳动##后端开发##基础架构工程师#