Algoritmo de Ordenação em 20 minutos

63 respostas
G

Fala pessoal !!!

Só pra não achar qeu eu estou sendo injusto, fiz um teste desses que aplicam para pré-entrevista, e em 90 minutos eu teria que responder a diversas perguntas INCLUINDO uma pergunta que me solicitaca criar um algoritmo de ordenação de String na unha, em Java, numa folha de papel.

Eu deixei em branco, faltavam apenas 20 minutos quando terminei o resto da prova que tinha muitas perguntas dissertativas. Vocês acham normal pedir esse tipo de coisa em tão pouco tempo, ou acham que é algum tipo de pergunta pra fazer o candidato perder tempo ?!?!?

63 Respostas

R

Giulliano:
Fala pessoal !!!

Só pra não achar qeu eu estou sendo injusto, fiz um teste desses que aplicam para pré-entrevista, e em 90 minutos eu teria que responder a diversas perguntas INCLUINDO uma pergunta que me solicitaca criar um algoritmo de ordenação de String na unha, em Java, numa folha de papel.

Eu deixei em branco, faltavam apenas 20 minutos quando terminei o resto da prova que tinha muitas perguntas dissertativas. Vocês acham normal pedir esse tipo de coisa em tão pouco tempo, ou acham que é algum tipo de pergunta pra fazer o candidato perder tempo ?!?!?

Bom, eu acho que é normal, mas não diria que é justo. Muita gente sabe algoritmos de ordenação de decoreba, então na realidade não estaria provando tanta coisa na minha opinião.

Mas é sempre bom ter um Insertion Sort ou Selection Sort na manga, já que são tão simples de implementar. Mas realmente se você nunca olhou pra um deles (porque sinceramente na pratica raramente alguém usa), é difícil tirar um do nada em 20 minutos.

E

Há uns duzentos anos atrás, me aplicaram um teste de C (com consulta ao livro do Kernighan & Ritchie) e que também solicitava escrever um algoritmo de ordenação. Usei um bubblesort mesmo, e não tive problemas para passar. (Se eu soubesse esse livro de cor, lá havia o quicksort, mas então talvez me reduzissem alguns pontos, porque naquela época - onde não havia Internet - as pessoas não viam com bons olhos a capacidade de uma pessoa resolver algo só com uma boa consulta ao Google. )

Na verdade eu argumentei, na resolução da pergunta, que o algoritmo, para o conjunto de dados da questão, era mais que suficiente, e que não deveria ser usado para um conjunto maior de dados. Talvez isso tivesse também acrescentado alguns pontos :slight_smile:

G

Eu dei uma olhada na época da facul, me lembro do QuickSort e do Bubble Sort, mas obviamente (na minha concepção) que ninguém reescreve isso na mão. Bom…se essa pergunta for decisiva eu me excluo da vaga.

E

Muitas vezes essas provinhas foram criadas há uns 10 anos atrás e o pessoal do RH nunca se interessou por alterá-las - mas o importante é você ver com o pessoal que você realmente vai trabalhar junto o que você realmente vai fazer. Não julgue o departamento de TI de uma empresa pelo seu departamento de RH :frowning:

G

Boaaa…

Realmente na época do C, havia uma grande diferença entre o SABER e (o que é considerado saber de hoje em dia) pesquisar algo pronto no google.

R

Tem alguns detalhes interessantes nessas questões. Não que sejam importantes em todos os casos, mas é bom saber que a pessoa sendo contratada sabe disso.

Por exemplo, em um cenário onde o uso de memória é crítico, usar o Merge Sort (o algoritmo utilizado no Collections.sort do Java), pode não ser uma boa ideia em coleções muito grandes, pois apesar de ser o que executa mais rápido, ele cria um array do mesmo tamanho do que está sendo ordenado.

Nesse caso é legal o entrevistado saber que um ShellSort pode ser usado como alternativa. A performance dele não é a mesma, mas ele não usa nenhuma memória adicional.

Isso é algo que eu acho interessante saber, mas novamente, raramente se encontra um lugar onde algo assim é essencial.

R

+1

C

olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

L

Giulliano:
Fala pessoal !!!

Só pra não achar qeu eu estou sendo injusto, fiz um teste desses que aplicam para pré-entrevista, e em 90 minutos eu teria que responder a diversas perguntas INCLUINDO uma pergunta que me solicitaca criar um algoritmo de ordenação de String na unha, em Java, numa folha de papel.

Eu deixei em branco, faltavam apenas 20 minutos quando terminei o resto da prova que tinha muitas perguntas dissertativas. Vocês acham normal pedir esse tipo de coisa em tão pouco tempo, ou acham que é algum tipo de pergunta pra fazer o candidato perder tempo ?!?!?

Deixar de ter respondido esta questão pode significar que vc sabe administrar bem o seu tempo, se nas questões anteriores as perguntas foram mais profundas tais como:

Quais os frameworks mais utilizados para java na web?
O que é um ORM, cite um e fale de sua experiencia nele?
O que é um IoC, cite um e fale de sua experiencia nele?
O que são metadados e para que servem?
Cite 3 patterns de desenvolvimento.
O que é um Inner Join?
Cite 2 frameworks para a geração de relatórios.
O que é uma IDE de desenvolvimento, cite 3 e relate sua experiência em uma delas.
Qual sua experiência com Maven ou ANT?
Com quais versionarores já trabalou?
Qual a principal diferênca entre um projeto Orientado a objeto de Projeto Estruturado, com qual prefere trabalhar e por quê?

Agora, se eles derem tanta relevância a esse codigo, na minha opinião, isso evidencia que a pessoa que está por tras da elaboração prova está procurando alguem que saiba menos do que ele. Um estagiário.

A codificação deveria ser o mais trivial possível para uma prova destas.

L

carlos.hager:
olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

+1

V

Nossa, mas nem um Bubble Sort saiu? Esse algoritmo leva 5 minutos para alguém montar.

R

Luiz Augusto Prado:
Deixar de ter respondido esta questão pode significar que vc sabe administrar bem o seu tempo, se nas questões anteriores as perguntas foram mais profundas tais como:

Quais os frameworks mais utilizados para java na web?
O que é um ORM, cite um e fale de sua experiencia nele?
O que é um IoC, cite um e fale de sua experiencia nele?
O que são metadados e para que servem?
Cite 3 patterns de desenvolvimento.
O que é um Inner Join?
Cite 2 frameworks para a geração de relatórios.
O que é uma IDE de desenvolvimento, cite 3 e relate sua experiência em uma delas.
Qual sua experiência com Maven ou ANT?
Com quais versionarores já trabalou?
Qual a principal diferênca entre um projeto Orientado a objeto de Projeto Estruturado, com qual prefere trabalhar e por quê?

Agora, se eles derem tanta relevância a esse codigo, na minha opinião, isso evidencia que a pessoa que está por tras da elaboração prova está procurando alguem que saiba menos do que ele. Um estagiário.

A codificação deveria ser o mais trivial possível para uma prova destas.


Acho que isso foi generalizado demais. Dependendo da vaga sendo disputada, o algoritmo pode valer mais pontos do que qualquer um dos itens acima.

Falando nisso, ponto interessante. Giulliano, você pode falar por cima qual era a vaga? Assim é até mais fácil saber se o exercício é relevante ou não.

V

carlos.hager:
olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

E assim vc abra mão de várias e boas oportunidades de emprego. Dois dos bons empregos que tive fizeram provinhas.

L

Bubble Sort é um algoritmo de ordenação ruim.
Se o carinha fosse fazer uma prova de ordenação, o melhor a escolher seria o quicksort (ao menos cita-lo se não desse tempo).

R

Bubble Sort é um algoritmo de ordenação ruim.
Se o carinha fosse fazer uma prova de ordenação, o melhor a escolher seria o quicksort (ao menos cita-lo se não desse tempo).

Mas o Quicksort tem complexidade O(n²) não tem? O Mergesort tem complexidade O(n log n)

E

Bubble Sort é um algoritmo de ordenação ruim.
Se o carinha fosse fazer uma prova de ordenação, o melhor a escolher seria o quicksort (ao menos cita-lo se não desse tempo).

É claro que é ruim. Mas é o mais óbvio para se escrever (e implementar corretamente) em 5 minutos, só com lápis e papel.

Imagine você escrever só com acesso a lápis e papel uma implementação correta do QuickSort.

Sempre tem um detalhinho chato, até porque Java não é muito adequada para escrever a implementação do algoritmo tal como se define na teoria (que é uma definição recursiva e que é mais apropriada para uso com listas como as do Lisp).

E se for para escrever o “melhor possível”, obviamente não há “melhor possível” porque tudo depende dos dados de entrada e da quantidade de dados. Um livro do Knuth fala apenas sobre busca e ordenação; ele não escreveria um livro grosso daqueles se houvesse um algoritmo que fosse “o melhor possível em todos os casos”.

A

Bubble Sort é um algoritmo de ordenação ruim.
Se o carinha fosse fazer uma prova de ordenação, o melhor a escolher seria o quicksort (ao menos cita-lo se não desse tempo).

Mas se a questão não pediu para escrever um algoritmo de ordenação efetivo, somente um algoritmo de ordenação. Acho que somente o lucky sort não seria válido nesse caso.

ViniGodoy:
carlos.hager:
olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

E assim vc abra mão de várias e boas oportunidades de emprego. Dois dos bons empregos que tive fizeram provinhas.

Eu já consegui um bom emprego assim. Se as pessoas fazem provas escritas demoradas e cansativas para concurso público, por quê não podem fazer uma prova escrita de 90 minutos para uma boa vaga de emprego em uma empresa privada?

L

Rodrigo Sasaki:

Acho que isso foi generalizado demais. Dependendo da vaga sendo disputada, o algoritmo pode valer mais pontos do que qualquer um dos itens acima.

Falando nisso, ponto interessante. Giulliano, você pode falar por cima qual era a vaga? Assim é até mais fácil saber se o exercício é relevante ou não.

Sim, dependendo da vaga…

O que quero dizer é que dependendo do nível do candidato, apesar dele ser avançado e dele saber os nomes dos métodos ele pode não lembrar como eles são feitos. Por exemplo, eu tenho uma classe matemática onde tenho funções tais como Bascara_Metodo_Quadrados_Minimos. Eu sei o que é e para que serve, mas não lembro de como é feita a codificação.
Um candidato do 2º ano se sairia melhor por causa da recem aula de calculo enquanto que outro do 4º ano não.

G

A vaga é para Programador Java Sr, a empresa é um portal (possui diversas soluções como e-commerce, meio de pagamento, portais web, fóruns e muitas outras frentes)

As outras perguntas eram de lógica envolvendo OO, palavras reservadas do Java (sincronize, static, assert), tratamento de concorrência. Enfim nada demais. Eu na verdade estou de olho em outra vaga deles (Arquiteto) mas acabei fazendo as duas provas.

E

Só botando mais lenha na fogueira, muitas vezes as pessoas dão essas provinhas onde você tem de escrever pelo menos algum código, para ver se a pessoa só tem lábia ou se realmente sabe alguma coisa.

Se a pessoa escreve algo completamente sem noção em um código, já está excluída logo de cara. Imagine se a pessoa sabe todos os design patterns de cor, mas mal sabe escrever um “for” que enumere os números ímpares de 1 até 101 … (já vi esse tipo de coisa ocorrendo, portanto…)

E

Neste caso a gente manda para o Departamento Comercial :slight_smile:

G

Godoy se eu fosse montar (mas preferi não fazer) com certeza seria o Bubble Sort. E aí entramos em outra questão, esse não é o mais efetivo. O que eu não entendo é que tipo de resposta o cara procura numa pergunta dessas.

Há dois anos atrás fiz um teste para esta mesma empresa e caiu a mesma pergunta. Na época tb deixei em branco.

L

Se vc se saiu bem nesses quesitos, falou bem sobre threads, eu te contrataria.
O códigos de ordenação existem aos montes no google.

V

Godoy se eu fosse montar (mas preferi não fazer) com certeza seria o Bubble Sort. E aí entramos em outra questão, esse não é o mais efetivo. O que eu não entendo é que tipo de resposta o cara procura numa pergunta dessas.

Há dois anos atrás fiz um teste para esta mesma empresa e caiu a mesma pergunta. Na época tb deixei em branco.

Isso mostra que você tem um mínimo de conhecimento de estruturas de dados. Mostra também o seu estilo de codificação, já que você terá que indentar e dar nomes para variáveis. Mostra que você sabe lógica básica, e não só decoreba, como comentou o entanglement. Sem falar que é um algoritmo trivialmente fácil. O que pensar de alguém que nem isso consegue implementar?

E nada impede de vc escrever o bubble sort e colocar comentários, como o entanglement citou (dizer que isso era válido para o problema e tempo em questão, mas que seria melhor usar o QuickSort numa situação de produção).

E, finalmente, numa concorrência, isso vale para você não ficar atrás de quem não escreveu o bubble sort.

L

É impossivel o candato saber tanto sobre threads e não saber realizar um for.
Isso seria algo que não tem nem cabimento.

Acho que isso só dá pra ter certeza em uma prova prática.
Sou fã das provas onde os candidatos passam por uma primeira prova, como a do post, e os 10 primeiros são selecionados pra fazer uma segunda prova. A prática. Podendo consultar pela internet. Quantos trabalham de outra forma hoje?
Avaliando:
tecnicas
organização do código
organização da tela
funcionalidade
eficiencia

D

carlos.hager:
olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

Estou com você… nunca vi um engenheiro civil ou elétrico tendo que montar um “esqueminha” ali na hora…

V

deusdara:

Estou com você… nunca vi um engenheiro civil ou elétrico tendo que montar um “esqueminha” ali na hora…

Eu já vi. Na época que trabalhei na Siemens, eles faziam provinhas igual aos programadores.

V

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.

Impossível nada. Sujeito pode ser bom em responder pergunta teórica e escorregar feio na hora de escrever o algoritmo.
Já vi isso acontecer tantas vezes na área acadêmica que até perdi as contas.

Além disso, o que realmente custa escrever um bubble sort???

O cara não estava falando de um algoritmo de arvore binária, nem busca recursiva, nem nada disso. Estava falando de um bubble sort simples. 2 fors e um algoritmo de troca, nada mais.

K

deusdara:
carlos.hager:
olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

Estou com você… nunca vi um engenheiro civil ou elétrico tendo que montar um “esqueminha” ali na hora…

Eu já vi em engenharia (civil, elétrica, de minas) quando trabalhava com isto.
Acho mais que justo e não vejo nada de errado com isto: afinal de contas, você não pode confiar no primeiro que passa pela sua porta dizendo ser um bom programador.

K

kicolobo:
deusdara:
carlos.hager:
olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

Estou com você… nunca vi um engenheiro civil ou elétrico tendo que montar um “esqueminha” ali na hora…

Eu já vi em engenharia (civil, elétrica, de minas) quando trabalhava com isto.
Acho mais que justo e não vejo nada de errado com isto: afinal de contas, você não pode confiar no primeiro que passa pela sua porta dizendo ser um bom programador.

E também já dei bomba na hora em gente que mandei o teste pra fazer e disse que não iria “se sujeitar a isto”.

E

Outra coisa que parece inútil é aquela redação que muitos RHs pedem, mas que nenhum candidato deve desprezar.

Pra começar, a tal redação serve, entre outras coisas, para:

a) Checar a sua personalidade através do estudo grafológico (não estou brincando, isso é muito comum em diversos departamentos de RH);

b) Ver se você não é completamente analfabeto (o que pode dificultar muito sua vida profissional - imagine você ter de redigir um relatório e ninguém conseguir entender o que você escreveu)

c) Ver se você tem um mínimo de raciocínio e lógica
L

ViniGodoy:

Impossível nada. Sujeito pode ser bom em responder pergunta teórica e escorregar feio na hora de escrever o algoritmo.
Já vi isso acontecer tantas vezes na área acadêmica que até perdi as contas.

Além disso, o que realmente custa escrever um bubble sort???

O cara não estava falando de um algoritmo de arvore binária, nem busca recursiva, nem nada disso. Estava falando de um bubble sort simples. 2 fors e um algoritmo de troca, nada mais.

Sim, mas por isso que falei da prova prática.
Ele não falou de um bubble sort ele falou de um algoritmo de ordenação.
A escolha do algoritmo também é um pega.

A

kicolobo:
kicolobo:
deusdara:
carlos.hager:
olha, é aquela história, se eu for fazer um teste onde me passam para escrever código na mão, eu levanto viro as costas e vou embora. :slight_smile:

Estou com você… nunca vi um engenheiro civil ou elétrico tendo que montar um “esqueminha” ali na hora…

Eu já vi em engenharia (civil, elétrica, de minas) quando trabalhava com isto.
Acho mais que justo e não vejo nada de errado com isto: afinal de contas, você não pode confiar no primeiro que passa pela sua porta dizendo ser um bom programador.

E também já dei bomba na hora em gente que mandei o teste pra fazer e disse que não iria “se sujeitar a isto”.

E foi uma bomba bem dada. Um teste desses é algo que agrega valor na entrevista. O complicado é alguém pedir uma redação de tema livre pra você fazer (em vez de deixar um tema relacionado com a vaga).

R

O mesmo se vale pra threads na minha opinião.

É válido implementar o bubble sort dizendo que ele não é o melhor algoritmo em todos os casos.

Também é válido responder às questões de Threads e comentar que manipulação de threads é propenso a erros e problemas de performance. O tal chamado sinchronize and suffer model e talvez apresentar o modelo de atores como uma alternativa (dependendo do cenário).

Tudo vai de como você enxerga as coisas. Pode ser uma oportunidade de mostrar algo que o entrevistador pode gostar.

K

Ataxexe:

E foi uma bomba bem dada. Um teste desses é algo que agrega valor na entrevista. O complicado é alguém pedir uma redação de tema livre pra você fazer (em vez de deixar um tema relacionado com a vaga).

Cara, já peguei uma entrevista em que tive de fazer uma redação no estilo “minhas férias”.
E foi a mais ridícula da minha vida: era para um cargo que eu não queria, em uma empresa até legal aqui de BH.
Diversas vezes eu falei para a pessoa do RH que não era a minha área, mas naquela insistência toda acabei ficando lá uma hora, uma hora e meia fazendo aquilo.
Era um daqueles momentos da sua vida em que você está realmente pensando coisas do tipo: “e agora?”, “O que eu vou fazer da minha vida hein?”, “Putz! Será que este cargo que não tem nada a ver comigo seria algo interessante pra mim?”

Foi quando veio uma crise de “foda-se brutality extermination”. A redação terminou assim: o tema era algo do tipo “minha carreira e previsão de futuro”

Começou bonitinha.
No meio foi ficando meio feiinha
E no final

“Mil desculpas por tomar o seu tempo. Eu realmente não me interesso por esta área que você está me oferecendo. Sua insistência foi massa, porque me fez pensar a respeito, e por isto lhe agradeço.”

Eu não sei se foi correto da minha parte (provávelmente não).

Mas sabe aquele momento do dia em que a trolada se mostra irresistível? :smiley:

L

se vc deu a prova como professor da faculdade está corretissimo.
Outra coisa é vc ter estudado isso no 1º ano é ter de lembrar no 4º.
Eu não lembraria, a não ser que eu soubesse o conteúdo do que cairia pra me preparar.

A

kicolobo:
Ataxexe:

E foi uma bomba bem dada. Um teste desses é algo que agrega valor na entrevista. O complicado é alguém pedir uma redação de tema livre pra você fazer (em vez de deixar um tema relacionado com a vaga).

Cara, já peguei uma entrevista em que tive de fazer uma redação no estilo “minhas férias”.
E foi a mais ridícula da minha vida: era para um cargo que eu não queria, em uma empresa até legal aqui de BH.
Diversas vezes eu falei para a pessoa do RH que não era a minha área, mas naquela insistência toda acabei ficando lá uma hora, uma hora e meia fazendo aquilo.
Era um daqueles momentos da sua vida em que você está realmente pensando coisas do tipo: “e agora?”, “O que eu vou fazer da minha vida hein?”, “Putz! Será que este cargo que não tem nada a ver comigo seria algo interessante pra mim?”

Foi quando veio uma crise de “foda-se brutality extermination”. A redação terminou assim: o tema era algo do tipo “minha carreira e previsão de futuro”

Começou bonitinha.
No meio foi ficando meio feiinha
E no final

“Mil desculpas por tomar o seu tempo. Eu realmente não me interesso por esta área que você está me oferecendo. Sua insistência foi massa, porque me fez pensar a respeito, e por isto lhe agradeço.”

Eu não sei se foi correto da minha parte (provávelmente não).

Mas sabe aquele momento do dia em que a trolada se mostra irresistível? :D

Aconteceu isso comigo, mas em uma prova. Nela tinha uma questão assim:

“Escreva uma função, em qualquer linguagem, que ordene um array de números.”

Minha resposta (em ruby):

def sort(array) array.sort! end

L

kicolobo:

“Mil desculpas por tomar o seu tempo. Eu realmente não me interesso por esta área que você está me oferecendo. Sua insistência foi massa, porque me fez pensar a respeito, e por isto lhe agradeço.”

Eu não sei se foi correto da minha parte (provávelmente não).

Mas sabe aquele momento do dia em que a trolada se mostra irresistível? :D

KKKKKkkk :smiley:

Podia acontecer qualquer coisa… até ser contratado dependendo do humor do corretor.

A

Luiz Augusto Prado:
kicolobo:

E também já dei bomba na hora em gente que mandei o teste pra fazer e disse que não iria “se sujeitar a isto”.

se vc deu a prova como professor da faculdade está corretissimo.
Outra coisa é vc ter estudado isso no 1º ano é ter de lembrar no 4º.
Eu não lembraria, a não ser que eu soubesse o conteúdo do que cairia pra me preparar.

Bom, eu já resolvi um problema sinistro de otimização de uma lógica no sistema usando mapas de Karnaugh. Já até usei uma calculadora programável da HP (33S) pra resolver problemas de inconsistência financeira num sistema. É bom ter cartas na manga, e muitas delas a gente consegue no início da faculdade.

L

Ataxexe:

Minha resposta (em ruby):

def sort(array) array.sort! end

kakaka :smiley:

também já fiz isso algumas vezes.

G

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.

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: )

P

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

L

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.

Você é um cara sortudo. Nunca conheceu um picareta nessa vida.

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?

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: )

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

G

Luiz Augusto Prado:
gomesrod:

Você é um cara sortudo. Nunca conheceu um picareta nessa vida.

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:

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.

E

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:

L

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.

L

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 :)

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?

E

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.

L

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.

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.

Y

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.

D

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…

G

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.

A

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.

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.

G

Ataxexe:
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.

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.

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.

L

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ê?

A

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).

A

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

Y

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).

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.

D
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);
		
	}
	
}

//vou para a porta oposta.

L
douglaskd:
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);
		
	}
	
}

//vou para a porta oposta.

package contradicao;

import java.util.ArrayList;
import java.util.List;

public class Contradicao
{


	static interfaceAnjo anjo_v;
	static interfaceAnjo anjo_f;
	static porta porta_A;
	static porta porta_B;

	public static void outras_perguntas_possiveis ()
	{		
		//identificar quem fala a verdade
		System.out.println( anjo_v.quem_realmente_sou()==anjo_v.respondo(anjo_v.quem_realmente_sou()==definicoes.DIGO_VERDADE) );
		System.out.println( anjo_f.quem_realmente_sou()==anjo_f.respondo(anjo_f.quem_realmente_sou()==definicoes.DIGO_VERDADE) );
		System.out.println("--------------");
		System.out.println("--------------");
		System.out.println( anjo_v.respondo(anjo_v.quem_realmente_sou()==definicoes.DIGO_VERDADE)) ;
		System.out.println( anjo_f.respondo(anjo_f.quem_realmente_sou()==definicoes.DIGO_VERDADE)) ;
		System.out.println("--------------");
		System.out.println( anjo_v.respondo(anjo_v.quem_realmente_sou())==definicoes.DIGO_VERDADE) ;
		System.out.println( anjo_f.respondo(anjo_f.quem_realmente_sou())==definicoes.DIGO_VERDADE) ;
		System.out.println("--------------");
		System.out.println("--------------");
		System.out.println( anjo_f.respondo(anjo_v.quem_realmente_sou()==definicoes.DIGO_VERDADE)) ;
		System.out.println( anjo_v.respondo(anjo_f.quem_realmente_sou()==definicoes.DIGO_VERDADE)) ;
		System.out.println("--------------");
		System.out.println( anjo_v.respondo(anjo_f.quem_realmente_sou())==definicoes.DIGO_VERDADE) ;
		System.out.println( anjo_f.respondo(anjo_v.quem_realmente_sou())==definicoes.DIGO_VERDADE) ;
		System.out.println("--------------");
		System.out.println("--------------");
		System.out.println("--------------");
		System.out.println("--------------");
		
		//que porta pegar:
		
		System.out.println("--------------");
		
		// não funciona
		System.out.println( anjo_f.respondo(porta_A.para_onde_levo()==definicoes.CEU)==definicoes.onde_quero_ir) ;
		System.out.println( anjo_v.respondo(porta_A.para_onde_levo()==definicoes.CEU)==definicoes.onde_quero_ir) ; 
		System.out.println("--------------");
		
		
	}	

	public static void main(String[] args)
	{
		anjo_v =  new anjo_verdade();
		anjo_f =  new anjo_mentira();
		
		porta_B = new PortaCeu();
		porta_A = new PortaInferno();
		
		
		outras_perguntas_possiveis();
		
		// que porta pegar: 
		System.out.println( anjo_v.respondo(anjo_f.respondo(porta_A.para_onde_levo()==definicoes.onde_quero_ir))) ;
		System.out.println( anjo_f.respondo(anjo_v.respondo(porta_A.para_onde_levo()==definicoes.onde_quero_ir))) ; 
		System.out.println( anjo_v.respondo(anjo_f.respondo(porta_B.para_onde_levo()==definicoes.onde_quero_ir))) ;
		System.out.println( anjo_f.respondo(anjo_v.respondo(porta_B.para_onde_levo()==definicoes.onde_quero_ir))) ; 
		System.out.println("--------------");
		
	}
}
D

Luiz, seu código ficou difícil demais rsrsrs

L

huahuahua

D

o importante é a imaginação rsrs

Criado 22 de abril de 2013
Ultima resposta 6 de mai. de 2013
Respostas 63
Participantes 13