滴滴一二面面经(秋储Java已OC)

项目就黑马点评,我也没搞懂,带括号的是我自己答的,不一定对
面试官很好,讲了挺多的,答不出来都会引导你,会跟你说一些解决方案。二面面试官时不时说tmd,不过没有恶意哈哈

一面(一小时):
问能实习多久(六个月以上)
什么时候到岗(下周)
介绍项目
项目架构(都没答出来,然后讲的具体功能实现)
项目具体功能实现逻辑
项目里为什么要用消息队列
请求很多,消息堆积处理不过来了如何应对(降级返回其他结果,集群)
用户在消息堆积时以为卡了多次请求怎么处理(前端阻止请求)
项目都有哪些表
超卖问题怎么解决
秒杀场景下扣减库存太慢了怎么办(数据库集群,分库分表,索引优化,Redis热key,大key,Redis缓存过小)
Redis大key如何解决
什么是热key(某个很热销的商品)
如何解决热key问题
索引优化详细讲讲(怎么用,怎么设置)
进程和线程的区别
分配给进程的资源有哪些(CPU时间,内存空间,端口)
项目里有读写文件吗(只有访问数据库)
有进程了为什么还要有线程(将大任务分成小任务,并发执行高效利用CPU)
进程切换和线程切换的区别?
为什么并发执行线程要加锁(会争抢资源)
TCP和UDP的区别
TCP的连接指的是什么东西
TCP三次握手过程
为什么要三次(服务端可能额外消耗资源)
消耗什么资源(端口,内存(用于接收消息),网络)
手撕:字符串相加

二面(四十分钟):
(上来就说我这是自己做着玩的吧)
短信登录的短信怎么发送的(没有真正实现,使用的UUID生成的一个验证码)
项目的拦截器详细讲讲
怎么存的验证码
项目里存在Redis里的key的格式、存的什么
如何标识用户(手机号)
项目的权限刷新什么意思(登录时判断是否注册)
旁路缓存机制具体解决的什么场景(说的将库存存到缓存中,和数据库不一致,面试官都绷不住了,然后我也绷不住了,二人开怀大笑,场面十分和谐)
更新缓存失败了怎么办(重试)
重试的时候,缓存中的错数据被访问多次了,怎么解决
项目为什么要加个消息队列
抢优惠券没有及时处理怎么办(通知用户已经抢了)
抢优惠券处理完了如何通知用户(没有通知)
讲下Redis的ZSet
ZSet的范围查询的时间复杂度是多少(我说1,面试官让我再想想,我说N,他绷不住了,说不许猜,提示我一般的排序算法复杂度应该是多少)
手撕:LRU(面试官一直烦躁且耐心的教我)
#面经#
全部评论
大佬,你简历里怎么描述黑马点评这个项目的,感觉面试官看你的简历几乎把项目的关键点都提出来了
6 回复 分享
发布于 2023-06-17 17:04 辽宁
秒杀场景扣减库存太慢怎么优化?扣减肯定得先操作缓存,操作完发送mq异步落库,但是如果发送失败了不就少卖了吗?怎么优化扣减库存慢
2 回复 分享
发布于 2023-06-17 23:24 北京
Zset,跳表,类似二叉树,logn
2 回复 分享
发布于 2023-06-18 17:08 江苏
黑马点评😂
1 回复 分享
发布于 2023-06-18 12:47 福建
大佬能问下投的哪个部门吗
1 回复 分享
发布于 2023-06-20 19:42 四川
佬,怎么平衡实习和秋招呢
1 回复 分享
发布于 2023-07-01 22:19 河南
牛啊佬!
1 回复 分享
发布于 2023-08-02 09:32 天津
Mark
点赞 回复 分享
发布于 2023-06-17 20:21 广东
烦躁且耐心 可还行
点赞 回复 分享
发布于 2023-06-17 21:36 北京
什么时候投的,我还没笔试
点赞 回复 分享
发布于 2023-06-20 21:23 黑龙江
佬们面经都是在哪里背的求推荐
点赞 回复 分享
发布于 2023-06-30 13:41 重庆
项目就只有黑马点评?
点赞 回复 分享
发布于 2023-07-07 10:33 重庆
你好,我问一下,Lua脚本的时候判断库存是否大于0,感觉此时是非线程安全的啊,是不是会生成无效订单
点赞 回复 分享
发布于 2023-08-02 21:36 广东
m
点赞 回复 分享
发布于 2023-08-20 20:37 江苏
大佬,没有括号的是没有回答出来的嘛
点赞 回复 分享
发布于 2024-03-10 10:50 江苏
大佬,求问 ,找日常实习,一个点评项目够吗?
点赞 回复 分享
发布于 03-02 20:54 浙江
mark一下
点赞 回复 分享
发布于 03-15 15:51 天津

相关推荐

裸面,完全没准备,一些非常基础的八股也没答上来,自然被拒。emmm还是慢慢背吧。这里记录几个还有印象的问题1.Java的数据类型有哪些?应答:基本数据类型和引用数据类型。基本数据类型包括byte short int long float double char Boolean八种。引用数据类型包括类(class)、接口(interface)、数组(array)。2.讲一讲数据库的删除操作吧应答:delete、truncate、drop三种。delete属于dml操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger。truncate属于ddl语言,删除表中所有数据,隐性提交,不能rollback。drop属于ddl语言,删除表和数据库都可以。3.讲讲你在项目里用的jwt令牌技术是如何生效的?应答:用户登录-认证通过-生成jwt token返回前端-前端发起请求时携带token-拦截器请求验证token-放行/不放行4.讲讲Java里的集合这个问的太宽泛了,我也答非所问,索性全部贴出来背了。应答:Java集合主要由Collection和Map派生出来的。前者派生List、Set、Queue。List代表有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列集合。Map代表的是存储key-value对的集合,可根据元素的key来访问value。List接口常用的实现类有:ArrayList、LinkedList、Vector。集合中的元素允许重复。集合中的元素是有顺序的,各元素插入的顺序就是各元素的顺序。集合中的元素可以通过索引来访问或者设置。ArrayList是一个动态数组,也是我们最常用的集合,是List类的典型实现。ArrayList擅长于随机访问,同时ArrayList是非同步的。与ArrayList相似,但是Vector是同步的,它的操作与ArrayList几乎一样。LinkedList是采用双向循环链表实现,LinkedList是List接口的另一个实现,除了可以根据索引访问集合元素外,LinkedList还实现了Deque接口,可以当作双端队列来使用,也就是说,既可以当作“栈”使用,又可以当作队列使用。1)ArrayList优点: 底层数据结构是数组,查询快,增删慢。缺点: 线程不安全,效率高2)Vector优点: 底层数据结构是数组,查询快,增删慢。缺点: 线程安全,效率低3)LinkedList优点: 底层数据结构是链表,查询慢,增删快。缺点: 线程不安全,效率高Set扩展Collection接口,无序集合,不允许存放重复的元素。Set接口常用的实现类有:HashSet、LinkedHashSet、TreeSet1)HashSet底层其实是包装了一个HashMap实现的底层数据结构是数组+链表 + 红黑树具有比较好的读取和查找性能, 可以有null 值通过equals和HashCode来判断两个元素是否相等非线程安全2)LinkedHashSet继承HashSet,本质是LinkedHashMap实现底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。有序的,根据HashCode的值来决定元素的存储位置,同时使用一个链表来维护元素的插入顺序非线程安全,可以有null 值3)TreeSet是一种排序的Set集合,实现了SortedSet接口,底层是用TreeMap实现的,本质上是一个红黑树原理排序分两种:自然排序(存储元素实现Comparable接口)和定制排序(创建TreeSet时,传递一个自己实现的Comparator对象)正常情况下不能有null值,可以重写Comparable接口 局可以有null值了。队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。PriorityQueue保存队列元素的顺序并不是按照加入的顺序,而是按照队列元素的大小进行排序的。PriorityQueue不允许插入null元素。Deque接口是Queue接口的子接口,它代表一个双端队列,当程序中需要使用“栈”这种数据结构时,推荐使用ArrayDeque。Map(这块内容真多byd)1.HashMapMap接口基于哈希表的实现,是使用频率最高的用于键值对处理的数据类型。它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,特点是访问速度快,遍历顺序不确定,线程不安全,最多允许一个key为null,允许多个value为null。可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap类。2.HashtableHashtable和HashMap从存储结构和实现来讲有很多相似之处,不同的是它承自Dictionary类,而且是线程安全的,另外Hashtable不允许key和value为null,并发性不如ConcurrentHashMap。3.LinkedHashMapLinkedHashMap继承了HashMap,是Map接口的哈希表和链接列表实现,它维护着一个双重链接列表,此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。4.TreeMapTreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。5.你项目中说是使用了Redis技术,讲讲Redis技术是怎么做到加速效果的此时已抠出三室一厅。应答:Redis 是高性能的,基于键值对的,写入缓存的 内存存储系统。它支持多种数据结构如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的操作命令。项目中引入 Redis 的地方是:查询店铺营业状态 ,像这种店铺营业状态,本项目无非就两个状态:营业中/打样。而且它属于高频查询。只要用户浏览到这个店铺,前端就要自动发送请求到后端查询店铺状态。Redis 是基于键值对这种形式存储的,而且 Redis 也把将数据放到缓存中,而不是磁盘,有效缓解了这种高频查询给磁盘带来的压力。 6.讲讲spring中ioc容器应答:Spring IoC负责创建对象、管理对象(通过依赖注入(DI)、装配对象、配置对象,并且管理这些对象的整个生命周期。Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制,对于spring框架来说,就是由Spring来负责控制对象的生命周期和对象间的关系。到这里已经神志不清,面试官也问不下去了,遂结束。
查看6道真题和解析
点赞 评论 收藏
分享
评论
78
674
分享

创作者周榜

更多
牛客网
牛客企业服务