Avanade SSE Assessment
Uma aplicação recebe um dado JSON no seguinte formato:
{
"FirstName" : "David",
"LastName": "Jones",
"Values" : [0,1,2]
}
A aplicação possui o seguinte segmento de código:
public class Name
{
public int[] Values { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public static Name ConvertToName(string json)
{
var ser = new JavaScriptSerializer();
}
}
Você precisa ter certeza que o método ConvertToName() retorne o input JSON citado no início da questão. Que segmento de código você inseriria após a declaração da variável "ser"?
- O padrão Abstract Factory proporciona uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes.
- O padrão Singleton garante que uma classe tenha apenas uma instância e proporciona um único ponto de acesso a ele.
- O padrão Factory Method define uma interface para um objeto, mas permite que as subclasses decidam qual classe instanciar.
Marque a afirmação correta:
Os 23 padrões de projeto propostos pelo Gang of Four são distribuídos em 3 categorias: de criação, estruturais e comportamentais.
Adapter e Composite são exemplos de padrão de projeto ______.
Template Method e Iterator são exemplos de padrão de projeto ______.
Qual opção abaixo melhor preenche as lacunas (na ordem):
---File A
---File B
---Folder X
-----File XA
-----File XB
---File C​
[DataType(DataType.EmailAddress)]
public string Email {get; set; }
[ComplexType]
public string Email {get; set; }
I. A diferença entre árvore binária simples e árvores AVL é o fato de que a segunda pode se reconfigurar dinamicamente, com o intuito de manter um bom nível de balanceamento.
II. Uma pilha garante que o último elemento inserido seja localizado no seu topo. Porém, do ponto de vista conceitual, qualquer elemento da pilha pode ser removido, ainda que não esteja no seu topo.
III. Do ponto de vista conceitual, não há diferença alguma entre uma estrutura de array e uma lista encadeada.
IV. Tabelas hash são estruturas de dados indicadas para armazenar grande volume de dados. Apesar dessas estruturas permitirem acesso indexado, mais de um elemento pode ter o mesmo índice. Elementos com o mesmo índice podem ser armazenados em uma mesma lista encadeada.
verifica-se que:
I. Um tipo abstrato de dados está desvinculado de sua implementação, ou seja, a sua definição visa a preocupação com o que ele faz e não como ele faz.
II. A lista duplamente encadeada além de saber o próximo nó, cada elemento também conhece o nó anterior a ele na lista, o que facilita a remoção de um elemento e a exibição dos elementos na ordem inversa.
III. A implementação dinâmica de pilhas possui as mesmas vantagens que as listas dinâmicas, ou seja, não é necessário saber a quantidade máxima de elementos que serão armazenados.
IV. Lista, pilha, fila e array são casos típicos de estruturas lineares, enquanto árvore, grafo e heap são casos típicos de estruturas não lineares.
É correto o que se afirma em:
int aux;
}
for (;;) {
if (i > 0) {
i--;
t = a[i];
} else {
n--;
if (n == 0) return;
t = a[n];
a[n] = a[0];
}
pai = I;
filho = I * 2 + 1;
while (filho < n) {
if ((filho + 1 < n) && (a[filho + 1] > a[filho]))
filho++;
if (a[filho] > t) {
a[pai] = a[filho];
pai = filho;
filho = pai * 2 + 1;
} else {
break;
}
}
a[pai] = t;
}
}
CREATE TABLE Inventory
(ItemID int NOT NULL PRIMARY KEY,
ItemsInStore int NOT NULL,
ItemsInWarehouse int NOT NULL)
Você precisa criar uma coluna computada que retorna o total da soma da coluna ItemsInStore e ItemsInWarehouse para cada linha.
Qual comando você utilizaria?
Você está desenvolvendo uma aplicação que possui um banco de dados SQL Server. Você criou uma view com as tabelas Order e OrderDetails utilizando a definição abaixo.
Você precisa melhorar a performance da view persistindo os dados no disco. O que você faria?
CREATE VIEW vOrders
WITH SCHEMABINDING
AS
SELECT o.ProductID, o.OrderDate, SUM(od.UnitPrice * od.OrderQty) as Amount
FROM OrderDetails od
INNER JOIN Orders o ON od.OrderID = o.OrderID
WHERE od.SalesOrderID = o.SAlesOrderID
GROUP BY o.OrderDate, o.ProductID
GO
Você precisa criar um processo que siga os seguintes requisitos:
- Retorne o resultado baseado em parâmetros informados
- Retorne valores que possam ser utilizados dentro de um join ou select
Escolha a opção correta
public class Customer |
<% using (Html.BeginForm("PostCustomer", "Home", FormMethod.Post)) |
public ActionResult PostCustomer(Customer obj) |
- A anotação "Required" acima da propriedade CustomerCode, auxilia na validação de um objeto Customer.
- Outras anotações podem ser adicionadas a uma única propriedade (e.g. [StringLength(160)]).
- O Html Helper ValidationMessageFor exibe todos os problemas de validação de uma única vez.
Marque a resposta correta:
​Marque a opção INCORRETA:
SELECT c.CustomerName
FROM Customer c
WHERE ufnGetLastOrderDate(c.CustomerID) < DATEADD(DAY, -90, GETDATE())
A função 'ufnGetLastOrderDate' tem o seguinte corpo:
CREATE FUN
RETURNS datetime
AS
BEGIN
DECLARE @lastOrderDate datetime
SELECT @lastOrderDate = MAX(OrderDate)
FROM SalesOrder
WHERE CustomerID = @CustomerID
RETURN @lastOrderDate
END
O que você faria para melhorar a performance do seu relatório?
DELETAR a função e reescrever a consulta para a seguinte:
WITH cte (CustomerID, LastOrderDate) AS (
SELECT CustomerID, MAX(OrderDate) as LastOrderDate
FROM SalesOrder
GROUP BY CustomerID
)
SELECT c.CustomerName
FROM cte
INNER JOIN Customer c ON cte.CustomerID = c.CustomerID
WHERE cte.LastOrderDate < DATEADD(DAY, -90, GETDATE())
​​DELETAR a função e reescrever a consulta para a seguinte:
SELECT c.CustomerName
FROM Customer c
WHERE NOT EXISTS (
SELECT OrderDate
FROM SalesOrder s
WHERE s.OrderDate > DATEADD(DAY, -90, GETDATE())
AND s.CustomerID = c.CustomerID
)
ON cte.CustomerID = c.CustomerID
WHERE cte.LastOrderDate < DATEADD(DAY, -90, GETDATE())
DELETAR a função e reescrever a consulta para a seguinte:
SELECT DISTINCT c.CustomerName
FROM Customer c
INNER JOIN SalesOrder s ON c.CustomerID = s.CustomerID
WHERE s.OrderDate < DATEADD(DAY, -90, GETDATE())
Reescrever o report da seguinte forma:
SELECT DISTINCT c.CustomerName
FROM Customer c
WHERE NOT EXISTS (
SELECT OrderDate FROM ufnGetLastOrderDate(c.CustomerID, 90))
)
Alterar a função 'ufnGetLastOrderDate' para o seguinte corpo:
CREATE FUN
RETURNS TABLE AS RETURN (
SELECT OrderDate
FROM SalesOrder
WHERE s.CustomerID = @CustomerID
AND s.OrderDate > DATEADD(DAY, -@MaxAge, GETDATE())
)
Você está adicionando um método público chamado UpdateScore() em uma classe pública chamada ScoreCard
O código de região que atualiza o score precisa seguir os seguintes requisitos:
- Tem que ser acessada por apenas uma thread por vez
- Ela não pode ser vulnerável a situações de deadlock
Como você implementaria o método UpdateScore()?
Colocar o código dentro do seguinte comando lock:
lock (this) {
...
}
Criar um método privado chamado 'travaObj()' na classe ScoreCard. Coloque dentro do código do método público o seguinte comando:
lock (travaObj) {
...
}
​Coloque o seguinte atributo na assinatura do método público:
[MethodImpl(MethodImplOptions.Synchronized)]
lock(typeof(ScoreCard)) {
...
}
​Quais os encapsulamentos existentes no C# e qual a ordem do mais restrito para o mais aberto?