字节后端开发面经一面

去年的存货
面试公司:字节【基架部门】
面试岗位:后端开发
面试问题:
1.实习项目
2.有哪些方案可以避免流量高峰造成的问题
- 消息队列削峰填谷
- 缓存预热
- 负载均衡,分散请求
- 限流和降级
3.了解常用的限流或者降级的算法嘛?描述一下原理?
固定窗口计数器:按照时间段划分窗口,有一次请求就+1,最为简单的算法,但是限流不够平滑且无法应对突然激增的流量。滑动窗口计数器:通过将窗口再细分,并且按照时间“滑动”来解决突破限制的问题,但是时间区间的精度越高,算法所需的空间容量就越大。漏桶:请求类似水滴,先放到桶里,服务的提供方则按照固定的速率从桶里面取出请求并执行。缺陷也很明显,当短时间内有大量的突发请求时,即便此时服务器没有任何负载,每个请求也都得在队列中等待一段时间才能被响应。令牌桶:往桶里面发放令牌,每个请求过来之后拿走一个令牌,然后只处理有令牌的请求。令牌桶满了则多余的令牌会直接丢弃。令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求,因此是目前使用较为广泛的一种限流算法。
4.滑动窗口相对固定窗口算法解决了什么问题
相比于固定窗口算法,滑动窗口计数器算法可以应对突然激增的流量。
5.【手撕】字符串的z型变换
6.操作系统,进程和线程的区别
进程是操作系统资源分配的基本单位,线程是cpu调度的基本单位。进程是一个程序的动态运行实例,而线程是进程当中的一条执行流程。进程包含多个线程,线程从属于一个进程;各进程间相互独立,但线程不一定,同一个进程的多个线程可能相互影响。进程切换的开销显著高于线程切换。
7.threadlocal的原理
就是线程本地变量,如果创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了线程安全问题。ThreadLocal的底层数据建构就是ThreadLocalMap,它的key就是ThreadLocal的引用,值就是Object对象。
8.用户的请求进来,用户的信息怎样在一个请求内传递?
在web应用程序中,ThreadLocal可以用来存储当前请求的上下文信息,使得不同请求之间相互独立
9.epoll?
当调用epoll_create方法时,Linux内核会创建一个eventpoll结构体,用于存放通过epoll_ctl方法向epoll对象中添加进来的事件。这些事件都会挂载在红黑树中,如此,重复添加的事件就可以通过红黑树而高效的识别出来。而所有添加到epoll中的事件都会与设备(网卡)驱动程序建立回调关系,也就是说,当相应的事件发生时会调用这个回调方法,它会将发生的事件添加到rdlist双链表中。当调用epoll_wait检查是否有事件发生时,只需要检查eventpoll对象中的rdlist双链表中是否有epitem元素即可。如果rdlist不为空,则把发生的事件复制到用户态,同时将事件数量返回给用户。
10.项目的代码结构是怎样的
微服务架构,ddd
11.流量是rpc进来还是http进来
12.介绍一下rpc和http在使用场景上的区别
rpc通常使用在分布式系统、跨语言调用、高性能服务中。http通常使用在网页浏览、RESTful API、文件下载等
13.用rpc代替http会有什么问题???
14.http底层连接可以基于连接池嘛
15.了解golang嘛?了解golang的协程吗
16.描述一下动态规划的核心思想?什么样的问题可以用它去解决?
17.排序算法有哪些?挑选排序算法的时候要考量哪些?
考量:时间复杂度、空间复杂度、稳定性、实现难度、数据规模和特性
18.快排是稳定排序的算法嘛?哪些算法是稳定排序的?
不是。稳定排序的算法:冒泡排序、插入排序和归并排序
19.红黑树相对于普通的树有哪些特征?通常用来解决什么问题?
20.mysql的事务隔离级别?
21.读已提交和可重复读的底层区别?
22.mysql有哪些日志?
23.了解redolog吗?
24.redolog的刷盘机制是怎样的?
25.kafka和rocketmq在业务中使用场景上有什么区别?
26.git中版本管理的模型是什么?
Git 中的版本管理模型是围绕快照(snapshot)的概念构建的。每次提交(commit)都会记录一个当前所有文件的快照。快照包含了当时整个目录树的状态,包括文件内容和目录结构。
27.git的常见操作
28.git merge和rebase的区别
`git merge` 合并后的历史记录保留了所有分支的历史,呈现出分叉后再合并的结构。
`git rebase` 会将当前分支的提交按顺序应用到另一个分支的顶端,这相当于在另一个分支的基础上重新应用当前分支的更改。
29.反问
#软件开发笔面经##字节跳动#
全部评论
接好运
点赞 回复 分享
发布于 02-27 14:50 浙江
mark
点赞 回复 分享
发布于 02-24 11:35 美国
太强了
点赞 回复 分享
发布于 02-24 10:03 北京
这是校招还是实习啊,感觉强度好大
点赞 回复 分享
发布于 02-23 20:53 陕西
限流和降级问了这么多,是因为简历里面有相关的项目吗?
点赞 回复 分享
发布于 02-23 18:50 广东

相关推荐

昨天 10:02
已编辑
门头沟学院 C++
05-12 这一周的面试。字节暑期实习一面 C++ 后端,1 小时 40 分钟。有两三个聊天风格的问题。手撕代码做得一般。发面经攒人品 自我介绍面试官问 CTF 比赛是什么,我介绍比赛内容,说了一个 CTF 签到题。实验室研究方向项目和八股(40 分钟多)项目是一个重写 muduo 库,一个功能不多的 web server。面试官没有问 web server。我想写个协程库了。在做聊天项目,没做完。1. 介绍 muduo 网络库2. 为什么要有 muduo 库?它有什么价值?进一步引导,线上为什么要用 muduo 库,为什么不用其它方式,比如多线程?   (答完这里我掉线一次)3. 对 epoll 原理的理解4. epoll 相关的内核数据结构5. linux 上的进程,线程,协程(答了 linux 的 task_struct 记录一个进程的信息,线程也是一个 task struct,它们共享内存地址空间,等等)6. 操作系统调度的最小单位是什么?7. 一个进程的地址空间是怎么样的?8. 一个进程是怎么跑起来的?比如,在终端输入 top 命令,发生了什么?9. fork 系统调用有几个返回值?追问父进程中 fork 的返回值10. 一个进程把内存用光了会发生什么事?11. 你在 linux 上用什么软件?怎么使用,用到什么功能?追问 qemu 怎么拉起一个虚拟机。问,是自己折腾的吗?    - docker 的原理?追问,只用 namespace 就可以了吗?    - 为什么用 podman12. 在浏览器中输入一个网址,到网页展示出来,这个过程发生了什么?13. dns 查询过程14. 网络包到网卡之后,是怎么到用户进程的?15. 进程阻塞在 read 系统调用,有数据时怎么唤醒?你有看过代码吗?写代码题(40 分钟)在飞书里面的编辑器,像是一个 vscode,有代码自动补全。- 代码一:求有 n 个字母的集合的所有子集。比如,{a, b, c} 的所有子集有 8 个。(讲思路,实现代码,10 分钟多)- 代码二:三数之和(25 分钟多,一开始不记得双指针的解法,只好自己拿一个 map,一个 set,来保证唯一性。写完讲思路,问有没有其它方法,把双指针方法凑出来了)反问部门工作内容有几轮面试部门技术栈面试官问是第几次面试,有其它 offer 吗,能实习几个月#面试问题记录##字节一面##牛客AI配图神器#
查看18道真题和解析 面试问题记录
点赞 评论 收藏
分享
05-16 15:26
广州大学 Java
一面(过)自我介绍(1)能说⼀下HashMap的数据结构吗?(2)你对红⿊树了解多少?为什么不⽤⼆叉树/平衡树呢?(3)synchronized⽤过吗?怎么使⽤?(4)说说synchronized和ReentrantLock的区别?(5)垃圾收集算法了解吗?(6)什么是虚拟内存?没答好(7)从浏览器地址栏输⼊ url 到显⽰主页的过程?(8)说说 HTTP 与 HTTPS 有哪些区别?(9)HTTPS的详细流程(10)对https抓包,怎么做,猜测一下(11)客户端怎么去校验证书的合法性?(12)说说 Session 和 Cookie 有什么联系和区别?(13)链表: 1-53-3-43-5-28-7 排序二面(挂)自我介绍(1)==和 equals 的区别(2)hashCode 与 equals?(3)能说⼀下HashMap的数据结构吗?(4)HashMap的哈希/扰动函数是怎么设计的?(5)说说什么是进程和线程?(6)进程间有哪些通信⽅式?(7)说说synchronized和ReentrantLock的区别?(8)线程死锁了解吗?该如何避免?(9)索引(10)什么是虚拟内存?(11)说说 HTTP 与 HTTPS 有哪些区别?(14)HTTPS的详细流程(12)客户端怎么去校验证书的合法性?(13)链表 每个节点向后移动k且最后一个节点移到第一个,好奇怪,没给用例,脑子抽了忘记问清楚,不然 一起移动的话#牛客AI配图神器#可能是快慢指针就可以做到。(14)写个冒泡排序问我优化,第二重循环用二分
查看23道真题和解析
点赞 评论 收藏
分享
评论
18
139
分享

创作者周榜

更多
牛客网
牛客企业服务