Algoritmo de Ordenação em 20 minutos

[quote=Ataxexe]
Minha resposta (em ruby):

def sort(array) array.sort! end[/quote]

kakaka :smiley:

também já fiz isso algumas vezes.

[quote=Luiz Augusto Prado]É impossivel o candato saber tanto sobre threads e não saber realizar um for.
Isso seria algo que não tem nem cabimento.[/quote]
Você é um cara sortudo. Nunca conheceu um picareta nessa vida.

Se surpreenderia ao saber quanta gente por aí faz uma carreira como desenvolvedor sem saber programar. Sério! Sem saber escrever código. Eles eventualmente se tornam senior ou até arquitetos (ou gerentes, mas aí não é surpresa né…). Um dos segredos desses caras é aprender a FALAR BEM sobre programação. Por isso um teste que só pede para falar sobre os assuntos é algo muito ingênuo, tem que ter código.

Concordo com você que o ideal é a prova prática, com um computador. Mas isso ainda está longe da cultura das empresas (eu mesmo nunca fiz uma assim, o único teste que usei computador eu tinha que escrever o código no word para o examinador imprimir), então o código no papel ainda é uma alternativa muito válida.

Sobre não se sujeitar a fazer “provinha”, acho um pouco de narcisismo. Por mais que o cara faça um trabalho bem feito, não pode ser pretensioso a ponto de achar que sua fama vai correr o mundo e ninguém terá a ousadia de questionar o quanto ele conhece. (Hey man, I am a rockstar developer, I will not waste my time with your boring tests! :evil: )

isso ai não é pseudo ciencia?

em algumas entrevistas eles pedem para vc levar o cv atualizado, chega la o entrevistador pede para vc transcrever ele na ficha da empresa … so falta assinar e colocar o cpf

[quote=Luiz Augusto Prado]É impossivel o candato saber tanto sobre threads e não saber realizar um for.
Isso seria algo que não tem nem cabimento.[/quote]
Você é um cara sortudo. Nunca conheceu um picareta nessa vida.
[/quote]
Já conhecí vários… e foi na prática que percebi. Um destes que me lembro muito bem passou na teorica onde caiu um Quicksort. :open_mouth:

vc quer dizer computador e compilador?

[quote=gomesrod]
Sobre não se sujeitar a fazer “provinha”, acho um pouco de narcisismo. Por mais que o cara faça um trabalho bem feito, não pode ser pretensioso a ponto de achar que sua fama vai correr o mundo e ninguém terá a ousadia de questionar o quanto ele conhece. (Hey man, I am a rockstar developer, I will not waste my time with your boring tests! :evil: )[/quote]

Não é por ai. Tá interpretando errado o que quero dizer:

[quote=Luiz Augusto Prado][quote=gomesrod]
Você é um cara sortudo. Nunca conheceu um picareta nessa vida.
[/quote]
Já conhecí vários… e foi na prática que percebi. Um destes que me lembro muito bem passou na teorica onde caiu um Quicksort. :open_mouth:
[/quote]
Esse deve ser Master… boa parte deles não dá conta de escrever nenhum código. Alguns acabam passando por esse filtro, mas não deixa de ser um filtro que vai eliminar muitos.

Isso mesmo, computador, compilador, IDE, ferramentas de desenvolvimento, um problema interessante para resolver… tudo que torne o teste um desafio mais realista possível dentro do que se espera do candidato quando ele estiver trabalhando na empresa.

Esse seria o teste ideal, mas já que está longe de ser assim a gente se vira com o papel mesmo.

Não estava falando de você, foi uma visão mais geral… No seu caso você está apenas questionando a eficácia de um teste que exija ter na memória informações específicas… não tem a ver com arrogância.

Não quero que a pessoa escreva uma implementação do algoritmo de Kruskal - até porque ela pode estar com isso muito fresco na cabeça por se tratar de alguém que acabou de ter a matéria de grafos.

Quero que a pessoa pelo menos consiga resolver um problema, não precisa ser muito complexo, mas tem de demandar um pouco de atenção para ser resolvido.

Um exemplo bobo e que derruba muita gente: como é que acho os cinco maiores elementos de uma lista, SEM ordená-la (e sem criar uma variável para cada elemento, o que muita gente acaba fazendo? )

Dependendo da coisa, é bom que a pessoa também saiba alguma coisa decorada. Por exemplo, se preciso de alguém para implementar um protocolo à base de sockets binários, gostaria que a pessoa pelo menos tivesse uma noção mínima do que fazer :slight_smile:

Eu já fiz umas 10 entrevistas assim. Só que elas foram nas próprias empresas contratantes.
Esse modelo de fazer algoritmo em papel é a opção oferecida pelas empresas de RH.
Quem terceiriza realmente não tem como mudar esse modelo.

[quote=entanglement]
Dependendo da coisa, é bom que a pessoa também saiba alguma coisa decorada. Por exemplo, se preciso de alguém para implementar um protocolo à base de sockets binários, gostaria que a pessoa pelo menos tivesse uma noção mínima do que fazer :)[/quote]

Eu não conseguiria de cabeça.
eu tenho alguns métodos pra trabalhar com soquet, mas não mexo com eles faz uns 2 anos.
Por que acha que saber isso de cabeça seria tão importante?

Talvez porque precisasse disso “para ontem”… mas como você disse: você não mexe faz 2 anos, mas se você tiver acesso à documentação da API lembra rapidinho do que deve ser feito :slight_smile:

Eu digo “decorado” mas não no sentido “o método available da classe InputStream retorna um int blablabla”. Isso é absurdo. Digo “decorado” no sentido em que você, se andou alguma vez de bicicleta na vida, não precisa mais que alguns minutos para se lembrar de novo; da mesma forma, se a pessoa já mexeu mesmo com isso, basta ver na documentação da API o que deve ser usado.

Lembro mais uma vez da tal prova de C que fiz faz duzentos anos atrás. Havia consulta, e ela é indispensável, porque é assim que você vai trabalhar no dia-a-dia. Se uma pessoa sabe tudo decorado, provavelmente não terá paciência ou curiosidade de procurar algo que não sabe, o que é uma coisa péssima.

[quote=entanglement]Talvez porque precisasse disso “para ontem”… mas como você disse: você não mexe faz 2 anos, mas se você tiver acesso à documentação da API lembra rapidinho do que deve ser feito :slight_smile:

Eu digo “decorado” mas não no sentido “o método available da classe InputStream retorna um int blablabla”. Isso é absurdo. Digo “decorado” no sentido em que você, se andou alguma vez de bicicleta na vida, não precisa mais que alguns minutos para se lembrar de novo; da mesma forma, se a pessoa já mexeu mesmo com isso, basta ver na documentação da API o que deve ser usado.

Lembro mais uma vez da tal prova de C que fiz faz duzentos anos atrás. Havia consulta, e ela é indispensável, porque é assim que você vai trabalhar no dia-a-dia. Se uma pessoa sabe tudo decorado, provavelmente não terá paciência ou curiosidade de procurar algo que não sabe, o que é uma coisa péssima. [/quote]

Sim, como no regex. Se me pegassem de surpresa, não conseguiria também.
Fico um tempão sem mexer, mas com um releitura rápida dá pra lembrar.

O conteúdo a se saber para programar razoavelmente é grande.

Eu acho que estamos errados em questionar qualquer forma de avaliacao, porque ela tambem nos mostra mais sobre a empresa do que qualquer conversa com qualquer gerente/diretor numa entrevista.

Um formato de avaliação ruim, indica (não que seja regra, mas indica) um produto ruim, pois se ela não é capaz de selecionar adequadamente, a qualidade dos profissionais será baseada, na melhor das hipóteses, na sorte.

Agora, a que está questão nesse tópico é bem pertinente, pedir pra escrever um algoritmo de ordenação, ainda que no papel, não é nenhuma loucura.

No fim das contas, nós temos mania de criticar o sistema de avaliação quando não nos damos bem. Lógico que há aqueles ridículos, cheios de pegadinha, que não avaliam em nada a sua capacidade, na prática. Mas nas vezes, e não tão poucas, em que não fui aprovado numa seleção, eu preferir ver na minha não aprovação onde estavam meus pontos fracos do que ficar procurando os pontos fracos do sistema de avaliação da empresa.

ordenação é básico, antes de ir pra prova melhor coisa é decorar hehe
(CLARO PARA VAGAS DE ESTÁGIO E JR)

para vagas de pleno e senior é sacanagem ter que decorar e ““debugar”” no papel… da pelo menos um micro sem internet…

O pessoal tem falado muito de teoria e prática…acontece que o cara ser teórico não é de todo um ruim. O pior caso é o prático que não tem noção alguma de teoria.

Eu tenho uma certificação de programador e uma de arquiteto, estudei muito para conquistar, daí vem um cara e me aplica uma prova de 90 minutos. Bom, não sendo radical, mas se a vaga for do tipo “boazinha”, eu levanto e vou embora. Se eu já provei perante a Oracle/Sun que eu sei. Pra que eu tenho que provar isso de novo pra uma entrevista.

Não tem essa de só provar na prática, tem que balancear, conhecer um pouco dos dois lados.

[quote=Giulliano]O pessoal tem falado muito de teoria e prática…acontece que o cara ser teórico não é de todo um ruim. O pior caso é o prático que não tem noção alguma de teoria.

Eu tenho uma certificação de programador e uma de arquiteto, estudei muito para conquistar, daí vem um cara e me aplica uma prova de 90 minutos. Bom, não sendo radical, mas se a vaga for do tipo “boazinha”, eu levanto e vou embora. Se eu já provei perante a Oracle/Sun que eu sei. Pra que eu tenho que provar isso de novo pra uma entrevista.

Não tem essa de só provar na prática, tem que balancear, conhecer um pouco dos dois lados.[/quote]

A certificação não é isenção de provas, é simplesmente um filtro para o RH. Um exemplo disso é você, que tem essas duas certificações e não escreveu um BubbleSort em 20 minutos.

Eu mesmo já descartei profissionais com mais certificações do que você por causa de uma resposta mal dada. O fato de um profissional ter ou não uma certificação é irrelevante em muitos casos.

[quote=Ataxexe][quote=Giulliano]O pessoal tem falado muito de teoria e prática…acontece que o cara ser teórico não é de todo um ruim. O pior caso é o prático que não tem noção alguma de teoria.

Eu tenho uma certificação de programador e uma de arquiteto, estudei muito para conquistar, daí vem um cara e me aplica uma prova de 90 minutos. Bom, não sendo radical, mas se a vaga for do tipo “boazinha”, eu levanto e vou embora. Se eu já provei perante a Oracle/Sun que eu sei. Pra que eu tenho que provar isso de novo pra uma entrevista.

Não tem essa de só provar na prática, tem que balancear, conhecer um pouco dos dois lados.[/quote]

A certificação não é isenção de provas, é simplesmente um filtro para o RH. Um exemplo disso é você, que tem essas duas certificações e não escreveu um BubbleSort em 20 minutos.

Eu mesmo já descartei profissionais com mais certificações do que você por causa de uma resposta mal dada. O fato de um profissional ter ou não uma certificação é irrelevante em muitos casos.[/quote]

A certificação não é isenção, é a prova de que a pessoa no mínimo conhece sobre o assunto. Eu não ter escrito um Bubble Sort ou qualquer outro foi por que eu achei que era uma pergunta fora do contexto das demais. Para todos os casos eu utlizo Collections.sort(), Comparable e o Set. Se precisar de alguma coisa mais avançada, com certeza não vou fazer de cabeça, vou pesquisar antes e isso leva algumas horas.

Desclassificar um candidato por causa de UMA resposta mal dada é radicalismo, o cara pode ter se expressado mal ou ter um entendimento diferente do seu.

Penso que o objetivo principal desse tipo de questão é ver se o candidato é capaz de se concentrar, raciocinar e chegar a uma sequencia e resposta correta. Existem muitos métodos para avaliar isso. Olhem estes exemplos de lógica:

http://www.profcardy.com/logica/raciocinio.php?id=24




http://www.profcardy.com/logica/raciocinio.php?id=1

http://www.profcardy.com/logica/raciocinio.php?id=31

Estas são interessantes porque avaliam o conhecimento do usuário sobre tautologias e contradições:
Você esta em uma sala, e nesta sala existem duas portas, uma para o paraíso e outra para o inferno (você não sabe qual delas é pro paraíso e nem para o inferno) , há duas pessoas nessa sala, uma delas diz sempre a verdade e a outra apenas mentiras, você pode fazer uma pergunta para uma delas, apenas uma, como você sai pela porta do paraíso?
Obs: Você não sabe quem diz a mentira e nem a verdade.

Você é prisioneiro de uma tribo indígena que conhece todos os segredos do Universo e portanto sabem de tudo. Você está para receber sua sentença de morte. O cacique o desafia: "Faça uma afirmação qualquer. Se o que você falar for mentira você morrerá na fogueira, se falar uma verdade você será afogado. Se não pudermos definir sua afirmação como verdade ou mentira, nós te libertaremos. O que você diria?


De atenção:

Um grande empresário na necessidade de ir a São Paulo, chegou a seu guarda noturno e ordenou que ele o acordasse às 6 horas da manhã em ponto. Exatamente às 6:00 da manhã o guarda acordou o empresário e disse: - Patrão, estou com um mal pressentimento: sonhei esta noite que o senhor teria um acidente com o avião e me permita sugerir que não viaje. O empresário não deu ouvidos ao guarda. Sem incidentes, chegou a São Paulo e por telefone mandou demitir o guarda. Por quê?

Exato! E isso é o mesmo que afirmar que ela é um filtro. Ou você acha que é bom contratar um cara que, no mínimo, conhece sobre o assunto?

Eu aplicaria uma prova, oral e/ou escrita, pelo menos. (Lembre-se que até as perguntas técnicas que respondemos em uma entrevista são uma prova oral.)

Depende da pergunta (e da resposta também).

Também acho. Existem questões, inclusive, em que não há uma resposta correta e, sim, um raciocínio válido.

Exato! E isso é o mesmo que afirmar que ela é um filtro. Ou você acha que é bom contratar um cara que, no mínimo, conhece sobre o assunto?

Eu aplicaria uma prova, oral e/ou escrita, pelo menos. (Lembre-se que até as perguntas técnicas que respondemos em uma entrevista são uma prova oral.)

Depende da pergunta (e da resposta também).[/quote]

Além de que, dificilmente a desclassificação é por causa de uma pergunta, normalmente se desclassifica pelo todo. Inclusive por se indignar e se recusar a responder uma pergunta, quando o simples fato de deixar em branco e explicar ao entrevistador que lhe deu um branco no momento, poderia ser convertido a seu favor.

[code]
public class CeuInferno {

public static void main(String[] args) {
	
	boolean verdade = true;
	boolean mentira = false;
	boolean paraiso = true;
	//se eu perguntar para o outro guardiao qual o paraiso qual ele apontará ?
	String GuardiaoVerdade_responde = (verdade==mentira==paraiso) ? "paraiso" : "inferno"; // inferno
	String GuardiaoMentira_responde = (mentira==verdade==paraiso) ? "paraiso" : "inferno"; // inferno
	
	System.out.println(GuardiaoVerdade_responde);
	System.out.println(GuardiaoMentira_responde);
	
}

}[/code]

//vou para a porta oposta.