一. 基础知识
- JDK 的安装和 PATH 配置
- JDK 中最常用的的两个命令 javac 和 java 的基本使用和常用参数用途(比如:-classpath,-encoding)
- 基本语法的了解与使用:数据类型(int,long,float,double,boolean,byte,char,short),数组,方法定义,类定义,流程控制,包 的用途
二. 面向对象
- 熟悉 类,抽象类,接口 的作用与使用
- 掌握 继承、封装 和 多态 三个概念
- private,default,public,protected 几个关键字的用途
练习:
了解 策略模式,实现以下功能:
- 定义接口
Calculator
,它包含一个方法double calculate(double[] nums)
- 定义类
SumCalculator
,实现Calculator
接口,calculate
方法实现为 求数组的和;定义AverageCalculator
类,实现Calculator
接口,实现方法为 求数组的平均值;定义VarianceCalculator
类,实现Calculator
接口,实现方法为 求数组的方差 - 定义
Main
类,包含static Calculator getCalculator(char c)
和main
方法。在main
方法中,通过Scanner
类从控制台获得输入。每次输入包括 n(数组长度),n 个数(数组内容),c(操作,可以有 's','a' 和 'v',分别表示求和,求平均值,求方差);getCalculator(char c)
方法通过输入的操作返回对应的Calculator
,在main
方法中使用返回的Calculator
计算对应的结果。例如:
10 // n
1 2 3 4 5 6 7 8 9 10 // n 个数
s // 操作
55 // 输出
三. 熟悉最常用的基础类
- Object,以及在 Object 中定义的每个方法的用途
- System.out 类,print、println 和 printf 三个方法的使用
- String,StringBuilder,了解 String 类和 StringBuilder 的区别
- Arrays 类(操作数组的工具类,提供了各种数组相关的操作)
- Comparable 和 Comparator,如何使用这两个接口配合 Arrays 工具类在 Java 中对数组排序
- Scanner 类,如何使用 Scanner 从控制台进行输入
四. 集合与泛型
- 掌握什么是泛型和在 Java 中如何实现泛型,明白 “擦除法泛型” 的实现原理。
- 熟悉基本的集合类的用途和用法,以及它们之间的关系。基本集合类包括 Iterable,Iterator,Collection 以及:
接口 | List | Queue | Map | Set |
---|---|---|---|---|
实现类 | ArrayList | ArrayDeque | HashMap | HashSet |
实现类 | LinkedList | PriorityQueue | LinkedHashMap | LinkedHashSet |
- 熟悉工具类 Collections 的各个方法,例如 sort,binarySearch,reverse,shuffle 等等。
五. 异常
- 掌握受检(Checked)异常 和 非受检(Unchecked)异常
- 掌握如何捕获异常,抛出异常,包装受检异常为非受检异常以及自定义异常
六. 文件与 IO
掌握 装饰者模式 的概念和基本输入输出流类的使用方法:
基本输入流相关类 | 基本输出流相关类 |
---|---|
InputStream | OutputStream |
FileInputStream | FileOutputStream |
DataInputStream | DataOutputSteam |
BufferedInputStream | BufferedOutputStream |
Reader | Writer |
InputStreamReader | OutputStreamWriter |
BufferedReader | BufferedWriter |
Scanner | PrintWriter |
- 如何使用 Scanner 类从控制台输入,如何输出 int,如何输入 double,如何输入 String
- File 类的作用和使用方法,使用 File 类获得文件的各种信息;使用 File 类分别深度优先和广度优先遍历一个文件夹
- 字节流(InputStream,OutputStream)和字符流(Reader,Writer)的区别
- 使用 FileInputStream 和 FileOutputStream 复制文件,使用 BufferedInputStream 和 BufferedOutputStream 复制文件,并对比二者的效率
- 掌握 RandomAccessFile 的使用
七. 网络
- 掌握 InetAddress,SocketAddress,Socket 和 ServerSocket 的用途及使用方法(TCP ),实现在局域网内通信(发送消息和文件)
- 掌握 URL 和 HttpURLConnection的用途及用法(HTTP),实现从互联网下载某个指定网址的资源(比如某张互联网上的图片)
- DatagramSocket,DatagramPacket 和 MulticastSocket 的用途及用法(UDP),实现局域网内的广播和多播通信
八. 多线程
- 熟悉 Thread 和 Runnable 的用途及用法;如何停止(interrupt)一个线程;同步关键字 synchronized 的用途。
(1)使用 Thread 和 Runnable,结合 RandomAccessFile 并行的从网络上下载文件
(2)使用 wait 和 notify(notifyAll),结合 synchronized 关键字,实现生产者消费者模式。 - 熟悉 Callable,Future,FutureTask 的用途及用法,并行的计算 1~n 的乘积
- 熟悉常用的并发工具类的使用,包括 CountDownLatch(倒计数门闩),BlockingQueue(阻塞队列),Semaphore(信号量)
- 熟悉线程池概念和基本使用,相关类有 ExecutorService,ThreadPoolExecutor,ScheduledExecutorService,ScheduledThreadPoolExecutor,Executors,ForkJoinPool
九. JDBC(Java Database Connection)
- 如何获得一个 Connection(数据库连接)
- 使用 Statement 对数据库进行数据的 增删改查
- 使用 PreparedStatement 对数据库进行数据的 增删改查
- 添加一条新的数据后,如何获得该条数据的主键
- 了解数据库连接池的概念与相关库(c3p0,DBCP)
十. 反射
- 熟悉 Class 类对应的方法,如何使用 Class 获得一个类有哪些属性(Field),有哪些方法(Method),有哪些注解(Annotation)
- 掌握如何使用反射来创建对象,并调用该对象的方法
- 掌握 JDK 中的代理模式的使用,了解 AOP(Aspect Oriented Programming,面向切面编程) 的概念