Linguagem de Programação Flashcards

1
Q

Vantagens das coleções genéricas

A

<p><strong>Exemplo:</strong></p>

<p><code>List&lt;<span>int</span>&gt; numeros = <span>new</span> List&lt;<span>int</span>&gt;();</code><br></br><code>numeros.Add(<span>10</span>);</code><br></br><code>numeros.Add(<span>"Texto"</span>); <span>// Erro de compila&ccedil;&atilde;o!</span></code></p>

<br></br>

<ul>
<li>Evita erros de <strong>casting</strong> (convers&atilde;o de tipo) em tempo de execu&ccedil;&atilde;o.
<ul>
<li>Como a lista foi declarada como <code>List&lt;int&gt;</code>, tentar adicionar uma string gera erro na compila&ccedil;&atilde;o.</li>
</ul>
</li>
<li>Melhor legibilidade e manuten&ccedil;&atilde;o do c&oacute;digo
<ul>
<li>O uso de tipos expl&iacute;citos torna o c&oacute;digo mais compreens&iacute;vel, pois deixa claro que tipo de dado a cole&ccedil;&atilde;o deve conter.</li>
</ul>
</li>
<li>Elimina&ccedil;&atilde;o da necessidade de convers&otilde;es expl&iacute;citas
<ul>
<li>Nas cole&ccedil;&otilde;es n&atilde;o gen&eacute;ricas, frequentemente &eacute; necess&aacute;rio fazer <strong>casting</strong> ao recuperar um item, o que pode levar a exce&ccedil;&otilde;es em tempo de execu&ccedil;&atilde;o.</li>
</ul>
</li>
<li>Melhor desempenho
<ul>
<li>Como n&atilde;o h&aacute; convers&otilde;es de tipo em tempo de execu&ccedil;&atilde;o, o uso de cole&ccedil;&otilde;es gen&eacute;ricas melhora a efici&ecirc;ncia do c&oacute;digo.</li>
</ul>
</li>
</ul>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O que são tipos genéricos?

A

<p>Tipos gen&eacute;ricos s&atilde;o um recurso da programa&ccedil;&atilde;o orientada a objetos que permite criar classes, interfaces e m&eacute;todos que podem operar com <strong>diferentes tipos de dados</strong> sem perder seguran&ccedil;a de tipo. Eles s&atilde;o amplamente utilizados para aumentar a <strong>reutiliza&ccedil;&atilde;o de c&oacute;digo</strong> e evitar a necessidade de convers&otilde;es expl&iacute;citas.</p>

<br></br>

<p>Exemplo:</p>

<p><code>// Defini&ccedil;&atilde;o de uma classe gen&eacute;rica com um par&acirc;metro de tipo T</code><br></br><code>public class Caixa&lt;T&gt; {</code><br></br><code>private T objeto;</code></p>

<p><code>public void setObjeto(T objeto) {</code><br></br><code>this.objeto = objeto;</code><br></br><code>}</code></p>

<p><code>public T getObjeto() {</code><br></br><code>return objeto;</code><br></br><code>}</code><br></br><code>}</code></p>

<p><code>// Uso da classe gen&eacute;rica</code><br></br><code>public class Main {</code><br></br><code>public static void main(String[] args) {</code><br></br><code></code></p>

<p><code>Caixa&lt;String&gt; caixaDeTexto = new Caixa&lt;&gt;();</code><br></br><code>caixaDeTexto.setObjeto("Ol&aacute;, Gen&eacute;ricos!");</code><br></br><code>System.out.println(caixaDeTexto.getObjeto()); // Sa&iacute;da: Ol&aacute;, Gen&eacute;ricos!</code></p>

<p><code>Caixa&lt;Integer&gt; caixaDeNumeros = new Caixa&lt;&gt;();</code><br></br><code>caixaDeNumeros.setObjeto(42);</code><br></br><code>System.out.println(caixaDeNumeros.getObjeto()); // Sa&iacute;da: 42</code><br></br><code>}</code><br></br><code>}</code></p>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Exemplo de coleção não genérica

A

List<String> lista = new ArrayList<>();
lista.add("Texto");
String texto = lista.get(0); // Sem necessidade de casting</String>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Como funciona o Garbage Collector?

A

<p>O Garbage Collector segue um processo b&aacute;sico:</p>

<ol>
<li><strong>Aloca&ccedil;&atilde;o de mem&oacute;ria</strong> &rarr; Quando um objeto &eacute; criado, ele &eacute; armazenado na mem&oacute;ria heap gerenciado. Não é o heap nativo/principal do sistema operacional.</li>
<li><strong>Verifica&ccedil;&atilde;o de refer&ecirc;ncias</strong> &rarr; O GC identifica quais objetos ainda est&atilde;o sendo usados pelo programa.</li>
<li><strong>Coleta de lixo</strong> &rarr; Objetos sem refer&ecirc;ncias s&atilde;o removidos da mem&oacute;ria para liberar espa&ccedil;o.</li>
</ol>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quando o Garbage Collector é acionado?

A

<p>O GC pode ser acionado automaticamente pelo <strong>runtime da linguagem</strong> quando a mem&oacute;ria dispon&iacute;vel est&aacute; baixa ou quando o sistema decide que &eacute; um bom momento para otimizar a mem&oacute;ria. Em algumas linguagens, o GC pode ser chamado manualmente, mas isso n&atilde;o &eacute; recomendado na maioria dos casos.</p>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Como funciona o profilling?

A

<ol>
<li><strong>Instrumenta&ccedil;&atilde;o</strong>
<ol>
<li>O c&oacute;digo &eacute; modificado para incluir medi&ccedil;&otilde;es de tempo de execu&ccedil;&atilde;o.</li>
<li>Exemplo: Adicionar <code>System.nanoTime()</code> em Java para medir tempos de execu&ccedil;&atilde;o.</li>
</ol>
</li>
<li><strong>Amostragem (Sampling)</strong>
<ol>
<li>O profiler monitora periodicamente quais fun&ccedil;&otilde;es est&atilde;o sendo executadas, sem modificar o c&oacute;digo.</li>
<li>Menos impacto no desempenho, mas pode perder detalhes de execu&ccedil;&otilde;es r&aacute;pidas.</li>
</ol>
</li>
<li><strong>Tracing (Rastreamento)</strong>
<ol>
<li>Registra cada chamada de fun&ccedil;&atilde;o e evento do programa, capturando informa&ccedil;&otilde;es detalhadas.</li>
<li>Pode gerar grandes volumes de dados e impactar a performance.</li>
</ol>
</li>
<li><strong>Heap &amp; Memory Profiling</strong>
<ol>
<li>Analisa <strong>uso de mem&oacute;ria</strong> e poss&iacute;veis <strong>vazamentos de mem&oacute;ria</strong>.</li>
<li>Mede aloca&ccedil;&otilde;es e desaloca&ccedil;&otilde;es de objetos.</li>
</ol>
</li>
</ol>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

O que é profilling?

A

<p><strong>Profiling</strong> &eacute; uma t&eacute;cnica usada para analisar o desempenho de um programa, <strong>identificando gargalos</strong> e otimizando o uso de recursos, <strong>como CPU, mem&oacute;ria e opera&ccedil;&otilde;es de entrada/sa&iacute;da (I/O)</strong>.</p>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly