Se estivesse a projetar um GC, que abordagens de recolha de lixo conhece além da travessia do grafo de alcançabilidade?
Java
O que é um deadlock? Qual a diferença para uma condição de corrida? Como evitar deadlock, mesmo que seja impossível determinar a ordem de aquisição dos locks com antecedência?
Implemente RecommenderService com os métodos getTop(User user, int limit) e addDocument(Document document), usando armazenamento em memória
Qual é o peso de um ponteiro? O que é isso?
Para que serve a pilha e para que serve o heap? Qual é a diferença?
Por que o teste falhou com NullPointerException e como corrigi-lo?
O que é heap (heap)?
Como é que a remoção de objetos do heap acontece em Java? Fale sobre o Garbage Collector.
Compare o desempenho dos seguintes trechos de código que copiam elementos de um array de Integer para um array de int e vice-versa, incluindo o caso em que novos objetos Integer são criados a partir de valores int: ```java int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { x[i] = y[i]; } } ``` ```java int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { y[i] = x[i]; } } ``` ```java int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { y[i] = new Integer(x[i]); } } ``` Analise e explique as diferenças de desempenho e comportamento entre essas abordagens.
Qual princípio SOLID é violado na implementação atual, onde o serviço está fortemente acoplado a uma implementação específica de armazenamento (ArrayList)?
Que métodos de comunicação entre processos (IPC) conhece ao nível das interfaces do sistema operativo Unix?
int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { y[i] = new Integer(x[i]); } }
Que problema pode ocorrer em um ambiente de produção com acesso multithread ao serviço (vários pedidos REST simultâneos)?
Para que serve o synchronized? O que usarias para implementar um contador thread-safe em vez de synchronized?
Como é que um primitivo aparece na pilha e como na heap?
Quais são as desvantagens da abordagem atual de ordenar toda a lista a cada chamada de getTop?
/** * Procura por dois números num array cuja soma seja igual a um número dado * <p> * Escreve uma função que aceite um array de números positivos não ordenados como primeiro argumento * e um número positivo como segundo argumento. A função deve retornar true se no array * houver 2 números cuja soma seja igual ao segundo argumento. * <p> * Entrada: ([10, 15, 3, 7], 17) * Saída: true */
Como implementar corretamente as dependências (Injeção de Dependências) num serviço — qual é a abordagem mais preferida?
Decifre a abreviatura ACID e explique cada propriedade.
O que é a chamada de sistema fork nos sistemas operativos da família Unix?