社区论坛+支付实战项目问题总结

关于项目的问题,我其实写过两篇文章,文章里跟大家说了项目准备的逻辑,没看过的可以看看:

做项目时需要考虑的几个点

为啥要做项目 + 项目怎么学 + 问什么 + 怎么写

不过呢,仍然有一部分学员对项目准备好像还是没啥方向,我之前跟大家说过,项目的背后,依然是考察你对基础知识的理解,只是这里结合了一下场景,考起来相对综合一些,还有一个就是,面试官基本都是抓你描述的关键信息来问你,除非你这个项目面试官看起来比较熟悉。

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

image-20220812110246993

问的问题和我想的差不多,都是通用问题,比如对于 redis 缓存,可以问出各种花样来,所以呢,结合自己的理解给大家总结一下可能会问的问题。

上面我说过,问的问题很大概率是根据你的工作职责来的,所以我这里对于一个项目,列出五六条可选职责,并且对某个职责可能会问的问题进行总结,你们在写简历的时候,也可以挑着来写。比如你对某个领域的不懂,那就不写这个职责了,职责写3~5条就可以了,自己适当修改吧。

仿牛客网问答项目

项目地址社区论坛项目

项目忘了的话,可以看别人的博客笔记牛客网项目笔记复习

项目书写模版:

项目介绍:xxxx
项目职责与亮点
1、xxxx

2、xxxxx

….

个人收获:xxxxx

注意:写简历的时候,自己起个名字,不要和仿牛客网挂钩,甚至你可以说是你自己参加比赛的项目。

职责与可能会问的问题

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 也不一定,防止你糊弄面试官

通用问题:项目中有没有用到什么设计模式

通用问题:平时怎么做单元测试的?

这几个通用问题,主要考察下这玩意你是不是认真做过,还是编的抑或是只看视频没做过。

通用问题:如果流量大了,比如某个帖子非常火,诸如知乎热榜,微博热榜,某个帖子会很火,那么可以怎么来处理?

电商支付系统

上面那些问题基本把电商支付系统的覆盖了,大家在看下这个帖子就行:电商支付项目问什么?

然后有一个需要思考的问题:就是购物车为啥要用 redis 来缓存,为啥要缓存这些字段,曾经有两个面试官和一个面试者探讨过这个问题,我截图给大家看一下:

image-20220813154509693

最后

大家可以看一看,最重要的就是:有自己的思考在里面,即使你这个思考不是最优解也没事,在和面试官的聊天中,如果能聊出最优解,那也是很好的。

发表评论

后才能评论