Acabei de telefonar para uma empresa de pós-graduação em desenvolvimento de software e recebi as seguintes perguntas. Devo acrescentar que a empresa em questão não é um fornecedor de banco de dados.
Como um otimizador de consulta funciona?
Se um banco de dados estivesse com um desempenho ruim, como você usaria os logs de desempenho para descobrir o problema.
Perguntei se eles fizeram tais perguntas a todos os candidatos a desenvolvedores de software (graduados ou experientes) em uma primeira entrevista por telefone. Eles responderam que gostam de testar o conhecimento de seus candidatos sobre o desenvolvimento de bancos de dados.
Quero escrever para a empresa para dizer que essas perguntas não são razoáveis para serem feitas em uma entrevista de desenvolvedor de software e para solicitar que minha entrevista seja encerrada.
Gostaria de verificar a razoabilidade das seguintes premissas
a) Essas questões não podem ser classificadas de maneira justa como questões de desenvolvimento de banco de dados.
b) acho que as perguntas são apropriadas para uma entrevista de DBA, mas totalmente irracionais para uma entrevista de desenvolvedor de software (experiente ou não).
c) A primeira pergunta é relevante apenas para um fornecedor de banco de dados.
d) A segunda pergunta não é justa, porque os desenvolvedores de software geralmente não lidam com os logs de desempenho do banco de dados, pois esse é o trabalho do DBA.
Talvez alguns de vocês tenham a gentileza de comentar minhas suposições ou possam ter outras sugestões antes de escrever para a empresa.
Respostas:
Se eu fosse um entrevistador (o que às vezes sou) e recebesse uma carta de um candidato reclamando que as perguntas eram injustas e que eles queriam uma renovação, eu agradeceria às minhas estrelas da sorte que esquivamos dessa bala e imediatamente mudamos a inscrição para a pilha "rejeitar". Agir assim mostra apenas que você é um reclamante e não tem a atitude de "pode fazer" que se procura.
uma. as perguntas eram razoáveis para solicitar o tópico de desenvolvimento de banco de dados.
b. falso. Qualquer coisa relacionada ao desenvolvimento de software é um jogo justo a ser perguntado. Lembre-se de que obter uma resposta errada não o desqualifica automaticamente para o cargo (ou outros cargos na empresa); pode apenas ajudar a classificá-lo como alguém que não seria o melhor para um trabalho orientado a banco de dados.
c. falso.
d. falso. Primeiro de tudo, pode não haver DBA dedicado; segundo, um desenvolvedor de software deve estar ciente de uma ampla gama de problemas que podem afetar o desempenho (e a precisão) e ter pelo menos um entendimento de alto nível do gerenciamento de banco de dados.
Tome isso como lição de que existem coisas que você ainda não sabe. Agora você sabe o que estudar para a próxima vez.
fonte
Eu acho que é uma pergunta justa (e parece que a Google provavelmente pergunta). :) O objetivo da pergunta parece NÃO testar verdadeiramente seu conhecimento detalhado de consultas ao banco de dados e outras coisas, mas mais para observar como você abordaria e resolveria um problema. A capacidade de executar uma tarefa que você já fez antes é necessária, mas a capacidade de pensar em seus próprios pés e abordar um novo problema é uma habilidade vital.
Quando apresentada uma pergunta como essa, se eu não tiver o conhecimento específico do banco de dados fornecido, acho que uma resposta justa começará: "Bem, eu não tenho muita experiência com essa tecnologia em específico, mas em geral, eu procurava nos logs de desempenho para encontrar operações que são executadas com mais frequência e tentava classificá-las pelo tempo de processamento. Dessa forma, eu poderia avaliar quais operações são as mais caras e podem ser boas candidatas à otimização ".
Você não precisa de nenhum conhecimento técnico específico para a resposta acima, mas isso mostra ao seu entrevistador que você está pronto para resolver um novo problema.
fonte
Se justo ou não justo não é o problema, eles contratam, então fazem as regras e podem perguntar o que quiserem (ok, não tudo, mas quase tudo;))
E se você ainda quer o emprego, acho que não fará um favor a si mesmo se os escrever.
fonte
Uma estratégia muito comum nas entrevistas de emprego é fazer uma pergunta que está além do nível do cargo que está sendo entrevistado e ver como um candidato se atrapalha. Com as perguntas, você pode responder razoavelmente a algo como:
Ou até:
Em geral, eu esperava que os candidatos iniciantes tivessem pelo menos um entendimento básico de como os bancos de dados funcionam e também tivessem uma atitude "não sei, mas tentarei aprender".
Se você tivesse feito uma tentativa honesta e eles terminassem a ligação imediatamente, você teria um motivo real para se sentir muito mal, mas como eu diria que você deveria aprender a parecer confiante ao admitir que não sabe as coisas.
fonte
Conheço entrevistadores que não consideram uma entrevista completa, a menos que possam encontrar algumas perguntas técnicas semi-relevantes que o candidato não pode responder. O objetivo é ver como o candidato lida com esse tipo de pergunta.
Admitindo que eles não sabem? Boa. Inventar spin / BS para uma resposta? A porta.
fonte
As funções de IMO, desenvolvedor de software e DBA não são bem categorizadas em muitas empresas. Você geralmente precisa conhecer pelo menos algumas partes dos bancos de dados, se você é um desenvolvedor de software. Portanto, as perguntas parecem justas para mim, desde que não sejam solicitadas.
fonte
Eu acho que isso é justo. Eu não trabalho em um fornecedor de banco de dados, mas saber ler planos de consulta (e logs de desempenho, em menor grau) é MUITO importante. Também é bom saber como o otimizador de consultas funciona.
Em resposta às suas balas:
a) Hein? Claro que eles estão relacionados ao desenvolvimento do banco de dados e, se você estiver escrevendo um código e seu programa precisar consultar dados, isso é relevante.
b) Na verdade não. É melhor que um DBA saiba as respostas, mas um bom desenvolvedor também deve saber uma resposta. Eu não esperaria uma resposta tão detalhada quanto a de um DBA, mas esperaria algo. E, se um desenvolvedor não souber, eu poderia aceitar como uma resposta "eu pediria ao DBA para me ensinar" se o desenvolvedor ainda fosse relativamente novo no trabalho de banco de dados.
c) Não, não é. É relevante para qualquer pessoa preocupada com o desempenho de suas consultas ao banco de dados. Se você não se importa com a rapidez com que suas consultas são executadas, pode ignorar isso. Seus clientes, que têm desempenho cada vez pior em seus sites, por outro lado, podem discordar.
d) Talvez. Nem todos os desenvolvedores veem os logs de desempenho, mas se houver um problema, você pode esperar que um DBA envie por email as partes relevantes e explique o problema se você não souber como interpretá-lo. No mínimo, um desenvolvedor deve ser capaz de examinar um plano de consulta e ver os problemas básicos (Verificação completa da tabela => Ruim, Verificação rápida de índice => Bom).
Como você acabou de sair da escola e pode não ter abordado essas coisas nas suas aulas, você pode responder dizendo "Gostaria de conversar com um desenvolvedor ou um DBA mais sênior e pedir ajuda para entender isso". Os entrevistadores podem aceitar isso, já que isso mostra, no mínimo, que você está disposto a aprender coisas novas, pois ainda não teve a experiência de descobri-las. A outra opção é ir e aprendê-los por conta própria.
Boa sorte na próxima entrevista!
fonte
Eles têm todo o direito de perguntar o que querem. Você pode não ter abordado esses tópicos no currículo da faculdade, mas isso não significa que outros entrevistados não tenham ou tenham interesse suficiente no tópico para ir além do currículo. Eles estão procurando o melhor. Espero que você pelo menos tenha tentado responder às perguntas e não tenha ficado na defensiva. Se eu fosse eles e recebesse uma carta chorosa de você, você estaria na lista negra.
fonte
O desenvolvimento de software é uma profissão multidisciplinar. Acho que você não terá nenhuma quilometragem solicitando uma reformulação da sua entrevista. "Razoável", neste contexto, é se uma determinada empresa o eliminaria da consideração apenas com base na sua falta de habilidades em DBA. Fazer a pergunta é perfeitamente razoável.
Quanto mais você progredir em sua carreira, mais precisará saber. Se você está se perguntando por que um desenvolvedor de software deve se preocupar com a otimização de consultas, considere o design do aplicativo. Novos projetos geralmente envolvem discussões de modelagem de dados. Isso levará a discussões de normalização, o que levará ao trabalho de design do banco de dados. Os bons princípios de design fluem para a implementação. Projetos ruins / ineficazes no nível arquitetural têm consequências que costumam ser caras de remediar.
fonte
O conceito de "justo" não importa aqui. Esta é uma entrevista de emprego.
Eles não podem rejeitá-lo com base na cor da pele, religião, etnia ou em algumas outras coisas. Mas eles podem rejeitá-lo por qualquer outro motivo, tão estúpido quanto a cor dos sapatos que você usou na entrevista. E você pode nunca saber a verdadeira razão.
É importante ser resiliente ao entrevistar. Eu entendo a tendência de super-analisar, e já fiz isso com bastante frequência. Mas a melhor coisa a fazer é aceitar que a vida não é justa e manter entrevistas suficientes para que você não precise depositar todas as suas esperanças em nenhuma delas.
fonte
Como outros já disseram, as perguntas são completamente válidas. No entanto, seria estranho se o entrevistador decidisse se você o contrataria inteiramente com base nessas perguntas. Talvez eles quisessem ouvi-lo argumentar sobre um assunto com o qual você talvez não estivesse familiarizado, e essa é uma técnica de entrevista válida.
Se eu estivesse contratando, não excluiria você se dissesse "Sinto muito, não sei muito sobre otimizadores de consulta, mas posso aprender". Eu iria governar-lo se você começou a lamentar-se sobre as questões, no entanto.
fonte
Cara, deixe-me dizer uma coisa: não há como contornar bancos de dados como desenvolvedor de software. Todo projeto em que estive envolvido até agora ocupou pelo menos metade do tempo de desenvolvimento. O design do banco de dados é parte integrante do desenvolvimento de software e, quanto mais você souber, melhor poderá resolver o problema. Além disso, não fique confuso com o tipo de perguntas e seu contexto é muito. Na maioria das vezes, os empregadores querem apenas ver se você é capaz de pensar em si mesmo para resolver o problema em questão ou se tem confiança para, pelo menos, dizer algo sensato sobre o assunto. Como você se forma, eles percebem que realmente terão que gastar tempo ensinando todas essas coisas, mas querem saber se você valerá o tempo e o esforço. Fique afiado e modesto!
fonte
O que você acha que acontecerá se enviar essa carta? Você imagina que eles dirão "Hmm, esse candidato tem razão. Devemos tê-lo de volta e vamos fazer perguntas mais fáceis"? Eu garanto que eles não vão. De fato, o que eles farão é passar a carta e rir.
Supere seu senso de direito. Você está saindo no mundo real.
Como você acha que as perguntas sobre bancos de dados são injustas? Você acha que os programadores não precisam conhecer bancos de dados, mas essa empresa aparentemente precisa. É por isso que eles estão fazendo as perguntas! Os entrevistadores não fazem perguntas apenas para o inferno. Eles fazem as perguntas para descobrir se você sabe as coisas que eles precisam. Se você não sabe o que eles precisam, não é a pessoa certa para o trabalho.
Se você não quiser aprender sobre bancos de dados, tudo bem, mas não lamente se alguma empresa não quiser contratá-lo. Você não deve um emprego.
fonte
Como essas questões não são justas? Os desenvolvedores trabalham com bancos de dados. Você não acha que eles deveriam pelo menos estar familiarizados com os fatores envolvidos em tornar as consultas ao banco de dados eficientes e rápidas? Nem toda empresa possui DBAs internos ... e, mesmo que possua, isso não assume a responsabilidade de escrever consultas efetivas para o desenvolvedor.
fonte
Se eles fizerem as perguntas de todos os candidatos, serão justos.
Não importa se você acha que as perguntas são apropriadas para a posição, importa apenas se o empregador em potencial considera que elas são apropriadas - e se perguntam, é provável que sim (porque refletem as habilidades necessárias ou porque encontraram que as respostas recebidas lhes digam coisas interessantes sobre o entrevistado).
Por fim, você parece ter algumas idéias estranhas sobre os limites das competências de um desenvolvedor - eu nunca (até onde me lembro em uma carreira de 25 anos até agora) trabalhei com um DBA dedicado ...
fonte
Olhando para as perguntas, acho que essa poderia ser minha empresa - fazemos esses tipos de perguntas a CADA candidato como parte de uma entrevista por telefone. Sempre. Isso nos dá um padrão para trabalhar.
A maioria das respostas acima resume muito bem ...
a) Queremos pessoas com ampla experiência, não pessoas que só podem fazer algumas coisas.
b) As perguntas existem para nos ajudar a investigar seu conhecimento; talvez você não saiba a resposta completamente (ou nada); as perguntas são um ponto de partida para você expandir seu conhecimento e experiência.
c) Lembre-se de que a entrevista existe para nosso benefício E PARA VOCÊ ... a partir dos tipos de perguntas que você deve ter uma idéia do papel e da empresa e se nos encaixamos com você e você se encaixa conosco ...
d) é trabalho, se você não passar pela entrevista, então cresça, pare de choramingar e tente melhor na próxima entrevista.
fonte
Parece que eles não têm um DBA, então eles queriam que você preenchesse esse papel também. Isso é comum para pequenas empresas.
fonte
Não vejo absolutamente nada de errado com isso. Por que um desenvolvedor, especialmente se ele acaba trabalhando no banco de dados, não deve ter acesso a esses itens?
Um desenvolvedor de software não deve estar ciente do software de otimização ou como acessar os logs de eventos do aplicativo para descobrir um problema de desempenho? Se sim, por que não o mesmo para alguém que é desenvolvedor de banco de dados? Por que eles não podem ser o mesmo?
Se eu estava entrevistando alguém para uma posição de desenvolvimento de software que também envolvia o desenvolvimento de banco de dados, você está certo. Vou garantir que eles estejam cientes não apenas do que estão fazendo, mas que possam aumentar o desempenho de seu código ou o código existente como banco de dados pode ser um enorme gargalo.
Em vez de desenvolver uma atitude, talvez um melhor curso de ação teria sido "Não sei a resposta, mas aqui está o que eu faria para encontrá-la".
fonte
Como outros já apontaram, em uma entrevista praticamente qualquer tipo de pergunta é um jogo justo, desde que não toque em algum tipo de área legalmente protegida (por exemplo, idade, raça, sexo, etc.) e não é incomum ter entrevistadores perguntas para você apenas para ver como você reage à pergunta e como você tentaria encontrar uma solução para a pergunta. Além disso, como parece que você se formou recentemente, eles são um pouco limitados no que diz respeito a perguntar sobre sua experiência de trabalho e que tipo de problemas você resolveu em um ambiente de produção. Portanto, se a empresa trabalha muito com banco de dados, as perguntas feitas também podem ser relevantes para o que a posição que você está entrevistando estaria fazendo.
Em relação às suas suposições:
Talvez talvez não. Se você estiver desenvolvendo um banco de dados, usará um otimizador de consultas e planejará periodicamente tentar verificar se não há problemas óbvios em suas consultas. Se a empresa tiver administradores ou especialistas em banco de dados que possam revisar as consultas, eles podem não ter tempo para analisar tudo e também não desejam examinar todas as consultas mal codificadas. Da mesma forma, também não é incomum os desenvolvedores serem responsáveis por manter seu ambiente de desenvolvimento, incluir qualquer banco de dados e fazer com que os DBAs lidem com o lado da produção.
Eles provavelmente seriam apropriados para uma entrevista no DBA; mas, independentemente disso, eles também são tópicos com os quais um desenvolvedor deve se familiarizar, mesmo que seja apenas no nível de poder reconhecer onde um problema pode estar e fazer eles próprios algumas soluções básicas de solução de problemas. Como mencionei antes, se a empresa possui recursos limitados, eles querem ter certeza de que não estão perdendo tempo com as pessoas com algo que pode ser um problema básico.
Detalhes específicos podem ser específicos do fornecedor, mas os conceitos gerais podem ser aplicados em qualquer lugar e, às vezes, mostrar que você entende os conceitos gerais é tudo o que você precisa. Se você não deseja ficar preso em uma única pilha de desenvolvimento (ou seja, LAMP ), precisará ser capaz de mostrar durante as entrevistas que entende os principais conceitos e se sente à vontade para mudar para diferentes pilhas de desenvolvimento.
Isso geralmente é verdade, mas se parte do seu trabalho é escrever um software para um determinado banco de dados que precisa ser altamente responsivo, você precisará se esforçar ao escrever essas consultas para que um colega que seja um especialista em uma determinada área não está sendo atolado em consultas mal escritas. Embora você possa não precisar conhecer os detalhes mais precisos do que os logs estão dizendo, talvez seja necessário identificar problemas óbvios.
Espero que tudo isso ajude!
fonte
Só porque você é um desenvolvedor de software, não significa que você deve conhecer apenas os tópicos de desenvolvedor de software. Ter uma ampla variedade de conhecimentos, desde gerenciamento de servidor até tecnologias de banco de dados, é realmente uma habilidade muito útil para se ter como desenvolvedor. Eu não teria problemas para fazer esses tipos de perguntas aos candidatos. Se eles não os acertarem, tudo bem, isso não os exclui da lista (não espero que eles saibam tudo), mas se eles puderem responder, isso me mostra que o desenvolvedor é muito mais do que apenas o programador típico de conjunto de habilidades, e essas são uma raça rara.
fonte
Também tenho uma disputa semelhante com um empregador em potencial que me fez uma pergunta sobre uma tampa de bueiro. Pergunto-lhe, o que o formato de uma tampa de bueiro tem a ver com a programação!
fonte
Respostas do formulário Bem, eu não tenho certeza, mas gostaria de procurá-lo indo para, e também é bom. Ninguém acha que você sabe tudo, mas ser capaz de procurar coisas é uma habilidade essencial
fonte