心爱的idea level
获赞
185
粉丝
30
关注
13
看过 TA
741
门头沟学院
2028
Java
IP属地:福建
我要睡觉
私信
关注
06-12 12:05
已编辑
门头沟学院 Java
1. 常见的垃圾回收器有哪些?  2. CMS 和 G1 垃圾回收器的回收流程有什么区别?  3. CMS 垃圾回收器针对的范围是哪些?  4. CMS 和 G1 在针对老年代引用新生代时的具体实现原理是什么?  5. AQS(AbstractQueuedSynchronizer)有哪几种实现?除了读写锁,还有哪些其他实现?  6. DelayQueue 是如何实现延迟的?  7. ConcurrentHashMap 在 JDK 7 中使用分段锁(Segment)的优势是什么?为什么后来改用 synchronized?  8. 为什么 HashMap 使用 synchronized 而不是 ReentrantLock?  9. MySQL 的索引从数据结构、功能和物理存储三个方面分别有哪些类型?  10. MySQL 的 RR(可重复读)隔离级别是否可以完全防止幻读?如果不能,哪些情况下会出现幻读?  11. MySQL 的 undo log 如何防止幻读?  12. 不同的 MySQL 存储引擎(如 InnoDB 和 MyISAM)有哪些区别?   14. 串行化隔离级别是如何防止幻读的?其实现原理是什么?  15. redo log 的底层刷盘机制是什么?  16. Redis 的底层数据结构有哪些?例如 string 的编码方式有哪些?  17. ZGC 的最大特点是什么?染色指针的概念是什么?  18. JDK 8 之后的新特性有哪些?  19. GC 调优的主要策略是什么?吞吐量优先和响应时间优先的区别是什么?  20. 垃圾回收算法有哪些?例如标记清除、标记整理、标记复制。  21. Redis 的多线程是从哪个版本引入的?具体用在哪些方面?  22. Redis 的五种 IO 模型是什么?  23. Caffeine 缓存的缺点是什么?   25. 分库分表的解决方案中,基因法的具体实现原理是什么?  26. 如果出现表倾斜,应该如何解决?  27. 解决购票高并发问题时使用的分段锁具体用在哪里?  28. 双重检测锁(Double-Checked Locking)的实现原理是什么?  29. 在 Redis 中,什么情况下使用 string,什么情况下使用 hash?  30. 如何通过 Redis 缓存购物车商品?具体的数据结构选择和实现方式是什么?  31. 如果数据量少的话 HyperLogLog 的缺点是什么?  32. 如何保证接口的幂等性?有哪些常见的实现方案?  33. 使用 token 如何实现接口幂等性?其优缺点是什么?  34. 时间戳能否用于实现幂等性?如果可以,如何实现?  35. 什么是逃逸分析?它的优化措施有哪些?  36. 标量替换是如何进行优化的?其实现原理是什么?  37. Lua 脚本在 Redis 中如何保证原子性?  38. 布隆过滤器的参数有哪些?如何设置这些参数?  39. 布隆过滤器的主要缺陷是什么?如何解决误判率随时间增加的问题?  40. 布隆过滤器内部如何使用多个哈希函数?其查询流程是怎样的?  41. 如何降低哈希冲突?布隆过滤器的设计思想是否可以应用于其他场景?  42. 三色标记法在垃圾回收中的作用是什么?可能出现的问题(如悬空指针、对象消失)及其解决方案是什么? 
0 点赞 评论 收藏
分享
06-12 11:51
已编辑
门头沟学院 Java
1. 反射的原理是什么?  2. 类加载时,类和实例分别加载到哪里?  3. 什么是好的编程方法或方案?  4. SQL 语句优化有哪些方法?  5. 订单生成 ID 的实现方式是什么?  6. 如何处理时间回拨问题?  7. 雪花算法的基本原理是什么?  8. 如何设计一个简单的 IOC 容器?  9. 自动装箱和拆箱的底层实现是什么?  10. Java 中的线程安全是什么意思?  11. 什么是 TLAB(Thread Local Allocation Buffer)?  12. NIO 的基本概念是什么?  13. ConcurrentHashMap 中锁的机制是什么?  14. 一条 SQL 语句在 MySQL 中的执行过程是怎样的?  15. MySQL 中事务的日志记录是如何实现的?  16. 如何通过代码实现死锁?  17. 接口和抽象类的区别是什么?  18. 接口和抽象类在设计模式中的体现有哪些?  19. String、StringBuilder 和 StringBuffer 的区别是什么?  20. final 关键字的作用是什么?  21. THREAD LOCAL 可能引发的内存泄漏问题是什么?  22. THREAD LOCAL 的应用场景有哪些?  23. 如何将父线程的 THREAD LOCAL 值传递给子线程?  24. 对 Java 面向对象的理解是什么?  25. 面向对象和面向过程的区别是什么?  26. Java 中创建对象的方式有哪些?  27. Java 中序列化与反序列化的概念是什么?  28. Redis 中使用哈希存储对象和直接使用字符串存储对象的区别是什么?  29. Java 中参数传递是按值传递还是按引用传递?  30. 多继承可能带来的问题是什么?  31. 方法重载与方法重写的区别是什么?  32. Java 内部类的概念和作用是什么?  33. JDK 8 的新特性有哪些?  34. JRE 和 JDK 的区别是什么?  35. JDK 中常用的工具类有哪些?  36. Hashcode 的作用是什么?  37. TreeSet 集合在加入一个对象时如何判断该对象是否存在?  38. 是否可能两个不相等的对象有相同的哈希值?  39. Java 中的 hashCode 和 equals 方法有什么区别?  40. 什么是 Java 中的动态代理?  41. 动态代理与静态代理的区别是什么?  42. 注解的原理是什么?  43. SPI 机制的作用是什么?  44. 泛型的作用是什么?  45. 什么是泛型擦除?  46. 深拷贝和浅拷贝的区别是什么?  47. Integer 类型的缓存池是如何工作的?  48. Java 程序的运行过程是怎样的?  49. new 一个 String 类型的对象时会创建多少个对象?  50. final、finally 和 finalize 的区别是什么?  51. Java 的基本类型有哪些?  52. 静态方法和实例方法的区别是什么?  53. for-each 循环实现的接口或集合类型是什么?  54. RandomAccess 接口的作用是什么?  55. 迭代器(Iterator)的工作原理是什么?  56. ArrayList 和 LinkedList 的区别是什么?  57. 为什么需要 ArrayList 而不是直接使用数组?  58. 数组和链表在 Java 中的区别是什么?  59. ArrayList 的扩容机制是怎样的?  60. ArrayList 的缺点有哪些?如何使其线程安全?  61. 如何使一个集合不可修改?  62. 使用 HashMap 时有哪些提升性能的技巧?  63. 什么是哈希碰撞?在 HashMap 中如何解决哈希碰撞?  64. HashMap 的 put 方法执行流程是怎样的?  65. 为什么 HashMap 在扩容时总是以 2 的 n 次方倍增长?  66. ConcurrentHashMap 在 get 方法中是否需要加锁?  67. 为什么 HashMap 不支持 key 或 value 为 null?  68. Java 中如何创建多线程?  69. 线程池的工作原理是什么?  70. Java 中的线程是如何进行通信的?  71. join 方法的原理是什么?  72. 主线程如何知道子线程创建成功?  73. 反射的原理是什么?  74. Java 内存模型是什么?如何保证可见性和有序性?  75. final 关键字是否能够保证变量的可见性? 
0 点赞 评论 收藏
分享
06-12 00:05
门头沟学院 Java
0 点赞 评论 收藏
分享
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事务 有的时候答非所问容易跑题
0 点赞 评论 收藏
分享
05-22 15:35
已编辑
门头沟学院 Java
0 点赞 评论 收藏
分享
05-26 09:07
已编辑
门头沟学院 Java
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务