阿里巴巴Java岗位一面面经

。面试主要是Java集合类和并发编程

  1. Java集合类ArrayList初始化时数组的默认长度是多少?
  2. ArrayList扩容时扩容多少倍?扩容后是用原来的数组还是新的数组?
  3. ArrayList是一个线程安全的集合类吗?
  4. 判断一个集合类是否为线程安全的机制是什么?
  5. 说一下Fail-Fast机制,结合源码说一下(如果可以的话)。
  6. ArrayList和LinkedList的使用场景。
  7. 说一下HashMap的底层数据结构。
  8. 说一下HashMap的存储逻辑(put()函数)。
  9. HashMap存储元素时key完全一样该怎么处理?
  10. HashMap的默认长度是多少?扩容是扩成几倍?
  11. 若两个key的hashcode值相同但equals不同,也就是说它们会插入到同一个桶里,新添加的节点是插入到已有元素的前面还是后面?
  12. 为什么JDK 1.7是头插法,JDK 1.8是尾插法?
  13. JDK 1.8的HashMap是否线程安全?
  14. 既然HashMap不是线程安全的类,有啥办法解决这个问题?
  15. ConcurrentHashMap和HashMap的区别?为什么ConcurrentHashMap会线程安全?
  16. ConcurrentHashMap虽然是线程安全的,但它也存在什么问题?
  17. 了解TreeMap吗?TreeMap最大的特点是什么?为什么已经有了HashMap了还要有TreeMap类?
  18. 说一下红黑树的特点。

面试官的问题非常细致,尤其是关于HashMap和ConcurrentHashMap的部分,考察了很多底层实现和线程安全机制。

#软件开发笔面经#
全部评论
电话面吗
2 回复 分享
发布于 2024-08-15 20:01 黑龙江
全程八股文嘛
1 回复 分享
发布于 2024-08-14 19:10 广东
阿里大佬
1 回复 分享
发布于 2024-08-15 20:22 黑龙江
哪个部门?电话面吗?
点赞 回复 分享
发布于 2024-08-14 19:49 北京
“判断一个集合类是否为线程安全的机制是什么?” 请问这个怎么回答呀
点赞 回复 分享
发布于 2024-08-14 22:46 河北
全部八股都是这几个集合嘛
点赞 回复 分享
发布于 2024-08-15 10:35 陕西
ConcurrentHashMap虽然是线程安全的,但它也存在什么问题? 这个我能想到 1、key不能为null需特别注意,可能为导致空指针异常 2、由于是线程安全的,存在锁机制,性能会相对没有hashMap那么好。 还有什么问题吗?
点赞 回复 分享
发布于 2024-08-15 17:25 广东
请问第12题怎么回答呢?
点赞 回复 分享
发布于 2024-08-15 23:09 陕西

相关推荐

03-11 19:41
腾讯_HR
腾讯后台开发面经-暑期实习基本情况面试全程拷打了1.5个小时,基本网络、数据库、缓存、消息队列、算法都问到了。问题范围广,整体难度算适中,重点考察的是基础知识和实际问题的解决能力。* 网络:HTTPS原理、TCP粘包/拆包。* 编程语言:Golang协程、Context实现原理。* 消息队列:Kafka消息重复消费、消费者组管理。* 数据库:MySQL底层数据结构、慢查询优化、吞吐量提升。* 缓存:Redis vs 本地缓存、缓存一致性、本地缓存固定实例访问。* 项目经验:Job调度优化、导出性能优化。* 算法:回文链表。问题记录1. 自我介绍* 简洁明了,突出技术栈和项目经验。2. HTTPS的原理* HTTPS = HTTP + SSL/TLS,通过非对称加密交换对称密钥,后续通信使用对称加密。* 面试官可能会追问:为什么需要非对称加密?(因为对称加密的密钥传输不安全balabala)3. TCP的粘包、拆包* 粘包:TCP是字节流协议,消息边界不清晰,多个消息可能粘在一起。* 拆包:一个消息可能被拆成多个包传输。* 解决方法:固定长度、分隔符、消息头声明长度等等。4. Golang协程* 协程优势:轻量级、上下文切换快、由用户态调度。* 对比线程:协程更高效,适合高并发场景。5. Context实现原理* Context用于控制Goroutine的生命周期,传递请求范围的值。* 实现原理:通过树形结构管理Goroutine的取消信号和超时控制。6. Kafka消息重复消费* 原因:消费者提交offset失败、分区重平衡、消费者重启。* 解决方法:幂等消费、事务消息、去重表。7. 消费者组管理* 多个消费者在一个消费组中,Kafka会将分区分配给消费者。* 避免重复消费:确保每个分区只被一个消费者消费。8. 延迟调用API* 使用消息队列(如RabbitMQ的延迟队列)或定时任务(如Cron)实现。9. MySQL底层数据结构* InnoDB:B+树索引,支持事务、行级锁、外键。* 优势:查询效率高,支持高并发。10. 慢查询优化* 方法:加索引、优化SQL、分库分表、缓存热点数据。11. Redis vs 本地缓存* Redis:分布式缓存,数据共享,适合大规模系统。* 本地缓存:速度快,但数据不共享,适合单机场景。12. 本地缓存固定实例访问* 使用一致性哈希或固定路由策略,确保请求总是访问同一个实例。13. 缓存和数据库一致性* 方法:先更新数据库,再删除缓存(Cache Aside Pattern)或延迟双删,能分析出各自的优缺点更好。14. MySQL提升吞吐量* 方法:读写分离、分库分表、优化索引、使用连接池。15. Job调度优化* 通过调整调度策略(如优先级调度、批量处理)提升系统性能,和操作系统很相关。16. 导出性能优化,如何从30分钟优化到3分钟* 并行处理。* 减少数据库查询次数。* 使用缓存* 流式导出等等。17. 流式导出什么意思* 边查询边导出,减少内存占用,提升响应速度。18. 算法题:回文链表* 思路:力扣原题,快慢指针找到中点,反转后半部分,比较前后两部分是否相同。* 实现:手写代码,注意下边界条件。内推链接:https://join.qq.com/resume.html?k=ANQI6RfQ3rhPS2dpyIkeSw评论区可以留下姓名缩写加岗位,方便后台查看是否内推成功#前端##技术##面经##后台开发##实习内推##腾讯#
腾讯
|
实习
|
超多精选岗位
点赞 评论 收藏
分享
02-26 15:38
门头沟学院 Java
投PCG后端开发被WXG测开捞,上来先写2道算法1、无重复的最长子串2、嵌套信封a出来了,但是求最长递增子序列,时间复杂度O(n^2),给提示优化,没答出来,贪心+二分3、HashMap和HashSet的区别,线程安全吗?4、为什么线程不安全,实现线程安全用哪个集合?接下来结合项目问八股5、token是干嘛的?设置的过期时间?如何续期?网络抖动没续期上怎么办?6、提了个双token方案,解释双token?没解释清为什么要用refreshtoken和acesstoken,以及区别,用一个不就行?7、Redis用的数据类型,持久化方式?8、Redis变慢了怎么定位,怎么优化?9、Redis确实要存储很多数据怎么办?用的什么集群?怎么同步数据?10、怎么用redis实现一个限流算法?11、缓存三剑客在现实当中什么场景会出现?举例12、怎么解决,布隆过滤器能不能删除元素?13、为什么用MQ?库存上游服务是谁?为什么不能直接DB获取?14、多少用户量并发访问吞吐量会有区别?RabbitMQ承受量级?想要更高怎么办?15、和kafka的区别?16、多消费者消费消息的顺序性RabbitMQ可以保证吗?怎么实现消费顺序性?17、考虑消费失败情况吗,消费失败怎么办?具体用到几个队列?处理逻辑?18、如何处理多线程情况,有哪些方法?19、Synchronized和ReentrantLock的区别?喜欢用哪个?20、自旋锁是什么?Synchronized属于自旋锁吗?21、数据库查询比较慢怎么办?如果不是索引原因呢?22、索引的底层数据结构?可以用Hash表吗?23、什么时候用多进程?什么时候用多线程?还是太菜了😭很多回答模棱两可
查看23道真题和解析
点赞 评论 收藏
分享
评论
13
78
分享

创作者周榜

更多
牛客网
牛客企业服务