【校招VIP】两个外卖项目都说做了redis+session登录方案,但是3个简单的提问一个也没回答

06月28日 收藏 0 评论 1 IT互联网

【校招VIP】两个外卖项目都说做了redis+session登录方案,但是3个简单的提问一个也没回答

前几天面试Java,发现有三个人,他们的简历上都写了同样的一个项目。

这个项目就是做了一个基于redis和session的登录方案。

但是针对这个登录模块,我就问了3个问题。

这三个学生,只有一个同学回答得大差不差,其他两个同学都没答上来。

这三个问题分别是:

1、你为什么用基于redis和session的方案,而不用基于分布式的jjwt方案?

2、服务端的控制和客户端的控制的区别是什么?

3、你知道SSO的这个名词吗?

还有一个彩蛋问题是:

在基于服务端的这种方案下,怎么实现多项目的退出?


第一个问题,这三个同学用的方案基于session,前后端不分离。

我很奇怪,为什么到现在还在用前后端不分离呢?

尤其这个项目的流量比较大。

有个同学说没有办法,因为学的这个项目就是这么写的。

那就证明这个项目有年代了,可能有10年之久了。

因为只有10年前的项目才是所谓的前后端不分离,就是MVC的年代。

我就继续问那个同学是否知道分布式的jjwt的方案。

他说他听过。

那为什么不用这种方案呢?

他说他的项目本身就是全站的,就是前后端不分的,所以没有办法用token的模式。

于是我继续问了第二个问题。


第二个问题,有两个学生都想了半天,说没什么区别。

在服务器端可以通过session去控制它,在客户端也可以从token来判断然后去控制它。

我说如果没什么区别,那就不用去做两种方案了。

显然是第二种方案更简单。

在服务器端的控制,它更复杂。

因为如果想做多台服务器之间的session共享,就要把它取出来然后放在redis里面。

但如果是基于token的,不管多少服务器,因为是在客户端存储,客户端拿着token过来,做个验证通过了就好了。


第三个问题,我问他们知道什么叫SSO吗?

这三个同学里面没有一个知道的。

SSO叫单点登录。

举个例子,比如说我们登录淘宝或者美团的网站,我们可能通过它们去淘票票或者什么其他的业务上。

看着是在一个网站上,但实际上它后面有很多服务器。

就是前端集成了,在一个业务上登录的时候,在其他业务上也能实现登录。

这就是把登录的这个项目独立出来,所有的项目都会去使用他的登录场景。

他们说这好像跟他们基于redis的方案很像。

我说这个意思大概是这个样子。

但是你做的时候,还没到多项目的级别。

你只是考虑在单个业务流量很大的情况下,把它变成了两台服务器或三台服务器的方式。

这个跟SSO还是有区别的。


最后的彩蛋场景题。

在基于服务端的这种方案下,怎么实现多项目的退出?

同学说这不是很简单吗,直接就在网上点个退出,然后这边把清掉,就退出了。

我说这个是你单个项目的时候。

我现在说的多个项目,使用单点登录的模式来实践。

如果每次都要去访问中央的登录接口,性能压力就太大了。

如果用户已经点退出了,但其他的显示的还是登录的状态,用户就会觉得这个程序有bug。

有个同学经过我的引导,灵机一动,说可以用消息队列。

用生产者消费者形式,然后给每一个服务器发通知,让它们知道这个东西要退出。

这个思路是对的,必须要发通知,但是用消息队列就不要再扯什么生产者消费者。

但这个问题很简单,直接HP请求一个消息毁掉就好了,不用考虑到消息队列。


现在很多学生都存在这样的问题。

背了很多东西,但可能没有地方去发泄。

所以在面试官提问的时候,就喜欢都说。

说多错多,本来面试官可能没想去问,但说得越多面试官想问得就越多。

这是大厂校招的一个特点。

比如这个同学的回答,那大厂面试官就会去问关于生产者消费者的问题。

所以同学们要记住,写在自己简历里的项目,一定要非常熟悉。

至少自己的回答如果遭到面试官的追问是能说出所以然的。

不然就是纯粹给自己挖坑。

C 1条回复 评论
清歌

迷茫很久也看过各式各样的答案,选不出一条自己的路真的很焦灼。没有想到原来大家的路也是一样的颠簸。

发表于 2023-10-26 22:00:00
0 0