0% acharam este documento útil (0 voto)
13 visualizações213 páginas

Reta Final - BB - Java e Mobile iOS

O documento apresenta um curso de programação em Java, abordando desde conceitos básicos até avançados, incluindo Java SE, Java EE/Jakarta EE, Servlets, JSP e JPA. Cada seção detalha tópicos específicos, como sintaxe, orientação a objetos, exceções, coleções e novas funcionalidades de versões do Java. Além disso, inclui questões práticas para fixação do conteúdo.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
13 visualizações213 páginas

Reta Final - BB - Java e Mobile iOS

O documento apresenta um curso de programação em Java, abordando desde conceitos básicos até avançados, incluindo Java SE, Java EE/Jakarta EE, Servlets, JSP e JPA. Cada seção detalha tópicos específicos, como sintaxe, orientação a objetos, exceções, coleções e novas funcionalidades de versões do Java. Além disso, inclui questões práticas para fixação do conteúdo.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 213

@canetas.

pretas

@canetaspretas
@lacerdaphjobs

DICAS E AGENDA!
AGORA EM ÁUDIO TBM!
@canetas.pretas

SEU LUGAR É AQUI!!!


RETA FINAL BB

Prof. Raphael Lacerda

https://www.instagram.com/p/B74PyOzj5V3/
https://www.estrategiaconcursos.com.br/blog/prazer-um-eterno-estudante/
#JAVA

Prof. Raphael Lacerda


Java Básico - Sintaxe
Tipos primitivos, pré e pós
Casting explícito e implícito
Laços
Escopos
Strings

Prof. Raphael Lacerda


Java O.O
Classes, atributos, métodos
Construtores
Encapsulamento, modificadores de acesso, JavaBean
Atributos Estáticos

Prof. Raphael Lacerda


Java O.O avançado
Classes Abstratas
Interfaces
Polimorfismo

Prof. Raphael Lacerda


Java exceptions
try/catch
Checked x Unchecked
Exceções default

Prof. Raphael Lacerda


Java Collections
List
Set
Map
Queue

Prof. Raphael Lacerda


Java 8
Data
Virtual extensions methods - default methods
removeIf, sort
herdando de múltiplas interfaces
Lambdas
Streams
filter, peek map, reduce, max, min, collect (alunos por estado)

Prof. Raphael Lacerda


Java 8

Prof. Raphael Lacerda


Java 9
https://www.pluralsight.com/blog/software-development/java-9-new-f
eatures

Jshell
módulo - JIGSAW
- JPMS (plataform module)
private methods interfaces
Reactive Streams
HTTP Client
Prof. Raphael Lacerda
Java 10
https://www.techworld.com/developers/java-10-features-whats-new-in
-java-10-3680317/
}
var - http://openjdk.java.net/jeps/286
Docker -
https://medium.com/@jnsrikanth/docker-support-in-java-10-fbff28a31
827

Prof. Raphael Lacerda


Java 11
https://www.journaldev.com/24601/java-11-features

LTS
javac is dead
Strings
strip x trim
repeat

Prof. Raphael Lacerda


Java 12
https://www.journaldev.com/28666/java-12-features

switch expressions: arrow, break


Strings - https://www.journaldev.com/28673/java-12-string-methods

Prof. Raphael Lacerda


Java 13
https://jaxenter.com/java-13-jdk-deep-dive-new-features-162272.html
No more value breaks!
switch ⇒ break to yield - adding a new yield keyword to return a
value from the switch expression.

Prof. Raphael Lacerda


Java 14
● Pattern matching instanceof

Prof. Raphael Lacerda


Lembra disso?

Prof. Raphael Lacerda


Java 14
● Records
○ public record Person(String name, String address) { };
This simple declaration will automatically add a constructor, getters,
equals, hashCode and toString methods for us.

Prof. Raphael Lacerda


Java 15
● hidden classes
○ which are classes that cannot be used directly by the
bytecode of other classes
○ Allow frameworks to define classes as non-discoverable
implementation details of the framework, so that they cannot
be linked against by other classes nor discovered through
reflection.
● Garbage Collector
○ both ZGC (JEP 377) and Shenandoah (JEP 379) will be no
longer be experimental. Both will be supported
configurations that teams can opt to use, while the G1
collector will remain the default.
https://openjdk.java.net/jeps/371
Prof. Raphael Lacerda
Java 16
● enhancement to the default method in Interfaces

Prof. Raphael Lacerda


Java 16
● Day period support
LocalTime date = LocalTime.parse("15:25:08.690791");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h B");
assertThat(date.format(formatter)).isEqualTo("3 in the afternoon");

Instead of something like “3pm“, we get an output of “3 in the


afternoon“. We can also use the “B“, “BBBB“, or “BBBBB”
DateTimeFormatter pattern for short, full, and narrow styles
respectively.
Prof. Raphael Lacerda
Java 16
● Stream.toList()

Prof. Raphael Lacerda


Java 17
● Enhanced Pseudo-Random Number Generators

● Apple announced a long-term plan to transition its computer line


from X64 to AArch64. This JEP ports the JDK to run on AArch64
in macOS platforms.

Prof. Raphael Lacerda


Java 17
● Pattern Matching for Switch

Prof. Raphael Lacerda


Java 17
● Remove RMI Activation
● Sealed Clases
○ A sealed class or interface can be extended or implemented
only by those classes and interfaces permitted to do so.

Prof. Raphael Lacerda


https://openjdk.java.net/jeps/409
Java Release Train

https://www.oracle.com/java/techno
logies/java-se-support-roadmap.ht
ml
Prof. Raphael Lacerda
AULA JAVAEE / JAKARTAEE

Prof. Raphael Lacerda


QUANTIDADE
DE ESPECIFICAÇÕES
QUE PRECISO
SABER Prof. Raphael Lacerda
Aula JavaEE / JakartaEE
❑ Definição
❑ Especificações
❑ Implementações
○ arquitetura Web
❑ JakartaEE
❑ Questões

JavaEE / JakartaEE
Prof. Raphael Lacerda
Entendo a especificação

JavaEE / JakartaEE
Prof. Raphael Lacerda
Implementações

JavaEE / JakartaEE
Prof. Raphael Lacerda
Servlet Containers

JavaEE / JakartaEE
https://www.eclipse.org/jetty/documentation/current/introduction.html#what-is-jetty
Prof. Raphael Lacerda
JavaEE x JavaSE

JavaEE / JakartaEE
Prof. Raphael Lacerda
JavaSE != JavaEE

JavaEE / JakartaEE
Prof. Raphael Lacerda
JavaSE != JavaEE

JavaEE / JakartaEE
Prof. Raphael Lacerda
@estrategiaconcursosti

SERVLET
Aula Servlet
❑ motivação: dinâmico x estático
❑ noções básicas do protocolo HTTP
❑ "Servidorzinho" web
❑ Característica principal!
❑ Questões

Servlets e HTTP: O que é e como funciona?


(devmedia.com.br)

HttpServlet (Java(TM) EE 7 Specification


Servlet APIs) (oracle.com)
Prof. Raphael Lacerda
desenhando o ciclo...

Servlet
Servlet with annotation | servlet 3 - javatpoint
Prof. Raphael Lacerda
Resumo Servlet
● Extensão da classe HttpServlet: Para criar uma servlet, você precisa criar uma classe Java que estenda a classe
HttpServlet. Essa classe fornece métodos que permitem que você processe solicitações HTTP e envie respostas de
volta ao cliente.
● Método doGet() e doPost(): Esses são dois dos principais métodos fornecidos pela classe HttpServlet. O método
doGet() é usado para processar solicitações HTTP GET, enquanto o método doPost() é usado para processar
solicitações HTTP POST.
● Ciclo de vida da servlet: Uma servlet tem um ciclo de vida que inclui a inicialização, processamento de solicitações
e destruição. Durante a inicialização, a servlet pode ser configurada para lidar com solicitações específicas.
Durante o processamento de solicitações, a servlet recebe uma solicitação HTTP e envia uma resposta HTTP.
Durante a destruição, a servlet é liberada da memória.
● Objeto HttpServletRequest: Esse objeto fornece informações sobre a solicitação HTTP, como o método HTTP
usado, os parâmetros da solicitação e o cabeçalho da solicitação.
● Objeto HttpServletResponse: Esse objeto é usado para enviar a resposta HTTP de volta ao cliente. Ele fornece
métodos para definir o código de status da resposta, os cabeçalhos da resposta e o conteúdo da resposta.
● Mapeamento de URL: Uma servlet é mapeada para uma URL específica. Quando o servidor web recebe uma
solicitação para essa URL, ele direciona a solicitação para a servlet correspondente.
Resumo Servlet
@estrategiaconcursosti

JSP
Aula JSP
❑ motivação / Hello World
❑ Ciclo de vida / Scriplets / JSTL
❑ Estrutura de um projeto Web
❑ Filters e Listeners
❑ Escopos
○ Request, Session, Application
❑ Questões

JSP
Prof. Raphael Lacerda
JSP “transformer”

JSP
Prof. Raphael Lacerda
Resumo JSP
O JavaServer Pages (JSP) é uma tecnologia da plataforma Java que permite criar páginas web dinâmicas e interativas. Os principais pontos
do JSP são:

● Linguagem de marcação: O JSP é baseado em HTML, que é a linguagem padrão para a criação de páginas web. O JSP também usa
a linguagem de marcação do XML para definir os elementos dinâmicos.
● Inserção de código Java: O JSP permite a inserção de código Java nas páginas web para torná-las dinâmicas. O código Java é
inserido entre tags especiais <% e %>.
● JSTL: O JSP usa a Biblioteca de Tags JSTL (JavaServer Pages Standard Tag Library) para adicionar recursos adicionais de tags.
● MVC: O JSP é usado em conjunto com o modelo MVC (Model-View-Controller) para separar a lógica de negócios da apresentação
dos dados. A Servlet age como o controlador, enquanto o JSP age como a visualização.
● Acesso a banco de dados: O JSP permite o acesso a bancos de dados através do JDBC (Java Database Connectivity).
● Acesso a objetos: O JSP permite o acesso a objetos através do JNDI (Java Naming and Directory Interface).
● Compatibilidade com Servlets: O JSP é uma extensão da tecnologia Servlet, e pode ser usado com outras tecnologias Servlet, como
o Struts e o Spring.
● Suporte a internacionalização: O JSP suporta internacionalização de páginas web através da Biblioteca de Tags JSTL.
● Desempenho: O JSP tem um bom desempenho porque usa a técnica de pré-compilação para converter as páginas JSP em Servlets.
● Facilidade de uso: O JSP é fácil de usar e aprender porque usa a sintaxe HTML familiar e pode ser usado com outras tecnologias
Java.

JSP Directives | JSP Page Directive -


javatpoint
JSTL core

JSP
Prof. Raphael Lacerda
@estrategiaconcursosti

JPA
Aula ORM

❑ Motivação para o JPA


❑ Implementações: Hibernate e Eclipselink
❑ Estados e Mapeamentos do JPA
❑ CRUD + JPQL + Criteria
❑ Padrões e validações com Beans Validations
❑ Connection Pool com Hikari
❑ Questões
ORM/JPA/Hibernate
Prof. Raphael Lacerda
Arquitetura

ORM/JPA/Hibernate
Prof. Raphael Lacerda
Criteria Ok
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Country> q = cb.createQuery(Country.class);
Root<Country> c = q.from(Country.class);
q.select(c);

ORM/JPA/Hibernate
Prof. Raphael Lacerda
Criteria Hell
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Double> criteria = builder.createQuery(Double.class);
Root<Venda> root = criteria.from(Venda.class);
Path<Double> valor = root.get("valor");
Expression<Double> soma = builder.sum(valor);
criteria.select(soma);
TypedQuery<Double> query = em.createQuery(criteria);
Double total = query.getSingleResult();
ORM/JPA/Hibernate
Prof. Raphael Lacerda
Easy Criteria (fora do JPA)
List<Employee> employees = query.select(employee)
.where(employee.fullName.like("John%"))
.orderBy(employee.age.asc())
.limit(20, 10)
.getResultList();

https://github.com/sveryovka/easy-criteria

ORM/JPA/Hibernate
Prof. Raphael Lacerda
QueryDSL (fora do JPA)
List<Person> persons = queryFactory.selectFrom(person)
.where(
person.firstName.eq("John"),
person.lastName.eq("Doe"))
.fetch();

http://querydsl.com/

ORM/JPA/Hibernate
Prof. Raphael Lacerda
QUESTÕES

Prof. Raphael Lacerda


CESGRANRIO/ELETRO/2022
CESGRANRIO/ELETRO/2022
A função acima não está completa. É preciso substituir os comentários // 1 e // 2 por comandos que façam
com que a função execute a troca de vogais minúsculas por vogais maiúsculas e retorne a string resultante.

Quais comandos completam a função de acordo com o objetivo definido acima?

// 1 deve ser substituído por return c + troca ( str.substring ( 1 ) );

// 2 deve ser substituído por return troca ( str.substring ( 1 ) );

// 1 deve ser substituído por return c + troca ( str.substring ( 1 ) );

// 2 deve ser substituído por return c + troca ( str.substring ( 0 ) );


CESGRANRIO/ELETRO/2022
C
// 1 deve ser substituído por return c ;
// 2 deve ser substituído por return c + troca ( str.substring ( 1 ) );
D
// 1 deve ser substituído por return c ;
// 2 deve ser substituído por return c + troca ( str.substring ( 0 ) );
E
// 1 deve ser substituído por return c + troca ( str.substring ( 1 ) );
// 2 deve ser substituído por return c + troca ( str.substring ( 1 ) );
CESGRANRIO/Banco Amazonia/2022
Qual definição de interface Java NÃO produz erro de compilação?

Alternativas

A interface P { int x; int y;

public void op1(String x); }

B abstract interface Q { public int x; public int y;

public default void op1() { System.out.println(x+y); } }

C final interface R { int x=10; int y=20;

public static void op1() { System.out.println(x+y); } }

D public interface S { public static int x=10; public static int y=20; ● Interface attributes are by
default public, static and
public static void op1() { x++; y++; System.out.println(x+y); } }
final
E public abstract interface T { static int x=20; public int y=20;

static void op1() { System.out.println(x+y); } }

Java Interface (w3schools.com)


CESGRANRIO/Banco Amazonia/2022
Admita que as duas classes Java a seguir pertençam ao pacote default e ocupem arquivos separados.

public class Va { private int a=0,b=2,c=4; private static int sb;

public Va() { a*=2; b*=3; c*=4; }

public Va(int x) { this(); sb+=x; }

{ sb*=2; a+=1; }

static { sb+=8; }

public void print() { System.out.print(a+b+c+sb); }}

public class Main { public static void main(String[] args) { new Va(1).print(); }}

O que será exibido no console quando o método main for executado?

Static vs. Instance Initializer Block in Java |


Baeldung
CESGRANRIO/ELETRO/2022
O encapsulamento é um dos quatro conceitos fundamentais da orientação a objetos. Seu objetivo é tratar os dados (variáveis) e as
operações sobre esses dados (métodos), de forma unitária. De acordo com esse princípio, as variáveis de uma classe ficam ocultas de outras
classes, de forma que só possam ser acessadas pelos métodos públicos da classe em que se encontram.

Entretanto, a maioria das linguagens de programação orientadas a objetos disponibilizam um mecanismo para que o encapsulamento possa
ser atenuado sob certas condições. Por exemplo, as variáveis de instância de uma classe podem ser livremente acessadas pelos métodos de
instância de todas as suas subclasses.

Esse acesso é possível, caso essas variáveis sejam declaradas como

A protegidas

B estáticas

C globais

D automáticas

E virtuais
CESGRANRIO/BANCO AMAZONIA/2021
Considere a classe Java abaixo.
O que o console exibirá quando o método main() for executado?
CESGRANRIO/BANCO AMAZONIA/2021
CESGRANRIO/BANCO AMAZONIA/2021
O que o console exibirá quando o método main() for executado?
A .i.a..
B ..a.i.
C l.s.rB
D Br.s.l
E Brasil
CESGRANRIO/PETRO/2014
O que imprimirá esse programa quando executado?
A oirnrgsevorp
B provegrnrio
C oirnrgsecvorp
D ac a
Eaa
How to Compare Characters in Java | Java
Hungry
Cesgranrio/BNDES/2013
Cada tipo de enterprise bean passa por diferentes fases durante seu ciclo de vida.
Um desses tipos possui um estado denominado Passivo. Quando um bean entra
nesse estado, o container EJB o desloca da memória principal para a memória
secundária.
Qual tipo de bean se comporta dessa maneira?
A Stateless Session Bean
B Stateful Session Bean
C Web Service Bean
D Singleton Session Bean
E Message-Driven Bean
EJB
Prof. Raphael Lacerda
Cesgranrio/BNDES/2009
Entity EJB e o statement SQL "SELECT FOR UPDATE" são técnicas
para se implementar o padrão arquitetural
A Estado da sessão no cliente (Client Session State).
B Bloqueio offline otimista (Optimistic Offline Lock).
C Bloqueio offline pessimista (Pessimistic Offline Lock).
D Objeto de transferência de dados (data transfer object).
E Mapeador (mapper).

EJB
Prof. Raphael Lacerda
Cesgranrio/PETRO/2010

EJB
Prof. Raphael Lacerda
Cesgranrio/PETRO/2010
O código acima apresenta um(a)
A EJB padrão 2.1 com informação de estado.
B bean de entidade para a tabela Produto.
C classe POJO que segue o padrão JavaBean.
D classe que utiliza JMS.
E classe que implementa o padrão FrontController

EJB
Prof. Raphael Lacerda
Cesgranrio/Petro/2012
Em aplicações Java Enterprise Edition 6, é comum o uso da API JPA. Nessa API,
há o conceito de classe de entidade (entity class).
Por definição, uma classe de entidade deve, obrigatoriamente, cumprir os
seguintes requisitos, EXCETO
A estar anotada com a anotação Entity ou representada em um descritor XML.
B não ser qualificada com final.
C ter as variáveis de instância persistentes qualificadas com private, protected, ou
package-private.
D ter ao menos um construtor, este sem argumentos (no-arg constructor).
E ter o mesmo nome da tabela correspondente do banco de dados
JSP - questões
Prof. Raphael Lacerda
Cesgranrio/Petro/2011
I - EJB fornece ao programador Java EE os seguintes tipos fundamentais: Entity
Beans, Session Beans e Message Driven Beans.
II - JPA é parte integrante da especificação EJB e serve para definir as interfaces
de acesso local e/ou remoto de um componente EJB.
III - Um servidor de aplicações Java EE oferece vários recursos ao desenvolvedor
como pool de conexão, controle de transação, segurança e gerenciamento de
recursos.
IV - Uma diferença entre as tecnologias Servlets e JSP é que, ao contrário da
segunda, a primeira permite o armazenamento do estado da aplicação em
variáveis de sessão

JSP - questões
Prof. Raphael Lacerda
Cesgranrio/PETRO/2006
assinale a afirmativa INCORRETA.
A A arquitetura J2EE Connector define um conjunto de contratos no
nível de sistema entre um servidor de aplicação e o EIS (Enterprise
Information System), entre os quais, o Connection Management, que
permite que um pool de servidores de aplicação se conecte a um EIS
subjacente e que componentes da aplicação se conectem a um EIS.
B Uma prática que pode melhorar o desempenho de EJBs consiste em
empacotar beans de entidade em um bean de sessão para transformar
chamadas EJB remotas em uma chamada de bean de sessão remota e
várias locais (pattern conhecido como fachada de sessão).
EJB
Prof. Raphael Lacerda
Cesgranrio/PETRO/2006
C Um descritor de instalação, localizado dentro de um arquivo Java Archive (JAR), permite que
as propriedades de um EJB sejam mantidas fora do código Java e que o desenvolvedor do
bean torne as informações sobre o bean disponíveis para o montador da aplicação e para o
instalador do bean.
D Para se garantir a entrega de uma mensagem para um único destinatário, o modelo de troca
de mensagens publish/subscribe do JMS com o modo de entrega persistente e um assinante
durável é mais indicado, enquanto que se a mensagem for para vários destinatários, pode-se
utilizar o modelo ponto a ponto do JMS com um modo de entrega persistente.

E Na persistência gerenciada por contêiner (CMP), os dados do bean de entidade são


mantidos automaticamente pelo contêiner, como, por exemplo, um contêiner implementando
persistência sobre um banco de dados relacional (RDBMS) pode gerenciar a persistência
armazenando os dados de um bean como uma linha em uma tabela.

EJB
Prof. Raphael Lacerda
CESGRANRIO/Caixa/2021
As classes Java a seguir pertencem ao pacote default e foram incluídas no
arquivo Main.java.
O que será exibido no console quando o método main for executado?
A3
B4
C 19
D 27
E 31
CESGRANRIO/Caixa/2021
As classes Java a seguir pertencem ao pacote default. class A1 { protected int va1=1,va2=2;
public A1(int x) { va1+=x; va2*=x; } } class A2 extends A1 { protected int
vb1=10; } class A3 extends A2 { protected int vc1=0; public A3(int y) {
vc1=(va1+va2)*y; } } public class Main { public static void main(String[] args) { A3
o=new A3(2); System.out.println(o.vc1); } } Qual construtor poderá ser inserido na
classe A2, sem que um erro de compilação seja gerado?
A public A2() { vb1=va1+va2; }
B public A2(int z) { super(z); vb1=va1+va2; }
C public A2() { vb1=va1+va2; super(vb1); }
D public A2() { super(0); vb1=va1+va2; }
E public A2() { super(vb1); }
CESGRANRIO/BB/2021
Sejam as seguintes classes Java:

public class Va1 {

public static String getStr() {

return “abcdefghijklmnop“; }
Online Java Compiler - Online Java Editor -
public String ini(String s, int cpr) { Java Code Online (jdoodle.com)

return s.substring(0, cpr);

}
A Single Java Program Can Contain How
public String fin(String s, int cpr) { many Classes? - Scaler Topics

return ini(s, cpr)+s.substring(s.length()-cpr, s.length());

}
Can We Override Static Method in Java -
Javatpoint
CESGRANRIO/BB/2021
public class Va2 extends Va1 {

public static String getStr() {

return “0123456789ABCDEF“; }

public String ini(String s, int cpr) {

return s.substring(s.length()-cpr, s.length());

public static void main(String[] args) {

Va1 o=new Va2();

System.out.println(o.fin(o.getStr(), 5));

}
CESGRANRIO/BB/2021

O que será exibido no console quando o método main for executado?


(A) 0123BCDE
(B) BCDEFBCDEF
(C) 01234BCDEF
(D) abcdelmnop
(E) lmnoplmnop
CESGRANRIO/BB/2021
CESGRANRIO/BB/2021
As classes Java a seguir são públicas e ocupam arquivos
separados.
O que será exibido no console quando o método main for
executado?
(A) 0 (B) 10 (C) 24 (D) 25 (E) 33
https://www.geeksforgeeks.org/ord
er-execution-initialization-blocks-co
nstructors-java/
CESGRANRIO/BB/2021
Foi solicitado a um programador de sistemas de informação que transformasse uma classe escrita em Java em uma classe equivalente, para ser executada em um programa Kotlin.

O código da classe Java é:

public class AlunoJava{

private String codigo;

private String nome;

private int numero=0;

private String texto= “EscolaX”;

public AlunoJava (String codigo,String nome)

{ this.codigo = codigo;

this.nome = nome; }

A classe em Kotlin equivalente à classe Java acima é


CESGRANRIO/BB/2021
(A) public class AlunoKotlin (private String: nome , private String: codigo ) { private:
numero int = 0
texto String = “EscolaX” }
(B) public class AlunoKotlin (private var nome; codigo: String) { private var numero = 0
private var texto = “EscolaX” }
(C) class AlunoKotlin (val nome: String, val codigo: String) { private this.nome = nome
private this.codigo=codigo
private var int numero = 0
private var String texto = “EscolaX” }
CESGRANRIO/BB/2021
(D) class AlunoKotlin (var nome: String, var codigo: String) { private
var numero = 0
private var texto = “EscolaX”
private AlunoKotlin.nome, AlunoKotlin.codigo }
(E) class AlunoKotlin (private val nome: String, private val codigo:
String) { private var numero = 0
private var texto = “EscolaX” }
Linguagem
⇒ Linguagem moderna
⇒ 100% compatível com Java
⇒ server ou client side, IoS, mas especialmente ANDROID
⇒ muti-paradigma
⇒ concisa
⇒ first-class language on Android.

https://techcrunch.com/2017/05/17/google-makes-kotlin-a-first-class-language-for-writing-a
Prof. Raphael Lacerda
ndroid-apps
must
loved
language

Prof. Raphael Lacerda


hated?

Prof. Raphael Lacerda


wanted

Prof. Raphael Lacerda


val x var

Properties | Kotlin Documentation


(kotlinlang.org)

Prof. Raphael Lacerda


Palavras Reservadas

Prof. Raphael Lacerda https://kotlinlang.org/docs/keyword-reference.html#hard-keywords


Data Class

Data classes | Kotlin Documentation


(kotlinlang.org)

Prof. Raphael Lacerda


Visibilidade

Kotlin Visibility Modifiers - public, protected,


internal, private | DigitalOcean

android - What's the difference when adding


a private modifier to arguments in a Kotlin's
constructor? - Stack Overflow

Prof. Raphael Lacerda


CESGRANRIO/BANCO amazonia/2022
Uma prática essencial do Test Driven Development (TDD) é o teste de unidade, em que o desenvolvedor cria um ou mais
testes para cada unidade do sistema, como uma classe ou uma função ou um método, normalmente usando um pacote
feito na mesma linguagem de programação na qual o programa é feito, como JUnit para Java. Esses testes de unidade
são, então, necessariamente executados sempre que alguma modificação no código é feita, caracterizando uma outra
prática de testes, que ajuda a detectar quando partes do código que estavam funcionando passam a apresentar erros
após o código ter sido modificado.

Essa outra prática de testes citada é conhecida como testes de

A exaustão

B integração

C modificação

D mutantes

E regressão
CESGRANRIO/Caixa/2021
O teste de unidade tem como finalidade testar os componentes
mais simples do software
A de forma isolada.
B quanto à sua coesão.
C quanto ao seu acoplamento.
D quando unificados na versão a ser lançada.
E quanto à sua capacidade de responder a entradas únicas.
CESGRANRIO/BANCO amazonia/2022
Em linguagens de programação como Java, onde existem estruturas de repetição, a recursão pode ser muitas vezes substituída pela
repetição, com ganhos de desempenho.

Considere a seguinte função recursiva segredo, em Java:

public static int segredo(int a) { if (a<2) { return 0; } else { return segredo(a-2)+1; }}

Que fragmento de código, em Java, contendo uma estrutura de repetição, é adequado para substituí-la?

A public static int alternativaA(int a) { int s = 0; for (int i=a;i>2;i--) { s++; } return s; }

B public static int alternativaB(int a) { int s = 0; for (int i=a;i<2 && i>0;i--) { s++; } return s; }

C public static int alternativaC(int a) { int s = 0; while (a>=2) { a-=2; s++; } return
s; }

D public static int alternativaD(int a) { int s = 0; do { a-=2; s++; } while (a>0 && a<=2);
return s; }

E public static int alternativaE(int a) { int s = 0; do { a-=2; s++; } while (a>0 && a<2);
return s; }
CESGRANRIO/BANCO amazonia/2022
Um conceito básico de programação a objetos é a sobrecarga.

Por meio desse conceito, é possível escrever métodos, em uma mesma classe, os quais

A definem apenas a existência do método que deve ser implementado em uma classe mais
especializada.

B executam um código único comum, mesmo possuindo nomes diferentes.

C possuem nomes diferentes, de acordo com a classe que os chama.

D possuem o mesmo nome, com argumentos pertencentes a classes, ou tipos, diferentes.

E reescrevem métodos de uma classe que se especializa, substituindo-os.


Cesgranrio/2019
Que linha de programação Java deve ser dada para obter, via JDBC,
o resultado da consulta guardada na variável S, da classe String,
sabendo-se que a variável st é da classe Statement?
A ResultSet rs = jdbc.executeQuery (S);
B ResultSet rs = st.executeQuery(S);
C ResultSet rs = st.runQuery(S);
D st = S.executeQuery();

Prof. Raphael Lacerda


Cesgranrio/2018

Prof. Raphael Lacerda


Cesgranrio/2018
A linha marcada por um comentário que causará um erro em tempo
de compilação é a linha

A1
B2
C3
D4
E5

Prof. Raphael Lacerda


Cesgranrio/2018
Que comando deve ser inserido na linha vi para exibir o valor 5 na
console?

A System.out.println(a);
B System.out.println(Classe.a);
C System.out.println(Integer.parseInt(a));
D System.out.println(super.a);
E System.out.println(this.a);

Prof. Raphael Lacerda


Cesgranrio/2018
A linguagem de programação Java suporta
A passagem de parâmetros de tipos primitivos por referência
B sobrecarga de operadores
C herança múltipla
D polimorfismo
E ponteiros

Prof. Raphael Lacerda


Cesgranrio/2014

Prof. Raphael Lacerda


Cesgranrio/2014
Um técnico de informática identifica que esse programa
A não compila em nenhuma versão da linguagem Java
B compila apenas a partir da versão Java SE 6, porém apresentará um
erro de execução.
C compila apenas a partir da versão Java SE 7, porém apresentará
um erro de execução.
D compila e executa perfeitamente a partir da versão Java SE 6.
E compila e executa perfeitamente a partir da versão Java SE 7.

Prof. Raphael Lacerda


Cesgranrio/2012

JavaEE / JakartaEE - questões


Prof. Raphael Lacerda
Cesgranrio/2012
Qual instrução usa corretamente o parâmetro request para atribuir o
objeto armazenado na variável de sessão a uma variável de referência
do tipo Usuario e denominada usr, definida no corpo da função
doGet?
A usr = (Object) request.getSession().getParameter("usuario");
B usr = (Usuario) request.getSession().getAttribute("usuario");
C usr = (Usuario) request.getSession().getParameter("usuario");
D usr = request.getSession().getAttribute("usuario");
E usr = request.getSession().getParameter("usuario")
JavaEE / JakartaEE - questões
Prof. Raphael Lacerda
JSTL core

JSP
Prof. Raphael Lacerda
Cesgranrio/BB/2018

JSP
Prof. Raphael Lacerda
CESGRANRIO/UNIRIO/2019
As classes e interfaces Java a seguir ocupam arquivos distintos, situados no pacote default

public interface ITA {

void a_m01();

void a_m02();

public interface ITB extends ITA {

void b_m01();

public abstract class CA {

private void a_ma02( ) {

}
CESGRANRIO/UNIRIO/2019
public final void a_m01() {
}
protected void op02( ) {
}
public abstract void op03();
}
Qual versão da classe XY NÃO produzirá erros de compilação?
PYTHON

Prof. Raphael Lacerda


CESGRANRIO/BB/2021
Ao analisar um conjunto de dados com Python, um programador resolveu usar um dataframe Pandas de
nome dp para guardá-los. Em um certo momento, ele resolveu que precisaria usar, apenas, quatro colunas
de dados do dataframe: “pais“, “ano“, “renda per capita“ e “expectativa de vida“.

Que fragmento de código Python 3 deve ser usado para selecionar, apenas, essas quatro colunas do
dataframe dp?

(A) dp[“pais“,“ano“,“expectativa de vida“,“renda per capita“]

(B) dp[[“pais“,“ano“,“expectativa de vida“,“renda per capita“]]

(C) dp(“pais“,“ano“,“expectativa de vida“,“renda per capita“)

(D) dp([“pais“,“ano“,“expectativa de vida“,“renda per capita“])

(E) dp[dp[“pais“,“ano“,“expectativa de vida“,“renda per capita“]]


Pandas

Prof. Raphael Lacerda


Que tipo de ajuda?
⇒ intervalo de dados
⇒ trabalho com múltiplos dados
⇒ planilhas

10 minutes to pandas — pandas 1.5.2


Pandas Example - Python - OneCompiler documentation (pydata.org)
Prof. Raphael Lacerda
Métodos e atributos do DataFrame
⇒ info() → informações sobre o DataFrame
⇒ head() → mostra os 5 primeiros por padrão
⇒ tail() → mostra os 5 últimos
⇒ dtypes → tipos dos dados do DataFrame
⇒ shape → linhas e colunas
⇒ concat → concatenar DataFrames

Prof. Raphael Lacerda https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html


CESGRANRIO/BB/2021
Considere o código Python a seguir.
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]]) print (a[a>5])
O que será exibido após esse código ser executado?
Numpy

Prof. Raphael Lacerda


ndarray Vs standard python

tem o tamanho fixado na pode aumentar dinamicamente


criação
mesmo tipo (homogêneo) qualquer tipo
facilitar cálculos matemáticos não lida bem com grande
quantidade de dados
mais eficiente com menos + verborrágico
código
consome menos memória - otimizado
Prof. Raphael Lacerda
Atributos
⇒ ndim: número de eixos
⇒ shape: indica o tamanho do array em cada dimensão (linhas e
colunas)
⇒ size: total de elementos do array
⇒ dtype: tipo dos elementos do array

Online NumPy Compiler (tutorialspoint.com)

Prof. Raphael Lacerda


CESGRANRIO/BB/2021
Considere o código Python a seguir.
import numpy as np
valorAplicado = np.array([5000, 6000, 7000, 8000]) taxaJuros =
np.array([1, 2, 3, 4])
resultado = valorAplicado * taxaJuros
IAC

Prof. Raphael Lacerda


CESGRANRIO/BB/2021
Em um ambiente Cluster, há um servidor Linux que tem o Ansible instalado.

Para construir um arquivo YAML, que informe os passos que o Ansible realizará
automaticamente na conexão com os servidores que fazem parte do Cluster, além de exe-
cutar um conjunto de tarefas solicitadas, o administrador desse servidor deve seguir o padrão

(A) Apache-Start

(B) Nodel

(C) Playbook

(D) Taskbook

(E) Tower
Infra as Code

Devops https://stackshare.io/stackups/ansible-vs-terraform
Prof. Raphael Lacerda
https://logz.io/blog/terraform-vs-ansible-vs-puppet/
https://medium.com/edureka/ansible-cheat-sheet-guide-5fe615ad65c0
Devops
Prof. Raphael Lacerda
code na infra

Devops
Prof. Raphael Lacerda
code na infra

Devops
Prof. Raphael Lacerda
Palpites

Prof. Raphael Lacerda


Palpites

https://www.digitalocean.com/com
munity/cheatsheets/how-to-use-ans
ible-cheat-sheet-guide

Prof. Raphael Lacerda


Palpites

Prof. Raphael Lacerda


#TYPESCRIPT

Prof. Raphael Lacerda


CESGRANRIO/BANCO amazonia/2022
O tratamento de erros e exceções é, atualmente, uma exigência para as linguagens de
programação.
Qual fragmento de código, em Javascript, é um exemplo válido desse tratamento?
A try { adddlert("Bem vindo!"); } else(err) { window.alert(err.message); }
B try { adddlert("Bem vindo!"); } except(err) { window.alert(err.message); }
C try { adddlert("Bem vindo!"); } catch(err) { window.alert(err.message); }
D try { adddlert("Bem vindo!"); } catch(err) { window.alert(err.message); } else {
window.alert("sem erros"); }
E try { adddlert("Bem vindo!"); } catch(err) { window.alert(err.message); } otherwise {
window.alert("sem erros"); }
CESGRANRIO/BANCO amazonia/2022
Um programador teve por tarefa escrever uma função Javascript que receba uma string como parâmetro e retorne outra
string. A string retornada deve conter os mesmos caracteres que a string recebida, sem espaços em branco.

Exemplo:

String recebida: ‘ B r a s il ‘ (total de 14 caracteres e 8 espaços em branco)

String retornada: ‘Brasil’ (total de 6 caracteres e nenhum espaço em branco)

Considere que, na função a ser escrita, duas aspas simples seguidas (‘‘) representam uma string vazia, e duas aspas
simples com um espaço entre elas (‘ ‘) representam um caracter de espaço em branco.

Qual função realiza o que foi pedido a esse programador?

A function tiraBranco(str) { var i=0,len=str.length,aux=’’;

while(i<len) { if(str[i]===’ ‘) aux=aux+str.slice(i+1,str.length); i++; } return aux; }


CESGRANRIO/BANCO amazonia/2022
B function tiraBranco(str) { if(str.length===0) return ‘’; if(str[0]===’ ‘) return
tiraBranco(str.slice(1,str.length)); else return str[0]+tiraBranco(str.slice(1,str.length)); }

C function tiraBranco(str) { var i=0,len=str.length,aux=’’; while(i<len) { if(str[i]===’ ‘)


aux=aux+str[i]; i++; } return aux; }

D function tiraBranco(str) { var aux=’’;

for(let c in str) { if(c!==’ ‘) aux+=c; } return aux; }

E function tiraBranco(str) { if(str.length===0) return ‘’; var c=str[0],ret;


ret=tiraBranco(str.slice(str.length)); if(str[0]===’ ‘) return ret; else return c+ret; }

javascript - What is the difference between


String.slice and String.substring? - Stack
String.prototype.slice() - JavaScript | MDN Overflow
(mozilla.org)
CESGRANRIO/ELETROBRAS/2022
Um usuário realizou a autenticação na aplicação Web de um banco. Durante a utilização dessa aplicação, o
usuário sofreu um ataque de engenharia social que o fez clicar em um link presente numa mensagem de
e-mail com conteúdo HTML e cuja URL corresponde a uma requisição válida na aplicação Web do banco.
Essa URL foi processada pelo navegador do usuário, e a requisição foi enviada e executada com sucesso
em nome do usuário da aplicação Web.

Esse ataque bem-sucedido demonstra que a aplicação Web do banco está vulnerável ao ataque de

A SQL Injection

B XPATH Injection

C Buffer Overflow

D CSRF

E XSS
CESGRANRIO/BB/2021
Considere o fragmento de código TypeScript a seguir.
const a = <T extends {b: string}>(obj: T) => { <código removido>
javascript - How to restrict object fields in
}; Typescript using Type parameter - Stack
Overflow
Com relação ao código apresentado acima, a(o)
(A) função a() retorna um objeto do tipo string. Using Typescript Generic Constraints to
Restrict Function Arguments Based on Other
(B) variável a é uma lista de objetos do tipo string. Arguments - DEV Community 󰠁󰞵

(C) variável a é um dicionário cujas chaves são objetos do tipo string.


(D) objeto que for passado para a função a() deve ter um campo b do tipo string.
(E) valor retornado pela função a() é um objeto que estende um objeto do tipo string.
Ecossistema

Prof. Raphael Lacerda


Características
⇒ Compilada (error checking)
⇒ Fortemente e Estaticamente tipada
⇒ Orientação a Objetos

Prof. Raphael Lacerda


Sintaxe básica

Prof. Raphael Lacerda


Variáveis

Prof. Raphael Lacerda


Palavras Reservadas

Prof. Raphael Lacerda


strings

Prof. Raphael Lacerda


CESGRANRIO/BB/2021
Em TypeScript 4, é possível usar o seguinte fragmento de código:

// definir x

const y = (...args: number[]) => args.reduce(x, 0);

Que fragmento de código apresenta uma versão compilável e executável da definição de x que poderia
aparecer no lugar do comentário “// definir x” ?

(A) const x = 1;

(B) const x = [1,2,3];

(C) const x = (a:number) => [a*2];

(D) const x = (a:number[]) => a[0];

(E) const x = (a:number,b:number) => a+b;


Array.prototype.reduce() - JavaScript | MDN
(mozilla.org)
CESGRANRIO/BB/2018
Um desenvolvedor Web precisa transformar em JSON a seguinte variável, em um programa
JavaScript:
var d1 = { "nome":"Ana Anacleto", "idade":31 };
Qual fragmento de código faz isso corretamente?
A var d2 = d1.stringfy(d1)
B var d2 = d1.parse()
C var d2 = JSON.stringify(d1);
D var d2 = JSON.parse(dados);
E var d2 = d1.toJSON();
CESGRANRIO/BANCO amazonia/2018
A hora não irá aparecer no <div> porque

A o append em jQuery não pode ser utilizado para containers vazios; deveria ter sido substituído por html.

B o objeto identificado por idLugar ainda não existe quando o script é executado.

C o símbolo de # está faltando na frente da identificação na definição do <div>

D a variável data está escrita erradamente (está escrita em português).

E os métodos getHours e getMinutes estão escritos no plural, quando deveriam ser, respectivamente, getHour e getMinute.
CESGRANRIO/IBGE/2013
Considere o seguinte trecho de código em Javascript.

var studentGrade;

var firstNumber = 50;

var secondNumber = 90;

studentGrade = firstNumber*0.7 + secondNumber*0.3;

if (studentGrade>=90) document.writeln (“A”);

else if (studentGrade>=80) document.writeln (“B”);

else if (studentGrade>=70) document.writeln (“C”);

else if (studentGrade>=60) document.writeln(“D”);

else document.writeln (“E”);

Após análise desse trecho, constata-se que será impresso o


CESGRANRIO/IBGE/2013
Considere o seguinte trecho de código em Javascript.

var sum = 0;

for (var number = 2; number < 100; number +=2)

sum+=number;

Após análise do trecho, verifica-se que será armazenado na variável sum a soma de todos os números.

A pares entre 2 e 98

B pares entre 2 e 100

C ímpares entre 2 e 98

D ímpares entre 2 e 100

E entre 2 e 100
CESGRANRIO/IBGE/2013
Usando o conjunto de tecnologias conhecido como AJAX, é possível fazer requisições assíncronas a um servidor. Para
isso, é necessário criar um objeto da classe XMLHttpRequest, a menos que se esteja trabalhando no ambiente do
Microsoft Internet Explorer de versões anteriores a 7. O código para isso é:

xmlhttp=new XMLHttpRequest() ;

Que fragmento de código corresponde aos dois passos necessários para enviar uma requisição a um servidor?

A xmlhttp.connect("ajax_info.txt",true); xmlhttp.get( );

B xmlhttp.connect("GET","ajax_info.txt",true); xmlhttp.send( );

C xmlhttp.initialize("GET","ajax_info.txt",true); xmlhttp.send( );

D xmlhttp.open("ajax_info.txt",true); xmlhttp.get( );

E xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send( );
CESGRANRIO/BB/2018
Observe as seguintes Figuras extraídas de uma página HTML com Javascript. A Figura 1 apresenta um
campo do tipo select sendo selecionado pelo usuário (no caso, a opção 2). A Figura 2 mostra o que
acontece imediatamente depois que o usuário seleciona a opção. O Google Chrome foi utilizado para
capturar a imagem, mas o efeito seria o mesmo nos navegadores mais utilizados.

A página HTML com Javascript que apresenta esse comportamento é:

HTML DOM Event Object (w3schools.com)

HTML DOM Select Object (w3schools.com)


CESGRANRIO/BB/2018
CESGRANRIO/BB/2018
CESGRANRIO/CEFET-RJ/2014
Em um texto em um website educacional, um professor deseja que um título (H1) seja
automaticamente trocado por outro texto quando clicado.
Um desenvolvedor decidiu implementar uma função em JavaScript trocar(id) que troca o texto
de um elemento DOM passado como o parâmetro id. Essa função está apresentada a seguir.
function trocar(id)
{
id.innerHTML="Título Mudado"
}
Que fragmento de HTML corresponde à execução do comportamento desejado pelo
professor?
HTML DOM Event Object (w3schools.com)

HTML DOM Select Object (w3schools.com)


CESGRANRIO/CEFET-RJ/2014

HTML DOM Event Object (w3schools.com)

HTML DOM Select Object (w3schools.com)


#MOBILE

Prof. Raphael Lacerda


QUESTÕES

Prof. Raphael Lacerda


CESGRANRIO/BB/2021
Um programador de aplicativos para dispositivos Apple com iOS
recebeu a seguinte parte de um código, escrito na linguagem
swift:
CESGRANRIO/BB/2021
A execução dessa parte do código produz como resposta
(A) o carro eh
(B) a casa eh
(C) o carro não eh
(D) a casa eh forte
(E) o carro eh forte
FEPESE/2022
Componentes de aplicativo são os blocos de construção de um app Android. Cada
componente é um ponto de entrada por onde o sistema ou o usuário pode entrar no
aplicativo. Alguns componentes dependem de outros.
Assinale a alternativa que contém quatro tipos diferentes de componentes de aplicativo.
A Atividades, Serviços, Broadcast Receivers e Provedores de Conteúdo
B Provedores de Interface, Provedores de Atividades, Serviços, Unicast Senders e Multicast
C Provedores Internos, Provedores Externos, Atividades, Serviços e Unicast Receiver
D Provedores de Atividades, Broadcast sender, Servidores, Unicast Receiver e Interfaces
E Provedores de Serviços, Unicast receivers, Atividades, Objetos de Interface e Provedores de
Conteúdo
Componentes de Aplicativo

Fundamentos de aplicativos |
Android Components with Examples - DEV
Desenvolvedores Android | Android
Community
Developers
UFRPE/2022
O framework Bootstrap possui uma abordagem conhecida como mobile first, a qual é uma
estratégia que otimiza o código para dispositivos móveis inicialmente. Dentro do contexto de
interfaces gráficas de um website, assinale a alternativa que contém a tag responsável por
garantir uma renderização adequada do site, nos mais variados tamanhos de dispositivos
eletrônicos.

A <meta http-equiv="refresh" content="30">

B <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

C <meta name="description" content="Free Web tutorials">

D <meta name="viewport" content="Mobile, Desktop, Tablet, JavaScript">

E <meta name="keywords" content="HTML, CSS, JavaScript">


FGV/2022
No contexto do ambiente Android, considere as seguintes
afirmativas a respeito do SQLite.
I. Deve ser utilizado com o apoio de um servidor de bancos de
dados separado.
II. Suporta transações (ACID).
III. Sua instalação requer cuidados, haja vista o número de
arquivos que devem ser preparados.
AOCP/2021
A classe View é a base para o design da interface do usuário. Um
objeto View é projetado para conter qualquer coisa que precise
ser visualizada em um aplicativo Android usando a tela do
dispositivo.
IF-RS/2021
Sobre a RecyclerView do Android, é procedente afirmar que:
A não possui suporte a animações ao adicionar ou remover
elementos da lista.
B permite alterar o gerenciador de layout para renderizar as views
como listas, grids, ou outra forma customizada.
C não utiliza, diferente do ListView, o conceito de adapters para
preencher o conteúdo da lista.
D trata os seus eventos de clique, assim como ListView
Create dynamic lists with RecyclerView |
Android Developers
IF-RS/2021
Analise as afirmações a seguir sobre a classe Handler e AsyncTask do Android:

I. O método onPreExecute() da classe AsyncTask deve ser executado manualmente para dar
início ao Thread.

II. O método sendMensage(msg) é um método da classe Handler que envia a mensagem


informada para a fila de mensagens para ser processada assim que possível.

III. A classe AsyncTask gerencia internamente as threads e os handlers necessários para


atualizar a interface.

IV. A classe AsyncTask contém métodos para atualizar o andamento (progresso) de uma tarefa,
por exemplo, o progresso de um download.

Estão corretas apenas as afirmativas

AsyncTask | Android Developers


IF-RS/2021
Analise as afirmações a seguir sobre o uso de Threads, Handler e AsyncTask em sistemas para Android:

I. Nas versões mais atuais do Android, se o código fizer uma operação de I/O na thread principal, o
sistema vai lançar a exceção NetWorkOnMainThreadException.

II. No Android, cada aplicação é executada em um único processo e cada processo, por sua vez, tem uma
Thread dedicada, a qual é responsável por desenhar e tratar todos os eventos da interface gráfica e é
conhecida como Main Thread ou UI Thread.

III. A classe Handler é utilizada para enviar uma mensagem para ser processada pela UI Thread que,
geralmente, é um código que vai atualizar a view.

IV. A Main Thread é utilizada para gerenciar todos os eventos e funções da aplicação e a UI Thread é
responsável apenas pela interface da aplicação.

Estão corretas apenas as afirmativas


NetworkOnMainThreadException | Android
Developers
Handler | Android Developers
Threads do Android

Processes and threads overview | Android


Developers Android Threads Tutorial for Beginners | by
Abhishek Srivastava | Medium
IF-RS/2021
Um Fragment é um componente independente do Android que pode ser usado por uma Activity, analise
as afirmações abaixo sobre Fragments:

I. Fragment é utilizado para dividir uma Activity em várias partes, porém o fragment não tem controle
sobre os eventos e não consegue gerenciar seu próprio conteúdo.

II. O Ciclo de vida de um fragment conta com o método onAttach(activity) e é chamado logo depois de
um fragment ser associado com a activity, o que acontece assim que a activity infla o layout do fragment
pela tag ou o fragment é adicionado dinamicamente via FragmentTransaction.

III. O método onDetach() é chamado para indicar que o fragment não está mais sendo utilizado e será
destruído.

IV. A API do Fragments possui a classe android.app.FragmentTransaction, que é utilizada para adicionar,
remover ou substituir os fragments dinamicamente no layout.
IF-RS/2021
Um Fragment é um componente independente do Android que pode ser usado por uma Activity, analise
as afirmações abaixo sobre Fragments:

I. Fragment é utilizado para dividir uma Activity em várias partes, porém o fragment não tem controle
sobre os eventos e não consegue gerenciar seu próprio conteúdo.

II. O Ciclo de vida de um fragment conta com o método onAttach(activity) e é chamado logo depois de
um fragment ser associado com a activity, o que acontece assim que a activity infla o layout do fragment
pela tag ou o fragment é adicionado dinamicamente via FragmentTransaction.

III. O método onDetach() é chamado para indicar que o fragment não está mais sendo utilizado e será
destruído.

IV. A API do Fragments possui a classe android.app.FragmentTransaction, que é utilizada para adicionar,
remover ou substituir os fragments dinamicamente no layout.
Fragment lifecycle | Android Developers
Ciclo de Vida

Fragment Lifecycle Tutorial With Example In


Prof. Raphael Lacerda Android Studio | Abhi Android
IF-RS/2021
Em relação ao ciclo de vida de classe Activity, é procedente afirmar que o método

A onStart() é chamado quando a activity está ficando visível ao usuário e já tem uma view.

B onResume() é chamado quando uma activity foi parada temporariamente e está sendo
iniciada outra vez.

C onStop() é chamado sempre que a tela da activity fechar. Isso acontece quando o usuário
pressiona o botão Home ou botão voltar para sair da aplicação ou, ainda, quando recebe uma
ligação no telefone. Ele é chamado para salvar o estado da aplicação.

D onClose() literalmente encerra a execução de uma activity. Ele pode ser chamado
automaticamente pelo sistema operacional para liberar recursos ou pode ser chamado pela
aplicação pelo método finish() da classe activity.

The activity lifecycle | Android Developers


Ciclo de Vida

The activity lifecycle | Android Developers


Prof. Raphael Lacerda
IF-RS/2021
A respeito da classe Activity, no desenvolvimento de aplicações Android, analise as afirmações
a seguir:

I. A classe Activity deve ser herdada da classe android.app.Activity ou de alguma subclasse


desta, a qual representa uma tela da aplicação e é responsável por tratar eventos gerados
nessa tela.

II. a classe Activity deve sobrescrever o método onCreate(bundle). Esse método é obrigatório e
responsável por realizar a inicialização necessária para executar a aplicação.

III. a classe Activity é uma subclasse da classe FragmentActivity.

IV. a classe AppCompatActivity é uma subclasse da classe Activity.

Estão corretas apenas as afirmativas

AppCompatActivity | Android Developers The activity lifecycle | Android Developers


IF-RS/2021
Para iniciar o desenvolvimento de aplicações Android é necessário realizar a instalação de alguns softwares
e realizar algumas configurações. Sabendo disso, analise as afirmações abaixo sobre o ambiente de
desenvolvimento Android:

I. Android SDK é o software utilizado para desenvolver aplicações no Android, que tem um emulador para
simular o dispositivo, ferramentas utilitárias e uma API completa para a linguagem Java, com todas as
classes necessárias para desenvolver aplicações.

II. Como existem muitas versões do sistema operacional Android, existe um identificador de cada uma
dessas plataformas que se chama API Level.

III. Gradle é um moderno sistema de gerenciamento de banco de dados para Android.

IV. O Android Studio conta com um utilitário chamado SDK Manager onde é possível baixar todas as
plataformas do Android e suas documentações, drive USB do Google para conectar um dispositivo na
USB, bibliotecas de compatibilidade, bibliotecas do Google Play Services etc.
IF-RS/2021
Sobre o arquivo AndroidManifest.xml, é procedente a seguinte afirmação:
A Dentro da tag < manifest > é declarado o pacote principal do projeto, utilizando a
tag < package >
B O arquivo AndroidManifest.xml contém a documentação completa da aplicação
criada, inclusive, das funções globais da aplicação.
C O arquivo AndroidManifest.xml é gerado automaticamente ao compilar o projeto e
permite que a aplicação acesse qualquer recurso como arquivo e imagens utilizando
constantes.
D No arquivo AndroidManifest.xml são realizadas várias configurações da aplicação e
é nele que são inseridos os dados de acesso ao banco de dados.

App manifest overview | Android Developers


SWIFT

Prof. Raphael Lacerda


@canetas.pretas

CONCEITOS
BÁSICOS
Características da Linguagem
● Histórico
● Versões
○ What’s new in Swift 5.0 – Hacking with Swift

About Swift | Documentation


Panorama de uso
● ranking stack overflow
Panorama de uso
● ranking stack overflow
Prof. Raphael Lacerda
@canetas.pretas

OBJECTIVE C
VS
SWIFT
@canetas.pretas

SINTAXE
Variáveis
● var vs let <nome> : <type> = <value>
● type inference
○ Chapter 5 Static Typing and Type Inference | Learn Swift (aidanf.net)

● let (x, y) = (1, 2)


● strongly typed and Statically typed
○ Cannot assign value of type 'Int' to type 'String'
● Conversão
○ let a = 5 var nome: String = "lacerda"
○ let b = 10.3
○ let c = Double(a)+b
var nome = "lacerda"

The Basics | Documentation (swift.org) Is Swift a dynamic or static language? - Stack


Overflow
Data Types
● tipos padrão
● type safe

Swift Data Types (With Examples)


Swift - Data Types - GeeksforGeeks
(programiz.com)
Operadores
● Assignment, Math, Comparison, Identity, Logical

Basic Operators | Documentation (swift.org)


Swift Operators (With Examples)
(programiz.com) Structures and Classes | Documentation
(swift.org)
Operadores alternativos

Basic Operators | Documentation (swift.org)


Swift Operators (With Examples)
(programiz.com) Structures and Classes | Documentation
(swift.org)
@canetas.pretas

STRINGS
Strings
● inicializando Strings
○ almost endless number of ways to create a String
○ Swift String Cheat Sheet (useyourloaf.com)

● concatenação (+) (+=)


○ somente para strings
● interpolação \()
○ construct a new String value from a mix of variables
● multiline
○ """
○ To be,
○ or not
○ """

Strings and Characters | Documentation


Swift String Methods | Programiz (swift.org)
Strings

● funções básicas
○ == , < , >
○ uppercased() | Apple Developer Documentation

○ substring - How does String substring work in Swift - Stack Overflow - Why cannot subscript String with an Int in
Swift | by Banghua Zhao | Medium

● sequência de caracteres the result is an instance of


Substring, not another string.

Strings and Characters | Documentation


Swift String Methods | Programiz (swift.org)
@canetas.pretas

CONDICIONAIS
if if nome.count > 5{
print("nome grande")
● } else{
print("nome pequeno")
}

Control Flow | Documentation (swift.org)


switch In contrast with switch statements
switch idade{ in C and Objective-C, switch
statements in Swift don’t fall
● não precisa through the bottom of each case
case 10: and into the next one by default.
de break Instead, the entire switch
print("pode entrar") statement finishes its execution as
soon as the first matching switch
case 11: case is completed,
print("pode sair")
case 12:
print("ferrou")
default:
print("nao vai dar nada")

}
Control Flow | Documentation (swift.org)
Default obrigatório?
● Swift only truly verifies that a switch block is exhaustive when
working with enum types
○ ou seja, não é mas é!
● switch must be exhaustive, consider adding a default clause - Evolution / Discussion - Swift Forums

ios - Exhaustive condition of switch case in This default case is indicated by the
Swift - Stack Overflow default keyword, and must always
appear last.

Control Flow | Documentation (swift.org)


By chatGPT

Control Flow | Documentation (swift.org)


guard let vs if let
● guard
○ is used to provide early return without requiring nesting of the rest of the
function. Control Flow | Documentation (swift.org)
○ designed to exit the current function, loop, or condition if the check fails.
● let
○ does not require anything special of it. It can return or not.

guard let path = Bundle.main.path(forResource: "canetaspretas", ofType: "png")


else {
debugPrint("Photo not found")
return
if vs if let vs guard let in Swift · Suneet swift2 - Swift: guard let vs if let - Stack
} Agrawal (agrawalsuneet.github.io) Overflow
Optional
var vitorias:Int
● SafeGuard ao invés de Nil print (vitorias)
○ pode ser nula ou vazio
● Forced Unwrapping
○ Force unwrapping - a free Hacking with Swift tutorial

○ avoid - Optional Chaining | Documentation (swift.org)


■ let roomCount = john.residence!.numberOfRooms
● solução: optional binding

Optionals and Unwrapping in Swift | Swift


Anytime
@canetas.pretas

LOOPS
for-in / while-in
● break let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
● continue
print("Hello, \(name)!")
● label statement }

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]


for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}

Control Flow | Documentation (swift.org)


@canetas.pretas

DATA STRUCTURES
Collections

If you create an array, a set, or a


dictionary, and assign it to a variable,
the collection that’s created will be
mutable.

Collection Types | Documentation (swift.org)


Arrays
● apenas elementos do mesmo tipo
● ordem de inserção
● métodos
○ filter(_:) | Apple Developer Documentation

○ forEach(_:) | Apple Developer Documentation

● var anyArray: [Any] = []


○ não é o jeito mais otimizado de lidar com objetos de diferentes tipos

Collection Types | Documentation (swift.org)


Tuples
● armazenar múltiplos valores de diferentes tipos
● pode ser usado para retornar múltiplos valores de uma função
● é um grupo temporário de valores relacionados
○ não é adequado para estruturas complexas
● NamedTuples

Swift Tuple (With Examples) (programiz.com)


Set
● conjunto de valores
● não há ordem
● não há repetição
● hashable values

A set type can’t be inferred from an


array literal alone, so the type Set
must be explicitly declared.

Set | Apple Developer Documentation Collection Types | Documentation (swift.org)


Dictionaries
● hashtable
● keys (same type) and values (same type)

Dictionary | Apple Developer Documentation Collection Types | Documentation (swift.org)


@canetas.pretas

FUNCTIONS
Functions
● executam uma atividade específica
● func - palavra reservada
● pode retornar múltiplos argumentos
● argument labels, default (_) and default values (=)
○ Function parameters are immutable by default.
○ inout func someFunction(argumentLabel parameterName: Int) {
}
○ variadic (numbers: Int…)
● Function Types

What is the '$0' syntax in Swift | Apple


Developer Forums Functions | Documentation (swift.org)
@canetas.pretas

CLOSURES
Closures
● self-contained blocks of functionality that can be stored in a
variable.
○ blocos de funcionalidades
● funções anônimas passadas como argumento

Closures | Documentation (swift.org)


@canetas.pretas

STRUCTURES
Structures
● propriedades, métodos, initializers
● Thread Safety
○ São value types. Ou seja, seus valores são copiados para
um novo espaço de memória.
● Sem herança
● métodos, em regra, não podem alterar as propriedades
Struct vs. Class in Swift Explained - Appy Pie

Structures and Classes | Documentation


(swift.org)
Classes
● tudo que uma structure faz
● herança
● type casting
● Deinitializers
● Reference counting
○ seus valores são passados por referência para o mesmo espaço de memória
● Stored vs Computed Properties
○ Computed properties vs methods | Swift by Sundell Class vs Struct in Swift. When we need to
decide how to store… | by Burak Akyalçın |
Medium

Choosing Between Structures and Classes |


Apple Developer Documentation
Subscripts
● o significado depende do contexto
○ atalho para acessar membros de uma collection []

Subscripts | Documentation (swift.org)


@canetas.pretas
OBRIGADO!
FOCO NA
@canetaspretas

APROVAÇÃO
@
oscanetaspretas

@canetaspretas Prof. Raphael Lacerda


Resumo Servlet
● Extensão da classe HttpServlet: Para criar uma servlet, você precisa criar uma classe Java que estenda a classe
HttpServlet. Essa classe fornece métodos que permitem que você processe solicitações HTTP e envie respostas de
volta ao cliente.
● Método doGet() e doPost(): Esses são dois dos principais métodos fornecidos pela classe HttpServlet. O método
doGet() é usado para processar solicitações HTTP GET, enquanto o método doPost() é usado para processar
solicitações HTTP POST.
● Ciclo de vida da servlet: Uma servlet tem um ciclo de vida que inclui a inicialização, processamento de solicitações
e destruição. Durante a inicialização, a servlet pode ser configurada para lidar com solicitações específicas.
Durante o processamento de solicitações, a servlet recebe uma solicitação HTTP e envia uma resposta HTTP.
Durante a destruição, a servlet é liberada da memória.
● Objeto HttpServletRequest: Esse objeto fornece informações sobre a solicitação HTTP, como o método HTTP
usado, os parâmetros da solicitação e o cabeçalho da solicitação.
● Objeto HttpServletResponse: Esse objeto é usado para enviar a resposta HTTP de volta ao cliente. Ele fornece
métodos para definir o código de status da resposta, os cabeçalhos da resposta e o conteúdo da resposta.
● Mapeamento de URL: Uma servlet é mapeada para uma URL específica. Quando o servidor web recebe uma
solicitação para essa URL, ele direciona a solicitação para a servlet correspondente.

Você também pode gostar