Você está na página 1de 20

PREPARAÇÃO PARA

ENTREVISTAS DE
PROGRAMAÇÃO
autor: github.com/leandromoreira
——————————————————————————————————————————

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 1 of 20
:
PREPARAÇÃO PARA ENTREVISTAS DE PROGRAMAÇÃO 1
TLDR; 3
você só tem um mês 3
você tem mais tempo 3
introdução, rejeição e consistência 4
processo e planejamento 6
início da entrevista antes de escrever qualquer código 8
no meio da entrevista enquanto codifica 8
entender versus aprender 10
repetição espaçada 11
conhecimento em ondas 11
recomendação de introdução: estrutura de dados, algoritmos e big oh 13
introdução a complexidade algorítmica - big oh 13
introdução a algoritmos e estrutura de dados 14
prática de exercício 16
pratica de mock 17
recomendação de exercícios 19

TLDR;

você só tem um mês


Siga o roteiro:
● introdução
● processo para abordar os problemas
● introdução a complexidade algorítmica B e A
● introdução a algoritmos D e E
● assista os dez exercícios mais comuns
● faça um ou dois exercícios por dia do roteiro
● marque pelo menos uma entrevista mock por semana

Se você tem mais tempo


Siga o roteiro:
● introdução
● processo para abordar os problemas
● leia entender é diferente de aprender
● introdução a complexidade algorítmica B e A
● introdução a algoritmos D e E
○ introdução prática de listas encadeada J,
○ grafos I,
○ programação dinâmica H e

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 2 of 20
:
○ árvores binárias K
● assista os dez exercícios mais comuns
● faça um ou dois exercícios por dia do roteiro
● marque pelo menos uma entrevista mock por semana

introdução, rejeição e consistência


"What happened to the funny paper?
Preparação Para Entrevistas… Smiling was your money maker"

Eis aqui (mais) um guia de como se preparar para entrevistas de código focado em empresas no
estilo FAANG. As sugestões que descrevo e recomendo são sob o meu ponto de vista, portanto
tudo que ler aqui coloque mentalmente "na minha opinião"[1] antes de cada parágrafo.

As ideias que apresento "funcionaram" pra mim mas não hesite em adaptar para o seu contexto.
Primeiro alguns pontos que são importantes reconhecer.

● Tenha consciência de que falhar em entrevistas é mais comum do que parece. Ouvi
diversas vezes de pessoas que recrutam que é natural falhar 2x, 3x ou 4x e até casos de
8x e isto não tem relação com ser uma pessoa inteligente/competente ou não.
○ Muitas amigas e amigos que considero geniais e talentosas não passaram em
alguns destes processos. Enfim, isso é muito habitual.
● Existem empresas que fazem entrevistas mas sem formalmente exigir este estilo de
desafio de programação.[2]
● Só consegui passar depois de falhar numerosas vezes e persistir/insistir com
consistência em estudar/praticar e simular; que é o que vou descrever aqui.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 3 of 20
:
Editar com o app Documentos
Faça ajustes, deixe comentários e compartilhe
com outras pessoas para editar
simultaneamente.

AGORA NÃO INSTALAR O APP

Fonte: reddit (não sei se é o OP)

Não acredito em fórmula mágica da paz do estilo "aprenda tudo de Y em X dias"[3]. Sempre que
obtive aprendizado ou compreensão razoável de um assunto foi por ter errado, estudado,
praticado o assunto por muito tempo.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 4 of 20
:
Fonte: https://interviewnoodle.com/preparing-for-the-facebook-interview-a-brutally-honest-guide-
8e09f3b8a054

processo e planejamento
"Meu amor, disciplina é liberdade
Compaixão é fortaleza"

Antes de pensar no que estudar (conteúdo) ou em como estudar (estratégia), acho que vale a
pena comprometer-se com um tempo de estudos e seguir de forma consistente. Exemplos:
● 3 vezes na semana 2h (antes de ter uma entrevista) por 3 meses,
● 5 vezes na semana 1h (com a entrevista marcada) até a entrevista

Seguir um planejamento sem objetivo real é muito difícil. :( Então, talvez o seu primeiro
objetivo pode ser um pré-preparo para entrevistas. E como saber se está pré-preparada?! Uma
forma de avaliar isto pode ser a sua capacidade de responder perguntas easy e medium[4] que
cobrem vários algoritmos e estruturas de dados do leetcode.com.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 5 of 20
:
O fato importante é que você precisará de tempo, quanto mais tempo melhor e mais abrangente
será o preparo.

Mas tão importante como ter um planejamento (horário dedicado) é ter um template ou
processo para abordar os problemas nas entrevistas. Gosto muito da proposta da Gayle
Laakmann[5].

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 6 of 20
:
Fonte para esquemas/templates de preparo para coding e soft skills.

início da entrevista antes de escrever qualquer código

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 7 of 20
:
Mantenha-se verbalmente falando como se estivesse apresentando tudo o que você pensa, até
mesmo o que você pensa ser "bobo":

1. Ouça bem quem entrevista, preste muita atenção em tudo, se quiser anote num
caderninho de lado. Tenha plena certeza que entendeu o problema.
a. Saiba que é comum problemas descritos de forma ambígua, incompleta ou
vaga para gerar uma "conversação inicial" e testar sua capacidade de pensar e
questionar[6].
2. Usualmente a pessoa que entrevista te dá um exemplo de entrada e saída esperada,
tenha certeza que entendeu o mesmo MAS além deste exemplo proponha e
debugue outros exemplos mais completos
a. Não escolha um exemplo MUITO GRANDE pois pode tomar seu tempo precioso
3. Proponha uma pseudo solução de força bruta, se possível, normalmente a primeira
que vem a nossa cabeça
a. A proposta ainda é em pseudo código ou graficamente
b. Diga verbalmente qual a complexidade de tempo e memória
4. Proponha e discuta uma pseudo solução otimizada para o problema
a. Aprender a otimizar vem com experiência de se fazer muitos exercícios.
5. Debugue sua pseudo proposta usando os exemplos que você achou mais completos

no meio da entrevista enquanto codifica


Continue verbalmente expressando o que pensa e só agora vá para o código:

6. Implemente sua proposta na linguagem preferida


a. Uso python pois ela tem muita coisa útil pra entrevistas já built-in e é uma
linguagem bem simples
7. Teste o código, debugando com exemplo ou rodando a depender da empresa
a. Neste momento é comum encontrarmos erros bobos, do tipo um loop indo além
do esperado e etc.
8. Discuta a complexidade de tempo e memória
9. Se possível crie testes de unidade para casos como vazio, nulo, negativo, elementos
muito grandes/pequenos, valores 0, elementos repetidos;
a. use seu julgamento para criar os testes pensando

Recomendo ver sessões simuladas, se possível de empresas similares às que você deseja
aplicar para ter uma noção do que é esperado. Veja como as partes (entrevistadora, entrevistada)
colaboram:
● https://www.youtube.com/watch?v=XKu_SEDAykw
● https://www.youtube.com/watch?v=21pmwl0hrME
● https://www.uber.com/pt-BR/blog/coding-interview-dicas-para-o-processo-seletivo-de-
engenharia-da-uber/

Colabore com a pessoa entrevistando como se fosse um par de trabalho[7]. Converse até
mesmo papo fiado faz bem mas tenha noção do seu tempo, ele é curto.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 8 of 20
:
entender versus aprender
“If you can't explain it simply, you don't understand it well enough.”

Há diferenças entre entender e aprender. Conseguir entender bem enquanto assistimos alguém
no youtube é bem distinto de dizer que aprendeu o que foi visto.

Classifico entender como o processo intelectual de compreender um fato, uma explicação.


Enquanto aprender seria a capacidade de conseguir aplicar/explicar o que foi
compreendido para si ou outra pessoa em um outro contexto/momento distante do ponto onde
ocorreu o aprendizado.

Um exemplo:
● [entendi] Ouvi sobre TCP/IP antes da faculdade e entendi o básico que era:
○ Um conjunto de protocolos de rede para garantir[8] a entrega dos dados.
● [entendi] Estudei TCP/IP na faculdade:
○ Aprendi sobre ACK, handshake, paridade de bit, classes IP, sub máscara,
controle de congestão e etc.
● [entendi] No início da vida profissional tive contato superficial (como usuário) com
TCP/IP configurando máquinas (sem DHCP), configurando bancos de dados em
aplicações e etc.
● [aprendi] Ainda na vida profissional (na globo principalmente) tive contato mais
aprofundado de TCP/IP
● [aprendi] Hoje sei que apesar de ter um bom entendimento sobre TCP/IP não sou um
especialista de redes (mesmo sendo interessado e continuamente estudando o assunto)

O mesmo tive que fazer para estrutura de dados e algoritmos para entrevistas. Me disciplinei[9] a
estudar, praticar, ler e reler, ver vídeos no youtube de várias fontes e fazer isso ser parte da
rotina.

Cuidado com a dispersão, pois algumas pessoas[10] têm a tendência de abrir muitas "abas de
conhecimento" mas neste momento o importante mesmo é o foco; um assunto por vez.

repetição espaçada

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 9 of 20
:
Eu criei um sistema[11] no qual registro o problema que resolvi, quantas vezes, categoria, como
resolvi e etc. E para memorizar o aprendizado, resolvo problemas "velhos" a cada X[12] tempo
sem olhar nas minhas notas, depois, se necessário, olhando as notas. Assim consigo testar o
quanto eu entendi versus aprendi.

Exemplo, esta semana fiz o exercício #3, semana que vem refaço o mesmo exercício. Em tese
esta revisão é rápida e ajuda a fixar na memória.

É importante resolver os problemas se possível explicando para outra pessoa, senão encontrar
outra pessoa, fale consigo como se estivesse apresentando. A habilidade de explicar o
processo de pensamento é importante demais para entrevistas.

conhecimento em ondas
Já teve a impressão de ter encontrado o link/livro/vídeo que explica de forma ótima aquele
assunto que você vem estudando a vida toda?!

Eu tenho a sensação de que na verdade é nossa capacidade de entender que vai se expandindo,
daí temos a intuição de ter encontrado o recurso definitivo. Talvez só agora entendamos melhor o
assunto mas na verdade o que você sabe hoje é a soma de tudo que experimentou no passado.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 10 of 20
:
O meu conhecimento de TCP/IP foi aumentando[13] à medida que dedicava mais e mais ao
assunto, mas não se engane continuo ignorante.

Fonte do gráfico acima sindlurb.

Conhecimento irá necessariamente precisar de tempo, persistência, diversidade de


apresentações[14] sobre o assunto, trabalho, prática, erros e persistência.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 11 of 20
:
recomendação de introdução: estrutura de dados,
algoritmos e big oh
"The story of a woman on the morning of a war
Remind me if you will exactly what we're fighting for"

É importante rever ou aprender os principais algoritmos, estruturas de dados e o conceito de


complexidade algorítmica (o big oh) antes de iniciar nos exercícios[15].

Recomendo anotar num caderno ou num google/microsoft docs e intercalar os assuntos e os


revisar uma semana depois. Se possível apresente/escreva o que aprendeu[16] para outra
pessoa.

introdução a complexidade algorítmica - big oh


TLDR; Veja B e depois A. É importante iniciar a prática dos exercícios o mais rápido
possível e se necessário revise a sessão depois com mais contexto/prática.

Os melhores recursos sobre o assunto:

A. Duração média - Alvin Zablan - Youtube - Grátis The Complete Guide to Big O
Notation & Complexity Analysis for Algorithms: Part 1 of 2
B. Duração curta - Neetcode - Youtube - Grátis Big-O Notation - For Coding Interviews
a. Ou/e o duração curta - HackerRank - Youtube - Grátis Big O Notation
C. Duração longa - Inside Code - Udemy - Pago Complexity Analysis
D. Duração média - Stanford (Tim Roughgarden) - Youtube - Grátis 2 1 The Gist 14
min
a. Do livro "Algorithms Illuminated (Part 1): The Basics"
E. Duração média - Steven Skiena - Youtube - Grátis CSE373 --- Lecture 2: Asymptotic
Notation (Fall 2021)
a. Do livro: "The Algorithm Design Manual"
F. Duração curta - William Fiset - Youtube - Grátis Introduction to Big-O
G. Duração média - Kantan Coding - Youtube - Grátis Big O Notation - Full Course

Minha sugestão é iniciar com a introdução rápida B e partir pra média A, depois avalie se
conseguiu entender razoavelmente bem, senão explore os demais recursos. O G[17] é
extremamente recomendado.

introdução a algoritmos e estrutura de dados


TLDR; Veja D depois E. É importante iniciar a prática dos exercícios o mais rápido possível
e se necessário revise a sessão depois com mais contexto/prática.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 12 of 20
:
É importante aprender o que é e como funciona:

A. Estruturas de dados
○ Array estática e array dinâmica (1d e 2d)
○ Lista encadeada (simples e duplamente encadeada)
○ Filas
○ Pilhas
○ Hash table / Set
○ Árvores
○ Trie
○ Grafos
■ lista adjacente
■ array 2d
■ sem formato claro
○ Heaps
B. Algoritmos
○ Pelo menos um algoritmo de sorting (ex: merge sort)
○ Busca binária
○ Recursividade
○ Greedy (gulosos)
○ Técnicas ou padrões
■ dois ponteiros
■ janela deslizante
■ monotonic stack
■ duas heaps
■ dois ponteiros rápido e lento para detecção de ciclo
○ BFS
○ DFS
■ pre-order
■ post-order
■ in-order
○ Dijkstra
○ Disjoint set
○ Programação dinâmica
○ Topological sort

Os melhores recursos sobre o assunto:


A. Duração longa - Neetcode - Pago https://neetcode.io/courses
○ E.D., algoritmos e padrões de código para entrevista
B. Duração média - William Fiset - Youtube - Grátis Data structures introduction
○ E.D. e alguns algoritmos
C. Duração longa - Kantan Coding - Youtube - Grátis Algorithmic Patterns: Intro
○ Só padrões de código
D. Duração curta - HackerRank - Youtube - Grátis Data Structures: Balanced Parentheses
in Expression
○ E.D.
E. Duração curta - HackerRank - Youtube - Grátis Algorithms: Recursion
○ Algoritmos
F. Duração longa - Stanford (Tim Roughgarden) - Youtube - Grátis 2 1 The Gist 14
min
○ Algoritmos

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 13 of 20
:
G. Duração longa - Steven Skiena - Youtube - Grátis CSE373 --- Lecture 2: Asymptotic
Notation (Fall 2021)
○ Algoritmos
H. Duração média - Alvin Zablan (freeCodeCamp.org) - Youtube - Grátis Dynamic
Programming - Learn to Solve Algorithmic Problems & Coding Challenges
○ Algoritmos especificamente programação dinâmica
I. Duração média - Alvin Zablan (freeCodeCamp.org) - Youtube - Grátis Graph Algorithms
for Technical Interviews - Full Course
○ Algoritmos especificamente grafos
J. Duração média - Alvin Zablan (freeCodeCamp.org) - Youtube - Grátis Linked Lists for
Technical Interviews - Full Course
○ Algoritmos específicos lista encadeada
K. Duração média - Alvin Zablan (freeCodeCamp.org) - Youtube - Grátis Binary Tree
Algorithms for Technical Interviews - Full Course
○ Algoritmos específicos árvores binárias
L. Duração longa - Alving Zablan - Pago https://structy.net/
○ Algoritmos e E.S.

Minha sugestão é iniciar com D e E, e partir para os exercícios. Se quiser uma introdução mais
elaborada e prática de lista encadeada (J), grafos (I), programação dinâmica (H) e árvores
binárias (K) recomendo muito os vídeos do Alvin Zablan, ele é muito didático.

Durante os exercícios revise B e C de acordo com a demanda do seu entendimento. É


importante iniciar a prática dos exercícios o mais rápido possível e se necessário revise a
sessão depois com mais contexto/prática.

prática de exercício
"Sonhe bem, pense bem, ajude alguém
A noite é fria, seu doutor, você não vem"

Se preparar para entrevistas de código lembra muito o ato de aprender uma nova língua, por
exemplo Russo, Japonês e etc. Os motivos:
● Não é sua linguagem materna (foge de sua rotina)
● Você pode aprender sozinha mas com suporte você pode acelerar o seu
desenvolvimento (recursos/vídeos)
● Tem gírias e jeitos (padrões de solução) difíceis de aprender sozinha
● Necessita muita prática (exercitar)

Conselhos para enquanto resolve os exercícios:


● Tente seguir um processo
● Converse/apresente (mesmo sozinha) sobre como resolver o problema
● Tente resolver sozinha, mas caso passe mais de 1h sem ideias busque a resposta na
Internet. Tem exercícios que dificilmente uma pessoa chegaria a solução sozinha em um
tempo razoável e o tempo é crucial para o preparo.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 14 of 20
:
● Registre cada exercício que você fez capturando como resolveu, a categoria deste
problema e o refaça em um tempo futuro pra solidificar o aprendizado.

pratica de mock
"Por que que eu passo a vida inteira com medo de morrer?"

Simular a entrevista é muito importante. Basicamente você pode fazer a entrevista com uma outra
pessoa e ela faz de volta com você. Durante a simulação tente respeitar o tempo e o formato da
entrevista, observando para dar e receber feedback.

A plataforma Pramp oferece este mesmo modelo de treinar com outra pessoa. Você pode
escolher fazer entrevistas com pessoas treinando (amigas/amigos ou aleatório) de graça ou pagar
para ser entrevistado por profissionais.

A plataforma cobre os principais tipos de entrevista.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 15 of 20
:
Uma vez agendado, você precisa se preparar para fazer a entrevista. O site oferece o material
para o preparo. Um ponto bom da plataforma é que você poderá cair com uma pessoa que não
fala sua língua materna então terão que usar o inglês, o que pode ser ótimo para treinar
também.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 16 of 20
:
O meu conselho é fazer várias simulações desde o início da preparação. Elas são ótimas para
construir confiança e entender onde você precisa treinar mais[18]. Eu recomendo fazer 1x por
semana inicialmente e aumentar ou diminuir ao perceber como você reage a uma simulação de
entrevista.

recomendação de exercícios
"My name is 'I love you'
I come from the same place as everyone"

Todos os conselhos anteriores são excelentes mas sem prática eles não servem muito. Aqui é
onde você deve aplicar o que foi visto seguindo um roteiro de exercícios.

O primeiro passo que recomendo é ver uns 10 exercícios comuns utilizados em entrevistas. Estes
exercícios não servem para te aquecer mas para calibrar sobre o que esperar. E pode ser que

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 17 of 20
:
estes exercícios te assustem[19] mas a ideia é ser exposto ao que é esperado, não se desmotive
os próximo parágrafo contém um plano para aprender como resolver eles e outros .

Após ter tido um contato amplo com perguntas e a organização sugiro seguir o roteiro criado no
site Neetcode. Ele está formatado como uma árvore, agrupando os assuntos por categorias.

A ordem recomendada é iniciar pela raiz e ir descendo. Inicialmente resolvendo todos os


exercícios easy para cada categoria e ir avançando.

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 18 of 20
:
O legal desse roadmap[20] é que ele tem a solução em vídeo para todos os problemas. A pessoa
é bem didática para resolver estes problemas. Então, caso fique muito tempo bloqueada num
exercício, olhe a solução ali mesmo.

São 150 exercícios, mas acredito que após completar metade você já se sentirá mais preparada
tanto para entrevistas quanto pra continuar praticando. E não se esqueça de revisar, se
comunicar e fazer mock interviews pra fazer desse processo mais natural e obter sucesso! Boa
sorte!!!

[1] no caso na minha, não na sua pessoa que lê


[2] normalmente existem mais tipos de entrevistas como system design, soft skills, e etc
[3] exceto quando X é suficientemente grande para realmente aprender
[4] não exatamente todas sempre
[5] e recomendo ver este vídeo pra entender a proposta da mesma explicada por ela
[6] a pessoa é, muitas vezes, avaliada pelas perguntas que faz
[7] esse foi um conselho de um grande amigo que fez muito sentido pra mim desde o primeiro dia que ele
me contou
[8] tenta garantir é o termo mais adequado
[9] mas como a maioria dos seres humanos, uma semana era menos aplicada do que a outra, mas o que
vale é consistência e persistência
[10] eu
[11] é mentira, me inspirei em algum desses links que coloquei no corpo do texto mas não lembro qual foi
[12] X variando de 1 a 2 semanas, mas às vezes é bom revisar o que já foi feito próximo às entrevistas
[13] o conhecimento aumenta em função da dedicação no tempo f(dedicação, tempo)
[14] no sentido de visões / explicações sobre o estudo, várias fontes trazem maior entendimento.
[15] na verdade penso que pode ser simultâneamente, ou até revisando posterior a um exercício
[16] como estou fazendo aqui recursivamente
[17]

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 19 of 20
:
[18] ou revisar um conteúdo novamente ou mais profundo
[19] eles me assustaram inicialmente, por não entender alguns deles
[20] além de ser de graça e persistente, basta logar com seu gmail ou github

https://docs.google.com/document/d/1gRL6ILI2XI8_eFGCrr-Q_ZxkdcnzECa-WN0kX0GVIDc/mobilebasic 2024-01-24, 7 19 AM
Page 20 of 20
:

Você também pode gostar