前言:
阿里可以说是互联网 java 公司的标杆了,这份面试题包含了 Java 基础(JavaSE 基础)常考知识点
这些基础知识题的答案也都还不错。除了这个还有集合 Hashtable/HashMap 等集合常考的面试题,这些问题一定要会,还有就是 JVM 知识点
JVM 包括运行区域划分/常考的 JVM 算法需要会等,除了这些就是计算机网络(TCP 的三次握手/四次挥手/http 常见状态码)(TCP 的三次握手/四次挥手/http 常见状态码/TCP 的一些重要特性/TCP/UDP 的区别等等等)
操作系统(常见的系统调度算法/select/epoll 的区别/线程进程的区别,要学会自己去理解到位)
数据库(mysql 的两种常见引擎的区别/索引的种类/索引的原理等等等)
Java 基础
-
String 类为什么是 final 的?
-
HashMap 的源码,实现原理,底层结构。
-
反射中,Class.forName 和 classloader 的区别。
-
session 和 cookie 的区别和联系,session 的生命周期,多个服务部署时 session 管理。
-
Java 中的队列都有哪些,有什么区别。
-
Java 的内存模型以及 GC 算法。
-
Java7、Java8 的新特性。
-
Java 数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高。
-
Java 内存泄露的问题调查定位:jmap,jstack 的使用等等。
Java 面试题:Java 基础知识解析
Java 面试题:Java 基础知识解析
Spring 框架
-
spring 框架中需要引用哪些 jar 包,以及这些 jar 包的用途。
-
srpingMVC 的原理。
-
springMVC 注解的意思。
-
spring 中 beanFactory 和 ApplicationContext 的联系和区别。
-
spring 注入的几种方式。
-
spring 如何实现事物管理的。
-
springIOC 和 AOP 的原理。
-
spring 中循环注入的方式。
-
Spring AOP 与 IOC 的实现原理。
-
Spring 的 beanFactory 和 factoryBean 的区别。
-
Spring 的事务隔离级别,实现原理。
-
对 Spring 的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop 的实现原理,说说 aop 中的几个术语,它们是怎么相互工作的?
-
spring boot 特性,优势,适用场景等。
阿里面试题:spring 框架原理解析
阿里面试题:spring 框架原理解析
Java 多线程常见问题
-
Java 创建线程之后,直接调用 start()方法和 run()的区别。
-
常用的线程池模式以及不同线程池的使用场景。
-
newFixedThreadPool 此种线程池如果线程数达到最大值后会怎么办,底层原理。
-
多线程之间通信的同步问题,synchronized 锁的是对象,衍伸出和 synchronized 相关很多的具体问题,例如同一个类不同方法都有 synchronized 锁,一个对象是否可以同时访问。或者一个类的 static 构造方法加上 synchronized 之后的锁的影响。
-
了解可重入锁的含义,以及 ReentrantLock 和 synchronized 的区别。
-
同步的数据结构,例如 concurrentHashMap 的源码理解以及内部实现原理,为什么他是同步的且效率高?
-
atomicinteger 和 volatile 等线程安全操作的关键字的理解和使用。
-
线程间通信,wait 和 notify。
阿里面试题:Java 多线程解析
阿里面试题:Java 多线程解析
网络通信
-
http 是无状态通信,http 的请求方式有哪些?可以自己定义新的请求方式么?
-
socket 通信,以及长连接,分包,连接异常断开的处理。
-
socket 通信模型的使用,AIO 和 NIO。
-
socket 框架 netty 的使用,以及 NIO 的实现原理,为什么是异步非阻塞?
-
同步和异步,阻塞和非阻塞。
阿里面试题:网络通信方面解析
阿里面试题:网络通信方面解析
常用 Linux 命令
-
常用的 linux 下的命令。
-
大的 log 文件中,统计异常出现的次数、排序,或者指定输出多少行多少列的内容。
-
linux 下的调查问题思路:内存、CPU、句柄数、过滤、查找、模拟 POST 和 GET 请求等等场景。
-
shell 脚本。
数据库 MySql
-
MySql 的存储引擎的不同。
-
单个索引、联合索引、主键索引。
-
Mysql 怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解)。
-
分表之后想让一个 id 多个表是自增的,效率实现。
-
MySql 的主从实时备份同步的配置,以及原理(从库读主库的 binlog),读写分离。
-
事物的四个特性,以及各自的特点(原子、隔离)等等,项目怎么解决这些问题。
阿里面试题:数据库反面解析:
阿里面试题:数据库反面解析:
算法 &数据结构 &设计模式
-
使用随机算法产生一个数,要求把 1-1000W 之间这些数全部生成。(考察高效率,解决产生冲突的问题)。
-
两个有序数组的合并排序。
-
一个数组的倒序。
-
计算一个正整数的正平方根。
-
说白了就是常见的那些查找排序算法。
-
数组和链表数据结构描述,各自的时间复杂度。
-
二叉树遍历。
-
快速排序。
-
BTree 相关的操作。
-
在工作中遇到过哪些设计模式,是如何应用的。
-
hash 算法的有哪几种,优缺点,使用场景。
-
什么是一致性 hash?
-
paxos 算法。
阿里面试题: Java 算法 &设计模式解析
阿里面试题: Java 算法
设计模式解析
分布式缓存
-
为什么用缓存,用过哪些缓存,redis 和 memcache 的区别。
-
redis 的数据结构。
-
redis 的持久化方式,以及项目中用的哪种?为什么?
-
redis 集群的理解,怎么动态增加或者删除一个节点,而保证数据不丢失?(一致性哈希问题)
阿里面试题:分布式缓存解析
阿里面试题:分布式缓存解析
线程池、高并发、NIO
-
分析线程池的实现原理和线程的调度过程。
-
线程池如何调优。
-
线程池的最大线程数目根据什么确定。
-
动态代理的几种方式。
-
HashMap 的并发问题。
-
了解 LinkedHashMap 的应用吗?
-
反射的原理,反射创建类实例的三种方式是什么?
-
cloneable 接口实现原理,浅拷贝 or 深拷贝。
-
Java NIO 使用。
-
hashtable 和 hashmap 的区别及实现原理,hashmap 会问到数组索引,hash 碰撞怎么解决?
-
arraylist 和 linkedlist 区别及实现原理。
-
反射中,Class.forName 和 ClassLoader 区别。
-
String,Stringbuffer,StringBuilder 的区别。
-
有没有可能 2 个不相等的对象有相同的 hashcode。
-
简述 NIO 的最佳实践,比如 netty,mina。
-
TreeMap 的实现原理。
Java 面试题:多线程并发分析
Java 面试题:多线程并发分析
JVM 相关(面试必考)
-
JVM 内存分代。
-
Java 8 的内存分代改进。
-
JVM 垃圾回收机制,何时触发 MinorGC 等操作。
-
jvm 中一次完整的 GC 流程(从 ygc 到 fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的 jvm 参数等。
-
你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms,g1。
-
新生代和老生代的内存回收策略。
-
Eden 和 Survivor 的比例分配等。
-
深入分析了 Classloader,双亲委派机制。
-
JVM 的编译优化。
-
对 Java 内存模型的理解,以及其在并发中的应用。
-
指令重排序,内存栅栏等。
-
OOM 错误,stackoverflow 错误,permgen space 错误。
-
JVM 常用参数。
阿里面试:JVM 面试解析
阿里面试:JVM 面试解析
Redis&缓存相关
-
Redis 的并发竞争问题如何解决了解 Redis 事务的 CAS 操作吗?
-
缓存机器增删如何对系统影响最小?一致性哈希的实现。
-
Redis 持久化的几种方式?优缺点是什么?怎么实现的?
-
Redis 的缓存失效策略。
-
缓存穿透的解决办法。
-
redis 集群,高可用,原理。
-
mySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据。
-
用 Redis 和任意语言实现一段恶意登录保护的代码,限制 1 小时内每用户 Id 最多只能登录 5 次。
-
redis 的数据淘汰策略。
阿里面试题:Redis&缓存相关解析
阿里面试题:Redis&缓存相关解析
阿里面试宝典分享:
这一份阿里面试宝典,其中含括的知识点:VM、锁、高并发、反射、Spring 原理、微服务、Zookeeper、数据库、数据结构等等! 如果你刚好需要这样一份面试宝典的话!
小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。
原文出处:xie.infoq.cn/article/82c0b9a96a9e032b669abd98c