Java学习--我需要掌握的技术

关于专业需要点亮的技能

1. 基本语法

static,final,transient,volatile等关键字

2.集合

List, Map, Set 底层实现原理

ArrayList, LinkedList, Hashtable, HashMap, ConcurrentHashMap,HashSet的实现原理

加分项:
CopyOnWrite容器和Queue

关于ConcurrentHashMap可以衍生出很多问题:
(1)ConcurrentHashMap的锁分段技术
(2)ConcurrentHashMap的读是否要加锁,为什么
(3)ConcurrentHashMap的迭代器是一致性的迭代器还是弱一致性的迭代器

3.设计模式

一般掌握常用的几种设计模式就可以了,涉及到的方面有:
(1)你的项目上都用了哪些设计模式,如何使用
(2)了解常用设计模式的优缺点
(3)能画出常用设计模式的UML图

4.多线程

Thread和Runnable的区别和联系,多次start一个线程会怎么样,线程有哪些状态。
举一个面试例题:
假如有Thread1,Thread2,Thread3,Thread4四条线程分别统计C,D,E,F四个盘的大小,所有线程统计完毕后都交给Thread5线程去做汇总,应当如何实现。

关于线程池:

  • 常用的线程池有几种,这几种线程池有什么区别和联系。
  • 线程池的实现原理是怎么样的。
  • 根据一些具体的场景来判断使用什么样的线程池
  • 多线程同步,锁。
  • synchronized和ReentrantLock的区别,synchronized锁普通方法和锁静态方法,死锁的原理及排查方法。

5.IO

阻塞IO和Socket IO

  • 阻塞/非阻塞的区别
  • 同步/异步的区别
  • 理解阻塞IO,非阻塞IO,多路复用IO,异步IO这四种模型
  • Socket IO如何与上述四种模型关联
  • NIO的原理,属于那种IO模型
  • NIO的三大组成

加分项:Netty和Mina,目前Netty问的较多。

6.JDK源码

总结下比较重要的源码:
(1)List,Map,Set实现类的源代码
(2)ReentrantLock,AQS的源代码
(3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的。
(4)线程池的实现原理
(5)Object类中的方法以及每个方法的作用

7.框架

根据一些场景来描述如何使用框架。
一些框架中的问题:
例如Spring初始化Bean的时候要做一些事情该如何操作,Bean销毁时要做一些事情该怎么做,Mybatis中$和#的区别

8.数据库

数据库性能的优化,建议把SQL基础和SQL优化学习一下。

9.数据结构和算法分析

树结构挺重要的,数据库的索引就是采用树结构实现的。
算法没事还是可以刷一刷leetCode的,没有坏处。

10.Java虚拟机

  1. Java虚拟机的内存布局
  2. GC算法及几种垃圾收集器
  3. 类加载机制,也就是双亲委派模型
  4. Java内存模型
  5. happens-before规则
  6. volatile关键字使用规则

11.Web方面的一些问题

  • session的几种实现方式
  • session和cookie的区别和联系,session的实现原理
  • 对Filter,Servlet,Listener的原理
  • get/post的区别,forward/重定向的区别,HTTPS的实现原理
  • 一致性Hash算法

补充

  • SOA技术
  • RPC技术

你可能感兴趣的:(Java学习--我需要掌握的技术)