字节跳动面经整理(2023)

字节跳动

面经1

一面:

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.算法题:给一个数组,建一颗最小高度的二叉树(递归和非递归)

本文已经收录到Git仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

********

如果访问不了Github,可以访问****。

****

三面:

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 (id,name,salary,city)用SQL实现找到同时符合城市平均工资大于5000,单人工资大于10000的人的名字)
  • wifi属于OSI哪一层
  • 三次握手四次挥手相关(细节,以及为什么三次,为什么四次)
  • hashmap的底层原理
  • 红黑树和二叉搜索树,二叉树之间的区别
  • 为什么hashmap不直接用红黑树

算法题

  1. 求从一个树的左边的叶子节点到一个树右边的叶子节点的最短路径)
  2. 最长回文子串
  3. 给定一个数N,求(1-n)所有的可能子序列)比如给个1 返回1 给个2 返回1,2,1 2

给大家分享一个Github仓库,上面有大彬整理的300多本经典的计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~

********

面经4

  1. 自我介绍
  2. 项目
  3. volatile原理和作用
  4. 什么是指令重排序,举个例子
  5. AQS原理
  6. JVM内存模型
  7. 类加载过程
  8. 双亲委派机制
  9. 介绍代理模式
  10. redis数据结构
  11. HTTP状态码,header
  12. MVCC原理
  13. 算法:
  • 买股票无限次
  • 买股票只买一次
  • 买股票有手续费
  • 买股票最多买两次

面经5

  1. 自我介绍
  2. 业务部分:
  • 2.1 堆和栈的区别
  • 2.2 调用一个函数在堆中的过程
  • 2.3 密码学 中间人攻击、RSA、DSA密码的差别、加密过程,私钥加密公钥加密,数字签名的过程(跟本人网络空间安全背景有关)
  • 2.4 彩虹表、 kerberos、ECC(椭圆曲线加密)
  1. 算法题:
  2. 一个无序数组,求其topK
  3. 时段统计。动态规划。

面经6

  1. 自我介绍
  2. 实习介绍:你在腾讯干了啥
  3. 实习项目介绍:这个项目(深挖)
  4. 项目为啥立项,你做了什么模块
  5. 你的日志模块是怎么设计的,怎么开发的
  6. 你的token怎么做的,怎么保证唯一
  7. 你开发的业务模块举个例子(给他举了),你是怎么设计数据表的,具体用了哪些中间件
  8. mysql中inoodb的索引有哪些种类
  9. B+树索引具体是怎么实现的
  10. B树与B+树的区别
  11. 为什么B+树的中间节点不储存数据?
  12. 给一个索引,在有的查询过程中他没有走索引查询,说说你能想到的原因
  13. 红黑树了解过么?
  14. 用过redis么?(妈耶能别聊数据库了么)
  15. 你提到了kafka是吧,来聊一哈
  16. 聊一下你对git的理解
  17. git rebase与git merge的区别
  18. 聊一下你对工作流的理解

手撕算法:

给四个整数,判断是否只通过四则运算加()优先级能否运算出24

面经7

一面:

  1. 自我介绍
  2. JAVA SDK起到的作用
  3. 项目
  4. 数据流(项目)
  5. 排序(介绍下你知道的排序和复杂度)
  6. Arrays.sort底层的排序算法(有三种策略)
  7. 堆排序基本思路
  8. linux,操作系统的开机流程(这题我不会。)
  9. 进程和线程的区别
  10. 进程切换会发生什么
  11. 进程调度算法有哪些
  12. TCP、udp区别
  13. java锁,关键字区别
  14. 公平锁、非公平锁解释一下

二面:

  1. 算法题:由前序遍历中序遍历重建子树;
  2. 为什么静态类中不能使用非静态类(从类加载过程回答);
  3. java类加载过程; 3.1. 加载阶段中,为什么要有自定义的类加载器; 3.2. 双亲委派原则的机制;
  4. HashMap数据结构; 4.1. 为什么小于6是链表,大于8变成红黑树; 4.2. HashMap扩容机制; 4.3. HashMap是否线程安全,例子; 4.4. ConcurrentHashMap和HashTable的区别; 4.5. ConcurrentHashMap如何保证高效,为什么是线程安全,为什么比HashTable优秀,分段锁机制; 4.6. CAS能保证线程安全吗(我回答能,面试官说不能。。估计想考ABA问题),volatile关键字能保证线程安全吗;
  5. 随机数求根,比如根号二的值。(二分查询)
  6. 有n个筐,筐固定,每个筐内有不同数目的苹果,移动苹果,使每个筐苹果平均(移动的代价:1~2算1步,1~3算2步)使步数最小;

三面:

  1. 自我介绍
  2. 解决什么问题,做了些什么?(项目)
  3. 多个接口,有失败怎么办(项目)
  4. redis分布式锁怎么实现
  5. 时间过期怎么办
  6. ArrayList怎么扩容,时间复杂度O(n)?插尾部O(1),平均是多少,答案O(2)需要考虑扩容,小伙伴们可以自己推一下。
  7. HashMap底层原理
  8. mysql索引什么原理、B+树
  9. mysql和redis区别(讲一下各自优缺点)
  10. 为什么不用redis存数据?
  11. 算法:LRU缓存(),先讲一下再写

面经8

抖音电商

  1. 自我介绍
  2. 讲一下HashMap的put方法
  3. 讲一下HashMap的扩容过程
  4. 讲一下你自定义协议怎么解决粘包问题的?
  5. 算法题:LeetCode 二叉树根节点到子节点的路径和
  6. mysql的索引结构
  7. 为什么用B+树呢?
  8. having的作用
  9. 聚簇索引、非聚簇索引
  10. 聚簇索引比非聚簇索引的优点
  11. mysql的四个隔离级别,应用场景
  12. 如何在可重复读隔离级别解决幻读问题
  13. dubbo的负载均衡策略
  14. java的动态代理
  15. Spring哪里用到了动态代理?
  16. CGlib动态代理说一下
  17. MQ如何保证消息不会丢失

面经9

一面

  • 怎么理解微服务
  • 微服务的缺点
  • 微服务之间怎么做负载均衡
  • Oauth2基本流程、原理
  • 登录模块是怎么做的
  • cookie和session的区别
  • 购物车为什么用Redis存,是永久存储吗
  • 为什么购物车多读多写
  • Redis怎样清除过期key,有哪些策略
  • lru是怎样的过程
  • Redis字典底层怎么实现的
  • hashtable是怎样实现的
  • ziplist怎样实现的
  • 普通的哈希表怎样实现的
  • 哈希表怎么扩容
  • 使用MQ的好处
  • MQ解耦和微服务解耦的区别
  • 算法:最长回文子串
  • https建立连接的过程(SSL/TLS协商的过程)
  • 对称加密和非对称加密的优缺点
  • 为什么要区分内核态和用户态
  • 什么时候从用户态切换到内核态
  • 你编程的情况下,系统调用什么时候会发生 反问:业务,开发语言,表现,对应届生的要求(重点是基础和算法) 面试体验不错,但是项目挖的有点深

2面

  • 手写单例模式
  • volatile什么作用
  • 多线程的几种实现方式
  • 四种方式的区别
  • 锁用过哪些
  • 排它锁什么意思
  • 自旋锁什么意思
  • CAS相关
  • MySQL可以不指定主键建表吗,背后的逻辑是什么
  • 聚簇索引和其他索引有什么区别
  • 建唯一索引,插入数据时是怎么处理的
  • 重复插入会报错,是怎么处理的
  • 不同事物隔离级别的实现
  • 以前没有实习过吗
  • lc40 组合总和II 反问:部门怎样培养新人,刚进来做什么(学基础,语言和中间件,做demo),大概多久做需求(1周到1个月不等,看学习情况),框架和中间件以开源的为主还是以自研的为主(自研的)

3面

  • 有在实习吗
  • 面试通过后可以实习吗
  • 做项目的过程中遇到过什么问题
  • 内存泄露具体发生在哪
  • 什么情况下会出现多线程访问
  • 缓存穿透,怎么解决 (好像一紧张说成缓存击穿了,面试复盘的时候才发现。。。)
  • 缓存雪崩,怎么解决
  • 缓存与数据库数据一致性
  • 超卖问题怎么解决的
  • 集群环境下,Redis内存里的数据怎么保证一致
  • 算法:给定一个字符数组,和一个字符串,在字符串里找到任意一个完全由字符数组组成的子串,字符顺序无所谓(滑动窗口)

全部评论
您好,问下字节算法题是ACM模式吧,只写核心代码行吗
点赞 回复 分享
发布于 2023-05-11 15:28 上海
字节一面时间用了多久
点赞 回复 分享
发布于 2023-05-11 14:12 福建
佬,请问一般问到lru要答什么?说一下lc里那道算法吗(hash+双向链表)?还是redis里面的实现
点赞 回复 分享
发布于 2023-05-11 10:41 上海

相关推荐

- 飞书,开视频,面试官很友好,主要是让我在做整体流程的介绍,然后问了些常规八股- 第二个手撕在同一个小时的细节上没有完全撕出来,解决了90%,整体思路没问题- 3.6投递 3.20一面 3.24感谢信- 八股基本上都秒了,项目也讲清楚了,sql也都是秒的,也不懂为啥就挂了## 项目- 先那就挑一个你觉得做的最好的一个入仓的离线数仓的项目,具体讲一讲。从业务的背景,它的业务过程,你在其中做了什么内容,最后取得了什么成果这种思路展开讲一下。- 那你从业务的视角就是说是他比如说你的你的业务过程到底有哪些业务过程它有哪些数据,然后你怎么去做建模的,然后这种方式再细一下说一下。- 这个指标的话,其实你做了多少,做了哪些表,然后他的力度是什么?然后又有什么维度呢?- 在做这个指标的时候,你这整个的数据链路是啥?从离线到从是从线上到离线,然后再到你的指标,最后是大盘这种(大盘应该指的就是可视化)  - 我应该多讲一下数据通路中用到的数据同步工具- 你设计的DWD、DWS它的粒度是什么?都有哪些维度呢?- 你在做这个数仓其实是要类数仓的这样一个项目的话。那其实你觉得这里面最最难的点是在什么- 你现在的话其实更多的是接业务方需求,比如说业务方来一个需求做一个表,来个需求做一个表,那你的数据你的表就会越来越多越来越多。这跟是数仓的这种兼容和扩展影响不是很大吗?你这个是怎么考虑的?- 数据倾斜问题## 八股- 数仓建模的一般流程你知道吗?- 刚才提到你说总线矩阵,那总线矩阵的就是说横坐横轴跟纵轴都是什么?- ODS、DWD、DWS它的定位- ODS里面已经有了这个数据,为什么不直接从ODS里面去取还要再新建一个DWD呢?- Spark里面就是说它的一个优化的方法,你这边都用过哪些?- 小表join大表的话,是小表在前还是大表在前?- MR中MapTask个数和ReduceTask个数由什么决定?- Row number和rank的区别- avg函数他在算这种平均值的时候会忽略null吗?  - **`AVG` 函数的分母是有效数值的数量**## 手撕- SQL:学生成绩平均值问题和>60的问题,很简单- SQL:直播间同一天同一个小时内最大在线人数
MinJerous:有同学已经接了offer,不需要后续推进了。或者没hc了,还有就是很少,需要排序进三面(ld)
查看20道真题和解析
点赞 评论 收藏
分享
04-02 11:15
武汉大学 后端
分享面经,积攒好运🙏一面见之前的帖子3.10二面(过)自我介绍你们实验室做什么项目?你这个用布隆过滤器替代分布式锁访问数据库提升QPS的,介绍一下Redisson的底层是什么样的?你这个短链接是怎么生成的?有没有了解过别的生成算法开放题:我现在要提升你这个系统的QPS,你怎么从0开始设计?你说加机器,那你数据库支持水平拆分吗介绍一下这个ShardingSphere的原理?你有没有了解过逻辑sql怎么转真实sql的?ShardingSphere支持自动迁移数据吗?如果我使用了order by,那ShardingSphere会这么处理?查32个表吗?讲一下你认为的项目亮点你说一下这个读写锁的应用场景,我感觉不需要啊?Redisson这个读写锁是什么原理你知道吗?如果我发一个消息到MQ,十分钟后才被消费,怎么办?期间分组被改了怎么办?你这个RPC介绍一下你介绍一下这个自定义协议,为啥要自定义协议?头部有哪些字段?你用的什么网络框架?你知道netty是哪种网络模型吗?阻塞/非阻塞?同步/异步?Socket用过吗?说一下系统调用是什么?MySQL索引为啥用b+树?redis单线程,为什么还这么快?大模型用过吗?除了工作部分,还用大模型做些什么?手撕:布隆过滤器3.13三面(挂)自我介绍你的项目的技术难点在哪里?你数据表是怎么设计的?表里的索引怎么设计的?缓存空间有多大(?)你怎么统计用户的访问数据?用消息队列?消息队列会阻塞吗?就是满了怎么办?(?)短时间内大量请求打满消息队列怎么办?(答了扩容+加消费者)如果是集群,负载均衡你会怎么设计?讲一下一致性哈希讲一下你这个重试策略数据库热点问题你怎么解决?慢sql问题你怎么解决?你分析过慢sql吗?explain?我设计的系统如果想接入微信扫码登陆,你会怎么做?了解过微信支付宝的授权登录协议没有?手撕:sql:抖音活跃用户分析(完全没准备sql,写的一坨)手撕:128. 最长连续序列
点赞 评论 收藏
分享
评论
12
90
分享

创作者周榜

更多
牛客网
牛客企业服务