首页 > 百度搜索架构效率中台后端三面面经
头像
白非立
编辑于 2021-04-13 20:05
+ 关注

百度搜索架构效率中台后端三面面经

update: 3/24 下午三点收到约四面的电话了,没想到能过三面555

分割线--------------------------------------------------------------------------------------------------------------

一面二面没啥难度,之前面完忘了记面经了。

简历是在boss上投的,上周约的今天三面,当时面试官就说提前准备好zoom。(听到用zoom不用如流就感觉有点奇怪

面试一开始,一看面试官就感觉级别应该挺高的...也没让自我介绍,直接问能不能共享屏幕,共享后直接说先做一下题吧。

第一题就是翻转链表;第二题就是字符串的全排列,这里有段代码逻辑有点冗余,写完面试官说你这里逻辑有点重复了,改一下;第三题是数组中的逆序对,写完归并排序的基本结构后逆序对计数那里有点bug,面试官指出后改了。

然后面试官说聊一下其他的吧。本以为是要聊项目或者问基础知识的,没想到直接说如果让你设计一个推荐系统你会怎么设计?比如百度app在用户登录时会有一些推荐,或者类似头条的新闻推荐。

那这个APP有什么功能呢,就是用户登录后给用户推送一些信息流吗?对,你可以先理解为微博的那种news feed。听到这里想起了同学最近看的系统设计网课...然后就开始和面试官扯要实现的功能了。既然是要在用户登录时更新关注的人的动态,可以每次登录的时候发一个请求,把关注列表里的所有人的最近十条动态整合一下,在这里面抽出最新的十条更新动态。那这样你数据库查询太多了,怎么优化?可以把一些动态放到redis中。但redis内存是有限的,还能再减少数据库的访问次数吗?那可以改成每个用户发动态的时候相当于给他的每个粉丝写入一次数据库 fanId, weiboId, content, createTime,这样一个用户的动态更新只需要读一次数据库就可以了。那如果一个大V有很多粉丝怎么办?可以将用户标记为大V,对于关注列表里的这些大V用户使用第一种方法拉取动态。

好吧,那你再说一下前面的推荐系统的话该怎么设计呢?最简单的方法可以做一个动态的热榜放到redis里,所有人都被推荐一样的热榜。那如何更新这个热榜呢?开一个定时任务将数据库中的动态按照热度排序后更新redis。那如果我希望千人千面,每个人被推荐的信息不一样呢?如果用户有明确关注的标签的话,可以对每个标签生成一个热度榜,从用户关注的标签里取出热度较高的一些动态组成信息流。那如果用户没有这种明确的关注标签,只是浏览信息呢?那可以类比贴吧的帖子,应该会有一些隐藏的tag,一旦用户浏览了这个帖子,就对用户的数据进行他对这些tag的关注权重更新。那你数据库如何设计存储这种信息呢?可以有一张表,tagId, userId, value。那你这样的话对一个用户进行推荐需要先读取他所有的tag数据然后再根据比较关注的tag访问数据库,数据库访问次数还是太多了,还可以优化吗?要不就加redis。我不是指redis,而是系统的瓶颈主要在磁盘的io,你还能继续优化吗?想了一下没啥思路了...你有考虑过分库分表吗,然后说了一下分库分表的事情blabla

我看时间也不早了,50分钟也差不多了,今天就到这吧。你有什么想问的吗?

大概多久过了或挂了会有消息反馈啊?挺快的。
您能对我今天的面试情况进行一下评价和建议吗?看得出你刷过不少题,不过我们更希望招的人不但能做出题,还要逻辑清晰(指第二道题)和bug free。你现在还是本科是吧?(对)还在找工作是吧?(对)那你可以也再看一下其他企业的招聘机会,面试都是一个双向选择的过程嘛。

听了这回答感觉凉凉...

因为之前一面面试官打电话的时候没联系上,所以加了微信,面完发现一面面试官问我三面面试官联系上我了吗?然后又问了一下我面的咋样。我说了一下面试的情况,感觉凉凉。(一面面试官表示三面面试官是T8,可能要求比较高...)然后一面面试官说帮我问问,有消息和我说。本以为铁凉凉了,结果过了一会一面面试官说三面过了,说是约了周四晚上经理面。不过到现在还没收到约面的消息,所以就先当凉经吧。

更多模拟面试

全部评论

(3) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐