Certificazione Java

Java Programmer I

Il primo esame per il percorso di certificazione Java è Java Programmer I (1Z0-808),

ecco nel dettaglio su cosa verte:

Basi
  • Definire lo scope di una variabile
  • Definire la struttura di una classe Java
  • Creare un’applicazione Java eseguibile con un metodo main; eseguire un programma Java dal command line; includere l’output della console.
  • Importare altri pacchetti Java per renderli accessibili nel codice
  • Comprendere ed utilizzare le caratteristiche ed i componenti del linguaggio come: indipendenza dalla piattaforma, programmazione ad oggetti, incapsulamento, ecc.
Lavorare con i Data Types
  • Dichiarare e inizializzare una variabile (incluso il cast dei tipi primitivi)
  • Differenze fra variabili oggetto referenziate e variabili primitive
  • Sapere come leggere e scrivere gli attributi di un oggetto
  • Conoscere il “Lifecycle” di un Oggetto (creazione, dereferenziazione per riassegnamento e garbage collection)
  • Sviluppare codice che usi le wrapper class come Boolean, Double, Integer, ecc.
Uso degli Operatori e dei Costrutti Decisionali
  • Usare operatori Java; uso delle parentesi per forzare la precedenza degli operatori
  • Testare l’uguaglianza fra Stringhe usando == e equals().
  • Usare if, if/else e operatore ternario.
  • Usare il comando switch
Creare e Usare gli Array
  • Dichiarare, istanziare ed inizializzare un array uni-dimensionale
  • Dichiarare, istanziare ed inizializzare un array multi-dimensionale
Usare i Costrutti Loop
  • Il costrutto while
  • Il costrutto for e “for each”
  • Il costrutto do/while
  • Confronto fra i costrutti loop
  • Comprensione di break e continue
Lavorare con Metodi ed Incapsulamento
  • Creare metodi con argomenti e tipo di ritorno; overload dei metodi
  • Applicare la parola chiave statica metodi e attributi
  • Creare e fare overload dei costruttori; incluso l’impatto sul costruttore di default.
  • Applicare i modificatori di accesso
  • Applicare i principi dell’incapsulamento ad una classe
  • Comprendere le differenze fra il passaggio di variabili primitive ed oggetti (passaggio per riferimento) quando usate come argomenti per un metodo
Lavorare con l’Ereditarietà 
  • Descrivere l’ereditarietà ed i suoi benefici
  • Sviluppare codice che dimostri l’uso del Polimorfismo; incluso override e tipizzazione per oggetti o per riferimento
  • Comprendere quando il casting è necessario
  • Uso di super e this per accedere ad oggetti e costruttori
  • Usare classi astratte e interfacce
Gestire le Eccezioni
  • Differenze fra checked exceptions, unchecked exceptions, e Errors
  • Creare un blocco try-catch e comprendere come le eccezioni alterano il normale flusso del programma
  • Descrivere i vantaggi della gestione delle Eccezioni
  • Creare e invocare un metodo che solleva un’eccezione
  • Riconoscere eccezioni comuni (NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException, ClassCastException, ecc)
Lavorare con specifiche classi di Java API
  • Manipolare dati usando la classe StringBuilder e i suoi metodi
  • Creare e manipolare le Stringhe
  • Creare e manipolare date di calendario usando java.time.LocalDateTime,  java.time.LocalDate, java.time.LocalTime, java.time.format.DateTimeFormatter, java.time.Period
  • Dichiarare ed usare un ArrayList di un dato tipo
  • Scrivere una semplice Lambda expression che usi un’espressione Lambda Predicate.

Java Programmer II

Il secondo step per la certificazione è l’esame Java Programmer II (1Z0-809) che verte su:

Architettura di Classi Java

  • Implementare l’incapsulamento
  • Implementare l’ereditarietà inclusi modificatori di visibilità e composizione
  • Implementare polimorfismo
  • Override dei metodi hashCode, equals e toString della classe Object
  • Creare e usare classi singleton e classi immutabili.
  • Sviluppare codice che usa la parola chiave static sul codice di inizializzazione, variabili, metodi e classi.

Architettura Avanzata di Classi Java

  • Sviluppare codice che usa classi e metodi astratte.
  • Sviluppare codice che usa la parola chiave final.
  • Creare classi interne incluse: static, locali e classi interne anonime.
  • Usare gli enumeratori inclusi metodi e costruttori.
  • Sviluppare codice che dichiara, implementa e/o estende interfacce e/o classi ed usa l’annotation @Override
  • Creare e usare espressioni Lambda.

Generici and Collezioni

  • Creare e usare una classe generica
  • Creare ed usare oggetti ArrayList, TreeSet, TreeMap e ArrayDeque.
  • Usare le interfacce java.util.Comparator e java.util.Comparable
  • Collezioni Streams e Filters
  • Iterare Streams e List usando il metodo forEach
  • Descrivere l’interfaccia Stream e la Stream pipeline
  • Filtrare una collezione usando le lambda expression
  • Usare il riferimento ai metodi con Streams

Interfacce Funzionali Lambda 

  • Usare le interfacce del package java.util.function, quali Predicate, Consumer, Function, and Supplier
  • Sviluppare codice che usa le versioni primitive delle interfacce funzionali
  • Sviluppare codice che usa le versioni binarie delle interfacce funzionali
  • Sviluppare codice che usa l’interfaccia UnaryOperator

Java Stream API

  • Sviluppare codice che estrae dati da un oggetto usando i metodi peek() e map(), incluse le versioni primitive del metodo map()
  • Cercare dati usando il metodo search() della classe Strean inclusi findFirst, findAny, anyMatch, allMatch, noneMatch
  • Sviluppare codice che usi le classi Optional
  • Sviluppare codice che usi i metodi di manipolazioni dei dati e di calcolo di Stream
  • Ordinare una collezione usando le Stream API
  • Salvare i risultati di una collezione usando il metodo collect e raggruppare/dividere i dati usando la classe Collectors
  • usare i metodi flatMaps() delle Stream API

Eccezioni ed Asserzioni

  • Usare gli statement try-catch e throw
  • Usare clausole catch, multi-catch e finally
  • Usare risorse Autoclose in uno statement try-with-resources
  • Creare eccezioni personalizzare e risorse Auto-chiudenti
  • Testare espressioni invarianti usando le asserzioni

Use Java SE 8 Date/Time API

  • Creare e manipolare eventi basati su date e tempo incluso la combinazione di date e tempi in un singolo oggetto usando LocalDate, LocalTime, LocalDateTime, Instant, Period, and Duration
  • Lavorare con le date e i tempi attraverso i fuso-orari e gestire i cambiamenti risultanti inclusi il formato delle date e dei tempi
  • Definire, creare e manipolare eventi basati su Date e Time usando Instant, Period, Duration, and TemporalUnit

Java I/O Fundamentals

  • Leggere e scrivere dati dalla console
  • Usare BufferedReader, BufferedWriter, File, FileReader, FileWriter, FileInputStream, FileOutputStream, ObjectOutputStream, ObjectInputStream e PrintWriter dal package java.io.

Java File I/O (NIO.2)

  • Usare l’interfaccia Path per operare con i percorsi di directory e file
  • Usare la classe File per verificare, leggere, cancellare, copiare, muovere o manipolare i metadati di un file o directory
  • Usare le Stream API con NIO.2

Java Concurrency

  • Creare worker-threads usando le interfacce Runnable, Callable ed usare un ExecutorService per eseguire i task in concorrenza
  • Identificare potenziali problemi di threading fra deadlock, starvation, livelock e condizioni di esecuzione
  • Usare la parola chiave synchronized e il pacchetto java.util.concurrent.atomic per controllare l’ordine di esecuzione dei thread.
  • Usare le collezioni e le classi di java.util.concurrent incluse CyclicBarrier e CopyOnWriteArrayList
  • Usare il Framework Fork/Join
  • Usare parallel Streams incluse riduzione, scomposizione, processo di merge, pipeline e performance

Building Database Applications with JDBC

  • Descrivere le interfacce che costituiscono il cuore delle JDBC API incluse le interfacce Driver, Connection, Statement e ResultSet e le loro relazioni con le implementazioni dei providers.
  • Identificare i componenti richiesti per connettere un database usando la classe DriverManager e i JDBC URL
  • Eseguire query e  leggere i risultati da un database inclusa la creazione di Statemens, ResultSet di ritorno, iterare i result sets e chiudere propriamente result sets, statements e connessioni.

Localizzazione

  • Leggere e scrivere il locale usando l’oggetto Locale
  • Creare e leggere un file Properties
  • Costruire un resource-bundle per ogni locale e caricarlo in una applicazione

 

Per simulare l’esame si possono usare:

Comments are closed.