仿牛客网简历书写+可能被问的问题
0、 笔记快速复习
如果忘记了牛客网怎么做的,可以看别人的笔记快速复习,这里提供两个,一个比较详细的:
也可以看这个简洁一些的
一、咨询大厂面试官
然后我也拿课程大纲的这两个项目去问了两个面试官(一个阿里云达摩院工作的P7,以及腾讯的T10,经常当校招面试官),让他们帮忙看看如果你看到这样的项目,会问啥问题,不过他们两个也没有给我很具体的回答,比如

问的问题和我想的差不多,都是通用问题,比如对于 redis 缓存,可以问出各种花样来,所以呢,结合自己的理解给大家总结一下可能会问的问题。
上面我说过,问的问题很大概率是根据你的工作职责来的,所以我这里对于一个项目,列出五六条可选职责,并且对某个职责可能会问的问题进行总结,你们在写简历的时候,也可以挑着来写。比如你对某个领域的不懂,那就不写这个职责了,职责写3~5条就可以了,自己适当修改吧。
注意:写简历的时候,自己起个名字,不要和仿牛客网挂钩,甚至你可以说是你自己参加比赛的项目。
简历书写
项目介绍:xxx系统是一个基本功能完整的校园论坛项目,完整有Java语言发开发,Vue作为前端开发,主要功能模块:用户登陆注册、帖子发布和热帖排行、点赞关注、发送私信、消息通知、社区搜索、后台 UV 和 DAU 统计等,本人重点参与用户授权身份认证模块,用户关注,点赞,收藏,文章数据列表等重要模块开发
职责与可能会问的问题
1、采用session存储用户登陆凭证,并且用拦截器对用户的登陆态进行检查,保护特定需要登录使用的资源。
可能问的问题:
(1)登陆凭证这些信息是如何存储的,说一下流程(就是自己描述下这个登陆态检测的逻辑,cookie,session之类的)
(2)什么情况下会导致cookie过期?(自己设置的过期时间啊,关闭浏览器啊,浏览器设置刷新缓存啊等等)
(3)考虑过单点问题吗?如果以后多个应用想同用同一套登陆系统,登陆这块应该如何设计?(比如淘宝,天猫这些,你在天猫登陆了,打开淘宝时也发现自动登陆了,就是单点登录问题)
(4)如果有说到了密码加密,那么也要研究下自己为啥这样加密,加密是否可逆?(比如数据库泄漏了,别人能否拿到密码去登录)
2、自己实现了一个前缀树来对评论/私信等一些敏感内容进行过滤,保证帖子的安全性
(1)除了前缀树,还可以用哪些方法来进行过滤?可以简单比较一下优缺点吗?(本质还是字符串匹配问题,可以了解下其他方法,其实市面上并不是用前缀树,所以我们这里只是自己学习 + 轻量级)
(2)为什么要过滤敏感词呢?你是怎么维护敏感词库的?(就是要想清楚为啥要过滤,比如为了网站安全啊,因为涉及政治不正确的,可能你网站就凉了;为了避免低俗辱骂啊,比如王者荣耀这些也会过滤。怎么维护的话,就是你词库肯定不能写死在代码里是吧,得可能动态添加/删除敏感词)
(3)前缀树还有其他应用场景吗?(自己百度搜索吧)
3、使用Redis特有的HyperLogLog、Bitmap分别实现了UV、DAU的统计功能,减少内存占用
(1)如果写了,那么你首先要对他们的算法有一定的了解,HyperLogLog自己找文章吧,Bitmap这个得懂,我这里给你们找了对应的两篇文章:如何判断一个数是否在40亿个整数中? + 漫画:Bitmap算法 整合版
(2)了解PV,UV,DAU的概念,如果要统计 PV,你可以怎么统计?
(3)为啥UV,DAU要用HyperLogLog、Bitmap来统计?有什么问题?
4、项目种多处采用了 Redis 来提高响应速度,比如字符串缓存登录认证,用集合实现相互关注等模块
(1)redis基础八股文xxx:Redis考什么+高频题汇总
(2)缓存经典问题:数据库和redis的数据你是怎么保证一致性的(严格的一致性,理论很难,但是我们不需要那么严格,说一说先更新还是先删除的那几个就行)
(3)集合的底层数据结构?(了解下有序集合和无序集合)
5、使用 Kafka 对用户点赞评、评论、系统信息等站内信实现异步消息通知,提高接口响应速度,让用户有更好的体验
(1)消息队列相关八股文:八股文题库最下面部分
(2)Kafka和其他mq对比,有什么优劣势?kafka为啥这么高效?
(3)我感觉最重要的就是要理解好 消费者-生产者模式
(4)kafka是单机还是集群?自己部署的kafka还是直接调用其他人的服务(这个有人被问过,一开始不知道在问什么)
6、利用Quartz实现了任务调度功能,并实现了定时计算帖子分数、定时清理垃圾文件等功能
(1)为什么要使用Qartz来进行任务调度?如果用spring或者jdk自带的任务调度可以吗?会有什么问题?(这个主要就是分布式情况下的问题了)
(2)多长时间触发一次定时任务?比如帖子分数多久统计一次?
(3)可以说一下你是怎么按照权重给帖子加分数以及给帖子减分数的吗?(比如评论,点赞等的权重,时间也有个权重)
(2)任务调度用到了线程池,线程池八股文xxxxx
7、项目中使用了 Spring 事务管理实现原子操作,如点赞、关注等模块
(1)Spring事务注解怎么实现的?
(2)可以说一说用到了哪些设计模式吗?
(3)Spring常用注解有哪些?
三、下面是几个通用问题
通用问题:说一说表结构的设计?比如可以说一说评论表结构的设计,还有就是可能会让你写一写 sql 也不一定,防止你糊弄面试官
通用问题:项目中有没有用到什么设计模式
通用问题:平时怎么做单元测试的?
这几个通用问题,主要考察下这玩意你是不是认真做过,还是编的抑或是只看视频没做过。
通用问题:如果流量大了,比如某个帖子非常火,诸如知乎热榜,微博热榜,某个帖子会很火,那么可以怎么来处理?
四、书写案例展示(牛客网名称改了)
案例1(自己加了东西)

案例2(自己没有加东西)

具体面试题总结
可以参考这里:社区项目面试提炼+答案总结