5月23日,25届春招,字节后端开发二面

全程1h,整体感觉字节二面还是比较全面的

1、自我介绍

2、没想到这个面试官对我的那篇sci深度学习的论文特别感兴趣,我就共享屏幕开始讲我的论文,从背景+基座选型+数据集制作+模型调参+网络结构的创新化+指标,transformer如何加的各种讲了一遍,面试官能看出来是个行家,提了很多问题,我就一一解答,这个也是我的毕设所以很熟悉,聊了二十分钟的论文,最后面试官评价说这个挺有意思的。

3、拷打项目(点评)

3.1 feed流是如何做的,答:(提前了解到字节喜欢深挖,所以这里故意说了个有漏洞的方案)推模式,问:这个方案有没有缺陷,答:有的,比如一个博主有上亿个粉丝,那么一次写到发件箱很浪费时间,影响性能,问:如何优化,答:推拉模式,对活跃度高的粉丝推模式,这样做的优点是降低活跃粉丝的响应时间,但是也会有很多僵尸粉或者不活跃的粉丝,那么这时候采用拉模式,只写一份,节省内存。问:feed流采用推模式需要注意什么,答:有可能会出现分页失效,用时间戳作为分页的依据。

3.2 为什么用redis的set结构做点赞?答:(还是之前的套路,先说一个有缺陷的方案)首先,从敏捷开发的角度以及新产品流量较少的角度分析,此时可以直接用mysql,在流量很少的时候,打断问:这样如果流量打起来mysql不会受不了么,(落入陷阱),答:所以这时候考虑到这个因素需要用redis来缓解mysql的压力,于是用set存储(其实说到这还是没解释为什么用set,但是体现了一种思考的过程,而不是说上来就用redis,不了解为什么),因为set底层是哈希,查询效率很高,同时保证唯一性,问:有没有什么优化的方法,答:点赞量很大,此时只用一个set结构存储,会出现大key的问题,所以需要进行分片,前缀+场景+分片位作为名字,存userId,问:有没有更加节省空间的方式,答:看业务的具体需求,如果只是显示每个点评有多少赞,那么就维护一个计数器就可以了,保存每个点评有多少赞;如果还需要判断是否已经点赞过,那么就在redis中维护一个是否点赞的标记即可,同时点评在mysql中也维护一个isLike的标记位。问:数据库在存这些数据有没有什么更规则的方式存储,瞎答:可以维护表,记录每个用户点赞了什么内容,面试官点头,其实我并没有理解面试啥意思,就是单纯觉得就剩这个角度没说了,就随便说了说,所以敢说很关键,别尬住。问:那如果允许一定程度的误判率,如何迅速判断用户有无点赞过,答:这里根据他说的这个条件,神经反射出来了布隆多滤器,他说对,接着问布隆过滤器的原理,答:哈希加位图,问:如何降低误判率,答:优化哈希算法,提高算法的数量,增加数组长度。

3.3 linux中,假设输入指令ls,linux底层发生了什么,答:我先跟面试官说了我不太明白,然后说我试着猜一下,指令解析+ls后面会有路径参数之类的,加载Path环境变量(根据当时配java环境变量类比的,好像还蒙对了)+ 鉴权 + 获取内容,问:抛开ls这个命令,你觉得linux是如何判断一个文件的权限信息的,你自己试着聊一下,瞎答:当时就瞎说吧,是不是有类似的存储结构去存每个文件的r、w啥的,再执行命令前查询一次

3.4 如果mysql可能只能满足100qps,如何实现,答:从Sentinel限流熔断降级,RRateLimiter限流,鉴权黑白名单聊的,然后聊了监控预警系统,问:如果没有Sentinel等限流组件,让你自己实现如何实现,答:当时想的是用zset去实现,scores存时间戳,给定一定数量的token和100qps挂钩,每个请求获取token都会记录在zset中,当token为0时,此时再来请求,(假设限定每t秒n个请求)需要用当前时间戳-t秒作为结果然后查询zset,所有小于这个结果的从zset中删除,token恢复这么多,如果没有可以恢复的那么就降级(这里也不是我临场想的,就是把RRateLimiter原理说了一下,面试官果然没发现异样),问:并发安全性如何保证,答:把这些逻辑变成lua脚本外加redis的单线程的特点,保证并发安全性。

3.5 CPU飙升问题如何解决?答:我当时也没急着回答,说了自己确实没有啥线上调优的经验,没有上线过产品,只能通过看一些博客啥的纸上谈兵一下,(诚实一下,降低面试官的预期,也体现了自己平时钻研一些线上问题),通过top指令进行定位,发现对应的哪些进程cpu飙升,然后就top -Hp查看对应进程下哪些线程CPU占据两较高,这里我看b站有这个视频,说用什么gdb调试之类的,我也巴拉巴拉说了半天,结果面试官说这个是C++的调试工具,(尴尬,后来我就又扯了其他的),答:比如用第三方工具阿尔萨斯啥的,各种扯,dump啥的(也不知道对不对,就把jvm调优全扯了一遍),面试官说:没关系,后续真正工作了这个不难掌握。

3.6 输入www.douyin.com在地址栏点击回车,发生了什么,答:dns+tcp+http请求响应+渲染

3.7 http报文有了解么?答:请求报文,响应报文,请求行+请求头+空白行+请求体,状态行+响应头+空白行+响应体

3.8 手撕算法3道:

第一道,一个sql题,有并发安全,用乐观锁就解决了,让写的伪代码;问:慢sql问题,答:吟唱八股,问:如何优化慢sql,答:监控慢sql日志+sql调优,吟唱八股(什么explain关键字,建索引、尽量减少索引失效符合最左前缀法则、什么深分页问题、减少回表、子查询啥的就一顿扯)

第二道,一维数组旋转(雪花)的题,判断两个数组是否相同,即判断给定的一维数组能否通过旋转变为另一个一维数组,同时如果镜像也能得到也要返回true。ac了以后深挖,问:如果现在有海量的这样的数组在一个数据结构里保存,给定一个如何判断这个给定的数组是否在这个结构里,答:Hash运算,计算哈希值去判断。

第三道,与或非括号运算题,用栈加递归(消化括号)做的,这道题出的原因是前面写的太快了,没凑够一个小时,就又出了一道,所以友友们尽量学会消耗时间,他们很多都是有规定的要够一个小时,尽量别给自己添加不稳定的因素。

4、反问

#春招#
全部评论
mark学习
点赞 回复 分享
发布于 今天 15:02 湖北

相关推荐

05-22 19:46
已编辑
清华大学 算法工程师
看到京东TGT的话题,想到五一节前在学校参加了一次京东组织的技术沙龙,那次活动就预告过京东会启动一个头部技术人才项目,现在终于官宣了哈哈哈。当时我的感受是整场活动技术浓度超标,更惊喜的是,在现场看到了京东零售供应链算法团队的大佬戚永志老师、还有之前通过京东DMT入职的清华学长,这场沙龙里给我更感动的点是,同学的提问都被详细回答了,真的收获远超预期。说到戚老师,我印象中他带领的团队获得了“INFORMS 奖” ,当时听到他分享的案例挺深刻的,也展示重大课题落地成果,只能说大佬就是大佬,自由交流的时候也有幸和戚老师聊了一会儿,老师真的是没有什么架子,非常开放坦诚地和我们聊了很多技术问题和行业的思考,还是挺大开眼界的。另外一位比较有亲切感的是清华学长高博士,他是从京东DMT项目入职的管培生(貌似TGT的前身就是DMT项目?),他谈到初入职场时参与的人工智能仓储项目,以及如何从底层算法优化一步步推动业务场景落地时,我也看到了一条清晰的技术人才成长路径。更让我触动的是他提到的DMT项目这个兼顾学术深度与产业实践的培养体系,让我意识到京东对技术人才的长线投资诚意,对今年的京东TGT项目更期待了。其实在参加沙龙时,我也留意到大佬们多次隐晦提及一个即将官宣的技术项目,直到5月初京东正式发布TGT,我才突然意识到原来那场沙龙里的卖关子,算不算是京东对技术人发起的提前邀请呢?这场分享讲真的,我感受到京东在供应链技术领域的 “国家队” 实力了。这次活动分享的很多课题我觉得挺新的,角度也比较不一样,对京东的了解也加深了挺多,会后我还搜了一下京东居然已经71w员工了,我觉得京东确实是从企业角度关心了广大劳动者,敬佩!哦对,现场还能抽PS5,也有小茶歇和人手一份的京东小狗伴手礼,也算是很有诚意了吧,虽然大奖上本中奖绝缘体基本上没指望过。后面还有好几场,包括北大、南大、哈工大这些,好像还有国外场次,如果是和我一样在观望TGT项目的,真的很建议大家去听听看,和大佬或者项目HR聊聊,还是能对TGT有更深度的了解吧(而且万一抽走PS5呢)。
没事儿早点睡a:居然刷到清华✌️
京东公司氛围 259人发布 投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务