首页 > 字节跳动,PDD后端开发面经分享
头像
godblessnobug
编辑于 2020-05-17 18:06
+ 关注

字节跳动,PDD后端开发面经分享

字节
kafka:
发消息的流程
comsumer group vs partition
comsumer rebalance?
ISR?

消息堆积处理方法? 要么加线程(partitoin) 要么批量
成批poll, 事务功能关闭
增加partition,consumer数量,consumer用工作线程加阻塞队列来接收

如果是有大量提交失败导致重复消费,需要看一下原因session.timeout.ms

es:
es 倒排索引,支持事务支持吗

从节点可以写入吗?
写入流程?写到内存还是磁盘? 写入buffer 和translog -> 定期同步buffer到os cahce, 在此期间translog保证数据可靠
还要调用fsync才能把数据刷到磁盘中

一条日志记录了,用户使用app的开始和结束的时间,用户时间可表示为[start..end]的区间
求一堆日志里面,用户在线人数最多的时间和数量:

所有用户的总时间区间可以为[L..R]
利用倒排索引思想,将每个区间按照下标对应加起来,找出[L..R]中的最大值下标(优化 利用数据结构堆)

---
先闲聊 花旗 字节跳动的区别

高工要求 压力面
LinkedList 循环链表 foreach栈爆问题 -> 编译原理 AST nfa/dfa
ArrayList 连续内存,CPU cache加速

注册到多路复用器
NIO/高并发 =>  epoll vs poll:
epoll 就绪链表
eventLoop 轮询对CPU的消耗
Netty的 API gate 设计 性能问题http协议解析压力,IP白名单过滤
异步事件处理: 一般有一个event[fd]的数组,将回调函数与fd进行绑定

进程的文件描述符

M的线段,分成N份的分法
C m (n-1)

回溯算法就是一颗决策树,回溯算法的关键:路径(已经做过的选择),可选列表,结束条件
result = []
def backtrack(path, select):
  if(end condition):
    result.add(path)
    return
  for (s in select):
    做出选择
    backtrack(path, select)
    撤销选择

backtrack 函数其实就像一个指针,在这棵树上游走
---
编译原理知识回顾
词义分析
语法分析
语义分析 -> 文法分析树 不确定分析(回溯分析) 确定分析(预测分析)  正则表达式(nfa/dfa)

编译时常用代码优化:
局部公共子表达式替换
复制传播删除无用代码/常量合并/代码移动(减少循环内执行的指令数),循环不变计算/强度削弱


java 的编译原理: JIT
逃逸分析,循环优化


---
三面: 交叉

自我介绍做的项目,和我在其中所做的工作
选一个项目(yume, citi hawk数据质量可视化)说一说项目结构
数据输入,输出,如何处理freemark的rule形式,为什么用template?
规则引擎的怎么设计的,有哪些类?怎么判断消息应该用什么rule校验

研究过什么开源项目?提交了code吗?(spring/vertx/netty/apache geode)

你有什么问题?


四面:

你对现有的项目有什么改进?或者你觉得你们项目还需要完善的地方
你考虑的出发点是什么

广告消息系统过滤设计?
kafka, 分流

高吞吐量系统应当注意什么?
如何保持稳定,高可用
监控/fail over

新功能如何稳定发布,降低风险?
多个环境测试/发布的时机应该是闲时/开发和support权限隔离,维护prd环境的稳定

算法: 数组子序列最大和(dp秒了)
sum(n) = if sum(n-1) > 0:  sum(n-1) + arr[n] else: n

说一下你的优点和缺点
问答环节:讲解了一下广告相关的,计算广告(归因,追溯,dpa, 对照试验)

hr面:
自我介绍下最近两年的情况
印象深刻并且有收获的项目
在team中充当什么角色


-------------
PDD:

一面:
算法: 具体啥忘了, 反正就是一个树递归的样子,比较简单
ELK, zipkin, hystrix滑动窗口(基于错误率和流量),ribbon负责均衡常用的算法


二面:
算法: 找区间内地波峰波谷: 其实就是一个肯定有至少一个极值读区间,如何快速找到之后任意一个极值(logN 二分)
事务 RR隔离级别具体实现: 
幻读(
读偏差: 只读事物 MVCC
写偏差: 2PL, SSI(基于冲突检测读乐观事物并发控制)
) 数据库自增主键ID的原因,顺序写入,避免B树页拆分(前提是非堆集表) redis 大量过期key怎么删除? 单线程不能执行太久, 堆? 淘汰机制lru, ttl, random cas的应用,高并发和高qps的区别?线程一定多吗?
高QPS需要的是no-blocking 而不是频繁的线程阻塞并切换,这样才适合cas进行同步 项目经验 MQ怎么处理消息重复(全局id的保存),消息丢失(recon 统计) 吐槽项目: DBA保守,用geode, 规则引擎扩展性不高,描述能力过时

三面:
数据仓库项目中用了什么技术?
发行版(CDH这一套)hive, sparkSQL, impala

hive和impala 区别是使用场景: 可共享meta数据,
hive是横向切分MR架构(模型更加通用,支持的数据格式更general, 当然速度肯定也慢),适用于批处理job
impala是竖向切分MPP架构,有点交互式查询的味道,操作都在内存,且有数据格式优化(支持的数据格式少),容错也低

最近开了什么比较有收获的书, 推荐一下,好在哪里? ddia

hr:
想在哪里发展?
有没有女朋友?
有没有其他offer?



更多模拟面试

全部评论

(21) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐