遥望科技 - AI 开发工程师- 35min

1. 自我介绍
2. 之前做的两个项目,你比较熟悉哪个项目?
3. 为什么要使用 Redis 来解决 session 共享问题?为什么会有 session 共享的问题?
4. 如何使用双重拦截器解决 token 刷新的问题?
5. 如果不用 Redis,是否有其他的解决方案? 我回答是 jwt ?
6. 你对 ThreadLocal 的理解是什么?在哪些场景下会使用 ThreadLocal
7. 在使用 ThreadLocal 时是否遇到过问题?
8. 你在方法内部使用了多线程,使用 ThreadLocal 是否能够正常获取到数据?  (这个不会查了下可以用阿里的 TransmittableThreadLocal,或者手动传参)
9. 你提到缓存穿透、缓存击穿、缓存雪崩,实际过程中有遇到过这些问题吗?如何解决这些问题?
10. 如果让你设计一个短信登录校验,你会如何设计?如何保证验证码在有效期内的校验?如何防止暴力破解?      (防止暴力破解,可以使用一个 redis 的 string 作为计数器,如果大于限制次数,就把该计数器延长到十分钟,每次请求去判断计数器是否大于限制次数,如果大于直接返回)
11. 点赞排行榜为什么使用 zset 实现?你能详细说明 zset 存储的数据吗?
12. 点赞功能是实名制还是匿名制?
13. 点赞的 key 怎么设置的
14. 你提到使用悲观锁解决超卖问题,能详细解释一下悲观锁的原理吗?如何使用 Redis 实现分布式锁?
15. redisson 分布式锁和 redis 自己实现的有什么不同?
16. 你对 MySQL 的 MVCC 有什么理解?什么隔离级别会使用?
17. 你对 AI 应用开发的了解如何?最近半年你是否有关注过 AI 相关的技术或应用?你对 AI 的看法是什么? #面经#
#java# #牛客AI配图神器#
全部评论

相关推荐

在JavaScript中,堆和栈是两种不同的内存管理方式,用于存储不同类型的数据。堆(Heap): 堆是用于动态分配内存的区域,用于存储引用类型的数据,如对象和数组。在堆中分配的内存不会自动释放,需要通过垃圾回收机制来回收不再使用的内存。堆的大小通常比栈大,并且可以动态增长和收缩。栈(Stack): 栈是用于管理函数执行上下文和存储基本类型值的一种数据结构。每当执行一个函数时,都会在栈中创建一个新的执行上下文,包括函数的参数、局部变量和函数的返回地址。当函数执行完成后,对应的执行上下文会被销毁,栈会自动释放相关的内存。栈的大小通常比较小且固定,内存分配由系统自动管理。下面是堆和栈的一些区别:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=d59bf6cbe74a47848bb179590bdf5f59存储内容:堆用于存储引用类型的数据,如对象和数组;栈用于存储基本类型的数据,如布尔值、数值和字符串,以及函数执行的上下文。分配方式:堆通过动态分配内存来存储数据;栈通过在执行上下文中的栈帧上分配固定大小的内存来存储数据。大小和生长性:堆的大小通常比栈大,可以动态增长和收缩;栈的大小通常比较小且固定,由系统自动管理。管理方式:堆的内存管理需要使用垃圾回收机制来回收不再使用的内存;栈的内存管理由系统自动处理,通过栈指针的移动来分配和释放内存。生命周期:堆中分配的内存不会自动释放,需要通过垃圾回收来回收内存;栈中的内存由系统自动管理,在函数执行完成后自动释放。
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务