字节跳动,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?



#字节跳动面试##字节跳动##拼多多##Java工程师##社招##面经#
全部评论
看到帖子还是有挺多人看,很开心。 我开始准备面试时,也是在牛客网看了一些面经,给我准备效率上很大的帮助。 感谢牛客网和各位大佬,借机分享下自己的面试经历,希望能有些帮助😁
3 回复 分享
发布于 2020-05-21 15:37
问题有点狠, 3年经验跳槽?
1 回复 分享
发布于 2020-05-17 08:33
社招啊,老哥标注一下吧
1 回复 分享
发布于 2020-05-27 11:41
社招?
点赞 回复 分享
发布于 2020-05-17 14:11
厉害了
点赞 回复 分享
发布于 2020-05-17 15:42
这是几年经验问的?
点赞 回复 分享
发布于 2020-05-17 15:52
应届生瑟瑟发抖,这是社招?
点赞 回复 分享
发布于 2020-05-17 16:59
楼主目前在花旗跳的啊?
点赞 回复 分享
发布于 2020-05-17 19:35
感谢分享! 欢迎大佬参加我们的社招面经征集活动呀!有京东卡可以拿~社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡~:https://www.nowcoder.com/discuss/374207 #社招面经#
点赞 回复 分享
发布于 2020-05-18 16:08
#Java面经# #社招面经# #字节跳动Java面经# #拼多多Java面经# 👈点击话题查看更多同类面经干货!每日面经精选,为你发掘牛客干货!
点赞 回复 分享
发布于 2020-05-19 11:53
tql
点赞 回复 分享
发布于 2020-05-21 15:54
最后拿到offer了吗
点赞 回复 分享
发布于 2020-05-27 13:18
标记一下哦
点赞 回复 分享
发布于 2020-06-14 21:03
字节跳动校招提前批内推,欢迎了解 : https://www.nowcoder.com/discuss/439696?source_id=profile_create&channel=0
点赞 回复 分享
发布于 2020-06-15 17:38
之前做的是计算广告相关的吗?
点赞 回复 分享
发布于 2020-06-16 09:59
瑟瑟发抖,没几个会的,老哥厉害了
点赞 回复 分享
发布于 2020-07-20 00:57
太难了
点赞 回复 分享
发布于 2020-07-20 01:10
这问题楼主要了多少钱?得35以上吧
点赞 回复 分享
发布于 2020-07-25 23:04
感觉是阿里P7以上
点赞 回复 分享
发布于 2020-07-25 23:05
看傻了,原来是社招
点赞 回复 分享
发布于 2020-08-01 00:51

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
8 107 评论
分享
牛客网
牛客企业服务