Olá pessoal,
Fazer este exame da Sun não é tarefa fácil portanto elaborei um roteiro que me ajudou muito na hora da prova, espero que possa ajudar a mais alguém.
a) Verifique as opções de respostas.
- Se oferecerem as Opções: “Não Compila” e/ou “Lança exceção em tempo de execução”.
1.1. Verifique as Declarações de controle de acesso, se o código foi muito grande anote em uma folha de papel o nome do identificador e seu controle de acesso.
1.2. Muito cuidado com membros static (variáveis ou métodos) tentando acessar membros de instância. Costumam ser muito ilusórios.
1.3. Cuidados especiais com métodos subscritos. Lembre-se das regras de retornos covariantes, Exceções checadas e modificadores de acesso.
1.4. Avalie cada linha se questionando sobre tudo. Por exemplo:
Será que eu tenho acesso a x?
Será que x foi realmente herdado? (membros private não são)
Se x é final eu não posso modificá-lo!
Será que eu tenho acesso ao método getMontante()? (membros instância e estáticos)
O que getMontante retorna? Pode ser somado a x? precisa de conversão (Casting)?
1.5. Apesar dos livros não darem muita atenção a este detalhe na prova, mas, Exceções Checadas precisam ser tratadas, portanto verifique se há alguma exceção checada que precisa ser tratada e não está sendo. Se houver um caso desses então não compila.
1.6. Após checar se o código compila, verifique se lança alguma exceção de tempo de execução, as quais não precisam ser tratadas.
1.7. ArrayIndexOutOfBoundsException é lançado quando se tenta acessar algum índice de array que não existe.
1.8. NullPointerException é lançado quando se tenta usar um membro nulo como um objeto.
1.9. ClassCastException é lançado quando se tenta converter um objeto em algo (na mesma hierarquia) que ele não é. Atenção para o “mesma hierarquia”, casting para algo que não está na mesma hierarquia nem compila.
1.10. Runtime Exceptions são muito traiçoeiras e muitas vezes não são óbvias. Tente colocar uma String em um TreeSet de Integers e você terá uma ClassCastException.
1.11. APIs pegam pelo pé. Saiba exatamente que métodos existem em cada API exigida pelo exame e que construtores sobrecarregados elas possuem. Que APIs podem ser instanciadas e que APIs recebem instâncias de métodos estáticos. Quais parâmentros são passados para cada método/construtor. Que exceções podem lançar.
1.12. Se precisar baixe o Jude (ou outro software para UML) e faça o modelo das APIs, com seus argumentos e retornos. Faça setas e aponte quais exceções são lançadas.
1.13. Se preocupe com as APIs de String, StringBuilder, StringBuffer, Coleções, IO, Parsing, Tokenização e Wrappers. Elas são bem extensas
- Se não oferecerem não se preocupe com isso.
b) Se você passou a letra “a” sem encontrar a resposta (não compila ou lança runtime exception) chegou a hora de saber o que acontece no código.
- Agora não tem segredo, precisa conhecer como a linguagem se comporta em certos casos.
- O que acontece quando instanciamos um novo objeto, seu construtor como reage? E as suas superclasses? Blocos init e static em que ordem são carregados?
OBS.: A palavra chave é “Questionamento”. Se pergunte na hora da prova sobre cada detalhe. Não passe como um trator por classes que parecem ser simples, os menores detalhes fazem as grandes diferenças, afinal, não existe meio-certo em múltipla-escolha.
Boa sorte para todos.
[]s