面试总结

楼主三年工作经验,在某三线厂干了三年,先后面试了vivo,yy,微众,腾讯,蚂蚁金服和lazada,最终选择去了蚂蚁金服。

一.公共的问题

1.介绍一下你项目的架构
2.netty原理
3.synchronized和lock的不同
4.spring ioc和aop,spring bean的生命周期
5.ConcurrentHashMap的1.7和1.8的原理,resize()的不同
6.hashMap的底层数据结构
7.如何分配一个连续内存?(注意扩展出来说可能有的问题,比如会引起full gc,引起zk失联)
8.Mysql的索引原理,B+ tree;设置索引时候要考虑的因素
9.Mysql为什么要用自增id作为主键
10.jvm相关知识,主要是内存区域,垃圾收集相关知识
11.计算机网络,TCP和UDP,OSI七层协议和TCP\IP五层协议
12.用的什么微服务框架?说说里面的架构思想,负载均衡,熔断和限流是怎么实现的
13.用的什么分布式队列?为什么选用这个队列,他的优势在哪里?
14.redis为什么快的原理,如何用redis实现一个分布式锁,redis的数据结构类型,过期删除key的策略
15.mysql的batchInsert为什么比单条insert for循环快
16.说下Mybatis的原理
17.分库分表是怎么处理的?客户端分库分表和服务端分库分表该如何选择?
18.java volatile的原理
19.ThreadLocal原理
20.三种信号量机制(CountDownLatch,CyclicBarrier,Semaphore)
21.zookeeper选举
22.mysql事务级别,MVCC原理
23.缓存淘汰算法
24.缓存穿透,缓存雪崩等问题
25.如何设计一个高并发系统?(包括高并发读和高并发写,如果是web系统,还可以考虑CDN和ngnix对静态资源做缓存)
26.java里面的乐观锁(CAS,典型使用是AtomicInteger类)和悲观锁
27.Mysql的行级锁和表级锁,什么时候会行级锁,什么时候表级锁
28.Mysql如何进行扩容
29.分布式事务(2PC,TCC,MQ事务)
30.分库分表的策略,各自的优缺点

二.VIVO

没什么特别的问题

三.yy

1.guava RateLimiter会不会有预热问题
2.AtomicInteger执行原理
3.高并发写库存如何解决?(楼主所在公司库存是放在redis里面,但redis主从同步可能存在延迟,如果redis主挂了的时候,从redis变成master,有可能会导致超卖。楼主暂时也没想到好的解决方案,看大家是如何解决的)

四.微众

1.给出一个支付相关场景完整的解决方案
2.支付报文字段设计
3.平时是怎么写代码的

五.腾讯

1.redis底层数据结构zipList等是怎么实现的
2.跳表是怎么实现的
3.怎么用线程池来维护一个任务的有序执行(有序的内存队列)?如果进程挂了,怎么恢复
4.jvm调优,什么时候调大新生代的内存,什么时候调大老年代的内存

六.蚂蚁

1.怎么设计心跳包机制
2.怎么设计延迟队列机制
3.怎么用spring避免大量的if else
4.MQ事务具体的实现机制

七.lazada(lazada最后的英文面挂了,那个老外的英文加上电话的嘈杂声真是一言难尽啊。。。)

1.dubbo和service mesh架构之间优缺点
2.客户端控制分库分表和服务端控制分库分表优缺点
3.发生缓存雪崩的时候,可以怎么处理

你可能感兴趣的:(面试总结)