字节跳动 后端开发 一面面经

概述:字节约面和面试的效率都挺高的,一面面试官很年轻,手撕不是leetcode的,花了点时间,然后主要问八股和项目,大概80分钟

面试过程:

1、自我介绍

2、手撕,第一道没想清楚,做的第二道

  • 鱼缸的最大高度,给定雨水数量,和鱼缸内各列的石头数目,求能使鱼缸被雨水填满的最大高度
  • 想到了二分,但是没想清楚,一直想用接雨水
  • 面完后想了下,假设没有石头时的鱼缸最大高度h,最终的H肯定在(h+所有列的最小石头数,h+所有列的最大石头数)之间,然后二分查找最优值,每次确定H后可以直接算出需要的水的数量(接雨水完全复杂了)
  • 给定一颗树,选2个节点,分别下落到叶子节点,最终结果有多少种可能
  • 叶子节点值为1,非叶子节点值为子节点值之和,BFS分层,从底层往上层计算值,2节点值相乘就是结果

3、HTTPS握手过程

4、会话秘钥生成用的什么算法,具体原理是什么

5、MySQL在磁盘上是怎么存储的

6、讲一下B+树也就是索引的实现

7、通过索引就能直接找到记录吗

8、数据页是怎么查找到记录的

9、索引的分类

10、前缀索引算一种分类吗,与普通索引的区别

11、前缀索引的索引页上记录的是前n个字符还是整个字符串

12、讲一下自己做的项目

13、epoll是怎么实现的

14、epoll如何处理发生事件的fd

15、epoll与poll的区别

16、为什么poll不能只返回发生事件的fd,了解poll底层怎么实现的吗

  • poll是指定fd关注的事件,然后拷贝到内核中检测对应事件是否发生,发生了即可以返回所有fd,没有在内核中维护一个记录已发生事件的结构表,而是全部拷贝回用户态,兼容性更好
  • 从api上看,poll给定的fds数组包含所有需要检查的数组,epoll的fds都存在内核中,epoll_wait传入events来保存发生的事件

17、项目中线程是怎么工作的

18、为什么考虑使用协程作为任务

19、协程怎么实现的

20、ucontext是什么

21、项目中怎么用到epoll的

22、没有进入协程任务队列的协程存放在哪里

23、如果有个协程运行时间过长,协程任务队列中的协程会不会延时,怎么处理?

24、反问

#字节求职进展汇总##牛客创作赏金赛##软件开发笔面经#
全部评论
鱼缸的最大高度感觉有点像leetcode11的变体,用滑动窗口?
点赞 回复 分享
发布于 2024-11-29 22:51 江苏
广州的业务中台?
点赞 回复 分享
发布于 2024-11-01 13:00 陕西
bro什么学历
点赞 回复 分享
发布于 2024-11-01 08:50 上海

相关推荐

不愿透露姓名的神秘牛友
05-20 16:14
已编辑
不止遇到一次了,什么都不会,让提合并请求,问什么是合并请求。让gitlab.页面把测试截图附上,不知道截图要放在哪,那么大的编辑看不到吗让配开发机,问ip是什么东西……这都咋进来的啊,我们(我2023年毕业)那会儿没AI的时候面试都是直接linux,docker,k8s,git,结构与算法,计网。怎么才过去2年,实习生跟傻子一样,有些问题问的我难受,不会git commit,不会git pull,不会切换分支,直接要覆盖master....————而且态度非常敷衍,3天前给开个仓库权限,连本地都没有拉下来。让写一个小文档,都是说一句,写一句,说把目录加上,挺嗤之以鼻,最后还是把目录加上了😂😂任何文档和注释都是方便后来人的,现在的人真的很自负啊,打开github看看任何一个开源项目的文档和注释,都写的很详细。难道现在的同学在校期间不经常拉开源项目看源码学习吗? 哪怕是一个swap函数,开源项目里都经常注释:1 3 5 7 9 2 4 6 8 10^           ^l              rswap:{功能描述}{使用样例}————给我气笑了,没次问我有什么任务的时候,我都是说,优先你学校导师的项目,然后再做公司需求。然后给了两个需求,一个月内搞定就行,既然是agent开发,1. 部署需要维护项目的开发环境2.阅读opencode/openclaude代码(我个人感觉龙虾的源码agent部分很常规,就一个channel+agent,还不如看claude泄露的代码和opencode)然后任务1搞了几周说因为环境问题,他申请到的远程开发机是linux,装的python2,项目是py3的,所以没搭建,我说你不行就用conda或docker把环境屏蔽了呢,没搭理我。任务2:看了很长时间代码,给我回了一句,opencode和openclaude是用go写的……我说你打开github看右下角那的语言是ts还是go…… 结果满脸懵的说ts是什么……我让看agent loop,哪怕全局搜索一下while(true),跳过去从头看到尾就大致清楚了,压根没看。————嘻嘻,我已经开始做社招简历了。
redf1sh:默认会git结果发现真不会,这种一看就是没做过项目的,真做过项目的至少会提交
点赞 评论 收藏
分享
上周组里招人,我面了六个候选人,回来跟同事吃饭的时候聊起一个让我挺感慨的现象。前三个候选人,算法题写得都不错。第一道二分查找,五分钟之内给出解法,边界条件也处理得干净。第二道动态规划,状态转移方程写对了,空间复杂度也优化了一版。我翻他们的简历,力扣刷题量都在300以上。后三个呢,就有点参差不齐了。有的边界条件没处理好,有的直接说这道题没刷过能不能换个思路讲讲。其中有一个女生,我印象特别深——她拿到题之后没有马上写,而是先问我:“面试官,我能先跟你确认一下我对题目的理解吗?”然后她把自己的思路讲了一遍,虽然最后代码写得不是最优解,但整个沟通过程非常顺畅。这个女生的代码不是最优的,但当我问她“如果这里是线上环境,你会怎么设计’的时候,她给我讲了一套完整的方案——异常怎么处理、日志怎么打、怎么平滑发布。她对这是之前在实习的时候踩过的坑。”我在想LeetCode到底在筛选什么?我自己的经历可能有点代表性。我当年校招的时候,也是刷了三百多道题才敢去面试。那时候大家都刷,你不刷就过不了笔试关。后来工作了,前三年基本没再打开过力扣。真正干活的时候,没人让你写反转链表,也没人让你手撕红黑树。更多的是:这个接口为什么慢了、那个服务为什么OOM了、线上数据对不上了得排查一下。所以后来我当面试官,慢慢调整了自己的评判标准。算法题我还会出,但目的变了。我出算法题,不是想看你能不能背出最优解。而是想看你拿到一个陌生问题的时候,是怎么思考的。你会先理清题意吗?你会主动问边界条件吗?你想不出来的时候会怎么办?你写出来的代码,变量命名乱不乱、结构清不清楚?这些才是工作中真正用得到的能力。LeetCode是一个工具,不是目的。它帮你熟悉数据结构和常见算法思路,这没问题。但如果你刷了三百道题,却说不清楚自己的项目解决了什么问题、遇到了什么困难、你是怎么解决的,那这三百道题可能真的白刷了。所以还要不要刷LeetCode?要刷,但别只刷题。刷题的时候,多问自己几个为什么:为什么用这个数据结构?为什么这个解法比那个好?如果换个条件,解法还成立吗?把刷题当成锻炼思维的方式,而不是背答案的任务。毕竟面试官想看到的,从来不是一台背题机器,而是一个能解决问题的人。
牛客51274894...:意思是光刷力扣还不够卷
AI时代还有必要刷lee...
点赞 评论 收藏
分享
评论
4
27
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务