Code前端首页关于Code前端联系我们

Java面试题266:算法+缓存+TCP+JVM+搜索+分布式+数据库

terry 2年前 (2023-09-25) 阅读数 48 #后端开发
Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库

JAVA基础知识

  1. JAVA中有哪几种基本数据类型,每种占用多少字节。
  2. String类可以继承吗?为什么。
  3. String、Stringbuffer和StringBuilder的区别。
  4. ArrayList 和 LinkedList 有什么区别。
  5. 先说一下类的实例化顺序,比如父类静态数据、构造函数、字段,子类静态数据、构造函数、字段,以及使用new时它们的执行顺序。
  6. 您使用过哪些地图类别以及有何区别? HashMap线程安全吗?同时使用的地图有哪些?它们的内部原理是什么,比如存储方式、哈希码、扩展、默认容量等。
  7. 为什么JAVA8的ConcurrentHashMap放弃分段锁?有什么问题吗?如果你设计它,你怎么设计它。
  8. 有顺序map实现类吗?如果是这样,他们如何确保订购?
  9. 抽象类和接口的区别,一个类可以继承多个类,一个接口可以继承多个接口,一个类可以实现多个接口。
  10. 继承和聚合有什么区别。
  11. IO 型号有哪些?告诉我你对九的理解。它和bio、aio有什么区别?我们来谈谈反应堆模型。
  12. 反射原理,通过反射创建类实例的三种方式是什么。
  13. 反射中Class.forName和ClassLoader的区别。
  14. 描述几种动态代理的实现方法并说明相应的优缺点。
  15. 动态代理和cglib实现之间的区别。
  16. 为什么CGlib方法可以实现接口代理。
  17. 使用韵尾。
  18. 编写三个单例模式实现。
  19. 如何自动完成父类中子类的所有hashcode和equal实现?这样做有什么好处和坏处。
  20. 请根据OO设计概念讨论public、private、protected和default访问修饰符在应用程序设计中的作用。
  21. 深拷贝和浅拷贝的区别。
  22. 数组和链表数据结构描述,各自的时间复杂度。
  23. 错误和异常的区别,CheckedException和RuntimeException的区别。
  24. 请提供5个运行时异常。
  25. 在你自己的代码中,如果你创建了一个java.lang.String类,这个类能被类加载器加载吗?为什么。
  26. 说说你对java.lang.Object对象中的hashCode和equals方法的理解。在什么场景下我们需要重新实现这两个方法呢?
  27. 在jdk1.5中引入了泛型。泛型可以解决什么问题。
  28. such.hashcode()有什么用,和a.equals(b)有什么关系。
  29. 2 个不同的对象是否可能具有相同的哈希码。
  30. Java 中的 HashSet 内部是如何工作的。
  31. 什么是序列化,如何序列化,为什么序列化,反序列化会遇到哪些问题,如何解决。
  32. java8 中的新功能。

JVM知识

  1. 什么情况下会发生堆栈溢出?
  2. JVM内存结构,Eden和Survivor关系。
  3. JVM内存为什么分为新生代、老年代和持久代。为什么新生代分为Eden和Survivor。
  4. JVM中完整的GC流程是怎样的?项目如何提升到老年代?我们来谈谈您所知道的最重要的 JVM 参数
  5. 你知道垃圾收集器有哪些类型以及各自的优缺点吗?下面重点介绍cms和G1,包括原理、流程、优缺点。
  6. 垃圾回收算法的实现原理。
  7. 出现内存溢出时如何排查?
  8. 你对 JVM 内存模型了解多少,比如重排序、内存屏障、happens-before、主内存、工作内存等。
  9. 简单介绍一下你对类加载器的了解,父委托可以吗坏了,以及如何坏掉它。
  10. 我们来说一下JAVA的反射机制。
  11. 您在线使用的 JVM 参数是什么?
  12. g1和cms之间的区别,吞吐量优先级和响应优先级垃圾收集器选择。
  13. 如何打印线程堆栈信息。
  14. 请解释以下jvm参数的含义:
  15. -server -Xms512m -Xmx512m -Xss1024K
  16. -XX:PermSize=256m -XXmerer:XX:Max MaxTenuringThreshold =20XX :CMSIinitiatingOccupancyFraction =80 -
  17. XX :+仅使用 CMSI 启动占用。

开源框架知识

  1. 简单讲一下tomcat的结构,它的classloader流程,线程模型等。
  2. tomcat如何调优,涉及哪些参数。
  3. 我们来谈谈弹簧加载过程。
  4. Spring AOP的实现原理。
  5. 我们来谈谈Spring事务的传播属性。
  6. Spring 如何管理事务。
  7. 如何在spring中配置事务(指定一些关键的xml元素)。
  8. 说说你对Spring的理解以及非单盒注入的原理?它的生命周期?循环注入的原理,aop的实现原理
  9. ,我们来谈谈aop中的几个术语以及它们之间是如何配合的。
  10. Springmvc中DispatcherServlet初始化流程。
  11. Netty的线程模型,Netty是如何基于reactor模型来实现的。
  12. 为什么选择netty。
  13. 什么是TCP粘包和拆包。解决办法是什么。
  14. Netty的fashwheel定时器的使用,实现原理,如果会话不够准时,如何解决。
  15. 弱网时Netty的心跳处理该怎么办。
  16. netty的通信协议是什么?
  17. springmvc中使用了哪些注解,它们的作用和原理是什么。
  18. springboot的启动机制。
  19. 点击这里获取一组春季测试题的答案版本。

操作系统

  1. Linux系统下你注意到了哪些内核参数?告诉我们你所知道的。
  2. Linux下有几种IO模型,它们各自的含义是什么。
  3. epoll 和 poll 有什么区别。
  4. 您通常使用哪些 Linux 命令?
  5. 使用一行命令查看文件的最后五行。
  6. 使用一行命令发出正在运行的 java 进程。
  7. 介绍一下你对操作系统中线程流程的理解。
  8. 进程和线程的区别。
  9. top命令后面的内容是什么,作用是什么。
  10. 电子处理器极高。怎么才能找到问题呢?

多线程

  1. 多线程的几种实现方法以及什么是线程安全。
  2. volatile的原理和作用,它能代替锁吗?
  3. 画出线程的生命周期状态图。
  4. 睡眠和等待之间的区别。
  5. 睡觉和睡觉的区别(0)。
  6. Lock 和 Synchronized 的区别。
  7. synchronized的原理是什么,一般用在什么地方(比如静态方法和非静态方法的区别,静态静态方法和非静态方法在执行时会有什么影响吗?)同时),请解释以下术语:重排序、自旋锁、偏向锁、轻锁、可重入锁、公平锁、非公平锁、乐观锁、悲观锁。
  8. 您使用了哪些原子类型以及它们的原理是什么。
  9. 在JUC期间你学习了哪些并发工具?说说原理吧。
  10. 你用过线程池吗?如果有请解释一下原理,newCache和newFixed有什么区别,构造函数中各个参数的含义是什么,比如coreSize,maxsize等
  11. 关闭线程有几种方法池,以及它们之间有什么区别。
  12. 假设有一个第三方接口,并且有很多线程调用它来获取数据。现在修复了每秒最多 10 个线程可以同时调用它
  13. ,如何做到这一点。
  14. Spring的控制器是单实例还是多实例?如何保证并发安全?
  15. 使用三个线程按顺序打印三个字母abc,例如abcabcabc。
  16. 你用过ThreadLocal吗?目的是什么,原理是什么,使用时要注意什么。
  17. 如果要求你实现一个并发安全链表,你会怎么做?
  18. 无锁数据结构有哪些,其实现原理是什么。
  19. 我们先来说一下java的wait和notify同步机制。
  20. CAS机制是什么,它是如何解决ABA问题的。
  21. 多线程如果线程挂了怎么办。
  22. countdowlatch和cyclobarrier的内部原理和用法,以及它们之间的区别(比如
  23. countdownlatch的await方法是如何实现的)。
  24. 关于AbstractQueuedSynchronizer你了解多少?我们来谈谈加锁和解锁的过程。独占锁和公平锁有什么区别
  25. 使用synchronized修饰静态方法和非静态方法有什么区别。
  26. 简单描述一下ConcurrentLinkedQueue和LinkedBlockingQueue的使用和区别。
  27. 卡线的原因是什么?如何释放线程锁。
  28. 有很多线程(可能是不同的机器),它们必须等待彼此之间的协调才能完成特定的工作。我想问一下这样的协调方案是如何设计的?
  29. 你用过读写锁吗?原理是什么?一般用在什么场景?
  30. 启动多个线程。如果保证顺序执行,有哪些实现方法,或者如何保证多个线程都执行完
  31. 才得到结果。
  32. 延迟队列实现,delayQueue和时间轮算法的异同。
  33. 单击此处获取一组多线程测试问题的答案版本。

TCP 和 HTTP

  1. http1.0 和 http1.1 有什么区别。
  2. TCP三次握手和四次挥手过程,为什么需要4次才能断开连接,如果只有两次握手会出现什么情况。
  3. TIME_WAIT 和 CLOSE_WAIT 的区别。
  4. 告诉我更多你知道的HTTP响应码,比如200、302、404。
  5. 当你用浏览器打开一个链接(比如:http://www.javastock.cn)时,会执行哪些步骤?计算机执行什么操作?
  6. TCP/IP如何保证可靠性?我们先来说说TCP头的结构。
  7. 如何避免浏览器缓存。
  8. 如何理解HTTP协议的无状态本质。
  9. 简单描述一下Http请求get和post的区别以及数据包格式。
  10. HTTP 有哪些方法?
  11. 简单描述HTTP请求报文格式。
  12. HTTP长连接是什么意思?
  13. HTTPS的加密方式是什么?下面讲一下整个加密和解密的过程。
  14. HTTP和https的三向握手有什么区别。
  15. 什么是分块传输。
  16. 会话和cookie之间的区别。
  17. 单击此处获取一组问题的答案。

架构设计与部署

  1. 使用java自己实现LRU。
  2. 如何获取分布式集群中唯一的序列号。
  3. 设计一个限时抢购系统,如果30分钟内没有付款,系统会自动关闭交易。
  4. 如何使用redis和zookeeper实现分布式锁?它们有什么区别、优缺点、会出现什么问题、适用于哪些
  5. 场景? (延伸:如果你了解redlock,请告诉我算法的实现以及争议所在)
  6. 如果有人恶意创建非法连接,如何解决。
  7. 分布式事务的原理、优缺点、如何使用分布式事务、2pc和3pc的区别、解决了哪些问题、以及
  8. 没有解决哪些问题、如何解决以及涉及分布式事务在你自己的项目中是如何处理的?
  9. 什么是一致性哈希。
  10. 什么是放松?告诉我你对放松的理解。
  11. 如何设计一个好的API。
  12. 如何设计和维护100w长连接。
  13. 解释什么是 MESI 协议(缓存一致性)。
  14. 告诉我更多你知道的HASH算法,简单的也可以。
  15. 什么是paxos算法,什么是zab协议。
  16. 可以编辑文档的在线文档系统。如何防止多人同时编辑和更新同一个
  17. 文档。
  18. 在线系统突然变得极其缓慢。你如何发现问题?
  19. 告诉我你通常使用的设计模式。
  20. Dubbo的原理,你看过源码吗,数据是如何流动的,如何实现集群、负载均衡、服务注册
  21. 以及发现、重试转发,以及快速失败的策略是什么?
  22. RPC请求的流程是怎样的。
  23. 你自己实现过rpc吗?能简单介绍一下原理吗? Rpc要解决什么问题?
  24. 异步模式的目的和重要性。
  25. 如何评价编程中的一些设计原则,例如开闭原则,以及它们在工作中的应用。
  26. 设计某社交网站中的“私信”功能,需要高并发、可扩展性等。画出架构图。
  27. MVC模式,常见的MVC框架。
  28. 谈谈你帮忙设计和画图的服务器架构。谈论您遇到的问题以及如何解决这些问题。
  29. 如何监控应用服务器的性能以及不同方法之间的差异。
  30. 如何设计高并发的支付方案以及如何设计架构。
  31. 如何实现负载均衡,可以实现哪些算法。
  32. Zookeeper的目的是什么,选择原则是什么。
  33. zookeeper监视机制原理。
  34. Mybatis底层实现原理。
  35. 请想一个在分布式环境中实现 countDownLatch 的解决方案。
  36. 后台系统如何防止请求重复提交?
  37. 描述服务从发布到消费的详细流程。
  38. 告诉我们您对服务管理的理解。
  39. 如何实现接口幂等性。
  40. 当前的封顶策略、令牌桶和漏斗算法使用场景如何实现。
  41. 什么是数据一致性?如何理解数据一致性?
  42. 如果分布式服务调用方不信任服务提供者,那么服务提供者挂掉后,如何处理大量无效资源请求的浪费
  43. ?如果服务商的吞吐量不高怎么办?如果服务挂起,它会在一段时间后重新启动。如何才能做到资源浪费最少?实现半开放流量的机制是什么?
  44. dubbo的泛化调用是如何实现的?如果是你,你会怎么做?
  45. 远程调用会出现超时现象。如果实现优雅的控制,那么JDK内置了哪些超时机制,又是如何实现的呢?

算法

  1. 在 10 亿个数字中找到 10 个最小的数字。
  2. 有1亿个数字,其中2个是重复的。快速找到它并优化时间和空间。
  3. 2亿个随机生成的无序整数,找到中间的值。
  4. 给定一个未知长度(可能非常大)的输入字符串,设计一个解决方案来排序重复的字符。
  5. 遍历二叉树。
  6. 有3n+1个数字,其中3n个是重复的,只有1个是不重复的。如何找到它。
  7. 输入字符串(如:http://www.javastack.cn)来反转该函数。
  8. 常用的排序算法,快速排序、合并和冒泡。快速排序的最佳时间复杂度和最坏情况复杂度。冒泡排序的
  9. 优化解决方案。
  10. 二分查找的时间复杂度和好处。
  11. 如何对构造好的树集完成逆排序。
  12. 什么是B+树和B树并列出实际的使用场景。
  13. 单向链表,删除倒数第n条数据。
  14. 200 个有序数组,每个数组有 100 个元素,找到最好的 20 个元素。
  15. 单向链表,找到中间的元素。

数据库知识

  1. 数据库隔离级别有哪些,各自的含义是什么,MYSQL默认的隔离级别是多少。
  2. 什么是幻读?
  3. MYSQL有哪些存储引擎?每个都有自己的优点和缺点。
  4. 如何在高并发下安全地修改同一行数据。
  5. 什么是乐观锁和悲观锁? INNODB中默认的两种行级锁是什么?解释它们的含义。
  6. SQL优化的一般步骤是什么,如何读取执行计划以及如何理解其中每个字段的含义。
  7. 数据库会锁吗?给出死锁的示例以及如何解决 MySQL 中的死锁。
  8. MYsql的索引原理,索引有哪些类型,如何创建合理的索引以及如何优化索引。
  9. 聚集索引和非聚集索引的区别。
  10. 选择更新是什么意思?它会锁定表或行或其他什么吗?
  11. 为什么要用Btree来实现,它是如何分裂的,什么时候分裂的,为什么是平衡的。
  12. 数据库的ACID是多少。
  13. 某表快千万条数据,CRUD比较慢,如何优化。
  14. 如何优化Mysql中的表扫描。
  15. 如何编写sql来有效使用复合索引。
  16. i和的区别在mysql中找到。
  17. 数据库自动增加的主键可能出现问题。
  18. MVCC 的重要性及其实现方式。
  19. 您在做过的项目中遇到过分库、分表吗?你是怎么做到的?你用过中间件吗,像sharding jdbc之类的,你知道它们的
  20. 原理吗?
  21. 如何解决MYSQL主从滞后问题。

消息队列

  1. 消息队列的使用场景。
  2. 再次发送消息并完成策略。
  3. 如何确保消息的顺序。
  4. 您用过哪个MQ?与其他mq相比有哪些优点和缺点? MQ 连接是线程安全的吗?企业MQ服务
  5. 的架构是怎样的?
  6. 如何保证MQ系统中的数据不丢失。
  7. rabbitmq如何实现集群高可用。
  8. kafka吞吐量高的原因。
  9. kafka与其他消息队列的区别,kafka中如何实现主从同步。
  10. 如何使用 mq 实现一致性。
  11. 您在使用kafka时遇到过问题吗?您是如何解决的?
  12. MQ可能会造成重复消费。如何避免它以及如何使其幂等。
  13. 如何处理延迟的MQ消息?消息可以设置过期时间吗?过期后您通常如何处理它们?

缓存

  1. 常见的缓存策略有哪些,如何实现缓存(如redis)和DB之间的数据一致性,您的项目中使用了哪种缓存系统
  2. ,它是如何设计的。
  3. 如何防止缓存崩溃和雪崩。
  4. 如何设计缓存数据过期后的更新。
  5. 与redis的链表结构相关的操作。
  6. Redis的数据结构有哪些。
  7. 使用Redis需要注意什么?下面讲讲持久化方式、内存设置、集群应用、优缺点、淘汰策略等。
  8. redis2和redis3的区别,redis3内部通信机制。
  9. 目前的redis集群方式有哪些,各自的优缺点以及场景。
  10. Memcache的原理,哪些数据适合放在缓存中。
  11. redis和memcached内存管理的区别。
  12. 如何解决Redis的并发争用问题?你知道Redis事务的CAS操作吗?
  13. Redis的选择算法和流程有哪些。
  14. Redis的持久化机制,aof和rdb的区别。
  15. redis集群如何同步数据。
  16. 了解什么是redis优化操作。
  17. Reids的主从复制机制原理。
  18. Redis的线程模型是什么。
  19. 请考虑设计一个自适应本地缓存的解决方案,可以控制缓存的总大小。
  20. 如何看缓存(本地缓存、集中式缓存)的使用情况,简单描述一下本地缓存和集中式缓存的优缺点。
  21. 同时使用本地缓存时的注意事项。

搜索

  1. 你对elasticsearch了解多少?告诉我们你们公司的ES集群架构、索引数据大小、分片数量以及一些
  2. 调优方法。什么是elasticsearch的倒排索引?
  3. elasticsearch索引数据过多怎么办,如何调优和分配。
  4. elasticsearch是如何实现master选择的。
  5. 详细描述Elasticsearch文档索引的过程。
  6. 详细描述Elasticsearch搜索过程。
  7. 部署Elasticsearch时Linux设置有哪些优化方法?
  8. lucence的内部结构是怎样的。

作者:冯峰
来源:知乎

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门