03.22 阿里最新Java面试题目,看看你能答对几道

内容导读

HashMap每次put的过程就是先通过hashcode找到对应的槽。然后顺序遍历Node链表对比(通过hashcode 和 equals) 然而,如果多线程同时put,有一定概率出现某一个线程put时,正好发生resize过程。put,get操作时,只需要lock部分数据源。线程创建的三种方式,阐述下多线程的数据结构; Java并发包的内容,阐述; 多线程下访问一份数据,如何保证一致性; Java有哪几种级别的锁,synchronized, lock有哪些区别; 场景:在一个主线程中,要求有大量(很多很多)子线程执行完之后,主线程才执行完成。如果配置人rdb, aof 就能支持秒级持久化。需保证同一url只能出现在一个子文件中; 建立队列,判断文件大小, 同时计算n个文件,快排得出结果; 归并排序得到top n的值。

Java基础

  • Jvm内存模型有哪些,分别有哪些gc算法,如何优化jvm进程参数;

  • HashMap的数据结构怎样的,为什么HashMap是线程非安全的;

  • ConcurrentHashMap如何做到线程安全;

  1. 首先HashMap的对象是存储在堆中的,堆是线程共有的。这样就有多线程操作同一数据源的基础。

  2. 其次。HashMap每次put的过程就是先通过hashcode找到对应的槽。然后顺序遍历Node链表对比(通过hashcode 和 equals)

  3. 然而,如果多线程同时put,有一定概率出现某一个线程put时,正好发生resize过程。 这时这个线程在resize,数据重新copy的时候,其他线程正在put。就有可能造成Node链表循环。这就是HashMap线程非安全的原因。

  4. ConcurrentHashMap线程安全是因为加锁。默认有16个segment,每个segment存储不同的hash值范围的key。put,get操作时,只需要lock部分数据源。但是调用全局方法等操作时,lock整个数据源。

  • 堆栈是线程公有的吗?为什么这么设计;

  • Java内存泄露的问题调查定位:jmap,jstack的使用等等;

  • Jvm进程cpu飙升如何检查;

  • atomicinteger和volatile等线程安全操作的关键字的理解和使用 ;

Java进阶

  • 线程创建的三种方式,阐述下多线程的数据结构;

  • Java并发包的内容,阐述;

  • 多线程下访问一份数据,如何保证一致性;

  • Java有哪几种级别的锁,synchronized, lock有哪些区别;

  • 场景:在一个主线程中,要求有大量(很多很多)子线程执行完之后,主线程才执行完成。多种方式,考虑效率;

linux

  • top命令结果的一些含义,比如第一行最后三个数字是什么意思;

  • 如何查看jvm进程;

  • shell等;

数据库

  • mysql的事物隔离级别;

  • acid的特性是什么;

  • mysql锁的产生原因,如何避免;

  • mysql索引的建立规则,底层数据结构如何建立的,mysql索引查询的效率依赖什么;

常用中间件

  • rocketmq/ kafka有哪些模块,相互之间如何调用的,各自处理什么事情;

  • redis常用的数据结构,redis对存储做了哪些优化;

  • redis节点增删,rebalance的过程发生了什么;

  1. 首先redis的rebalance发生场景,是在redis集群增减节点时发生的。
    redis集群,通过hash槽将不同节点存储不同的数据块范围。hash槽是典型的圆环式。

  2. 增加节点到redis集群,redis不会立即提供服务,会有槽重新分配的过程。但是因为是hash槽,只会从某一节点划分部分数据到新的节点。

  3. 删除节点,也是不会立即下线,会将该节点的数据,按照重新hash值划分到不同的节点上。

  4. 整个过程就是rebalance。如果配置人rdb, aof 就能支持秒级持久化。其中持久化也是异步操作,性能无需担心。基本不会有什么问题。

  • nginx的进程启动是多少个,nginx重启为什么那么快,发生了什么;

常见大题

  • 10亿url,存在文本中,有重复的。且类型种类不可控制。取出top n;

  1. 按照hash值按照url分流,循环递归拆分子文件,使得小文件小于内存大小。需保证同一url只能出现在一个子文件中;

  2. 建立队列,判断文件大小, 同时计算n个文件,快排得出结果;

  3. 归并排序得到top n的值。

  • 有活动页面,需要统计在线人数,给出方案。

  • 有商品评论页面,读写比大于1K,要求能查询所有评论,我的评论,并支持分页。如何设计缓存key的方案。


分享到:


相關文章: