Acabei de ter uma entrevista por telefone para o desenvolvedor do ASP.Net. Após o material introdutório inicial, o entrevistador me fez a primeira pergunta técnica:
"Como você armazenaria 5000 elementos no lado do cliente para cada usuário em um aplicativo da web".
Minha resposta começou com,
Qual é o tamanho médio de cada elemento? Nós realmente temos que armazenar tantos dados no lado do cliente? Não podemos manter isso no banco de dados e vincular isso à sessão do usuário / ID do cliente de alguma forma .
Sua resposta foi "Não, você me diz como armazená-lo no lado do cliente, considerando que cada elemento é um registro com cerca de 8 campos, incluindo int / string, uma linha normal da tabela".
Eu disse: "Podem ser mantidos em uma sessão, mas como as sessões são mantidas no lado do servidor para cada usuário, pode ficar caro ou a outra opção é armazenar tantos dados no cookie", eu também disse que não sou Certifique-se de que muitos dados possam ser armazenados no cookie. Mencionei as opções de armazenamento HTML5, mas não trabalhei com isso. Como é baseado no SQLite, ele poderia armazenar muitos dados teoricamente .
É aí que o entrevistador disse de forma sarcástica , então você tem 3 anos de experiência em desenvolvimento web e encerrou a entrevista.
Eu estou pensando, o que eu fiz de errado? ou há algo realmente básico que me falta em relação ao armazenamento de dados no lado do cliente.
fonte
Respostas:
Concordo com os comentários de que ele provavelmente estava procurando armazenamento local em HTML5 e pode ter esperado que você tivesse experiência com ele.
Francamente, a menos que fosse um requisito essencial do trabalho e você declarasse ter experiência com ele, a expectativa e a reação dele eram irracionais, na minha opinião, para qualquer pessoa com alguma experiência.
Por quê?
Porque, há três anos, o HTML5 como uma especificação ainda estava em sua infância. Em outras palavras, para você, especificamente, sua carreira dura tanto quanto a história da própria especificação. Não é incomum ver trabalhos procurando pessoas com mais experiência com um produto do que o produto já existe. É raro ver o mesmo acontecer com uma especificação inteira. Por isso, eu o aplaudo por encontrar essa jóia.
Mais seriamente, porém, parece que o problema está mais no fato de o entrevistador fazer uma pergunta excessivamente vaga e julgá-lo com severidade demais. Não é incomum os entrevistadores fazerem perguntas vagas, especialmente na área de desenvolvimento. Geralmente, isso é feito para tentar avaliar como você pensa e para onde o seu primeiro instinto o leva. Para isso, você foi bem questionando a necessidade de armazenar esse tipo de dados localmente. Essas perguntas não são, em si mesmas, ruins, mas o que o entrevistador faz com elas pode levar a um resultado ruim para você (sem dúvida, o término da entrevista significa que você provavelmente não quer trabalhar para essa empresa).
Agora, é possível que as necessidades de negócios da empresa exijam o uso do armazenamento local por um motivo ou outro. Se for esse o caso, ele deveria ter sido explicitado na descrição do cargo e você deveria ser descartado como um candidato potencialmente viável quando o seu currículo não refletisse tal experiência se eles sentissem que não poderiam ou não deveriam treinar ou fornecer o novo funcionário com tempo / meios para acelerar a tecnologia.
Quanto ao armazenamento local em si - como mencionei anteriormente, o HTML5 como especificação existe há apenas três anos, e isso é generoso e conta os rascunhos da "última chamada". Então, você tem o problema do suporte ao navegador, que pode ou não ter um longo histórico (por exemplo, enquanto os pares nome-valor foram amplamente suportados mesmo antes da solidificação do HTML5, o IndexedDB e o Web SQL DB ainda são incompletos ).
Por fim, o uso do armazenamento local HTML5 ainda é menos comum. Nos meus anos como desenvolvedor web, deparei-me com um aplicativo que sei que o utilizava de uma só vez (pode haver alguns que o usam invisivelmente, mas é mais difícil de quantificar), e talvez meia dúzia de projetos que possam ser capazes utilizá-lo (mas realmente não precisava deles naquele momento, ou o custo de usar essa abordagem em relação a outra não era justificado).
Em um sentido mais geral, entrevistas falhadas acontecem. Desenvolvimento de software é muito campo de um grande demais para ser capaz de saber todos os pequenos detalhes sobre cada coisa (neste caso, os limites de armazenamento de HTML5 armazenamento local), e honesto sobre não ser conhecer uma determinada coisa é, na minha opinião, ainda é o melhor caminho (pessoalmente, tenho mais respeito por alguém que reconhece suas lacunas no conhecimento e procura preenchê-las, do que por alguém que tenta encobrir o fato de que não sabe de nada). Com isso em mente, eu diria que você lidou bem com a pergunta, dadas as informações fornecidas aqui. Se houvesse algo que você fez errado, pode ter sido nos detalhes de como você respondeu, o que não podemos ajudá-lo aqui, porque não estávamos na entrevista para avaliar os aspectos não-linguais de suas respostas.
fonte
A resposta 'correta' - pelo menos a que eles estavam procurando - era de fato o HTML5 LocalStorage (um excelente link de Steven Burnap). E o entrevistador provavelmente estava sendo ... bem, acredito que a frase técnica é "um pouco de botão ".
Isso é basicamente alcançado pelo processo de eliminação, já que um cookie não pode ser nem grande o suficiente , as sessões são realmente do lado do servidor e não um mecânico de armazenamento do lado do cliente, etc. O entrevistador provavelmente pensou que isso era conhecimento comum e deve saber, o que é engraçado, pois você só precisa dos recursos HTML5 LocalStorage, normalmente no trabalho da interface do usuário com muitos dados, que é a exceção e não a regra. Uma pessoa pode programar por muitos anos e não precisa do recurso, enquanto outros podem precisar dele em seu primeiro projeto.
No entanto, eu geralmente diria que, em casos como esse, é menos uma questão de sua resposta e sim uma questão de como você a respondeu e o processo que costumava chegar lá. Na sua descrição, você fez OK, mas eu não estava lá e, portanto, a impressão deles pode ser muito diferente.
A maioria dos entrevistadores sensatos não declara uma pequena faceta da tecnologia um teste decisivo, onde todas as pessoas devem responder de maneira ótima ... no entanto, eu tive muitas entrevistas com pessoas que não são entrevistadoras sensatas. Conhecer essas trivialidades pode ser uma benção quando você se deparar com essas pessoas.
Por fim, gostaria de observar que, ao declarar a entrevista de uma maneira não muito agradável, é altamente provável que a pessoa já estivesse irritada e já tivesse decidido sobre você (sua resposta a essa pergunta específica pode não ter importado na menor). Eles estavam esperando um momento para você tropeçar, para que pudessem apontar e não expor o fato de que haviam decidido nos primeiros 30 segundos, mais ou menos, se você era um candidato viável ou não.
Talvez eu pratique como responder perguntas para as quais você não conhece imediatamente a resposta "certa", pois a capacidade de estar errado de maneira graciosa e parecer instruída e inteligente de qualquer maneira é uma habilidade muito prática - e todos nós poderíamos nos beneficiar da prática extra . Revise alguns artigos "novidades da [última versão da tecnologia importante]" e volte ao mercado!
fonte