Algoritmo de Ordenação em 20 minutos

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

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

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.

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.

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.[/quote]

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.

É 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

[quote=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:

[/quote]

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

[quote=deusdara]
Estou com você… nunca vi um engenheiro civil ou elétrico tendo que montar um “esqueminha” ali na hora…[/quote]

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

[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]

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.

[quote=deusdara][quote=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:

[/quote]

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

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.

[quote=kicolobo][quote=deusdara][quote=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:

[/quote]

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

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.[/quote]

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

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

[quote=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.[/quote]

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.

[quote=kicolobo][quote=kicolobo][quote=deusdara][quote=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:

[/quote]

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

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.[/quote]

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”.[/quote]

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

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.

[quote=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).[/quote]

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:

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.

[quote=kicolobo][quote=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).[/quote]

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[/quote]

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

[quote=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[/quote]

KKKKKkkk :smiley:

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

[quote=Luiz Augusto Prado][quote=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”.
[/quote]

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.
[/quote]

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.