滴滴面试

一面:
1.浅拷贝和深拷贝
2.JVM垃圾回收算法
3.JVM堆、栈、方法区存储的数据
4.元空间的优点和缺点(缺点:元空间存储类加载器,回收后会产生内存碎片)
5.HashMap为什么线程不安全
6.红黑树的结构
7.Hash索引和B+树索引的区别,优缺点
8.非聚簇索引一定会出现回表吗
9.mysql主从复制
10.redis的持久化方法
11.redis内存淘汰策略
12.全局性的淘汰策略和设置了过期时间的淘汰策略有什么区别
13.穿透,击穿,雪崩
14.消息队列,为什么项目里用rabbitmq,有什么优点
15.死信队列
16.手撕:删除列表最后第n个节点,二叉树先序遍历
二面:
问项目
1.数据库一个字段设计为varchar类型,但插入int类型数据,会有什么问题
2.用户撤单怎么处理,先处理状态还是先处理撤单操作
3.两个线程交叉打印
4.两个字符串转换需要操作的最小次数,可删除,插入,修改
5.Redis怎么保证可靠性
6.遍历链表并删除指定值
7.多线程下怎么统计方法的调用次数(不加锁)
二面又忘记录了,全凭记忆

G了已经
全部评论
很多没答出来么,我觉得现在面试都答出来了也可能会挂
3 回复 分享
发布于 2024-09-26 14:48 澳大利亚
插入数据如果不是纯数字的 int 会报错,查询用 int 可能会因为数值溢出查出多条数据,如图查出了俩
1 回复 分享
发布于 2024-10-08 21:11 安徽
三道手撕吗?好抽象啊
1 回复 分享
发布于 2024-10-02 21:10 陕西
cy
点赞 回复 分享
发布于 2024-10-06 14:02 天津
大佬,varchar插入int会有啥问题啊?
点赞 回复 分享
发布于 2024-09-26 20:37 湖北

相关推荐

05-09 15:21
门头沟学院 Java
- 在Java中,为什么String类要被final修饰?- ArrayList和LinkedList有什么区别?- 如何让ArrayList变成线程安全?- 你提到的`CopyOnWriteArrayList`的内部实现了解吗?- HashMap为什么线程不安全?多线程使用HashMap会导致哪些问题?(分为hash冲突以及不冲突两种情况)- ConcurrentHashMap如何解决多线程带来的问题?- 为什么不使用HashTable而是ConcurrentHashMap- HashTable与ConcurrentHashMap在性能上的区别是什么?- HashTable与ConcurrentHashMap在多线程性能上的区别是什么?- HashMap的默认负载因子是多少?为什么默认是0.75?- HashMap在什么情况时会转为红黑树?小于该值会不会转回链表?- 深拷贝和浅拷贝的区别是什么?如何实现这两种拷贝?- Java的反射机制为什么性能比直接调用慢?- 用Lambda表达式将List转为Map时,如何处理Key冲突(保留较大的Value)?- 如何用Lambda表达式将List转为Map,使相同Key的Value合并为List?- java中有两种动态代理,你能说一下是哪两种吗- error跟exception的区别- Java中有哪些实现锁的方式?- synchronized的锁升级过程是怎样的?- Lock类相比synchronized有哪些优势?- Spring Security的用户信息上下文存储在哪- ThreadLocal的原理是什么?实际应用场景除了保存登录信息有哪些?- volatile关键字的作用是什么?- 线程池参数如何设置(IO密集型任务,8核CPU)?- 线程工厂(ThreadFactory)的作用是什么?- 线程池去执行一个多线程任务的时候,有哪些提交方式- CountDownLatch若某个线程异常未调用`countDown()`,如何避免主线程阻塞?- G1垃圾回收器的工作原理是什么?- 双亲委派机制- Tomcat为什么打破双亲委派机制?- 联合索引(A,B)中,仅用B字段查询能否命中索引?- 索引下推优化在何种查询条件下会触发?- 对日期字段(包含时分秒)建立索引后,使用`BETWEEN`且格式化为年月日查询,能否命中索引?- Spring如何解决循环依赖?能否解决构造器注入的循环依赖,为什么不能?- MyBatis中`#{}`和`${}`的区别是什么?两者的生成SQL是否相同?- 扫码登录的完整流程是如何设计的(前后端协作)?- lua脚本中具体使用的命令
点赞 评论 收藏
分享
全程50+min1.自我介绍2.先做题lc56.合并区间,最开心的一集3.在本地ide上用的AI代码助手是哪家的,你还用过哪些相关产品,相比之下有什么优点(我用的是通义灵码,狠狠地舔了一波)4.先拷打一下项目(我做的是尚硅谷的乐尚代驾),问的问题没有那么深入    a)司机抢单分布式锁的实现?    b)如果司机取消抢到的订单,整体业务会有什么变化?    c)怎么使用drools编写规则的,为什么要用(大致是这个意思)?    d)分布式事务不用Seata的@GlobalTransactional注解的话,你会如何实现?5.Java基础   a)反射为什么要比普通调用速度慢?(没答出来)    b)枚举类是可继承的吗?为什么?(忘记了,我跟面试官说我猜是用final修饰的)    c)创建对象的方法有哪些?    d)ConcurrentHashMap是线程安全的吗,原理是什么    e)介绍线程池的corePoolSize, maximumPoolSize, workQueue以及他们之间如何相互作用的?    f)两个线程同时执行++i操作,为什么会发生问题?    g)两个线程同时对一个volatile修饰的变量进行修改,会发生这种问题吗    h)Synchronized和Reentrantlock的区别?    i)ThreadLocal原理?    j)讲一下强引用和弱引用?    k)用过哪些多线程编程的相关类?(没想起来,只答了CompletableFuture还有相关使用)6.Redis    a)关于磁盘IO(我说了持久化机制,应该……可以吧)    b)Hash数据结构的rehash,主要细问了渐进式hash。    c)Redis是单线程吗?为什么会有这么高的性能?7.Mysql    a)Mysql使用的存储引擎中什么是支持事务的?    b)InnoDB用的什么数据结构?B+树相比B树的优点是什么?    c)可重复读和读已提交是如何实现的?    d)Undolog链什么时候会删除?(没有关注过这个,没答出来)    e)索引相关,学生表查询name和score,你会如何设计索引?8.Spring    a)Spring AOP原理?    b)Transactional注解的原理是什么?    c)关于Bean的作用域相关的问题,使用什么注解来设置作用域?(真忘了)    d)Spring是如何解决循环依赖的?大致就记得这么多……目前面试表现最好的一次,也是八股问的最多的一次
阿里巴巴一面419人在聊 查看30道真题和解析
点赞 评论 收藏
分享
05-10 12:55
门头沟学院 Java
查看18道真题和解析 面试问题记录
点赞 评论 收藏
分享
05-23 15:16
已编辑
门头沟学院 Java
1,缓存架构?答:讲了一下redis在项目中的具体实现注:其实面试官想问的是多层架构2,redsi缓存击穿,穿透,雪崩怎么解决?答:击穿可以通过设置热key永不过期穿透可以使用缓存空值和布隆过滤器来解决雪崩可以通过给键设置基础时间值+随机时间值来解决注:缓存击穿还可以还通过互斥锁进行解决(性能较低)关于雪崩上面只说了大量key过期的问题 没有提到redis宕机解决方法:(1)设置多层架构 (2)建立redis主从或集群(3)提前演练redis宕机 从而设计解决方法3,大量不存在的用户同时登录时会给数据库造成压力,怎么解决?答:使用redis缓存空值注:缓存空值不能有效解决这类缓存穿透问题这里要使用布隆过滤器进行拦截 更加有效在实际业务开发中最好俩者结合使用4,jwt?答:说了一下jwt的生成和解析以及结构5,讲讲乐观锁和悲观锁答:讲了一遍sychronized的底层实现从无锁->偏向锁->轻量级锁->重量级锁这里轻量级锁就是乐观锁 重量级锁就是悲观锁6,乐观锁和悲观锁最主要的区别?答:在低并发场景下乐观锁性能好在高并发场景下悲观锁性能好注:乐观锁是认为操作的时候没有线程和我并发操作通过cas判断 不会让你的线程挂起 可能会不断自旋去尝试获取锁悲观锁是认为有线程和我并发操作 拿不到锁线程就会进入阻塞状态直到拿到锁的线程释放锁后唤醒该线程7,sychronized和reentrantlock有什么区别?答:sychronized由jvm释放锁 reentrantlock手动释放sychronized不可重入 reentrantlock可重入(避免死锁)注:这里答错了sychronized可重入 他们的主要区别在于sychronized不支持公平锁,不支持超时不可中断,不支持多条件 sychronized是java内置的关键字 reentrantlock是由juc类库所提供的8,aop怎么理解?这里答的太乱了不清楚注:把那些非核心功能抽取出来封装成一个切面去掉冗余代码通过动态代理的方式 将需要注入切面的对象进行代理在进行调用的时候直接将公共逻辑注入 侵入性较低1,缓存架构?答:讲了一下redis在项目中的具体实现注:其实面试官想问的是多层架构2,redsi缓存击穿,穿透,雪崩怎么解决?答:击穿可以通过设置热key永不过期穿透可以使用缓存空值和布隆过滤器来解决雪崩可以通过给键设置基础时间值+随机时间值来解决注:缓存击穿还可以还通过互斥锁进行解决(性能较低)关于雪崩上面只说了大量key过期的问题 没有提到redis宕机解决方法:(1)设置多层架构 (2)建立redis主从或集群(3)提前演练redis宕机 从而设计解决方法3,大量不存在的用户同时登录时会给数据库造成压力,怎么解决?答:使用redis缓存空值注:缓存空值不能有效解决这类缓存穿透问题这里要使用布隆过滤器进行拦截 更加有效在实际业务开发中最好俩者结合使用4,jwt?答:说了一下jwt的生成和解析以及结构5,讲讲乐观锁和悲观锁答:讲了一遍sychronized的底层实现从无锁->偏向锁->轻量级锁->重量级锁这里轻量级锁就是乐观锁 重量级锁就是悲观锁6,乐观锁和悲观锁最主要的区别?答:在低并发场景下乐观锁性能好在高并发场景下悲观锁性能好注:乐观锁是认为操作的时候没有线程和我并发操作通过cas判断 不会让你的线程挂起 可能会不断自旋去尝试获取锁悲观锁是认为有线程和我并发操作 拿不到锁线程就会进入阻塞状态直到拿到锁的线程释放锁后唤醒该线程7,sychronized和reentrantlock有什么区别?答:sychronized由jvm释放锁 reentrantlock手动释放sychronized不可重入 reentrantlock可重入(避免死锁)注:这里答错了sychronized可重入 他们的主要区别在于sychronized不支持公平锁,不支持超时不可中断,不支持多条件 sychronized是java内置的关键字 reentrantlock是由juc类库所提供的8,aop怎么理解?这里答的太乱了不清楚注:把那些非核心功能抽取出来封装成一个切面去掉冗余代码通过动态代理的方式 将需要注入切面的对象进行代理在进行调用的时候直接将公共逻辑注入 侵入性较低不想写了 直接把问题都扔出来吧 java线程池的七个参数?1. Java线程池,5核⼼、10最⼤、10队列,第6个任务来了是什么状态?任务扔到⼯作队列中2. 如果在第6个任务过来的时候,5个核⼼线程都已经空闲了呢?⼀样扔到队列(线程池只关注数量)3. 第16个任务来了怎么处理?创建⾮核⼼线程去处理第16个任务4. 第16个任务来了的时候,要是有核⼼线程空闲了呢?如果这个空闲的线程,将⼯作队列中的10个任务,取⾛了⼀个,变为了9个,那任务扔队列。如果空闲的线程还没来得及取⾛任务,投递时,队列⻓度依然为10,那还是创建⾮核⼼。5. 队列满了以后执⾏队列的任务是从队列头 or 队尾取?⼀般咱们的阻塞队列都是FIFO的,所以先进先出,从头取。6. 核⼼线程和⾮核⼼线程执⾏结束后,谁先执⾏队列⾥的任务?谁空闲了,并且去等待任务,谁先去执⾏队列⾥的任务。7.为什么⾮核⼼优先执⾏投递的任务?8.核⼼线程与⾮核⼼线程有什么区别?9.MySQL中如何实现数据的读⼀致性?10. MySQL的InnoDB引擎是如何通过⽇志实现事务的?11. MySQL崩溃恢复为什么不⽤binLog?12.Redis的事务了解吗?13.Redis 的持久化机制?总结:对底层的理解还是不够深入 之前没有了解过redis事务 有的时候答非所问容易跑题
点赞 评论 收藏
分享
评论
16
110
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务