F -X C h a n ge                                                                                                           ...
F -X C h a n ge                                                                                                           ...
F -X C h a n ge                                                                                                           ...
F -X C h a n ge                                                                                                           ...
F -X C h a n ge                                                                                                           ...
Upcoming SlideShare
Loading in …5
×

Pré AvaliaçãO C Sharp

905 views

Published on

Avaliação de proficiência em C# que desenvolvi para filtrar candidatos antes da fase de entrevista presencial. Resultou em melhores e mais rápidas contratações.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
905
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
41
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Pré AvaliaçãO C Sharp

  1. 1. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu to to k k lic lic Questionário de pré-avaliação – Programador C# C Cw w m m w ww w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 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
  2. 2. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu to to k k lic lic Questionário de pré-avaliação – Programador C# C Cw w m m w ww w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 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
  3. 3. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu to to k k lic lic Questionário de pré-avaliação – Programador C# C Cw w m m w ww w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 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
  4. 4. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu to to k k lic lic Questionário de pré-avaliação – Programador C# C Cw w m m w ww w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 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
  5. 5. F -X C h a n ge F -X C h a n ge PD PD ! ! W W O O N N y y bu bu to to k k lic lic Questionário de pré-avaliação – Programador C# C Cw w m m w ww w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 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

×