字节后端开发面经
问了HR结果,已给口头offer,献上面经回馈牛客小伙伴们
一面:
1.IM系统用户登录怎么实现的?
2.登录状态是怎么保存的?session是怎么获取的?sessionid是怎么识别的?整个流程是什么样的?有没有考虑分布式session?
3.Redis的数据类型
4.Redis数据类型的底层数据结构
5.三次握手、四次挥手
6.Redis持久化机制
7.MySQL的InnoDB索引数据结构
8.哪些SQL的关键字会让索引失效
9.队列、栈、数组、链表
10.算法题:leetcode 92题
二面:
1.讲讲爬虫的构成
2.爬虫抓到的数据不清洗吗?不去重吗?
3.对爬虫有什么更多的了解吗?
4.Linux进程间通信机制
5.进程和线程的区别
6.线程私有的数据有哪些?(不是Java线程)
7.讲一下堆排序,每次调整的时间复杂度?堆排序是稳定的吗?(一开始说错了,应该是不稳定的,后面面试官问稳定的定义是什么)
8.哈希表的原理,怎么减小哈希表的冲突,怎么保证哈希表的并行读写
9.Kafka用过吗?说说Kafka的原理?怎么保证Kafka的高可用?Kafka怎么保证消息有序?
10.项目里的set实现点赞,zset实现关注,为什么?
11.zset底层实现?说一下跳表?节点的高度是多少?怎么决定节点的高度?
12.https了解吗?
13.中间人攻击知道吗?怎么做https的抓包?https怎么篡改?
14.虚拟地址到物理地址的映射过程
15.算法题:给一个数组,建一颗最小高度的二叉树(递归和非递归)
三面:
1.介绍一下做过的项目,哪些挑战性比较大,比较有难度的
2.IM项目怎么用Netty的,为什么要用Netty,长连接交互是怎样的
3.消息怎么存储,怎么发送,怎么知道消息已读和未读的
4.读了5条消息、又来5条消息,你是怎么去更新的,你的消息是幂等的吗?
5.项目里怎么用ES的,ES怎么支持搜索的
6.技术论坛网站的评论是怎么存储的
7.查询评论是在DB里扫表查询吗?怎么展示所有的评论?性能如何?想要查询更快可以做哪些优化?
8.结合缓存和DB的时候会出现哪些问题?要怎么解决?
9.快排了解吗?介绍一下快排?时间复杂度是多少?为什么会退化成O(n^2)?单链表可以做快排吗?快排最核心的逻辑是什么?写一下单链表快排
#面经##字节跳动##Java工程师##校招#