字节跳动面试题

面经1
一面:
1.IM系统用户登录怎么实现的?
2.登录状态是怎么保存的?session是怎么获取的?sessionid是怎么识别的?整个流程是什么样的?有没有考虑分布式session?
< 3.Redis的数据类型 
4.Redis数据类型的底层数据结构
5三次握手、四次挥手
6.Redis持久化机制
7.MySQL的InnoDB索引数据结构
8.哪些SQL的关键字会让索引失效
9.队列、栈、数组、链表
10.算法题:leetcode92题

二面:
1.讲讲爬虫的构成
2.爬虫抓到的数据不清洗吗?不去重吗?
3.对爬虫有什么更多的了解吗?
4.Linux进程间通信机制
5.进程和线程的区别
6.线程私有的数据有哪些?(不是Java线程)
7.讲一下堆排序,每次调整的时间复杂度?堆排序是稳定的吗?(一开始说错了,应该是不稳定的,后面面试官问稳定的定义是什么)
8.哈希表的原理,怎么减小哈希表的冲突,怎么保证哈希表的并行读写

9.Kafka用过吗?说说Kafka的原理?怎么保证Kafka的高可用?Kafka怎么保证消息有序?

10.项目里的set实现点赞,zset实现关注,为什么?
11.zset底层实现?说一下跳表?节点的高度是多少?怎么决定节点的高度?
12.https了解吗?
13.中间人攻击知道吗?怎么做httns的抓包?httns怎么算改?

14.虚拟地址到物理地址的映射过程
15.算法题:给一个数组,建一颗最小高度的二叉树(递归和非递归)


三面:
1介绍一下做过的项目,哪些挑战性比较大,比较有难度的
2.IM项目怎么用Netty的,为什么要用Netty,长连接交互是怎样的
3.消息怎么存储,怎么发送,怎么知道消息已读和未读的
4.读了5条消息、又来5条消息,你是怎么去更新的,你的消息是幂等的吗?
5.项目里怎么用ES的,ES怎么支持搜索的
6.技术论坛网站的评论是怎么存储的
7.查询评论是在DB里扫表查询吗?怎么展示所有的评论?性能如何?想要查询更快可以做哪些优化?
8结合缓存和DB的时候会出现哪些问题?要怎么解决?

9快排了解吗?介绍一下快排?时间复杂度是多少?为什么会退化成O(n^2)?单链表可以做快排吗?快排?最核心的逻辑是什么?写一下单链表快排?

面经2
一年经验,Java开发
1.自我介绍;
2.项目介绍;(延申较浅)
3.手撕算法:NC95最长连续子序列
4.手撕算法:NC91最长递增子序列
5.线程和进程的区别?怎么创建线程?有哪些状态?有什么区别?
6.Java1.8了解哪些新特性?重点讲讲HashMap和CurrentHashMap。
7.OSI七层协议和TCP/IP五层协议有什么区别?TCP/UDP在哪一层?对TCP了解多少?
8.你还有什么要问的吗?
总结:开幕雷击,字节对算法还是挺看重的。

面经3
字节电商后端
·进程和线程区别
·为什么进程切换开销比线程切换开销大?。你知道逻辑地址和物理地址么?

·sql题(表T(idnamesalarycity)用SQL实现找到同时符合城市平均工资大于5000,单人工资大于
10000的人的名字)·wifi属于OSI哪一层
·三次握手四次挥手相关(细节,以及为什么三次,为什么四次)·hashmap的底层原理
·红黑树和二叉搜索树,二叉树之间的区别。为什么hashmap不直接用红黑树
算法题
1.求从一个树的左边的叶子节点到一个树右边的叶子节点的最短路径)
2.最长回文子串
3.给定一个数N,求(1-n)所有的可能子序列)比如给个1返回1给个2返回1,2,12

你可能感兴趣的:(#,校招,面试,redis,java,数据库)