Programação Orientada a Objectos
1. Explique quais os conceitos chave da programação orientada a objectos, mencionando
herança e polimorfismo.
2. Explique o conceito de Interface e Classe Abstracta, mencionando as diferenças entre
as duas.
3. Defina uma classe chamada Vehicle, um método nessa classe chamado GetColor e um
segundo método que chame GetColor.
class Vehicle:
def GetColor():
return ‘Verde’
def Cor():
print(GetColor())
4. Considerando o seguinte código, qual o valor de Res?
Data = ‘Defina uma classe’
Res = Data[ : 6 ]
Res é igual a Defina
5. Qual a utilidade da função lambda? Dê um exemplo.
6. Descreva o conceito de serialização de dados. Que classes existem para a efectuar?
Dados
7. Elabore as tabelas necessárias para guardar numa base de dados informações relativas
a alunos e disciplinas, onde estão inscritos (um aluno tem que ter um nome e data de
nascimento, e uma disciplina tem um nome e um professor).
CREATE TABLE alunos(id INT, nome VARCHAR, data_nascimento VARCHAR);
CREATE TABLE disciplina(id INT, nome VARCHAR, professor VARCHAR);
Web
8. A validação de inputs numa form deve ser efectuada no cliente ou no servidor?
Porquê?
A validação de inputs deve de ser efectuada no cliente, para não sobrecarregar o
servidor.
9. Diga o que entende por SQL Injection possíveis soluções para evitar.
SQL injection é uma vulnerabilidade que existe nas query que fazem operações
nas bases de dados (INSERT,UPDATE,DELETE), através das aplicações que fazem query a base
de dados é possível enviar instruções com (INSERT,UPDATE,DELETE) para alterar a base de
dados ora isto é uma grande vulnerabilidade pois permite a pessoas desconhecidas e
indesejadas fazem operações nas bases de dados quer seja adicionar registo, alterar registo,
apagar registos ou até apagar a base de dados por complete, um método para proteger a base
de dados destas operações é em vez de passar os valores para a base de dados de forma
literal, deve de se usar algo que vá representar esse valor, ou seja passamos os valores por
parâmetro.
10. Descreva o modelo MVC e cada um dos seus componentes (Model, View, Controller).
Sucintamente se MVC o Model é o que representa a estrutura de dados
ex(uma estrutura JSON), a View é o que é utilizado para mostrar esses dados ex(uma página
web, um componente ou o ecrã de uma aplicação) e o Controller é o responsável por fazer as
alterações a esses dados(Inserir, Alterar ou Apagar), também é aqui que se encontram o
métodos complementares..
11. Se conhecer o OpenErp, indique de que forma são passados os dados da Vista para o
Controlador ?
12. Que mecanismos existem para validar os parâmetros passados da Vista para o
Controller?
13. Explique o conceito de Unit Testing e Test Driven Development
Unit Testing e Test Driven Development são testes automáticos desenvolvidos pelos
programadores para detetar possíveis erros de lógica comuns que possam surgir
durante a utilização da aplicação, evitando assim a entrega de programas com
potenciais fragilidades. Sendo estes testes realizados por uma maquina, consegue-se
fazer um número muito maior de teste, em um tempo menor do que se fosse feito
uma uma pessoa.
Algoritmos
14. Elabore uma função que receba 2 inteiros e retorne o resultado da divisão inteira ente
os 2 inteiros recebidos, sem recorrer ao operador da divisão (exemplo: 5/2=2).
from math import metodoDivisaoInteira
def CalculaDivisaoInteira(n1,n2):
return [Link](n1,n2)
15. Elabore uma função para calcular o factorial de um inteiro recebido por parâmetro
(exemplo: 5!=5*4*3*2*1).
def CalcularFatorial(n):
fatorial = 1
for c in range(n,1,-1):
factorial = factorial * c
print(factorial)
Lógica
16. Dizer que “Pedro não é pedreiro ou Paulo é paulista” é, do ponto de vista lógico, o
mesmo que dizer:
a. Se Pedro é pedreiro, então Paulo é paulista; X
b. Se Paulo é paulista, então Pedro é pedreiro;
c. Se Pedro não é pedreiro, então Paulo não é paulista;
d. Se Pedro é pedreiro, então Paulo não é paulista;
17. Se Frederico é francês, então Alberto não é alemão. Ou Alberto é alemão, ou Egídio é
espanhol. Se Pedro não é português, então Frederico é francês. Ora, nem Egídio é
espanhol nem Isaura é italiana. Logo:
a. Pedro é português e Frederico é francês;
b. Pedro é português e Alberto é alemão; X
c. Pedro não é português e Alberto é alemão;
d. Egídio é espanhol ou Frederico é francês;
Código
18. Que padrão de desenvolvimento está presente no seguinte bloco de código?
class Pattern:
__single = None
def __init__ ( self ):
if Pattern.__single:
raise Pattern.__single
Pattern.__single = self
19. Indique se o seguinte bloco de código tem algum erro. Justifique.
def _get_value(self, cr, uid, uids, context=None):
result = {}
result[‘value1’]=1;
return result
19- No bloco de código anterior não existe nenhum erro de sintaxe,
porem se definimos argumentos na definição do método devemos então
utiliza-los