字节后端二面,难到哭

有同学跟我说字节的二面把他快打哭了,我看了下基本是短链这个项目的扩展。所以,不要说某某项目烂大街了,除非你在核心业务组做了很多核心的特性,否则在面试官眼里的项目都是烂大街!校招关键考察的是你对于自己的项目能否自圆其说(这个最基本的点,80%的同学都做不到,就不要抱怨环境了)

1.自我介绍

2.我们先不聊项目了哈,我们聊一个系统设计类的问题,放松一下(无语)

3.有没有了解过短链系统,说一下你的理解

4. 好,那现在你来设计一个短链系统,你怎么来设计

5.你刚刚说就两个功能:一个是长链转短链,一个是短链还原长链并跳转非常好,那你可以拆一下模块都有哪些

6.打断一下,你刚提到短链生成那短码生成这块能不能再往里拆一拆

7.你刚提了哈希那你这个哈希冲突你准备怎么解决

8.短链支持自定义码吗?如果支持怎么处理冲突?自定义短码如果重复了怎么办

9.这个系统要支持用户设置有效期吗你打算怎么处理这个字段

10如果有人恶意生成链接怎么办

11你说到风控,我这里刚想刚好跟你深入聊一下,我觉得这个还蛮有意思的,比如说你在长链转短链里面已经有风控了,那你短链转长链需要风控吗?因为你的数据库里的东西都是安全的,你需要风控么还是说不需要,为什么

12.你刚说加黑名单那这个风控是在生成短链的时候做,还是跳转的时候也要做

12.短码和长链映射关系存到数据库有什么要注意的点或者是你那个表怎么设计

13这边数据库写入时候要注意什么

14数据存储当量大了以后怎么操作呢?就比如说量特别大,你一张表存完然后呢

15. 那你会怎么做分库分表?按什么规则分?用哈希?那hash怎么做落库映射

15你怎么判断这个链接是过期链接你的状态字段怎么用

16.如果我之前封禁了一个恶意链接,有个新用户又拿这个原始长链想同的长链进来要来生成短链了,你是怎么处理的

17黑名单这块怎么做拦什么、存哪里怎么查

18.我继续深再深问一下,你刚才说到用redis来做这个黑名单管理,为什么,为什么不用数据库还是说用了,还有你的redis的key和value怎么设计用什么结构

19那你觉得你可以到多少,你觉得这个系统是ok的,因为你每次都要查这个东西,你要查三,四次是吧整体你觉得这个数据量或者整个RT大概会在多少你这个系统是能搞得定的

20.无论你这个Redis set里有1万10万甚至100万条,查一次都是毫秒以内,你确定么,你了解Redis set底层么?是这样做的

21.那有实测过么比如它在普通网络、单机 Redis大概是怎么样的

22.那我如果再大怎么办比如总量不止10几万

23.手撕:员工公平抽奖:工行有30万个员工,其工卡号码分别是1~30万,在接下来的某天他们将举行年会,需要抽出10万个员工发奖品。我们有一个随机数生成函数rand()能够生成0~65535的整数,请写一个公平的抽奖程序,输出这10万个员工的工卡号码

24.如果总共30万员工,抽9999个员工呢

我写了一份关于12306项目核心面试亮点的总结和面试话术逐字稿,欢迎大家订阅。

12306项目核心亮点及面试话术逐字稿

1. 星球上的项目主要讲了12306的基本问题, 比如车票搜索、下订单、三方支付的对接、分库分表、缓存一致性等;但比如写扩散问题、最短换乘问题、候补购票实现方案、如何筛选相邻座位算法优化、灰产问题、12306的真实架构分析等等是没有涉及到的。

2.原有星球或者慕课项目可能讲了项目如何实现的技术方案,但整体比较繁琐。我本身在做面试官,面试官要的是

你按照“业务场景 -> 面临问题 -> 解决方案 -> 权衡思考 -> 潜在优化”的结构来阐述,但很多同学的总结和理解能力有限,很多时候表达的含糊不清或者理解错误,而这份面试话术将这些方案进行再消化,直击面试要点,通俗易懂的给面试官讲述出来,理解后,背就完事了,准确又快速!

#面试##后端##秋招##字节##面经#
全部评论

相关推荐

10-13 11:03
门头沟学院 Java
一面: 1. 做个简单的自我介绍。2. 详细介绍一下实习中你觉得做得比较好的一个项目,包括整体的业务背景、整体的系统设计以及你在里面做了哪些事。3. 这里提到的事务,比如简单的DB和缓存场景,用事务来做其实也有问题吧?比如先写数据库,假设超时然后事务回滚了,但缓存数据还在,超时事务回滚了也没办法很好地保证这种强一致性,对吗?4. 你提到的写完数据库后删除缓存,在这种场景下还会有什么问题吗?比如极限情况下的更新和查询冲突。5. 针对这个项目,你们平时是怎么排查处理消息队列(卡夫卡)的消息堆积问题的?6. HashMap中解决哈希冲突的链表和红黑树,它们本质的区别在哪儿?为什么要把链表转为红黑树呢?为什么要选择红黑树呢?logN的搜索效率的数据结构不只有红黑树,为什么选择红黑树呢?7. HashMap是线程不安全的,ConcurrentHashMap是如何保证线程安全的?用到了CAS和加锁的话,是怎么样的过程,为什么要那么做呢?8. Redis里面的sds相比于C的字符串有哪些区别?有扩容操作那么还会有缩容操作吗?9. Redis为什么单线程快?怎么处理多个服务?什么是IO多路复用?内部是怎么实现的?10. 实际场景中,怎么用Java实现主线程等待所有子线程处理完后,再汇总结果继续执行的场景?11. 给一个场景,如果是下完订单后半小时内没有付款就取消订单,那么用什么做法来做?12. 手撕中等二面:1. 问实习2. MySQL中索引是怎么实现的?(比如你说的主键索引底层实现)3. 假设单独对A列建了一个二级索引,现在有两个查询语句,哪一句的执行效率比较高?(语句1:select A,B from xx where A=1;语句2:select A from xx where A=1, 对A建立了索引)4. 用数据库进行写操作时,会给数据库加事务,发生错误时事务回滚是怎么做到的呢?5. 你刚才说数据库里有三个重要的log,除了跟回滚相关的log,另外两个是什么呀?6. Redo log是存在什么场景呢?7. 现在有一个场景,抖音个人主页会展示用户发的视频列表,要求列表按视频被点赞数量倒序排列(点赞最多的排在第一个),且抖音用户量大、页面访问量高。如果让你设计这个个人主页,从表结构(以MySQL为例)角度会怎么设计?8. 视频表中会存储视频被点赞的数量,而你之前提到用Redis有序集合缓存用户视频列表并按点赞数排序,这两个数据源(MySQL和Redis)之间是怎么进行更新,以保证数据一致性的呢?9. 你判断抖音个人主页的点赞数量场景,是否可以容忍数据有延迟?10. 如果一个用户发了很多很多视频,按用户维度将所有视频放到Redis有序集合中会导致key过大,每次展示时阻塞时间久,有什么思路解决这个问题吗?11. 手撕中等三面:1、基本都在问项目,而且面试体验很差2、两个各含 50 亿个 URL 的文件(每条URL64个字节),内存仅 4GB,找出共同 URL3、手撕中等秒挂
点赞 评论 收藏
分享
10-13 16:58
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

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