美团面试一面凉经

时间:2024-03-27 15:03:49

1.自我介绍

2.科研项目提问

没咋准备,说的有点没逻辑

3.问论坛项目

为什么用Redis实现登录?能不能用其他方式实现?

1、Redis 具备高性能

假如用户第一次访问 MySQL 中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据缓存在 Redis 中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了,操作 Redis 缓存就是直接操作内存,所以速度相当快。

2、 Redis 具备高并发

单台设备的 Redis 的 QPS(Query Per Second,每秒钟处理完请求的次数) 是 MySQL 的 10 倍,Redis 单机的 QPS 能轻松破 10w,而 MySQL 单机的 QPS 很难破 1w。

缓存是什么概念?

操作 Redis 缓存就是直接操作内存

怎么解决在另一个地方登录把当前用户挤掉的功能?

储存用户登录状态:在用户登录成功后,向服务器发送请求以储存用户登录状态。您可以使用 token 或 session 的形式实现这一功能。

设备标识:为每个设备分配唯一标识符(例如 UUID),这样您就可以识别出是哪个设备登录了该账号。

检查登录状态:当用户在一个设备上登录时,服务器需要检查该账号的登录状态。如果该账号已经登录到其他设备上,服务器需要将其他设备的登录状态设为无效。

通知被顶掉的设备:服务器可以向被顶掉的设备发送一个通知,告知该设备用户账号已在其他设备上登录。被顶掉的设备收到通知后,需要执行注销操作,使用户无法继续在该设备上使用该账号。

更新登录状态:当用户在一个设备上注销账号时,服务器需要将该设备的登录状态设为无效。

Redis记录点赞数怎么维护点赞数?

redisTemplate.opsForSet().size(entityLikeKey)4.

4.基础问题

Java并发带来的核心问题是什么?是如何解决这些问题的?

并发:两个及两个以上的作业在同一 时间段内执行。

并发编程的目的就是为了能提高程序的执行效率进而提高程序的运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到很多问题,比如:内存泄漏、死锁、线程不安全等等。

一个资源为什么只能给一个线程使用?

一个资源到底指什么?类中创建的变量叫成员变量?存储在哪?是java内存模型的什么地方?java内存模型是什么意思?方法中的变量

volatile和synchronized关键字的区别

volatile 关键字是线程同步的轻量级实现,所以 volatile性能肯定比synchronized关键字要好 。但是 volatile 关键字只能用于变量而 synchronized 关键字可以修饰方法以及代码块 。

volatile 关键字能保证数据的可见性,但不能保证数据的原子性。synchronized 关键字两者都能保证。

volatile关键字主要用于解决变量在多个线程之间的可见性,而 synchronized 关键字解决的是多个线程之间访问资源的同步性。同步性是什么?

mysql索引数据结构

B+树

为什么不用二叉搜索平衡树

树的深度会很大,链表查询


性别要不要加索引

事务隔离级别和各自产生的问题

5.算法:发展k组链表