Você está na página 1de 5

Avaliação Desenvolvedor JAVA Sênior

Nome

Instruções

• A avaliação pode ser resolvida a lápis;


• Você não precisa responder as questões em ordem, mas escreva Questão i antes de
responder a i-ésima questão;
• O entendimento dos enunciados é parte da avaliação;
• Procure responder às questões de forma clara e limpa;
• Não é permitido qualquer tipo de consulta;
• A duração máxima da avaliação é de 3 horas.

Importante

As questões 2 e 3 podem ser resolvidas utilizando uma linguagem de programação de sua


preferência ou pseudocódigo (como, por exemplo, português-estruturado). Para cada uma
dessas questões, você pode escrever outras funções auxiliares caso julgue necessário.

Este material é propriedade da TOTVS S.A. Página 1 de 5


É proibida a sua utilização, reprodução total ou parcial sem prévia e expressa autorização.
 2013 TOTVS – Todos os direitos reservados
Avaliação Desenvolvedor JAVA Sênior

Questões:

Questão 1 In computer science, a binary search tree (BST), which may sometimes also be
called an ordered or sorted binary tree, is a node-based binary tree data structure which has
the following properties:
• The left subtree of a node contains only nodes with keys less than the node's key.
• The right subtree of a node contains only nodes with keys greater than the node's key.
• Both the left and right subtrees must also be binary search trees.
• There must be no duplicate nodes.

A figura acima demonstra uma BST onde cada nó possui um número inteiro como valor de sua
chave. Escreva um código Java que seja capaz de:

a) Construir a BST da figura 1 utilizando como entrada o seguinte array de inteiros: [15, 10,
12, 3, 20, 17].

b) Retornar o menor número de chave dos nós da BST.

Este material é propriedade da TOTVS S.A. Página 2 de 5


É proibida a sua utilização, reprodução total ou parcial sem prévia e expressa autorização.
 2013 TOTVS – Todos os direitos reservados
Avaliação Desenvolvedor JAVA Sênior

Questão 2 Um número natural é um número primo quando ele tem exatamente


dois divisores distintos: o número um e ele mesmo. Escreva uma função que recebe um
número inteiro n maior que zero e calcula a soma dos números primos entre zero e n.

Questão 3 Considere a seguinte recorrência:

F1 = 2; G1 = 1;
F2 = 1; G2 = 2;
Fi = 2 * Fi – 1 + Gi – 2, para i >= 3; Gi = Gi – 1 + 3 * Fi – 2, para i >= 3;

Escreva uma função recursiva que recebe como parâmetro um número inteiro positivo i (maior
ou igual a 1) e devolve o valor de Fi.

Este material é propriedade da TOTVS S.A. Página 3 de 5


É proibida a sua utilização, reprodução total ou parcial sem prévia e expressa autorização.
 2013 TOTVS – Todos os direitos reservados
Avaliação Desenvolvedor JAVA Sênior

Questão 4 Forneça a saída do seguinte programa ao executar a classe Principal:

public class Numero {


private int n;

public Numero (int n) {


this.n = n;
}

public int getNum() {


return n;
}

public void setNum (int n) {


this.n = n;
}
}

public class Principal {


public static void main (String args[]) {
Numero n1 = new Numero(3);
Numero n2 = new Numero(4);

System.out.println ("n1: " + n1.getNum() + "; n2: " + n2.getNum());

trocaNums (n1, n2);

System.out.println ("n1: " + n1.getNum() + "; n2: " + n2.getNum());

alteraNum (n1, 5);

System.out.println ("n1: " + n1.getNum());

alteraNumNovo (n1, 5);

System.out.println ("n1: " + n1.getNum());


}

private static void trocaNums (Numero n1, Numero n2) {


Numero temp = n1;
n1 = n2;
n2 = temp;
}

private static void alteraNum (Numero n, int numNovo) {


n = new Numero (numNovo);
}

private static void alteraNumNovo (Numero n, int numNovo) {


n.setNum (numNovo);
}
}

Este material é propriedade da TOTVS S.A. Página 4 de 5


É proibida a sua utilização, reprodução total ou parcial sem prévia e expressa autorização.
 2013 TOTVS – Todos os direitos reservados
Avaliação Desenvolvedor JAVA Sênior

Questão 5 Explique o que é imutabilidade e comente sobre seus benefícios e dificuldades.

Questão 6 Explique um dos design patterns abaixo, exibindo um exemplo de seu uso através
de um diagrama de classes. Sua resposta pode conter código Java, mas isso não é obrigatório.
Explicar mais de um dos designs patterns abaixo contará como bônus.
a) Strategy
b) Composite
c) Decorator
d) Observer
e) State
f) Visitor
g) Template method
h) Chain of responsibility

Questão 7 Explique o que é uma transação de banco de dados.

Questão 8 Ao realizar persistência de objetos em bancos de dados relacionais, torna-se


necessário utilizar soluções para os “gaps” entre conceitos de orientação e objetos e de
modelagem relacional. Comente sobre que estratégias podem ser utilizadas para mapear o
conceito de herança para uma modelagem relacional.

Questão 9 Explique resumidamente como funciona o ciclo de vida do JSF.

Questão 10 (bônus) Explique qual é o papel dos converters na arquitetura do JSF.

Questão 11 Compare dois frameworks de sua preferência que implementem o padrão MVC,
destacando seus pontos fortes e fracos.

Questão 12 Explique o que pode ser feito em um código Java para escalar verticalmente uma
aplicação Java EE, obtendo um melhor aproveitamento de hardware.

Este material é propriedade da TOTVS S.A. Página 5 de 5


É proibida a sua utilização, reprodução total ou parcial sem prévia e expressa autorização.
 2013 TOTVS – Todos os direitos reservados

Você também pode gostar