字节后端二面,难到哭
有同学跟我说字节的二面把他快打哭了,我看了下基本是短链这个项目的扩展。所以,不要说某某项目烂大街了,除非你在核心业务组做了很多核心的特性,否则在面试官眼里的项目都是烂大街!校招关键考察的是你对于自己的项目能否自圆其说(这个最基本的点,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项目核心面试亮点的总结和面试话术逐字稿,欢迎大家订阅。
1. 星球上的项目主要讲了12306的基本问题, 比如车票搜索、下订单、三方支付的对接、分库分表、缓存一致性等;但比如写扩散问题、最短换乘问题、候补购票实现方案、如何筛选相邻座位算法优化、灰产问题、12306的真实架构分析等等是没有涉及到的。
2.原有星球或者慕课项目可能讲了项目如何实现的技术方案,但整体比较繁琐。我本身在做面试官,面试官要的是
你按照“业务场景 -> 面临问题 -> 解决方案 -> 权衡思考 -> 潜在优化”的结构来阐述,但很多同学的总结和理解能力有限,很多时候表达的含糊不清或者理解错误,而这份面试话术将这些方案进行再消化,直击面试要点,通俗易懂的给面试官讲述出来,理解后,背就完事了,准确又快速!