字节跳动

收藏
互联网
1000-9999人
A轮
北京市
福利丰厚榜高校必争榜offer比较常胜榜HC充足榜校招高薪榜牛客指数榜

817

在招职位

6641

面试经验

31

真题试卷

查看官网
上传简历
此刻你想和大家分享什么
职位类型
全部
后端开发
前端开发
客户端开发
测试
数据
运维/技术支持
人工智能/算法
研发工程师
硬件工程师
电子/半导体
产品
运营
展开更多
最新
热门
一面:1.项目(zset使用, 并发问题)2.设计模式使用3.单例模式实现(饿汉+懒汉) 4.Redis分布式锁实现5.慢Sql优化6.SpringBoot启动流程7.对依赖注入的理解8.注入方式有哪些9.Spring三级缓存10.String, StringBuilder,StringBuffer区别11.StringBuffer为什么线程安全12.HashMap结构实现13.Hash冲突解决方法14.JVM内存结构15.四种引用(强,软,弱,虚)16.volatile关键字的作用17.栈和队列的区别口述:使用栈实现队列代码:无重复元素的最长子数组(跑用例+时间/空间复杂度)二面:1.https与http的区别及实现2.站在服务器的角度,说说Get和Post请求的区别3.对前端/客户端的理解4.Tcp三次握手和四次挥手5.如何创建一个线程6.Thread中的start和run方法有什么区别7.线程池参数8.网络请求密集型和CPU密集型场景下,线程池参数的设置9.线程池执行流程10.类加载过程11.双亲委派模型的功能及意义12.打破双亲委派模型的场景13.Spi机制14.分代垃圾回收算法实现+三色标记法+漏标/多标15.项目困难问题解决,现成方案有没有调研代码:三个线程循环打印123/带过期时间的LRU/合并两个升序链表三面:1.项目描述2.项目中的网络问题3.做过哪些项目4.为什么不把所有做过的项目都放在简历上5.简历上的项目与课设项目的区别6.项目亮点有哪些,挑选一个说说7.为什么不参加比赛而准备就业技能8.发一个http请求,经过哪些层,需要哪些协议,为什么需要这些协议9.有连接和无连接的区别10.视频会议在网络中怎么找到对应的电脑11.为什么有并发问题12.并发问题是语言层面还是操作系统层面的问题13.能够实习多久14.学习成绩怎么样15.有上过算法课吗16.如何解决从学校到企业的过渡17.如何具备能够找到一份实习的能力18.如何面对实习的压力19.为什么选择投客户端开发这个岗位20.算法题: 一个数组,每次从左边或右边取,取完后另外一端(只有一个)的数会变两倍,求能取到的最大值hr面:1.通勤问题,学校在哪2.能够实习多久,能够出勤几天3.为什么不看重学校的课4.为什么不读研5.投过哪些公司6.目前拿了哪些offer7.意向岗位业务做哪些8.为什么要投客户端开发岗9.对客户端的了解10.具体的技术栈了解吗11.Android和IOS开发的区别,更偏向哪个12.IOS开发就接受不了吗13.项目中的职责14.和队员之间的协作方式15.项目中总共有哪些分工16.为什么选择你做技术负责人17.项目参加过什么比赛18.为什么不投后端开发岗位19.如果对工作内容不感兴趣怎么办20.现在最想提升的一个能力21.抗压能力的体现22.自认为技术水平和能力怎么样23.如何去提升自己的技术能力24.实习有和家人和导师商量过吗反问:1.工作节奏2.主要业务
点赞 评论 收藏
分享
鼠鼠第一次投大厂面试,写面经攒人品:1. 个人介绍(2min)2. 挖项目(我跟后端相关的项目似乎只有抖音商城(字节跳动青训营),他一直挖我这个项目)3. 服务是怎么被发现的?(微服务)4. 假如你这个服务要更新,要更平滑,不让用户感到延迟,你会怎么做?- 维护两套环境(蓝:当前生产环境;绿:新版本环境)。- 新版本在绿环境测试通过后,切换流量到绿环境,蓝环境作为回滚备用。- 优点:零停机,用户无感知切换。5. 你输入一个url的处理过程6. 然后就开始写题了,面试官直接口述,输入一个数字,输出下一个最小的比这个数大的数字(重新排列)leetcode类似的题目是:[556. 下一个更大元素 III](******************************************************)这道题手撕还是相当紧张的,给我撕出来了7. 数据库事务是什么8. mvcc是什么,怎么实现的?9. 场景题,给你一个番茄小说的书,有十万订阅,如何快而准确的通知到所有订阅的人更新了(这里要求你去用具体的实现)我这里寄了,后面复盘的时候,应该是使用feed流,这个是用ai写的答案:- 推模式 (Fanout-On-Write/Writes):  - **操作时机:** 当关键事件(如新章节发布)发生时**立即**执行。  - **目标用户:** **核心活跃粉丝(数量相对较小)**。  - **动作:** 将事件**直接写入**这些目标粉丝的个人 **收件箱(Inbox Feed)**(一个按时间排序的数据存储)。用户访问自己的 Feed 流时,直接从这个收件箱拉取即可,延迟极低。- 拉模式 (Fanout-On-Read):  - **操作时机:** 当用户主动请求访问 Feed 流时执行。  - **目标用户:** **非核心粉丝(长尾粉丝,数量大)** 或 触发推模式的粉丝,在访问 Feed 时可能需要拉取更长时间范围内的数据。  - **动作:** 后端服务在用户请求时,**实时聚合**用户所关注对象(收藏的书籍)的 **发件箱(Outbox Feed)** 数据(包含所有发布事件),按时间排序后返回给用户。这需要访问多个发件箱(每个收藏的书一本)并聚合。- **「推拉结合」的关键:** **合理区分「核心粉丝」与「长尾粉丝」**,只对核心粉丝进行实时写入。  **关键组件与流程详解:**  1. **事件源 (Event Source):**     - **新章节发布:** 最核心的事件源。携带 `bookId`, `chapterId`, `publishTimestamp`。     - **粉丝关系变更:** 用户收藏 (`favor`) 或取消收藏 (`unfavor`) 一本书。携带 `userId`, `bookId`, `action`, `timestamp`。  2. **事件总线 (Event Bus):**     - 使用高吞吐、可靠的消息队列如 Kafka/Pulsar。接收上述事件并进行持久化,供下游消费者订阅。  后面是就是针对十万用户的进行**精准界定“核心活跃粉丝” (`HotFanCache`):**,查询优化,**高性能存储与分片:**10. 反问,问了业务是什么,技术栈是什么,然后和面试官聊的蛮开心的,面试官夸了基础好,知道稳了10min之后,hr通知2面.1面成功.
点赞 评论 收藏
分享
06-26 10:01
已编辑
门头沟学院 C++
offersarecoming2025:兄弟牛逼,c++中的佼佼者,respect向你学习,能不能请教下你面经里提到的那些os特别底层的东西应该怎么学呀
查看25道真题和解析
点赞 评论 收藏
分享
6.20一面自我介绍,项目拷打,数据倾斜的发现,以及如何做的,计算过哪些指标,场景题:计算2024-01-01至今商品的点击率,为了计算该指标,dwd层和dws层该如何构建sql题:将连续的时间展开user_id,s_date,e_date,输出user_id  date_time,求三日内留存率与三日留存率耗时40分钟6.23二面,自我介绍,项目拷打 这里感觉面试官 认为我对项目的理解不够深入,聊了一半开始做题,sql:   连续登陆领金币问题,    直播间峰值做完题又随便聊了聊,耗时40分钟6.26 加面三面,被面试官狠狠拷打,先拷打项目,先问数据倾斜,join产生数据倾斜该怎么处理,两个小表之间join,产生数据倾斜你有什么好办法,然后延展,两个大表之间join,产生数据倾斜你又有什么好办法。在问spark对比hadoop好在那里,一不小心答到了sparkAQE,在延伸小文件问题,小文件问题除了查询比较慢还有什么其他的坏处这里答道元数据过多,会引起查询慢,直接延伸目录树的存储方式,再来一个场景题 给你1t的内存存储800个g的元数据,你有什么疑问,reduceByKey、groupByKey、combineByKey等几个ByKey算子的区别,并且 combineByKey需要传入几个参数,然后spark 火焰图了解吗?count(distinct user_id) 用spark 怎么写,一道sql题,编程题看我没有刷过力扣直接没出,面试很有难度,特别多场景题,预估是挂掉了,被面试官面到一半汗都出来了,期间穿插各种spark源码相关问题,以及问我有没有看过spark源码。耗时80分钟           
查看21道真题和解析
点赞 评论 收藏
分享
金山一面:不完整,好像少了开始的十来分钟。1 类和对象的访问权限什么时候检测,也就是访问private私有成员时编译报错还是运行报错。2 那如何访问到类的私有成员:三种方法,友元,公有成员函数,指针(例如:直接用一个int指针去访问类的int成员,此时不会报错)。3 父类的private,public,protected成员在子类是否可见,能否访问?这个还和继承方式有关,组合起来九个情况。百度搜继承方式和父类访问控制属性图。4 父类成员和子类成员谁先什初始化,谁先析构。还可以研究下多个父类和一个子类,哪个父类先初始化,谁先析构,我记得和继承顺序是有关的。5 析构函数是虚函数吗?编译器会将其编译成虚函数。6 为什么析构函数是虚函数?7 指针引用区别?8 变量引用的引用和变量引用是否都会指向一个变量?9 const int*和int * const 区别10 左值引用和右值引用使用场景11 cpp选择题:忘记了12 move的原理,为什么能将左值变成右值13 malloc和new区别?14 new只返回一个对象的起始地址,delete也只传一个地址,delete怎么知道要释放多大的空间。(不是金山问的,好像是字节面试的时候问的)15 new返回值?16 为什么要有抛异常代替返回值17 cpp类型转换的操作符(static_cast……那四个)18 父类的指针和引用变成子类的指针和引用是否要调用构造函数(不用)。19 智能指针(auto_ptr,shared_ptr,unique_ptr)20 说说什么时候会发生循环引用,如何解决?21 如果vector v1里面存了unique_ptr,如何拷贝给另一个容器v222 map,hash插入删除的时间复杂度23 哈希冲突解决方法24 vector和list的迭代器失效25 进程线程区别26 线程会有自己的堆栈吗?27 算法题:找第k层节点个数:层序遍历。28 找相交链表的第一个公共节点。二面没记录😁,不过很短,貌似半小时,而且还写了算法题,估计拷打八股就十分钟tl:一面:4.22二面:4.29下午三点,测评六点发hr面:5.12直接发邮件约第二天。oc:6.18,base转武汉。录用邮件:6.21。很明显是补录的了,纯运气好,双非还是不要all in 等。
金山WPS开奖13人在聊 查看28道真题和解析
点赞 评论 收藏
分享
一面:全程50min,八股30min,算法20min1. innodb引擎的rr级别,age是普通索引,id是数据库主键,递增字段。事务A:begin;T1 select * from user where age = 20;(2个结果)T3 select * from user where age = 20;T4 update user set name = 'name1' where age = 20;T5 select *from user where age = 20;comit;事务B:T2 begin insert into user values('name2', 20); comit。请你分别告诉我T3-T5各有几个结果?2、3、32. TIME_WAIT 状态原因?ack至少丢失一次;防止建立历史连接3. 设计一个抽奖系统,每个用户可以抽 m 次,奖品个数为 n,每个用户最多只能中奖一次,大流量场景下如何设计,可以支持百万级并发抽奖?从接口、逻辑、扩展方面依次回答了。4. 算法:130. 被围绕的区域======================================================================二面:全程 40min,项目 15min,算法 20min,反问 5min1. 自我介绍2. 说下实习干了啥?大致介绍了下,然后说的实习难点3. 接口重构做了什么?说了过程,说了上线策略4. 你们后端服务大致拆分了几个服务?为什么那么拆分?5. 慢 SQL 治理的过程和原理?6. 其他记不清了7. 算法:LCR 084. 全排列 II。中间看成了全排列,5 分钟秒掉结果调试半天没有输出,经提示有重复数字。抠了半天抠出来了======================================================================三面:总共 70min,实习+项目+八股 20min,算法 50min1. 自我介绍?2. 实习工作?3. Netty 为什么快?4. 详细说下 NIO?5. 各种其他问题,记不清了6. 算法:31. 下一个排列总结:栽在三面了,唯一一次原题没写出来。当时写 hot100 就没细看,感觉这题有点难,结果唯一一次出原题我还没写出来!
查看11道真题和解析
点赞 评论 收藏
分享
06-27 07:29
已编辑
中国海洋大学 Java
一笑而过2222:4. Redis缓存更新机制 核心策略: - 过期删除:通过 expire 设置键的过期时间,到期后由后台线程(惰性删除+定期删除)处理。 - 惰性删除:客户端访问时检查是否过期,过期则删除。 - 定期删除:每隔一段时间随机检查部分键,删除过期键(通过配置 hz 控制检查频率)。 - 主动更新:应用主动调用 set / del 等命令更新缓存,常见场景: - 数据变更时(如数据库更新后),同步更新缓存。 - 缓存失效前(如提前30秒),后台线程主动刷新(“缓存预热”)。 - 淘汰策略:当内存不足时,按策略淘汰旧数据(如LRU、LFU、随机等,见第5点)。 5. Redis的LRU机制(Least Recently Used) 原理: - 近似LRU:Redis并非严格实现LRU,而是采样少量键(默认5个),淘汰其中最久未使用的键,通过 maxmemory-samples 参数调整采样数量。 - 实现方式:每个键维护 lru 字段(记录最后一次访问时间),淘汰时比较采样键的 lru 值。 - 优化策略: - Redis 4.0引入LFU(最不常用) 策略,结合访问频率和时间淘汰数据。 - 可通过 maxmemory-policy 配置淘汰策略,如 allkeys-lru (所有键中使用LRU)、 volatile-lru (仅过期键中使用LRU)。 6. Redis集群 核心架构(以Redis Cluster为例): - 分片机制: - 数据按哈希槽(Hash Slot)分布,共16384个槽,每个节点负责部分槽。 - 键通过 CRC16(key) % 16384 计算归属的槽,路由到对应节点。 - 节点角色: - 主节点(Master):负责读写操作,维护数据和槽信息。 - 从节点(Slave):复制主节点数据,主节点故障时可自动选举为新主(通过Raft协议)。 - 高可用机制: - 自动故障转移:当主节点下线,从节点通过投票成为新主,保证服务不中断。 - 数据冗余:每个主节点至少有一个从节点,避免单点故障。 - 集群通信: - 节点间通过Gossip协议交换状态信息(如节点存活、槽分配),维护集群拓扑。 - 典型部署: - 至少3个主节点(每个主带1个从),形成3主3从架构,保证容错性(最多允许1个主节点故障)。 补充:Redis集群的优缺点 - 优点: - 支持海量数据(通过分片扩展内存)。 - 高可用性(故障自动转移)。 - 读写分离(从节点可承担读请求)。 - 缺点: - 不支持多键事务(跨节点键无法原子操作)。 - 客户端需处理分片路由(或通过中间件如Codis、Twemproxy)。 - 集群扩展时需迁移数据(通过 redis-trib 工具自动迁移槽)。
点赞 评论 收藏
分享
模拟面试
真实面试体验,快速补齐短板
应聘感受
暂无应聘感受
牛客网
牛客网在线编程
牛客网题解
牛客企业服务