Java认证考试有几个等级?

Junior/Novice(初级/入门级/小白级) -> Associate(助理级/中级) -> Professional(专业级/高级)

Oracle 的体系是有不同的路径,例如 Java 8, Java 11, 数据库,中间件等,路径内包含认证,以及获得某个认证需要通过的考试/培训。

基于 JDK 1.8 的有:

小白级 Java Foundations 1Z0-811 :
基本上面向无基础小白,很少人考这个吧,不过这个报名费便宜,¥682 (不含税)。

助理级 Java SE 8 Programmer I 1Z0-808 :
可以理解为中级吧,这个花一两周准备就可以过了。过了就可获得 OCA 认证。报名费 ¥1077(不含税)。

专业级 Java SE 8 Programmer II 1Z0-809 :
考 JDK 高级特性,同时通过 1Z0-808 和 1Z0-809 才能获得 OCP 认证。报名费也是 ¥1077(不含税)。

基于 JDK 11 的有:

只有一个认证,即 Oracle Certified Professional: Java SE 11 Developer,可以理解为 Java 11 的 OCP。因为这个路径 Oracle 要求通过 1Z0-815 + 1Z0-816 才可以获得认证,也就是至少要考两次试,两次的报名费都是 1107。另外如果之前已经获得过 SCJP 6 (Sun 时代的 Java 认证,相当于 Java 6 高级)或 OCP 7, OCP 8,则可以考 1Z0-817(给旧证持有者升级到 Java 11认证的考试,相对 1Z0-816 来说考点内容可能少一些)。

所以要获得 OCP 11 认证,要通过的考试可以是以下组合:

1Z0-815 + 1Z0-816(正常的新路线,Java 11 中级 + Java 高级)
1Z0-808 + 1Z0-816 (Java 8 中级 + Java 11 高级,我走的是这条路线)
旧 OCP 持有者(例如1Z0-809) + 1Z0-817

不过1Z0-815/816 这条线在 2020-10-01 后会被废弃,改用新大纲,1Z0-819,到时候要求可能变了,不过知识点可能差不多。

在新大纲未启用前,1Z0-816 考试应该是有史以来难度最大的,80 到不定项选择题,考试时长 180 分钟。下边是我翻译的考试大纲:

Java 基础
创建并使用final
创建并使用内部,嵌套,以及匿名类
创建并使用枚举

Java 接口
创建并使用带有默认方法的接口
创建并使用带有私有方法的接口
函数式接口与 Lambda 表达式
定义并编写函数式接口
创建并使用 Lambda 表达式,包括 Lambda 语句,局部变量作 lambda 参数

内置函数式接口
使用java.util.function包里的接口
使用核心函数式接口,包括Predicate,Consumer,FunctionSupplier
使用java.util.function包里基础接口的基本数据类型及二元变式

迁移到模块化应用
迁移使用 Java SE 9 以前版本开发的应用到 SE 11,包括自上而下和自下而上迁移方式,将一个 Java SE 8 应用分模块作迁移
使用jdeps确定依赖关系,并识别解决循环依赖的方法。

并发
使用RunnableCallable创建工作线程,并使用ExecutorService并发地执行任务
使用java.util.concurrent包里的容器和类,包括CyclicBarrierCopyOnWriteArrayList
编写线程安全的代码
识别线程问题,例如死锁和活锁

I/O (基础以及 NIO2)
使用 I/O 流从控制台和文件读写数据
使用 I/O 流读写文件
使用序列化读写对象
使用Path接口操作文件和目录路径
使用Files类去检查、删除、复制或移动一个文件或目录
结合Files类使用 Stream API

JDBC 数据库应用
使用 JDBC URLs 和DriverManager连接到数据库
使用PreparedStatement去执行 CRUD 操作
使用PreparedStatementCallableStatementAPIs 去执行数据库操作

注解
表述注解的用途以及典型使用模式
应用注解到类和方法
描述 JDK 中常用的注解
声明自定义注解
异常处理与断言
使用 try-with-resources 结构
创建并使用自定义异常类
使用断言测试不变性

泛型与容器(Collections Framework)
使用包装类,自动装箱和自动拆箱
用钻石记号和通配符创建并使用泛型类、方法
描述容器框架并使用主要容器接口
使用ComparatorComparable接口
创建并使用容器的便利方法

Java Stream API
描述 Stream 接口和管道
使用 lambda 表达式和方法引用
Streams 上的 Lambda 操作
使用map,peekflatMap方法提取 stream 数据
使用findFirst,findAny,anyMatch,allMatchnoneMatch方法搜索 stream 数据
使用Optional
使用count,max,min,averagesumstream 操作执行计算
使用 lambda 表达式对容器排序
在 streams 使用Collectors,包括groupingBypartitioningBy操作

模块化应用中的服务
描述服务的组件,包括指令
设计一个服务类型,使用ServiceLoader加载服务,检查服务的依赖,包括消费者和提供者模块

并行 Streams
编写使用并行 streams 的代码
用 streams 实现分解与归约操作

Java SE 应用安全编码
在 Java 应用中预防拒绝服务
在 Java 应用中保护机密信息
实现数据一致性准则——注入和包含以及输入校验
通过限制可访问性和可扩展性保护代码受外部攻击,妥善处理输入校验以及可变性
安全地构建敏感对象
保护序列化与反序列化

本地化
使用Locale
使用资源包
使用 Java 格式化消息、日期和数字

来源:https://www.zhihu.com/question/376236220/answer/1467119394

评论

此博客中的热门博文

Tailscale 开源版中文部署指南(支持无限设备数、自定义多网段 、自建中继等高级特性)

iOS任意版本号APP下载(含itunes 12.6.5.3 最后带AppStore版本)

关于 N1 旁路由的设置

Mifare Classic card(M1卡)破解过程记录(准备+理论+获取扇区密钥+数据分析)

Blogger搭建国内可正常访问博客(超详细教程)

一些免费的云资源

打造一个可国内访问的Blogger(Blogspot)方法

使用杜威十进制分类法构建自己的笔记系统(也可用于文件夹分类)

百度站长平台中接入Blogger博客

Mifare Classic card(M1)卡破解过程