(1)面试
并发、JVM、分布式、TCP/IP协议
1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的。以下简单模拟一个数据结构的连环炮。
- HashMap是不是有序的?
- 不是有序的。有没有有顺序的Map实现类?
- TreeMap和LinkedHashMap。
- TreeMap和LinkedHashMap是如何保证它的顺序的?
- 它们两个哪个的有序实现比较好?
- 还有没有比它更好或者更高效的实现方式?
2)Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。
- 如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?
- 可以用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?
- 你还知道其它的实现方式吗?
- 很多种实现方式的话,那么继续问你,你觉得这些方式里哪个方式更好?
- 你觉得还有比它更好的实现方式吗?
3)IO包和NIO包中的内容,NIO会是重点,IO包大部分都会比较熟悉
- NIO模型要,selector一定要非常清楚它的职责和实现原理
- NIO的核心是IO线程池
- IO包的设计模式(装饰器模式),为什么要这样设计?
4)Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。
一个GC部分简单的连环炮。
①GC部分
- 什么时候一个对象会被GC?
- 什么时候一个对象会被GC?
- 什么要在这种时候对象才会被GC?
- GC策略都有哪些分类?
- 这些策略分别都有什么优劣势?都适用于什么场景?
- 给你举个实际的场景,让你选择一个GC策略?
②类加载机制
- Java的类加载器都有哪些?
- 每个类加载器都加载哪些类?
- 这些类加载之间的父子关系是怎样的?
- 双亲委派模型,什么是双亲委派模型?
- 为什么Java的类加载器要使用双亲委派模型?
- 如何自定义自己的类加载器,自己的类加载器和Java自带的类加载器关系如何处理?
③内存的连环炮。
- 内存分为哪几部分,这些部分分别都存储哪些数据?
- 一个对象从创建到销毁都是怎么在这些部分里存活和转移的?
- 内存的哪些部分会参与GC的回收?
- Java的内存模型是怎么设计的?
- 为什么要这么设计?
5)讲述自己的项目经验,从进到远。重点在遇到问题,怎么解决的
6)其他
- 计算机系统原理
- 网络通信协议(TCP/IP,HTTP等)。
- 数据结构与算法。
- 著名开源项目的源码。
- 你自己有很棒的开源项目。
- 你的个人博客。
7)职位相关技术
(2)java阶段
1)java学习阶段
- java基础,AWT
- HTML/CSS/JS
- Servlet/JSP+Mysql(数据库,SQLYog/Navicat客户端)
Servlet+JSP+Mysql
- 框架开发
- 技术学习Spring,Mybatis
- ssm框架(Spring+SpringMVC+Mybatis)
- +权限,shiro
- ssm+shiro 项目
- SpringBoot以及Spring生态
- 深入理解java,Java编程思想、深入理解Java虚拟机、大话设计模式等等书籍,
3)方向选择
《大型网站技术架构:核心原理与案例分析_李智慧》、《深入理解计算机系统》
《tcp/ip详解 卷一、二、三》、《数据结构与算法》
- 大数据Hadoop(HDFS、HBSE、Zookeeper等等)
- 分布式计算(MapReduce、Storm、Spark)
- 分布式缓存(redis)
- 分布式消息服务
- 软负载均衡
- 搜索引擎(lucene,ElasticSearch等)
- 等等
参考: 阿里社招面试如与Java学习