Perguntas sobre Python em entrevistas de emprego: Como se preparar?
Python é uma das linguagens de programação mais populares da atualidade, aparecendo em terceiro lugar no índice Tiobe de 2020, e a sua popularidade não é somente por conta da sua simplicidade e do seu poder de resolver problemas complexos de forma simples, mas também por conta da crescente demanda por programadores aptos a trabalharem com esta linguagem.
As empresas buscam diferentes tipos de desenvolvedores Python para as mais diferentes áreas: desenvolvimento web, ciência de dados e inteligência artificial, ou mesmo DevOps.
Python está em todos os lugares e pode ser usada em todos os setores.
Last Updated July 2023
Aprenda Python 3.8.5 com Expressões Lambdas, Iteradores, Geradores, Orientação a Objetos e muito mais! | By Geek University
Explore CourseQuando um programador começa a pesquisar por vagas, sites como o Glassdoor ajudam a conhecer melhor as empresas na qual estamos interessados, salários, benefícios pagos e até mesmo saber como é o processo seletivo como um todo, com relatos diversos de diferentes candidatos em diferentes posições na empresa e até mesmo tipos de perguntas que foram feitas durante a entrevista.
Todo desenvolvedor Python em algum momento já passou ou irá passar por algum processo seletivo onde o candidato tenha que apresentar competências e demonstrar o que sabe sobre a linguagem.
O candidato não precisa ser um “Pythonista” para se considerar preparado para a entrevista de emprego, mas alguns detalhes em relação ao código como os apresentados a seguir podem fazer a diferença.
Orientação a Objetos e Programação Funcional
Python é uma linguagem de programação multiparadigma. Alguns problemas podem ser resolvidos tranquilamente usando orientação a objetos de forma clássica, outros problemas podem ser melhor resolvidos fazendo uso de programação funcional.
Então qual paradigma usar?
Não importa!
Use orientação a objetos onde fizer sentido usar, use programação funcional onde fizer sentido usar.
Lembre-se sempre dos princípios DRY (Don’t Repeat Yourself) e do KISS (Keep It Simple Stupid)
Cuidado com excessos na sua lógica com o uso demasiado de condicionais com dois ou mais níveis.
Encarne o espírito do programador Pythonista
Saiba usar (e diferenciar o uso) de Listas, Tuplas, Dicionários, Conjuntos, métodos especiais como o __str__ e __init__ e properties.
Ninguém precisa lembrar de tudo a todo o momento, pois usamos recursos na medida que precisamos, então faça uso das funções dir() e help() para ajudar a lembrar do funcionamento de algum recurso da linguagem
Esteja preparado para perguntas do tipo:
Qual a diferença entre escopo global e local?
De forma básica, falamos em escopo global quando declaramos variáveis fora de qualquer bloco de código. Podemos usar também a palavra reservada ‘global’. Já um escopo local se refere a variáveis declaradas no contexto de um bloco de código.
O que pega muitos programadores novatos aqui é o fato de que uma variável local, após criada, passa a ser reconhecida mesmo fora do seu bloco.
Exemplo:
variavel_global = 42
if variavel_global >= 40:
variavel_local = 7
print(variavel_local)
No exemplo acima, fica bastante claro o escopo de ‘variavel_global’, não apenas pelo seu nome, mas também porque está explicitamente declarada fora de qualquer bloco.
Mas note a ‘variavel_local’. Ela só irá existir se ‘variavel_global’ for maior ou igual a 40. Caso contrário
não irá existir.
Desta forma a linha onde estamos imprimindo ‘variavel_local’ neste contexto irá funcionar normalmente, já que durante a execução ‘variavel_local’ será criada e passará a existir no contexto. Por isso que conseguimos acessar seu valor mesmo fora do bloco da condicional.
Agora se alterarmos o valor da ‘variavel_global’ para qualquer valor abaixo de 40, esta ‘variavel_local’ nunca será criada e portanto não estará presente no contexto quando formos imprimir seu valor, ocorrendo então um erro.
Qual a diferença entre método de classe e método estático?
A única diferença entre eles é a assinatura, pois ambos são métodos de classe e podem ser executados sem que precisemos instanciar um objeto da classe.
O que é o GIL e como podemos evitá-lo?
O Global Interpreter Lock, ou simplesmente GIL para os íntimos, é um mecanismo em Python para uso em concorrência e seu principal problema é que ele bloqueia o interpretador fazendo com que não ocorra concorrência verdadeira.
Este problema faz parte do ‘core’ da linguagem e não há muito o que fazer, mas fazendo uso dos módulos ‘multiprocessing’ ou ‘asyncio’ podemos contorná-lo.
O que são Metaclasses e quando usá-las?
Basicamente, metaclasses são classes para classes. Usamo-as para configurar comportamentos comuns às classes quando herdadas.
Metaclasses e metaprogramação é um tópico gigante em Python e vale a pena dar uma estudada mais aprofundada.
O que são Type Annotations?
Python é uma linguagem dinamicamente tipada certo? Mas em algumas aplicações, ou alguns programadores poderão se sentir mais confortáveis ao fazer uso explícito de tipos de dados.
Desta forma, em Python, podemos fazer a declaração de uma função como:
def eleva_potencia(x, y):
return x ** y
A função simplesmente retorna x elevado a y.
Mas fazendo uso de Type Annotations em Python, podemos deixar algumas pessoas mais confortáveis declarando a mesma função da seguinte forma:
def eleva_potencia(x: int, y: int) -> int:
return x ** y
Note que agora estamos explicitando qual é o tipo de dados de entrada, neste caso inteiro, e qual é o retorno da função.
Isso facilita a leitura e entendimento e fazendo uso de ferramentas como mypy podemos validar nosso código antes de executá-lo, o que facilita evitar bugs.
OBS: Empresas gostam disso.
O que são Generic Type Annotations?
A ideia aqui é a mesma do Type Annotations, mas informamos um tipo a um outro tipo como parâmetro;
Exemplo:
class Protudo:
….
carrinho = List[Dict[Produto, int]]
No exemplo acima, estamos declarando uma variável chamada ‘carrinho’ que representaria um carrinho de compras, sendo que este carrinho é uma lista contendo dicionários, onde a chave do dicionário é do tipo Produto, e temos um int como valor que irá representar a quantidade deste produto no carrinho.
O que são Generator Functions (Funções Geradoras)?
Funções geradoras são funções que podem ser suspensas e retomadas a qualquer tempo.
São bastante importantes para resolver problemas complexos.
O que são decorators?
Decorators, ou decoradores, são funções criadas para modificar o comportamento de outras funções.
Após definir funções decoradoras, podemos ‘decorar’ outras funções com o uso do @ (arroba).
O que são *args e **kwargs em Python?
Estes são tipos de objetos ‘especiais’ em Python na qual usamos para desempacotar valores, sendo que *args apresenta uma lista de valores e **kwargs apresenta um dicionário.
O que são os arquivos .pyc?
Estes arquivos são a versão bytecode dos nossos arquivos de programa Python. Se você conhece a linguagem Java, deve conhecer o mesmo quando são gerados os arquivos .class
Código é apenas parte do processo
Você pode ser um programador Trinca das Galáxias, mas se não gostar ou não conseguir se comunicar de forma razoável é muito grande a chance de você perder boas oportunidades.
Isso porque as empresas não abrem processo seletivos para contratar robôs. Elas abrem processos seletivos para contratar pessoas que usem suas experiências para resolver problemas e que discutam entre elas boas formas de resolvê-los.
Não precisa ser um Ciro Bottini, mas se você não for um bom comunicador ficará difícil vender o próprio peixe e convencer a empresa de que você é a melhor opção e não o outro candidato.
Conheça a empresa
Como disse um dia Sun Tzu: Conheça seu inimigo como a si mesmo.
Claro que uma empresa não é sua inimiga, mas você deve conhecê-la antes mesmo de fazer parte dela, caso queira fazê-lo. Então realizar uma pesquisa sobre a empresa é basilar e deve ser feito antes mesmo de se candidatar a uma vaga para ela, pois vai que você não goste do que conheceu?
Principais cursos em Python
Os alunos de Python também aprendem
Empower your team. Lead the industry.
Get a subscription to a library of online courses and digital learning tools for your organization with Udemy Business.