2025/12/24 7:24:43
网站建设
项目流程
上海网站推广方法,南京外贸网站建设报价,外贸出口公司网站建设方案,中国商标网官网首页互联网大厂Java面试#xff1a;谢飞机的搞笑面试故事
第一轮#xff1a;Java基础以及集合框架
面试官#xff1a;“谢飞机#xff0c;来吧#xff0c;第一个问题#xff0c;Java中的HashMap是线程安全的吗#xff1f;如果要实现线程安全#xff0c;你会怎么做#xff…互联网大厂Java面试谢飞机的搞笑面试故事第一轮Java基础以及集合框架面试官“谢飞机来吧第一个问题Java中的HashMap是线程安全的吗如果要实现线程安全你会怎么做”谢飞机信心满满“当然不是线程安全的啊线程安全的话用Hashtable就行了”面试官“不错回答得很快。那你再谈谈HashMap的底层实现吧”谢飞机挠头“呃就是……呃数组加链表吧”面试官“嗯好那我们下一个问题ArrayList和LinkedList的区别是什么”谢飞机瞪大眼睛“一个是数组实现一个是链表实现”面试官“详细点”谢飞机硬着头皮“ArrayList是动态数组可以扩容LinkedList是双向链表可以随便插入删除。”面试官“好吧暂时过关。”第二轮多线程与线程池面试官“我们公司用到了线程池那你能说说线程池的工作原理吗”谢飞机“线程池啊就是……创建几个线程然后……用完了再放回去”面试官“说得还行那线程池的核心参数有哪些”谢飞机开始胡说“呃核心参数啊比如线程池的大小、线程的名字、线程的……呃线程的颜色”面试官冷漠脸“线程的颜色那好吧我们换个问题。你了解JUC中的ReentrantLock吗”谢飞机“ReentrantLock就是一个可以重入的锁吧”面试官“再详细点”谢飞机“呃可以tryLock……然后……然后就没了”面试官“行那我们继续下一轮。”第三轮分布式与中间件面试官“我们公司用Dubbo做服务治理那你能简单讲讲Dubbo的核心架构吗”谢飞机“Dubbo啊就是……就是一个RPC框架吧”面试官“再具体点”谢飞机“呃有注册中心、服务提供者和服务消费者……然后……然后就没了”面试官“好那我们再问最后一个RabbitMQ的消息确认机制是怎么实现的”谢飞机“RabbitMQ啊消息确认……就是发消息然后收消息”面试官扶额“嗯……谢飞机你回去等通知吧。”面试问题答案详解HashMap是线程安全的吗如何实现线程安全HashMap本身不是线程安全的。如果需要实现线程安全可以使用Collections.synchronizedMap方法对其进行包装或者使用ConcurrentHashMap。HashMap的底层实现HashMap的底层是由数组和链表组成的。在Java 8之后当链表长度超过阈值默认8时会将链表转换为红黑树。ArrayList和LinkedList的区别ArrayList是基于动态数组实现的支持随机访问查询速度快但插入删除效率低。LinkedList是基于双向链表实现的插入删除效率高但查询效率低。线程池的工作原理线程池通过复用固定数量的线程来执行任务减少了频繁创建和销毁线程的开销。核心参数包括核心线程数corePoolSize、最大线程数maximumPoolSize、队列workQueue、线程存活时间keepAliveTime等。JUC中的ReentrantLockReentrantLock是一个可重入的独占锁支持公平锁和非公平锁的选择。提供了tryLock方法支持超时获取锁lockInterruptibly方法支持中断获取锁。Dubbo的核心架构Dubbo的核心架构包括注册中心负责服务的注册与发现。服务提供者提供服务的具体实现。服务消费者调用服务提供者的接口。通信协议用于服务调用的通信。RabbitMQ的消息确认机制RabbitMQ的消息确认机制包括生产者确认Publisher Confirm确保消息成功发送到队列。消费者确认Consumer Acknowledgement确保消息被成功消费。Consumer Acknowledgement分为自动确认和手动确认。