No início de outubro, a Oracle tornou mais fácil obter a certificação Java - em vez de dois exames, agora você precisa fazer um, enquanto o preço do exame não mudou. Quem está interessado no nível das tarefas e em mais detalhes sobre o exame, pergunto abaixo do corte - descreverei por que decidi fazer, como me preparei, que dúvidas tive e que conclusões tirei.
Em outubro, vi a notícia de que a Oracle está lançando um novo exame, 1z0-819, para substituir os antigos 1z0-815 e 1z0-816. Anteriormente, para se tornar um Oracle Certified Professional, você precisava passar em dois exames e gastar um total de $ 300. Agora, o valor foi reduzido pela metade. Além disso, o número de questões mudou, se antes havia 80 questões em cada exame e 150 minutos foram alocados para isso, agora o exame dura 90 minutos e contém 50 questões cobrindo todos os tópicos dos exames anteriores. A maioria das perguntas pode ter várias respostas corretas.
Comecemos com os objetivos que persegui: como tenho formação em física e também estudei java, na minha opinião, esta certificação pode ajudar a estruturar o meu conhecimento em java, e também tenho um documento que confirma que posso ...
Como registrar? Registre-se com um parceiro Oracle pearsonvue.com, vincule uma conta Oracle, escolha como obtê-la - no centro ou em casa. Se a opção de casa for selecionada, eles o seguirão pela câmera e pelo microfone durante todo o exame, não deve haver ninguém na sala, você não pode falar com ninguém e apenas olhar para a tela, a Internet deve estar estável, sem interrupções, caso contrário, o resultado é cancelado. Optei por alugar em centro especializado, então é mais silencioso.
Que materiais podem ajudar na preparação? Se você tiver alguma experiência em programação, recomendo usar o Guia de Estudo do Programador II OCP Oracle Certified Professional Java SE 11: Exame 1Z0-816 e Exame 1Z0-817 por Scott Selikoff, Jeanne BoyarskyEste livro foi escrito para o exame 1z0-816 e cobre a maior parte do exame. Esses autores também têm um livro para se preparar para a primeira parte do último exame 1z0-815, mas é projetado para iniciantes e é francamente enfadonho de ler. Além disso, você pode encontrar simulações de exames na Internet para verificar seus conhecimentos após a leitura do livro.
Quais questões? Apenas 50 questões, que têm 90 minutos, ou seja, menos de 2 minutos por questão. Tem dificuldade, ou seja, às vezes você tem que pensar mais de 2 minutos. Em algumas perguntas, várias respostas corretas são possíveis. Pode haver até 7 respostas no total. É necessário responder corretamente 68% das questões.
Gostaria de chamar a sua atenção. Existem muitas perguntas sobre streams, lambdas e interfaces funcionais.
Você pode ter este tipo de problema:
Você precisa encontrar o erro em qual linha, se houver:
IntStream is = IntStream.of(1, 3, 5);
int x = is.filter(i->i%2 == 0).average(); //1
System.out.println(x);
int y = is.filter( i->i%2 != 0 ).sum();//2
System.out.println(y);
is = IntStream.of(1, 3, 5, 9);
int z = is.filter( i->i%3 != 0 ).count();//3
System.out.println(z);
Da mesma forma, tarefas usando coletores. O que será exibido:
class Student {
public static enum Grade {A, B, C, D, F}
private String name;
private Grade grade;
public Student(String name, Grade grade) {
this.name = name;
this.grade = grade;
}
public String toString() {
return name + ":" + grade;
}
}
class TestClass {
public static void main(String[] args) {
var ls = Arrays.asList(new Student("S1", Student.Grade.A),
new Student("S2", Student.Grade.A),
new Student("S3", Student.Grade.B),
new Student("S4", Student.Grade.C),
new Student("S5", Student.Grade.F));
var group = ls.stream()
.filter(student -> student.getGrade() != Student.Grade.F)
.collect(Collectors.groupingBy(Student::getGrade,
Collectors.mapping(Student::getName, Collectors.toList())));
System.out.println(group);
}
}
Na verdade, essas questões estão entrelaçadas com questões sobre coleções. Por exemplo, você precisa responder o que o código a seguir exibirá na tela, se for compilado:
var collection = new HashSet<>();
collection.add(1);
var list1 = List.of(collection);
collection.add(2);
var list2 = List.copyOf(collection);
System.out.println(list1);
System.out.println(list2);
E como o resultado mudará se em vez da primeira linha escrevermos
var collection = Arrays.asList(1,2,3);
var pode ser usado especificamente para confundir o examinador:
class X {
public void print(List<Integer> lst) {
System.out.println("X list " + lst);
}
}
class Y extends X {
public void print(List<Integer> lst) {
System.out.println("Y list " + lst);
}
}
public class TestClass {
public static void main(String[] args) {
X x = new Y();
Y y = new Y();
var list = new ArrayList<>();
list.add(1);
x.print(list);
y.print(list);
}
}
Você precisa especificar o que será exibido ou indicar que o programa não será compilado ou uma exceção será lançada durante a operação.
Você precisa entender o que acontece durante a herança.
Suponha que um método seja fornecido em uma classe com a seguinte assinatura:
public List<Integer> getCollection() {
return new ArrayList<Integer>();
}
Quais métodos a seguir podem estar na classe herdada?
public List<? super Integer> getCollection() {
return new ArrayList<Integer>();
}
public List<? extends Integer> getCollection() {
return new ArrayList<Integer>();
}
public ArrayList<Integer> getCollection() {
return new ArrayList<Integer>();
}
Existem algumas questões sobre interfaces deste tipo:
interface Bird {
default String fly() {
return "fly";
}
}
interface Parrot extends Bird {
public String fly();
}
public class RainbowParrot implements Parrot {
public static void main(String[] args) {
Bird b = new RainbowParrot();
System.out.println(b.fly());
}
}
Como o programa funcionará neste caso?
Esses tópicos respondem pela maior parte das questões, provavelmente mais de 25. Tópicos de multithreading, trabalho com arquivos, anotações, módulos são apresentados com apenas duas ou três questões cada. Outros tópicos, como trabalhar com jdbc, localização, etc. principalmente em uma questão.
Uma lista completa de tópicos que podem ser incluídos no exame pode ser encontrada aqui .
Separadamente, quero mencionar, já que essa foi uma descoberta para mim - me deparei com duas questões inteiras sobre o uso da API doPrivileged, que nunca tinha visto antes no trabalho. Portanto, vale a pena trabalhar neste tópico separadamente, você pode vê-lo aqui .
Mais uma vez quero chamar a atenção para o fato de que o tempo é seriamente limitado, apesar de ter pulado duas perguntas sobre o tema doPrivilegiado, mal cumpri o tempo previsto.
No aplicativo para entrega, você pode marcar aquelas questões que pareciam difíceis para você e retornar a elas no final. Eu recomendo olhar para o cronômetro, se a pergunta levar mais de dois minutos, pule-a e, se o tempo permitir, volte a ela mais tarde.
Quanto devo preparar?
Se você não é um professor de cursos para desenvolvedores java e vai trabalhar, eu recomendaria reservar um mês para a preparação - alocar uma ou duas horas após o trabalho para isso. Mas é claro que tudo depende do seu nível.
Que conclusões podem ser tiradas?
A preparação para o exame ajuda a estruturar seu conhecimento e ampliar seus horizontes de API. Em particular, descobri alguns aspectos interessantes do trabalho com arquivos.
A certificação pode ser útil para quem trabalha remotamente com clientes estrangeiros - para confirmar o seu nível, e também será uma mais-valia nas entrevistas, pelo menos permitirá que ignore as questões sobre java.