当前位置: 首页 > 面试经验 >

3.21:实习淘天后端一面-深入java知识体系

优质
小牛编辑
84浏览
2024-03-24

3.21:实习淘天后端一面-深入java知识体系

嗨~我是可拟雀,一个后端开发工程师,毕业于某985大学,目前供职于bat某大厂核心部门后端。每天分享最新面经答案,希望在大环境不好的当下能帮到你,让你多积累面试经验。需要内推或者面经合集请评论哦。

面试内容: 

1.hashmap.put流程

2.concurrenthashmap

3.知道java几面异常的(exceptiona类)的体系结构嘛?

我直接道歉

4.对象头都有什么内容

5.cms讲一讲

6.线程池,讲一讲,怎么用?什么时候创建线程?(具体说)

7.我线程池放了几万个线程,有什么问题?

8.jmm

9.jvm内存模型

10.元空间满了,可能是什么原因?

11.如果频繁full gc 怎么排查?排查过程是什么样的?

我直接道歉

12.线程同步有哪些方法

刚准备问spring啥的。我说我对框架源码还不熟,可以问问redis嘛?他说:好的,那我不问redis了。我直接

13.cap理论

14.聚簇索引,非聚簇索引

15.B+树,红黑树,啥的都聊一聊

16.mysql主从同步

17.除了binlog日志,还有什么日志?

18.同步io,异步io

19bio,nio,aio

20java底层用的什么实现的bio,nio。

答:只知道nio应该是epoll,不知道对不对。道歉

21.如何查看一个进程中线程的占用内存情况。用什么命令?

top?道歉

22.netty了解嘛?

23.mq了解嘛?

24.类的加载过程

25怎么打破双亲委派机制

26.类加载器的层次结构

答案概答:

以下是各个问题的核心解释概要:

  1. HashMap.put流程:检查key是否已存在,若存在则更新value。若不存在,计算key的hash值,找到对应的桶位置。若桶位置为空,直接放入新节点;若已存在节点,则使用比较key的值是否一致,一致是会覆盖节点的反之就是进行链表或红黑树的插入操作。
  2. ConcurrentHashMap:线程安全的HashMap实现,支持高并发场景。通过分段锁或CAS操作来减少锁竞争,提高性能。
  3. Java异常体系:分为Error和Exception两大类。Exception进一步分为运行时异常(RuntimeException)和非运行时异常。
  4. 对象头内容:包含对象的运行时数据(如哈希码、GC分代年龄等)。还可能包含指向对象类型元数据的指针。
  5. CMS(Concurrent Mark Sweep):一种Java的垃圾收集器,旨在减少应用停顿时间。分为初始标记、并发标记、重新标记和并发清除几个阶段。
  6. 线程池:用于管理和复用线程,减少线程创建和销毁的开销。根据不同场景,可配置核心线程数、最大线程数、队列容量等参数。当任务提交时,线程池会根据当前状态决定是直接执行、放入队列还是创建新线程。
  7. 线程池放几万个线程:可能导致系统资源耗尽,如内存、CPU和文件描述符等。线程间切换开销增大,影响性能。线程管理成本增加。
  8. JMM(Java内存模型):定义了Java程序中各种变量(主内存和线程工作内存)的访问规则。保证多线程环境下数据的一致性和可见性。
  9. JVM内存模型:包括堆、栈、方法区等部分。堆用于存储对象实例,栈用于存储线程局部变量和方法调用信息。
  10. 元空间满了:可能由于加载了大量类或者类加载器未正确回收导致。可以通过调整JVM参数增加元空间大小或检查类加载器泄露问题。
  11. 频繁Full GC排查:分析GC日志,确定Full GC的频率和原因。检查内存使用情况,查找可能的内存泄露。优化代码和配置,减少大对象创建和长时间持有的情况。
  12. 线程同步方法:包括synchronized关键字、Lock接口及其实现类、volatile关键字和原子类等。
  13. CAP理论:一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)的权衡理论。分布式系统一般无法同时满足三者,需根据场景选择折中方案。
  14. 聚簇索引与非聚簇索引:聚簇索引按照主键顺序存储数据,非聚簇索引与数据物理存储顺序无关。查询性能上,聚簇索引通常更快,但插入和更新操作可能较慢。
  15. B+树、红黑树等:B+树常用于数据库和文件系统的索引结构,具有多路搜索特性,适合外存存储。红黑树是一种自平衡的二叉搜索树,常用于内存中的数据结构。
  16. MySQL主从同步:主服务器将数据变更写入二进制日志(binlog)。从服务器读取主服务器的binlog,并执行其中的事件,实现数据同步。
  17. MySQL日志:除了binlog外,还有错误日志、查询日志、慢查询日志等。这些日志用于诊断问题、优化性能和监控数据库状态。
  18. 同步IO与异步IO:同步IO需要等待操作完成才能继续执行后续代码。异步IO在操作开始后立即返回,通过回调函数或事件通知操作结果。
  19. BIO、NIO、AIO:BIO是阻塞式IO,NIO是非阻塞式IO,AIO是异步IO。NIO和AIO适用于高并发、大量数据传输的场景,可提高性能。
  20. Java底层IO实现:NIO在Java中通过java.nio包实现,底层可能使用epoll等高效IO模型。具体实现与操作系统和JVM版本有关。
  21. 查看线程内存占用:可以使用jstack、jmap

大家根据概答的关键字,了解哪里学习的不够系统和深入进行查缺补漏即可

    #软件开发2024笔面经#

原文传送门

#面经##淘天##后端##实习##春招##投票#
 类似资料: