Entrevista Google: vetores na prática real | guia prático
Bastidores de uma entrevista técnica real para o Google: foco em vetores, métodos e raciocínio. O que estudar sem virar decorador de leetcode
Resposta direta
Entrevista de verdade cobra modelagem e clareza sob pressão — não só decorar o nome da estrutura. Bom, acesso a toda a plataforma, com todas as formações, mais de 100 projetos para você fazer no seu portfólio, mais de 1.100 horas de conteúdo, tutorias, fóruns, suportes, eventos exclusivos da Rock City, aulas de inglês com a comunidade e diversos certificados para o seu currículo. Se eu for ver no Java doc, na.
Como o case da entrevista chegou ao canal
Eu acabei de ter acesso a uma entrevista técnica para a empresa Google, para trabalhar na empresa Google, e que de fato realmente aconteceu. Eu acabei de receber uma notificação da RocketSeat informando que na próxima segunda, dia 11 de agosto, será o dia do estudante. Bom, acesso a toda a plataforma, com todas as formações, mais de 100 projetos para você fazer no seu portfólio, mais de 1.100 horas de conteúdo, tutorias, fóruns, suportes, eventos exclusivos da Rock City, aulas de inglês com a comunidade e diversos certificados para o seu currículo. Perca a partir do dia 11 do 8 um cupom de desconto exclusivo que o link vai estar na descrição deste vídeo.
E agora, galerinha, e agora a gente vai para o conteúdo técnico, porque vocês sabem que aqui no canal tem diversos conteúdos sem enrolação e eu vou tentar explicar da melhor maneira possível como fazer para passar na entrevista técnica da Google. Pense como um programador de sistemas e eu quero que você crie sua própria classe para manipular arrays de string, vetores de string. Características básicas de um array como você faria isso então se você nunca se imaginou criando a sua própria classe vetora essa é a sua chance essa é a sua oportunidade eu vou detalhar isso exclusivo aqui tá só aqui no canal você vai ver esse tipo de conteúdo então eu vou abrir O IntelliJ, que já está com um projetinho criado a Google. A primeira coisa que eu tenho é que um vetor possui uma característica de tamanho fixo, ou seja, na minha classe vetor de string a gente precisa ter um construtor e este construtor a gente precisa.
Nomes, vetor, vou chamar assim porque não pode ser igual, vetor de strings 10, perfeito? E se vocês olharem o que foi pedido pelo teste da Google, ele fala assim, a classe precisa ter as características de um vetor, de um array, certo? Retornar nada, então void, e ele pode ser adicionar, como eu estou fazendo em português, poderia ser add um elemento, perfeito? Eu quero vir aqui no meu nome vetor, nomes vetor, ponto adicionar o Matheus, que é o que um vetor tradicional faz, perfeito?
O que vetores e métodos estavam testando
Se a posição for vazia, ou seja, for nula, eu vou pegar o elemento por parâmetro e jogar para dentro daquela posição. Eu posso vir aqui em cima desta classe e criar uma variável que eu posso chamar de tamanho, que vai ser uma variável de controle. Se o tamanho que a minha variável de controle for menor do que o tamanho do meu vetor, Significa que eu posso adicionar um elemento dentro na posição do tamanho e fazer um tamanho mais mais. E vou falar, agora você não tem mais tamanho zero, você tem tamanho mais mais, ou seja, o seu tamanho passa a ser 1.
Quando eu vim aqui e adicionar novamente um outro nome, por exemplo, a Maria, o meu tamanho vai ser 1, ele é menor do que a capacidade, porque a capacidade é 10. Ele vai dar vetor cheio, mas eu posso levar em consideração que a coleção aqui, por exemplo, a relist de string, ele consegue manipular internamente o tamanho deste vetor aqui. Para que eu consiga fazer isso, ou seja, para que eu consiga colocar um elemento acima da capacidade, eu tenho que criar uma função que vai fazer o quê? Este aumenta a capacidade, ele vai fazer justamente isso aqui que o Inteligir já sugeriu, mas a gente vai precisar fazer mais algumas coisas.
Então, por exemplo, se o tamanho da minha variável de controle for igual ao tamanho do meu vetor de elementos, significa que ele já está cheio. Eu crio um novo vetor, dobro a capacidade dele, percorro o meu vetor original, pego as posições alimentadas e jogo para esse novo vetor. Então, se eu criei ele com 10, o aumenta a capacidade, quando chegar e estourar o meu vetor, ele vai ficar com 20 automaticamente. Então, sempre que eu chamar o método adicionar, eu vou chamar a função aumenta capacidade, que vai ver se ele está cheio e vai dobrar a capacidade para mim.
Leitura útil
Entrevista de verdade cobra modelagem e clareza sob pressão — não só decorar o nome da estrutura. Use o trecho acima como restrição, não como citação ornamental.
Diferença entre treinar e só assistir resolução
Porque se a gente for entrar no método aqui desse ArrayList, por exemplo, na documentação e a gente for procurar pelo método put ou add, a gente vai ver que o método add retorna um booleano, indicando se ele conseguiu adicionar ou não. E agora eu não preciso falar que o meu vetor está cheio, porque ele é inteligente o suficiente para dobrar a capacidade deste vetor e nunca vai estar cheio. Mas, Matheus, tu não precisa fazer uma verificação, não, para ver se essa posição que ele passou é uma posição válida? Se a posição for maior ou igual a zero e a posição for menor do que o tamanho, e daí eu vou negar aqui na frente.
Se eu for ver no Java doc, na documentação, como é o método de busca do ArrayList, deixa eu ver aqui um get, vou colocar aqui, nome.get passando a posição, por exemplo, que era a posição 2, então eu vou entrar lá na documentação e vou verificar. Olha só que interessante, é um método get que passa um inteiro, que foi o que nós fizemos aqui, um método get que passa um inteiro, e ele faz um objects.checkIndex, que ele passa o índice e o size, que é o tamanho do nosso vetor. Se eu for entrar em checkIndex, ele chamou um outro método, que é o precondition.checkIndex, e esse método faz justamente o que a gente fez. Só que ele tratou daquela outra forma que o IntelliJ sugeriu, que é índice menor que zero, ou o índice for maior ou igual a length, ele vai lançar uma exceção de outOfBoundsCheckIndex, para dizer que a posição que ele informou é inválida.
Neste meu caso eu fiz ao contrário, eu testei a posição, se é uma posição válida eu neguei e lancei uma posição inválida. Teoricamente um programador ele iria entrar para resolver essa questão técnica, ele iria entrar aqui na documentação do ArrayList e iria dar uma olhada. No que que ele faz então por exemplo a vou implementar o buscar o primeiro índice vou ver o que que ele faz o pai ele faz um public ele retorna esse aí que eu já vou explicar depois que ele faz um get first que mais que ele faz se o size for igual a 0 ou seja se o meu tamanho for zero eu faço e lanço um uma exceção nesse caso um novo element exception é o se ele vai retornar Então, se eu fosse implementar esse getFirst aqui, com base na documentação, public string busca primeiro. Beleza, se o meu tamanho for zero, eu lanço uma exceção, olha só que legal, escreve throw new, e legal argumento exception, return o meu elementos da posição zero.
Como narrar raciocínio sob pressão
Ele guarda o oldElement, ele pega o elemento da posição que foi informada, primeiro ele checa, então daria para fazer assim, vamos fazer esse método aqui, só para a gente finalizar aqui essa primeira etapa, public string adiciona, então ele passa a posição, vírgula, o elemento. Perfeito ele chegaria o tamanho então daqui eu fiz o cheque do tamanho aqui beleza depois só que eu poderia criar um método igual ele fez então checo o meu tamanho na minha posição será uma posição vaga e se ela for uma posição vaga o que ele faz ele guarda o elemento daquela posição então vamos criar aqui uma string ó OldValue, a gente vem aqui e coloca o nosso elemento passando a posição, beleza? Sobrescreve aquela posição e retorna o OldValue então olha só que interessante eu vendo a documentação e eu codificando do lado da documentação Que é o que muitos me perguntam, como é que eu posso estudar olhando a documentação? Um vetor ou melhor, eu quero que você pense como um programador que é especialista em orientação a objetos e eu quero que você generalize este vetor em outras palavras, eu quero que você transforme esse vetor para trabalhar com objetos e não como um único tipo de data de dado, que seria o nosso string ou seja O que o Google pediu?
Esse object aqui, eu teria que fazer assim, se o nome instanceOf for uma string, daí eu poderia trabalhar com um objeto do tipo string. E daí vai ficar tipo JavaScript, que o JavaScript é mentiroso, porque o vetor JavaScript faz essas coisas idiotas aqui. Como é que eu transformo o meu vetor de objetos para não trabalhar com objetos, ou seja, para trabalhar com ele tipado? O aumento da capacidade vai ser um pouquinho diferente aqui ele vai ter que trabalhar com é tipo que eu fiz lá em cima do construtor né porque agora eu tô generalizando tem que fazer isso aqui ó aqui aqui aqui aqui fazer isso aqui do lenfe vezes dois Assim.
Isso vai fazer com que a minha classe teste, o meu vetor de object, eu passe o diamante aqui. E a partir do momento que eu falo para ele que esse vetor vai ser de string, eu não permito dois tipos de dados diferentes. Já parou para pensar em chegar e falar assim, cara, eu vou criar a minha própria classe vetor, eu vou estudar para ver como é que os métodos funcionam. E daí tu pode pegar aquele ArrayList e explorar de vez a documentação e ir entendendo isso que é a maravilha da coisa.
Plano de estudo pós-episódio
Esse sem dúvida vai ser um dos vídeos mais técnicos que vocês vão ver aqui no canal. Eu acabei de ter acesso a uma entrevista técnica para a empresa Google, para trabalhar na empresa Google, e que de fato realmente aconteceu. Foi um grande amigo meu, programador, um dos melhores e mais experientes, foi lá fazer essa entrevista e está sensacional. Eu garanto para vocês que o vídeo está sensacional.
Eu acabei de receber uma notificação da RocketSeat informando que na próxima segunda, dia 11 de agosto, será o dia do estudante. Então, a minha landing page vai estar totalmente modificada e com novas informações para vocês. E vai ter um desconto, a partir do dia 11 do 8, de 15% na assinatura anual. E o que vai estar incluso na assinatura?
Bom, acesso a toda a plataforma, com todas as formações, mais de 100 projetos para você fazer no seu portfólio, mais de 1.100 horas de conteúdo, tutorias, fóruns, suportes, eventos exclusivos da Rock City, aulas de inglês com a comunidade e diversos certificados para o seu currículo. Perca a partir do dia 11 do 8 um cupom de desconto exclusivo que o link vai estar na descrição deste vídeo. E agora, galerinha, e agora a gente vai para o conteúdo técnico, porque vocês sabem que aqui no canal tem diversos conteúdos sem enrolação e eu vou tentar explicar da melhor maneira possível como fazer para passar na entrevista técnica da Google. E essa entrevista técnica, durante a conversa, né?
Próximo passo
Escolha uma métrica (tempo, retries, conversão ou qualidade aceita) e rode 7 dias antes de escalar o padrão.