You are on page 1of 5

 

                                     Questionário  de  pré-­‐avaliação  –  Programador  C#  

1.  Você  é  um  programador  c#  na  empresa  3XY  Tecnologia  e  o  seu  líder  de  equipe  lhe  entregou  
o  código  abaixo  reclamando  que  por  alguma  razão  o  código  não  compila  exibindo  a  mensagem  
“Índice  (baseado  em  zero)  deve  ser  maior  ou  igual  a  zero  e  menor  que  o  tamanho  da  lista  de  
argumentos”.  O  que  está  ocasionando  o  erro  acima?  

1   int numerador = 10;


2   int denominador = 2;
 
3   int resultado = numerador / denominador;
 
4   Console.Write("O resultado da expressão {0} multiplicado por {1} é
5   {2}.", denominador, numerador); Console.WriteLine(resultado);
 
a)  A  linha  3  deveria  ser  int resultado = denominador * numerador;
b)  A  mensagem  acima  só  aparece  quando  tenta  compilar  o  código  em  modo  debug.  Para  
corrigir  o  problema  basta  alterar  o  modo  de  compilação  para  release;  
c)  A  linha  5  deveria  ser  {2}.", denominador, resultado, numerador);
d)  Para  que  mensagens  internas  do  compilador  não  apareçam  no  momento  da  compilação  o  
desenvolvedor  deve  desabilitar  a  opção  “Thrown”    no  menu  Debug  -­‐>  Exceptions  -­‐>  Common  
Language  Runtime  Exceptions;  
e)  A  linha  4  deveria  ser  Console.Write("O resultado da expressão {0} dividido por {1} é;

2.  O  seu  colega  de  trabalho  escreveu  o  código  abaixo:  


 
1   public abstract class Cor
2   {
3   public string Nome { get; set; }
4   }
5  
6  
public class Carro
7   {
8   public string Marca { get; set; }
9   public string Modelo { get; set; }
10   public int AnoFabricacao { get; set; }
11   public int AnoModelo { get; set; }
12   public Cor Cor { get; set; }
13  
14   public Carro()
15   {
16   this.Cor = new Cor().Nome = "Amarelo";
17   }
18   }  

 
Ao  tentar  compilar  você  percebe  que  o  código  apresenta  erro.  Qual  providência  você  toma?  
 
a)  Reescreve  a  linha  16  da  seguinte  forma:  
this.Cor = new Cor();
this.Cor.Nome = "Amarelo";  

b)  Renomeia  a  propriedade  Cor  da  classe  Carro  nas  linhas  12  e  16  para  _Cor  pois  uma  classe  não  
pode  conter  uma  propriedade  com  o  mesmo  nome  de  outra  classe  já  existente;  
c)  Dá  um  Clean  Solution  para  limpar  as  sujeiras  do  código  e  o  próprio  Visual  Studio  se  auto-­‐
recuperará  do  problema  ocorrido;  
d)  Renomeia  a  classe  Cor  para  CorDeCarro  na  linha  1  e  replicar  a  alteração  nas  linhas  12  e  16  
para  evitar  que  uma  propriedade  tenha  o  mesmo  nome  de  uma  classe;  
e)  Remove  a  palavra  reservada  abstract da  linha  1;  
 

Questionário  elaborado  em  05/01/2010  por  Renato  Ucha  


                                       Questionário  de  pré-­‐avaliação  –  Programador  C#  

3)  Olhando  o  programa  abaixo,  responda  a  ordem  em  que  as  mensagens  serão  exibidas  na  
tela:  
 
public class NotificadorDeTempo
{
public event EventHandler TempoDecorrido;

public void Aguardar()


{
Thread thread = new Thread(new ThreadStart(Aguardar5s));
thread.Start();
}

private void Aguardar5s()


{
Thread.Sleep(5000);
OnTempoDecorrido();
}

private void OnTempoDecorrido()


{
if (this.TempoDecorrido != null)
this.TempoDecorrido(this, new EventArgs());
}
}

class Program
{
static void Main(string[] args)
{

Console.WriteLine("Iniciando...");

NotificadorDeTempo notificador = new NotificadorDeTempo();


notificador.TempoDecorrido += new EventHandler(notificador_TempoDecorrido);

Console.WriteLine("Começou a contagem...");

notificador.Aguardar();

Console.WriteLine("Finalizou o chamado da função...");

static void notificador_TempoDecorrido(object sender, EventArgs e)


{
Console.WriteLine("Decorreu o tempo...");
}
}

a)     "Iniciando..."
"Começou a contagem..."
"Decorreu o tempo..."
"Finalizou o chamado da função..."

b)     "Iniciando..."
"Começou a contagem..."
"Finalizou o chamado da função..."
"Decorreu o tempo..."

c)     "Iniciando..."
"Começou a contagem..."
"Finalizou o chamado da função..."
 

d)     "Iniciando..."
"Decorreu o tempo..."
"Começou a contagem..."
"Finalizou o chamado da função..."

e)     "Iniciando..."
"Finalizou o chamado da função..."

Questionário  elaborado  em  05/01/2010  por  Renato  Ucha  


                                       Questionário  de  pré-­‐avaliação  –  Programador  C#  
 

4.  Você  acabou  de  ser  contratado  para  trabalhar  com  C#  na  empresa  Desafios  &  Cia  Ltda.  Ao  
chegar  na  empresa  o  seu  chefe  lhe  pergunta  sobre  Arrays.  Após  explicar  o  que  é  e  como  
funcionam  os  Arrays,  você  apresenta  um  código  que  exemplifica  o  que  você  falou.  Sinalize  o  
código  abaixo  que  você  apresentaria  para  o  seu  chefe  para  exemplificar  a  sua  explicação.  
 
a)     Point array = new Point();
array.X = 10;
array.Y = 15;

MessageBox.Show("O array atual está nos pontos " + array.X + " e " + array.Y);

b) public class ImplementacaoDeArrays


{
public delegate void Arrays(int Index);
public event Arrays ArrayAtual;

public void RandomizarArray()


{
int indiceRandomico = new Random().Next(100);
this.ArrayAtual(indiceRandomico);
}
}

c) Array nomes = new Array(5);


nomes[1] = "Michele";
nomes[2] = "Letícia";
nomes[3] = "Cleópatra";
nomes[4] = "Marcela";
nomes[5] = "Patrícia";  

 
d) int[] numeros = new int[15] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };  

 
e) public event EventHandler Array;

 
 
5.  Você  precisa  criar  uma  conexão  com  banco  de  dados  SQL  Server  2000  mas  esqueceu-­‐se  dos  
comandos  necessários  para  criar  uma  string  de  conexão.  A  qual  classe  você  deveria  recorrer  
para  auxiliá-­‐lo  na  criação  da  string  de  conexão?  
 
a) SqlConnectionStringBuilder;  
b) SqlServerStringBuilder;  
c) StringBuilder;  
d)    SqlConnection;  
e)    SqlServerConnection;

Questionário  elaborado  em  05/01/2010  por  Renato  Ucha  


                                       Questionário  de  pré-­‐avaliação  –  Programador  C#  

6.  Considere  as  tabelas  do  SQL  Server  2005  abaixo:  

O  seu  chefe  solicitou  que  você  emita  uma  relação  contendo  o  nome  do  autor  e  os  seus  livros  
publicados,  como  mostrado  abaixo.  
 

 
 
Quais  os  possíveis  comandos  que  você  utilizará  para  obter  esse  resultado?  (informe  todos)  
 
a)    SELECT Autor.nome, Livro.titulo FROM Livro, Autor WHERE
Livro.id_autor = Autor.id  
b)  SELECT Nome, Titulo FROM Livro INNER JOIN Autor ON id_autor = id  
c)  SELECT Nome, Titulo FROM Livro, Autor WHERE Livro.id_autor = Autor.id  
d)  SELECT Autor.Nome, Livro.titulo FROM Livro INNER JOIN Autor ON
Livro.id_autor = Autor.id  
e)  SELECT A.Nome, L.Titulo FROM Livro L INNER JOIN Autor A ON
L.id_autor = A.id

 
 
7.  Considerando  que  a  variável  Conexao  já  existe  e  representa  uma  SqlConnection e  as  
tabelas  da  questão  anterior,  o  que  está  errado  no  código  abaixo?  
 
1   SqlCommand commando = new SqlCommand("sp_help", Conexao);
2   commando.CommandType = System.Data.CommandType.StoredProcedure;
3   commando.Parameters.AddWithValue("objname", "Livro");
4  
5   DataSet resultado = new DataSet();
6   SqlDataAdapter conector = new SqlDataAdapter(commando);
7   conector.Fill(resultado);  
   
a)  É  necessário  colocar  o  código  Conexao.Open()antes  da  linha  1  para  abrir  a  conexão;  
b)  A  expressão  "objname"  na  linha  3  não  existe,  o  nome  correto  é  "tablename";  
c)  Ao  invés  de  DataSet,  na  linha  4  deveria  ser  instanciado  um  DataTable pois  somente  uma  
tabela  é  retornada  pelo  comando  SQL;  
d)  Não  existem  erros  no  código  acima;  
e)  Na  linha  2  o  tipo  do  comando  deve  ser  alterado  para  System.Data.CommandType.Text;
 

Questionário  elaborado  em  05/01/2010  por  Renato  Ucha  


                                       Questionário  de  pré-­‐avaliação  –  Programador  C#  
 

8.  Observe  com  atenção  a  classe  abaixo:  


 
 
public class ClasseExemplo
{
public List<object> Dados { get; set; }
public ClasseExemplo()
{
Dados = new List<object>();
}

public List<T> Retornar<T>()


{
List<T> retorno = new List<T>();
foreach (object o in Dados)
{
if (o is T)
retorno.Add((T)o);
}
return retorno;
}
}

Analisando  o  código  abaixo,  responda  qual  o  conteúdo  das  variáveis  itens1, itens3 e
itens2  respectivamente:  
 
ClasseExemplo exemplo = new ClasseExemplo();

exemplo.Dados.Add(15d);
exemplo.Dados.Add(18);
exemplo.Dados.Add(25d);
exemplo.Dados.Add("tesoura");

List<string> itens1 = exemplo.Retornar<string>();


List<double> itens2 = exemplo.Retornar<double>();
List<int> itens3 = exemplo.Retornar<int>();

a)  tesoura;  15  e  25;  18;  


b)  tesoura;  18;  15  e  25;  
c)  Tesoura;  15  e  25;  18;  
d)  tesoura;  15  e  25;  nulo;  
e)  tesoura;  nulo;  15  e  25;  
 
 
9.  A  propósito  da  classe  ClasseExemplo  da  questão  anterior.  Quais  os  tipos  que  podem  ser  
informados  para  a  função  Retornar<T>  em  substituição  ao  T?  
 
a)  qualquer  tipo  desde  que  seja  nativo  do  .NET;  
b)  qualquer  tipo,  inclusive  aqueles  criados  pelo  desenvolvedor;  
c)  string,  double  ou  int;  
d)  qualquer  tipo  desde  que  implemente  a  interface  IGeneric;  
e)  apenas  string;  
 
 
10.  Para  que  serve  o  decorador  [Serializable] utilizado  antes  da  declaração  de  uma  classe?    
 
a)  Para  indicar  que  a  classe  é  serializada;  
b)  Para  indicar  que  a  classe  deve  implementar  a  interface  ISerializable;  
c)  Para  facilitar  a  leitura  do  código;  
d)  Para  indicar  que  o  método  Clone()está  disponível  na  classe;  
e)  Para  indicar  que  a  classe  pode  ser  serializada;  

Questionário  elaborado  em  05/01/2010  por  Renato  Ucha  

You might also like