Java面试基础知识,2021阿里Java笔试总结
Posted Java德克士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试基础知识,2021阿里Java笔试总结相关的知识,希望对你有一定的参考价值。
前言
在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。
我们团队负责的广告系统承接了比较大的C端流量,平峰期间的请求量基本达到了上千QPS,过去也遇到了很多次GC相关的线上问题。
这篇文章,我再分享一个更棘手的Young GC耗时过长的线上案例,同时会整理下YGC相关的知识点,希望让你有所收获。内容分成以下2个部分:
- 从一次YGC耗时过长的案例说起
- YGC的相关知识点总结
一面:
- hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移?
- Linux的共享内存如何实现,大概说了一下。
- Linux 中的用户模式和内核模式是什么含意?
- 在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允 许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
- socket网络编程,说一下TCP的三次握手和四次挥手
- 同步IO和异步IO的区别?
- Java GC机制?GC Roots有哪些?
- 如和判断一个对象是否存活?(或者 GC 对象的判定方法)
- 红黑树讲一下,五个特性,插入删除操作,时间复杂度?
- 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少
第一轮非常重要,第一面能通过,后续被录用的可能性就比较高
二面
- 自我介绍,主要讲讲做了什么和擅长什么
- 设计模式了解哪些?
- Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
- 什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据
- AtomicInteger怎么实现原子修改的?
- RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?
- ConcurrentHashMap 在Java7和Java8中的区别?为什么Java8并发效率更好?什么情况下用HashMap,什么情况用ConcurrentHashMap?
- redis数据结构?
- redis数据淘汰机制?
- Redis 集群方案应该怎么做?都有哪些方案?
三面(约五十分钟)
- mysql实现事务的原理(MVCC)
- MySQL 中控制内存分配的全局参数,有哪些?
- Redis 有哪些适合的场景?
- 有哪些数据库优化方面的经验?MySQL数据主从同步是如何实现的?
- MySQL索引的实现,innodb的索引,b+树索引是怎么实现的,为什么用b+树做索引节点,一个节点存了多少数据,怎么规定大小,与磁盘页对应。
- 如果Redis有1亿个key,使用keys命令是否会影响线上服务?
- Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么?
- 遇到最大困难是什么?怎么克服?
- 未来的规划是什么?
- 你想问我什么?
最后
很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。
我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。
不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
以上是关于Java面试基础知识,2021阿里Java笔试总结的主要内容,如果未能解决你的问题,请参考以下文章