一,美团
1.Java集合22题
-
ArrayList 和 Vector 的区别。
-
说说 ArrayList,Vector, LinkedList 的存储性能和特性。
-
快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?
-
hashmap 的数据结构。
-
HashMap 的工作原理是什么?
-
Hashmap 什么时候进行扩容呢?
-
List、Map、Set 三个接口,存取元素时,各有什么特点?
-
Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是 equals()? 它们有何区别?
-
两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
-
heap 和 stack 有什么区别。
-
Java 集合类框架的基本接口有哪些?
-
HashSet 和 TreeSet 有什么区别?
-
HashSet 的底层实现是什么?
-
LinkedHashMap 的实现原理?
-
为什么集合类没有实现 Cloneable 和 Serializable 接口?
-
什么是迭代器 (Iterator)?
-
Iterator 和 ListIterator 的区别是什么?
-
数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList?
-
Java 集合类框架的最佳实践有哪些?
-
Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()?它们有何区别?
-
Comparable 和 Comparator 接口是干什么的?列出它们的区别
-
Collection 和 Collections 的区别。
2.JVM与调优21题
-
Java 类加载过程?
-
描述一下 JVM 加载 Class 文件的原理机制?
-
Java 内存分配。
-
GC 是什么? 为什么要有 GC?
-
简述 Java 垃圾回收机制
-
如何判断一个对象是否存活?(或者 GC 对象的判定方法)
-
垃圾回收的优点和原理。并考虑 2 种回收机制
-
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
-
Java 中会存在内存泄漏吗,请简单描述
-
深拷贝和浅拷贝。
-
System.gc() 和 Runtime.gc() 会做什么事情?
-
finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?
-
如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
-
什么是分布式垃圾回收(DGC)?它是如何工作的?
-
串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
-
在 Java 中,对象什么时候可以被垃圾回收?
-
简述 Java 内存分配与回收策率以及 Minor GC 和 Major GC。
-
JVM 的永久代中会发生垃圾回收么?
-
Java 中垃圾收集的方法有哪些?
-
什么是类加载器,类加载器有哪些?
-
类加载器双亲委派模型机制?
3.并发编程28题
-
Synchronized 用过吗,其原理是什么?
-
你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
-
什么是可重入性,为什么说 Synchronized 是可重入锁?
-
JVM 对 Java 的原生锁做了哪些优化?48
-
为什么说 Synchronized 是非公平锁?49
-
什么是锁消除和锁粗化?49
-
为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
-
乐观锁一定就是好的吗?
-
跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
-
那么请谈谈 AQS 框架是怎么回事儿?
-
请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
-
ReentrantLock 是如何实现可重入性的?
-
除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
-
请谈谈 ReadWriteLock 和 StampedLock。
-
如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
-
CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
-
Java 线程池相关问题
-
Java 中的线程池是如何实现的?
-
创建线程池的几个核心构造参数?
-
线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
-
既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同
-
如何在 Java 线程池中提交线程?
-
什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
-
请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
-
既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?
-
请对比下 volatile 对比 Synchronized 的异同。
-
请谈谈 ThreadLocal 是怎么解决并发安全的?
-
很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
4.spring 25题
-
1、什么是 Spring 框架?Spring 框架有哪些主要模块?
-
2、使用 Spring 框架能带来哪些好处?
-
3、什么是控制反转(IOC)?什么是依赖注入?
-
4、请解释下 Spring 框架中的 IoC?
-
5、BeanFactory 和 ApplicationContext 有什么区别?
-
6、Spring 有几种配置方式?
-
7、如何用基于 XML 配置的方式配置 Spring?
-
8、如何用基于 Java 配置的方式配置 Spring?
-
9、怎样用注解的方式配置 Spring?
-
10、请解释 Spring Bean 的生命周期?
-
11、Spring Bean 的作用域之间有什么区别?
-
12、什么是 Spring inner beans?
-
13、Spring 框架中的单例 Beans 是线程安全的么?
-
14、请举例说明如何在 Spring 中注入一个 Java Collection?
-
15、如何向 Spring Bean 中注入一个 Java.util.Properties?
-
16、请解释 Spring Bean 的自动装配?
-
17、请解释自动装配模式的区别?
-
18、如何开启基于注解的自动装配?
-
19、请举例解释@Required 注解?
-
20、请举例解释@Autowired 注解?
-
21、请举例说明@Qualifier 注解?
-
22、构造方法注入和设值注入有什么区别?
-
23、Spring 框架中有哪些不同类型的事件?
-
24、FileSystemResource 和 ClassPathResource 有何区别?
-
25、Spring 框架中都用到了哪些设计模式?
5.设计模式 10题
-
1.请列举出在 JDK 中几个常用的设计模式?
-
2.什么是设计模式?你是否在你的代码里面使用过任何设计模式?
-
3.Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
-
4.在 Java 中,什么叫观察者设计模式(observer design pattern)?
-
5.使用工厂模式最主要的好处是什么?在哪里使用?
-
6.举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类
-
层次?
-
7.在 Java 中,为什么不允许从静态方法中访问非静态变量?
-
8.设计一个 ATM 机,请说出你的设计思路?
-
9.在 Java 中,什么时候用重载,什么时候用重写?
-
10.举例说明什么情况下会更倾向于使用抽象类而不是接口
6.springboot 22题
-
什么是 Spring Boot?
-
Spring Boot 有哪些优点?
-
什么是 JavaConfig?
-
如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
-
Spring Boot 中的监视器是什么?
-
如何在 Spring Boot 中禁用 Actuator 端点安全性?
-
如何在自定义端口上运行 Spring Boot 应用程序?
-
什么是 YAML?
-
如何实现 Spring Boot 应用程序的安全性?
-
如何集成 Spring Boot 和 ActiveMQ?
-
如何使用 Spring Boot 实现分页和排序?
-
什么是 Swagger?你用 Spring Boot 实现了它吗?
-
什么是 Spring Profiles?
-
什么是 Spring Batch?
-
什么是 FreeMarker 模板?
-
如何使用 Spring Boot 实现异常处理?
-
您使用了哪些 starter maven 依赖项?
-
什么是 CSRF 攻击?
-
什么是 WebSockets?
-
什么是 AOP?
-
什么是 Apache Kafka?
-
我们如何监视所有 Spring Boot 微服务?
7.Netty10题
-
BIO、NIO和AIO的区别?
-
NIO的组成?
-
Netty的特点?
-
Netty的线程模型?
-
TCP 粘包/拆包的原因及解决方法?
-
了解哪几种序列化协议?
-
如何选择序列化协议?
-
Netty的零拷贝实现?
-
Netty的高性能表现在哪些方面?
-
NIOEventLoopGroup源码?
8.Redis 16题
-
什么是redis?
-
Reids的特点
-
Redis支持的数据类型
-
Redis是单进程单线程的
-
虚拟内存
-
Redis锁
-
读写分离模型
-
数据分片模型
-
Redis的回收策略
-
使用Redis有哪些好处?
-
redis相比memcached有哪些优势?4
-
redis常见性能问题和解决方案
-
MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据245
-
Memcache与Redis的区别都有哪些?
-
Redis 常见的性能问题都有哪些?如何解决?
-
Redis 最适合的场景
二 . 阿里P6(技术主管)
工作要求:
能独立解决问题,制定系统的技术实现方案,考核会涉及部分技术深度。
技能要求:
除P5的技能外,还需掌握以下技能,以下技能至少需要做到熟悉。
架构设计,运维能力,操作系统。
1.数据结构、jvm、锁等:
-
自我介绍和项目
-
HashMap底层如何实现?
-
Hash一致算法?
-
说说HashMap和ConcurrentHashMap的区别?treemap和HashMap的区别?
-
java的内存分区?
-
java对象的回收方式,回收算法?
-
CMS和G1了解吗?
-
CMS解决什么问题,说一下回收的过程?
-
CMS回收停顿了几次?
-
java栈什么时候会内存溢出,java堆呢,说一种场景?
-
集合类如何解决这个问题(软引用和弱引用),讲下这个两个引用的区别?
-
java里的锁了解哪些?
-
synchronized锁升级的过程(偏向锁到轻量锁再到重量级锁),分别如何实现的,解决的是哪些问题?
-
Tomcat的基本架构是什么?
-
什么是类加载器?
-
说说双亲委派模型机制?
-
GC的机制是什么?GC算法和回收策略?
-
未来的职业规划?
2.线程、数据库、缓存、协议等:
-
讲一下项目
-
线程池由哪些组件组成?
-
有哪些线程池,分别怎么使用?拒绝策略有哪些?
-
什么时候多线程会发生死锁,写一个例子?
-
Redis的数据结构是什么?线程模型说一下?
-
讲讲Redis的数据淘汰机制?
-
说说Redis的数据一致性问题?
-
Redis的分布式怎么做?
-
RPC讲一下?
-
三次握手和四次挥手?如果没有三次握手有问题吗?
-
Http请求过程,DNS解析的过程?
-
InnoDB支持的四种事务隔离级别名称是什么?有什么区别?说说MySQL隔离级别?
-
事务的特性及慢查询?
-
BTree机制说一下?
-
说说MySQL常用的优化方法?
3.分布式,消息队列等:
-
自我介绍
-
cap了解吗,分别指什么?
-
强一致性和弱一致性有什么方法来实现的?
-
负载均衡怎么实现?为什么这么做?
-
缓存雪崩说下?
-
MySQL主从复制怎么实现的?具体原理是什么?有什么优缺点?
-
讲讲分布式事务?
-
消息队列,用到什么场景(削峰,限流,异步)?
-
zk的性能瓶颈怎么克服?
-
讲了下kafka,怎么保证数据不丢失?确保消息不会重复消费?
-
消息送达确认是怎么实现的?
4.从项目讲起:
-
说了自己的项目
-
主要用到的架构,做了些什么?
-
比较复杂的业务逻辑讲一下?
-
遇到很难解决的问题和突破收货
-
以后的打算和未来的职业发展,谈谈自己的看法
5.并发编程:
-
什么是多线程并发和并行?
-
什么是线程安全问题?
-
什么是共享变量的内存可见性问题?
-
什么是Java中原子性操作?
-
什么是Java中的CAS操作,AtomicLong实现原理?
-
什么是Java指令重排序?
-
Java中Synchronized关键字的内存语义是什么?
-
Java中Volatile关键字的内存语义是什么?
-
什么是伪共享,为何会出现,以及如何避免?
-
什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?
-
讲讲ThreadLocal 的实现原理?
-
ThreadLocal 作为变量的线程隔离方式,其内部是如何做的?
-
说说InheritableThreadLocal 的实现原理?
-
InheritableThreadLocal 是如何弥补 ThreadLocal 不支持继承的特性?
-
CyclicBarrier内部的实现与 CountDownLatch 有何不同?
-
随机数生成器 Random 类如何使用 CAS 算法保证多线程下新种子的唯一性?
-
ThreadLocalRandom 是如何利用 ThreadLocal 的原理来解决 Random 的局限性?
-
Spring 框架中如何使用 ThreadLocal 实现 request scope 作用域 Bean?
-
并发包中锁的实现底层(对AQS的理解)?
-
讲讲独占锁 ReentrantLock 原理?
-
谈谈读写锁 ReentrantReadWriteLock 原理?
-
StampedLock 锁原理的理解?
-
谈下对基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理的理解?
-
ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全?
-
基于链表的阻塞队列 LinkedBlockingQueue 原理。
6.JVM
-
Java 内存分配?
-
Java 堆的结构是什么样子的?
-
什么是堆中的永久代(Perm Gen space)?
-
简述各个版本内存区域的变化?
-
说说各个区域的作用?
-
Java 中会存在内存泄漏吗,简述一下?
-
Java 类加载过程?
-
描述一下 JVM 加载 Class 文件的原理机制?
-
什么是类加载器?
-
类加载器有哪些?
-
什么是tomcat类加载机制?
-
类加载器双亲委派模型机制?
-
什么是GC? 为什么要有 GC?
-
简述一下Java 垃圾回收机制?
-
如何判断一个对象是否存活?
-
垃圾回收的优点和原理,并考虑 2 种回收机制?
-
垃圾回收器的基本原理是什么?
-
垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
-
深拷贝和浅拷贝?
-
System.gc() 和 Runtime.gc() 会做些什么?
-
如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
-
什么是分布式垃圾回收(DGC)?它是如何工作的?
7.Spring
-
为什么需要代理模式?
-
讲讲静态代理模式的优点及其瓶颈?
-
对Java 接口代理模式的实现原理的理解?
-
如何使用 Java 反射实现动态代理?
-
Java 接口代理模式的指定增强?
-
谈谈对Cglib 类增强动态代理的实现?
-
point cut,advice,Join point是什么?
-
join point 和 point cut 的区别?
-
怎么理解面向切面编程的切面?
-
谈谈对SpringAOP Weaving(织入)的理解?
-
谈谈SpringAOP Introduction(引入)的理解?
-
讲解OOP与AOP的简单对比?
-
讲解JDK 动态代理和 CGLIB 代理原理以及区别?
-
讲解Spring 框架中基于 Schema 的 AOP 实现原理?
-
讲解Spring 框架中如何基于 AOP 实现的事务管理?
-
谈谈对控制反转的设计思想的理解?
-
怎么理解 Spring IOC 容器?
8.数据库
-
MySQL 有哪些存储引擎啊?都有什么区别?
-
Float、Decimal 存储金额的区别?
-
Datetime、Timestamp 存储时间的区别?
-
Char、Varchar、Varbinary 存储字符的区别?
-
什么是索引?
-
对比一下B+树索引和 Hash索引?
-
MySQL索引类型有?
-
如何管理 MySQL索引?
-
对Explain参数及重要参数的理解?
-
索引利弊是什么及索引分类?
-
二叉树的转置是什么?
-
聚簇索引和非聚簇索引的区别?
-
B+tree 如何进行优化?索引遵循哪些原则?存储引擎会进行哪些自动优化?到底何时索引会失效?
-
索引与锁有什么关系?
-
还有什么其他的索引类型,各自索引有哪些优缺点?
-
谈谈对Innodb事务的理解?
-
说说数据库事务特点及潜在问题?
-
什么是MySQL隔离级别?
-
有多少种事务失效的场景,如何解决?
9.缓存
-
redis数据结构有哪些?
-
Redis缓存穿透,缓存雪崩?
-
如何使用Redis来实现分布式锁?
-
Redis的并发竞争问题如何解决?
-
Redis持久化的几种方式,优缺点是什么,怎么实现的?
-
Redis的缓存失效策略?
-
Redis集群,高可用,原理?
-
Redis缓存分片?
-
Redis的数据淘汰策略?
-
redis队列应用场景?
-
分布式使用场景(储存session)?
10 .网络编程
-
TCP建立连接和断开连接的过程?
-
HTTP协议的交互流程,HTTP和HTTPS的差异,SSL的交互流程?
-
TCP的滑动窗口协议有什么用?
-
HTTP协议都有哪些方法?
-
Socket交互的基本流程?
-
讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)?
-
webservice协议(wsdl/soap格式,与restt办议的区别)?
-
说说Netty线程模型,什么是零拷贝?
-
TCP三次握手、四次挥手?
-
DNS解析过程?
-
TCP如何保证数据的可靠传输的?
11.分布式
-
什么是CAP定理?
-
说说CAP理论和BASE理论?
-
什么是最终一致性?最终一致性实现方式?
-
什么是一致性Hash?
-
讲讲分布式事务?
-
如何实现分布式锁?
-
如何实现分布式 Session?
-
如何保证消息的一致性?
-
负载均衡的理解?
-
正向代理和反向代理?
-
CDN实现原理?
-
怎么提升系统的QPS和吞吐?
-
Dubbo的底层实现原理和机制?
-
描述一个服务从发布到被消费的详细过程?
-
分布式系统怎么做服务治理?
-
消息中间件如何解决消息丢失问题?
-
Dubbo的服务请求失败怎么处理?
-
对分布式事务的理解?
-
如何实现负载均衡,有哪些算法可以实现?
-
Zookeeper的用途,选举的原理是什么?
-
讲讲数据的垂直拆分水平拆分?