字节-TIKTOK-后端
职位介绍
Data-TnS-Eng部门,我们主要负责国际化产品(Tik Tok等)的社区安全的相关系统和产品功能服务端研发工作,建设面向亿级日投稿+亿级日活的高并发,高稳定性系统。我们部门在字节中属于是核心部门,是字节跳动内容产品的生命线。
三轮技术面
- mentor / leader -> 2面
- 部门负责人
安全:不能有色情、不同国家的舆论体系
算法:帮助「审核」的审核,90%
审核:看用户视频的风险,贵且低、10亿
工程:1. 底层-基础架构:不理解业务语义,稳定的数据库 2. 业务:流量调度、审核人员排班、算法->审核的架构支持 3. 基础工具,业务同学
面试
项目介绍
- 说说你的项目和里面的一些重要的知识点?系统的讲解
文件传输
- 百度云盘的上传和下载,多个文件的上传和下载?对于客户端是一个个传输的,还是并发的传输?
- 比如,哔哩哔哩,有大量的文本,图片,视频,是一个个传输,就是一层一层的渲染,体验感不好?
- 百度云传输:4k(位置表示符号,包)+ 分布式(文件可能在一个机器上,分完包之后多个服务器进行传输)
- 客户端和服务端之间建立多个TCP连接?不同的资源在同一个服务器上(不同服务器存储不同的文件形式),对于这些文件怎么区分开?图片和图片之间怎么区分?视频和图片也区分过。不同文件的编码和解码
- TCP之间是没有文件信息的,只有http是有文件信息。
- 服务端用了epoll,epoll和多线程、多进程是不一样?那么epoll是怎么实现高并发?
- IO复用和IO多路复用?文件可以读写?
- TCP2.0里面有一个复用,同一TCP链接处理多个TCP请求。
- 如何提高服务端的并发能力?IO复用,多线程、多进程; 说说多线程和多进程的区别?
- 一个线程挂掉会使得进程挂掉?
cache
- 简单介绍一下
- 突然有100个用户访问请求是一样的,还没有存在cache里面? -> 请求合并 + 锁 + 超时时间
- 请求放到一个队列里面?这个时间窗口怎么定的?QPS决定的。 32
- 后端有多个实例,1000个用户的请求,分发层(一致性哈西);10台机器极其扛不住了,横向扩容。如何避免扩容之后,旧机器上的缓存失效问题?(同一个请求发不到原来的机器上了)
- 一致性分布式的具体原理? 把相同类型的请求发到一个实例上,但是它使用条件和内部原理?对于服务器的数量要求,从7-11和8-12的效果是一样的吗?为什么?1-2和11-13效果是不一样?还有其他的考虑因素。
- 对于一个实例,cache命中率逐渐变大和一致性hash有关系吗?
linux的shell编程
题目:文件service.in(每一行是一个字符串,服务的名字)-> lookup(接收一个字符串的输入,检测字符串的文件名是否存在?存在返回ip和port,没有部署返回为空) -> result.out(service.in还有多少服务没有部署, 服务名字,yes, no)
- 除了暴力之外,还有优化的方法吗?
- 提醒 awk, grep, xtargs
- 语塞 10min
一个命令行:
- 如何把一个文件的每一行单独摘出来变成多个参数
- cut ? xargs ? 标准输出流 ? sed
- 怎么把文件变成标准输入流?
- 怎么用管道串接起来不同的工作流
- 怎么用xargs多行的输入进行打散?
- 怎么用一个参数去消费?
- 怎么用grep之类的去过滤
- 输入流的重载
- 让lookup一个个去调用这个参数
- 把一个一个调用的结果再传到另外一个地方可以识别出来(每一个地方是否返回IP)
- 把识别的结果写到一个文件里面
语言
- 你平常的c/c++的标准:c98,c11
- c11里面的auto,智能指针
- auto关键字和智能指针的实现原理? -> new ? static_cast? iter? -> 自动识别一些类型 -> 是通过模板实现的?重载? -> 你了解c/c++的源代码到./a.out的全流程 -> 你知道auto是在哪一步实现的吗? -> 不再预处理?编译过后的优化代码里面还有auto关键字? -> 替换了?
笔试
足球比分
- 数学建模:不同的区间的重复部分
- 出现的问题:不断的进行枚举
todo
- 更新简历,没有百度实习经历
- 灯光不够亮,整一个台灯
- 部门的技术栈?今天的一个表现?不能直接问『面试』直接相关的。
技术点总结
- epoll底层与高并发实现原理