仿牛客网简历书写+可能被问的问题

0、 笔记快速复习

如果忘记了牛客网怎么做的,可以看别人的笔记快速复习,这里提供两个,一个比较详细的:

从零开始—仿牛客网讨论社区项目(一)

从零开始—仿牛客网讨论社区项目(二)

从零开始—仿牛客网讨论社区项目(三)

从零开始—仿牛客网讨论社区项目(四)

从零开始—仿牛客网讨论社区项目(五)

从零开始—仿牛客网讨论社区项目(六)

仿牛客网讨论社区项目—优化网站性能

仿牛客网讨论社区项目—项目总结及项目常见面试题

也可以看这个简洁一些的

仿牛客论坛项目全面大总结

一、咨询大厂面试官

然后我也拿课程大纲的这两个项目去问了两个面试官(一个阿里云达摩院工作的P7,以及腾讯的T10,经常当校招面试官),让他们帮忙看看如果你看到这样的项目,会问啥问题,不过他们两个也没有给我很具体的回答,比如

image-20220812110246993

问的问题和我想的差不多,都是通用问题,比如对于 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(自己加了东西)
image-20240111124016561

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

具体面试题总结

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

发表评论

后才能评论