Sei sulla pagina 1di 10

Quesiti per la valutazione di uno sviluppatore Java

Sviluppo Web

Sviluppo web: conoscenza generale


Conoscenza di base dellambito web, HTTP

Cos' HTTP?
Acronimo di HyperText Transfer Protocol, ovvero il protocollo di trasferimento dati, usato per scambiare documenti ipertestuali ed elementi a corollario (img, js, css). Un server HTTP resta generalmente in ascolto sulla porta 80 e serve le richieste dei client, usando il protocollo TCP a livello 4 (trasporto). Livelli TCP

Livello
7 6 5 4 3 2 1 Livello di applicazione Livello di presentazione Livello di sessione Livello di trasporto Livello di rete

Descrizione

Livello di collegamento dati Livello Fisico

Non essenziale conoscere i livelli tcp per essere buoni sviluppatori, ma sapere quanto il candidato conosce in questa materia pu essere utile per capire il grado di preparazione. Una risorsa HTTP pu essere identi!cata univocamente tramite il proprio URI (uniform resource identi!er), per esempio http://davide.gurgone.it/index.html HTTP stato progettato per la scalabilit dei servizi, pertanto non previsto il concetto di sessione, al !ne di consentire la replica speculare, su pi istanze server, della stessa risorsa. Per poter proter proteggere i dati si prevede luso dellheader Authentication Basic. Lautenticazione avviene cos ad ogni richiesta.

Quali sono i metodi HTTP?

Per gestire la comunicazione tra client e server, HTTP mette a disposizione alcuni metodi, discussi di seguito.

Pagina 1 - 10

Metodo
GET POST HEAD PUT DELETE TRACE OPTIONS CONNECT

Funzione (in sintesi)


Usato per ottenere il contenuto indicato come URI Usato per inviare informazioni al server Analogo a GET, ma restituisce solo le intestazioni della risposta Usato per aggiornare una risorsa sul server Usato per eliminare una risorsa sul server Strumento di monitor, restituisce al client la richiesta e"ettuato Nel colloquio client server, restituisce le modalit di dialogo per ottenere una risorsa Usato per instaurare un tunnel verso la risorsa desiderata

I browser moderni gestiscono ancora solo GET e, tramite uso di form, POST. Per utilizzare gli altri metodi necessario utilizzare codice JavaScript, per eseguire richieste asincrone.

Cosa si intende per idem-potenza?

un metodo HTTP pu essere idempotente, quando la stessa richiesta ripetuta pi volte, produce lo stesso identico risultato. il caso tipico di GET ed HEAD. importante in un sistema conoscere questo concetto al !ne di ottimizzare le chiamate, mediante meccanismi di caching adeguati.

Cos' lo sviluppo REST di un applicazione?


Representational State Transfer, modalit o stile di sviluppo che prevede luso consapevole del protocollo HTTP. Per comprendere appieno lo sviluppo rest, si immagini di avere le proprie risorse come fossero su un !lesystem, in un albero di directory reale e dover utilizzare i metodi HTTP per potervi accedere in lettura / scrittura:

Metodo
GET POST GET PUT DELETE

Richiesta
http://treis.it/clienti http://treis.it/clienti/facebook http://treis.it/clienti/facebook http://treis.it/clienti/facebook http://treis.it/clienti/swteam

Risultato
Mostra lelenco dei clienti della propria azienda Aggiungi Facebook tra i clienti Mostra lanagra!ca di Facebook Aggiorna le informazioni del cliente Elimini un vecchio cliente

Pagina 2 - 10

Sviluppare utilizzando rotte di questo tipo consente di mantenere ordine nel sito, nel codice e poter sviluppare meglio i sistemi di cache.

Cos' un virtualhost

Il Virtual Hosting un metodo tecnico per poter ospitare pi domini internet, solitamente siti web e domini di posta elettronica, in un singolo server con un singolo indirizzo IP. Questo metodo tecnico permette una maggiore e#cienza delle risorse utilizzare ed un pi facile controllo poich tutto concentrato in un singolo sistema. Questa condizione rende per condivisi i rischi eventuali legati ad un uso improprio di un singolo dominio ospite.

Cos' Apache Cos' NGINX

Uno dei pi usati HTTP Server al mondo, soprattutto in ambiente linux / unix. Web Server / Reverse proxy di abbastanza recente costruzione, molto leggero ed ad altissime prestazioni

Cos' il file hosts

File di testo che contiene il mapping tra un indirizzo IP ed il nome dellhost (dominio). Sovra-scrive localmente le informazioni presenti nel DNS

Pagina 3 - 10

Sviluppo web Server Side base / medio


Cos' JDBC e che relazione c' con un ORM?

Requisiti minimi, per cui uno sviluppatore pu de!nirsi tale

Java DataBase Connectivity - Connettore per database che consente l'accesso alle basi di dati da qualsiasi programma scritto con il linguaggio di programmazione Java, indipendentemente dal tipo di DBMS utilizzato. Object-relational mapping - Un prodotto ORM fornisce, mediante un'interfaccia orientata agli oggetti, tutti i servizi inerenti alla persistenza dei dati, astraendo nel contempo le caratteristiche implementative dello speci!co DBMS utilizzato. Un ORM utilizza tipicamente JDBC, per accedere allo speci!co DBMS, mediante luso di speci!ci JDBC Driver.

Conosci un ORM in particolare?

Un ORM in java pu aderire allo standard JPA, che ne de!nisce le speci!che. Hibernate e TopLink (Oracle), sono tra i pi di"usi.

Cos' la JVM?
Java Virtual Machine - Componente della piattaforma Java che esegue i programmi tradotti in bytecode dopo una prima compilazione. La JVM nasce come interprete, tuttavia, a seguito dellintroduzione di compilatori Just In Time, il bytecode viene compilato in linguaggio macchina. Questo conferisce alle applicazioni Java alte performance.

Cos' il byte code?

Il bytecode generalmente prodotto dalla compilazione di codici sorgenti (o !le sorgenti) scritti in linguaggio Java, anche se possibile produrre bytecode partendo da altri linguaggi come Scala, Clojure o Groovy.

Quali sono le alternative alle JSP, perch si usano?


Java Server Pages - Tecnologia di programmazione Web in Java per lo sviluppo della logica di presentazione. Si basa su un insieme di speciali tag, all'interno di una pagina HTML, con cui possono essere invocate funzioni prede!nite. In aggiunta, permette di creare librerie di nuovi tag che estendono l'insieme dei tag standard. Le librerie di tag JSP si possono considerare estensioni indipendenti dalla piattaforma delle funzionalit di un Web server, pertanto di#cilmente scindibile da esso. Freemarker, Velocity, StringTemplate Nascono con lo scopo di poter renderizzare pagine web ed altri documenti tipicamente testuali, fuori dal contesto di un web server. Alcuni di questi sono poi stati integrati tra i layer di sviluppo web.
Pagina 4 - 10

Oltre a questi, vi sono numerosi altri strumenti di templating, orientati al web, principalmente di derivazione da altri linguaggi di programmazione, come HAML, Mustache, ERB (Ruby On Rails). Questi ultimi sono stati studiati per eliminare la complessit o dal lato di sviluppo o dal lato del designer.

Cosa cos' un IOC container?


Inversion of Control - Le dipendenze tra i singoli componenti sono dichiarate in modo semplice. Per esempio una classe Automobile che necessita di un'oggetto di tipo Motore, dichiarer una variabile di istanza di tipo Motore e un metodo per impostare a run-time il riferimento all'oggetto. Le dipendenze possono quindi essere "iniettate" dall'esterno: non si segue il normale $usso di controllo dei linguaggi imperativi, in cui, nel momento del bisogno, si richiamano funzioni di classi o librerie esterne. Gli oggetti non istanziano e richiamano gli oggetti dal quale il loro lavoro dipende, ma queste funzionalit vengono fornite da un ambiente esterno tramite dei contratti de!niti da entrambe le entit. Dependency injection - una delle tecniche con le quali si pu attuare l'IoC. Essa prende il controllo su tutti gli aspetti di creazione degli oggetti e delle loro dipendenze. La libreria Java Spring usa molto di"usamente la Dependency Injection con il risultato, tra le altre cose, di eliminare dal codice applicativo ogni logica di inizializzazione. Normalmente, senza l'utilizzo di questa tecnica, se un oggetto necessita di accedere ad un particolare servizio, l'oggetto stesso si prende la responsabilit di gestirlo, o avendo un diretto riferimento al servizio, o individuandolo con un "Service Locator" che gli restituisce un riferimento ad una speci!ca implementazione del servizio. Con l'utilizzo della dependency injection, l'oggetto ha in s solamente una propriet che pu ospitare un riferimento a quel servizio, e quando l'oggetto viene istanziato, un riferimento ad una implementazione di questo servizio gli viene iniettata dal framework esterno, senza che il programmatore che crea l'oggetto sappia nulla sul suo posizionamento del servizio o altri dettagli sullo stesso.

Come sviluppare Test Driven Drive?


TDD - un processo di sviluppo del software in cui lo sviluppo vero e proprio preceduto e guidato dalla stesura di test automatici. In java lo sviluppo dei test unitari avviene tramite jUnit e prevede che si scriva il codice di test, seguito dallimplementazione che risponde a tale test. Chiamati in sequenza, i test unitari, danno subito evidenza dellintroduzione di nuovi errori, in fase di modi!ca. Molti tool consentono, mediante report, di mostrare tali problematiche.

Pagina 5 - 10

Quali sono i layer applicativi pi comuni per un'applicazione web e che utilizza un DBMS? Layer
Templates Controller Services Data Access Entity Bean

Utilizzo
JSP / Freemarker, produzione di HTML, CSS, Javascript Acquisizione dati, Content Negotiation, richiama i services Elabora la Business Logic, Richiama i metodi di accesso ai dati Metodi di accesso ai dati Modello dei dati usato dallapplicazione

A seconda della complessit del progetto, services e data access layer potrebbero essere condensati in uno solo.

Sviluppo Frontend

Spesso lo sviluppatore java si scontra con tematiche non necessariamente di competenza java. Lo sviluppo frontend, seppur contiene elementi strettamente creativi e poco analitici, in alcune sue componenti devesser compreso per poter fare applicazioni di qualit.

Cos' una chiamata AJAX?


Asynchronous JavaScript and XML requests - tecnica di sviluppo software per la realizzazione di applicazioni web interattive. Lo sviluppo di applicazioni HTML con AJAX si basa su uno scambio di dati in background fra web browser e server, che consente l'aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell'utente. AJAX asincrono nel senso che i dati extra sono richiesti al server e caricati in background senza interferire con il comportamento della pagina esistente. Normalmente le funzioni richiamate sono scritte con il linguaggio JavaScript. Tuttavia, e a dispetto del nome, l'uso di JavaScript e di XML non obbligatorio, come non necessario che le richieste di caricamento debbano essere necessariamente asincrone.

Cos' JSON?
JavaScript Object Notation - formato adatto per lo scambio dei dati in applicazioni client-server. basato sul linguaggio JavaScript, ma ne indipendente. Viene usato in AJAX come alternativa a XML/XSLT. La semplicit di JSON ne ha decretato un rapido utilizzo specialmente nella programmazione in AJAX. Il suo uso tramite JavaScript particolarmente semplice, infatti l'interprete in grado di eseguirne il parsing tramite una semplice chiamata alla funzione eval().
Pagina 6 - 10

Questo fatto lo ha reso velocemente molto popolare a causa della di"usione della programmazione in JavaScript nel mondo del Web.

Cos' JSONP?

La cosiddetta same-domain-policy una restrizione presente nei recenti browser che impedisce a script scaricati dalla rete di accedere, tramite qualsiasi tipo di richiesta HTTP, a risorse che si trovano su server diversi rispetto a quello iniziale che ha inviato lo script. Questa inibizione non riguarda solo host diversi tra di loro, ma anche processi in ascolto su porte diverse della stessa macchina. JSONP lacronimo di JSON with Padding e rappresenta una tecnica che permette di ovviare a questa limitazione permettendo a un browser di accedere, ovviamente con alcuni limiti, a risorse remote indipendentemente dallhost di origine. Uno dei modi per accedere a script on-demand quello di modi!care il DOM della pagina inserendo un nuovo tag <script> allinterno della testata del documento. Questo approccio, nonstante permetta di accedere a !le JavaScript remoti, presenta un grosso limite: non si ha infatti% controllo sul codice generato da questa richiesta che verr eseguoto automaticamente dallinterprete JavaScript appena lo ricever dal server. JSONP pu essere visto come unestensione a questo approccio che permette di invocare una funzione di callback automatizzata al ricevimento di dati.

Cos' jQuery?

Libreria di funzioni Javascript, cross-browser per le applicazioni web, che si propone come obiettivo quello di sempli!care la programmazione lato client delle pagine HTML. Fornisce tutti gli strumenti per selezionare elementi allinterno del DOM di una pagina web, manipolarli, modi!care CSS, gestire gli eventi, e"ettuare chiamate AJAX, applicare e"etti di transizione. jQuery si di"uso enormemente grazie alla potenza espressiva della libreria, che consente di comprendere il funzionamento delle operazioni anche da parte di operatori non prettamente sviluppatori.

Come funziona jQuery?

Alla base di jQuery c un forte uso di regular expression, una profonda conoscenza Javascript ed il lavoro della community, molto attiva. Peculiarit della libreria sono il keychaining, che consente di operare in sequenza numerose attivit, manipolando loggetto per modi!cazioni successive: <a class=loadClienti href=/clienti>Carica lista clienti</a> $(a.loadClienti) .addClass(red) .text(Carica elenco clienti);

Pagina 7 - 10

Il passaggio di contesto tramite funzioni apply() e call().

Cosa sono apply e call in Javascript?

Javascript un linguaggio procedurale (c) ad oggetti (c++) e funzionale (lisp). primo nel suo genere, incorpora funzionalit di linguaggi di tipo diverso. Oggi queste stesse funzionalit sono state largamente replicate da linguaggi come Ruby, Scala, Groovy. call ed apply sono le funzioni che permettono di assegnare il contesto di esecuzione ad una data funzione javascript. Sono sostanzialmente analoghe, si distinguono per la modalit con cui applicare i parametri.

A parte jQuery, quali librerie Javascript conosci?

Le pi di"use sono: Prototype, Ext JS, Dojo Toolkit, MooTools, Script.aculo.us

Quali framework di frontend utilizzi maggiormente?


Twitter Bootstrap, Foundation, Zimit

Perch comodo usare un framework di frontend?

Un framework di frontend (html5 / css3 / Javascript) consente di dedicarsi interamente alla prototipazione, senza dover dedicare del tempo a ride!nire il css per la maggior parte degli oggetti comuni, come form, bottoni, immagini, etc. Luso di griglie consente di avere un risultato ottimo, senza scrivere particolari CSS, consentendo una veloce prototipazione.

Sviluppo Java Medio


jruby, groovy, javascript, vbs

Fammi alcuni esempi di linguaggi che usano la JVM Che cos' la reflection

Un programma Java in esecuzione pu esaminare le classi da cui costituito, i nomi e le signature dei loro metodi, e cos via. Il supporto per la re$ection costituisce una delle pi notevoli innovazioni di Java, che deriva da una tradizione di linguaggi (C, C++) in cui tutte le informazioni di tipo vengono consumate dal compilatore, al punto che il programma in esecuzione non ha neppure nozione di come la propria memoria sia suddivisa in variabili. Leone leone = (Leone) Class.forName(it.treis.animali.Leone); La re$ection alla base del funzionamento di numerosi framework. Ogni volta che si con!gura il WEB-INF/web.xml di una web application o si descrive il comportamento di Spring tramite !le xml, si predispone lapplicativo alluso della re$ection. Con le annotazioni il comportamento parzialmente cambiato, spostando la risoluzione delle classi anche in fase si compilazione.
Pagina 8 - 10

Che cos' un'annotazione?

un modo per aggiungere metadati nel codice sorgente Java che possono essere disponibili al programmatore durante l'esecuzione. In fase di con!gurazione di unarchitettura applicativa, usata come alternativa alla tecnologia XML.

Cosa si pu annotare? (Metodi, Classi, Propriet, Package, nessuno di questi)


possibile annotare tutte queste cose.

Cos' JPA?
Java Persistence API - framework per il linguaggio di programmazione Java che si occupa della gestione della persistenza dei dati di un DBMS relazionale. Le API JPA sono state nate a partire dal lavoro di Hibernate Annotation, sono state estese e standardizzate.

Che relazione c' tra Hibernate e JPA?

Hibernate risponde allesigenza di standardizzare laccesso alla base dati, senza la complicazione introdotta con gli standard EJB. JPA si basa su questo lavoro.

Che relazione c' tra Spring e JPA?

Spring un framework molto esteso che comprende tanti ambiti diversi, nello sviluppo di applicativi Java. In unapplicazione Spring e Hibernate (jpa), il primo si occupa di instanziare gli oggetti necessari al funzionamento dellimplementazione JPA scelta, per esempio Hibernate.

Cos' lo stacktrace?

il report degli stack frame ad un certo istante di tempo, durante lesecuzione di un applicazione. La stampa dello stacktrace, in caso di eccezione, fornisce lindicazione completa dellorigine di tale eccezione (o almeno ci prova nda).

Sviluppo Java Avanzato (Senior)


A che livello vengono risolte le annotazioni? (Compile, Runtime, Entrambi)
Entrambi. Le annotazioni sono state studiate per fornire meta-informazioni su pi livelli. In fase di Runtime, tali informazioni sono esportate agli oggetti instanziati e possono essere utilizzate per modi!care il comportamento di un componente. I pi noti framework ne fanno largo uso e la facilit di produzione / uso di unannotazione, hanno facilitato la di"usione di tale pratica.

Cosa sono i Generics?

Servono per poter costruire collezioni di dati omogenee e fornire indicazioni sulla tipologia dei dati, in fase di compilazione.

Pagina 9 - 10

Essendo risolti in fase di compilazione, il limite facilmente aggirabile, resta pertanto una pratica usata in fase di sviluppo.

Da quale release Java sono stati introdotti i Tipi Generici?


Java 5.

A che livello vengono risolti i tipi generici?(Compile, Runtime, Entrambi)


A causa di problemi legati alla retro-compatibilit, i tipi generici sono risolti in fase di compilazione.

Che cos' lo Heap?

Area di memoria riservata allo storage degli oggetti java.

Che cos' la Permanent Generation?

Area di memoria riservata allo storage delle informazioni legate ad una classe che sta caricando.

Quando viene usata la Permanent Generation?

Ogni volta che viene instanziato un oggetto java, si preleva il codice immagazzinato nella heap, in mancanza di questo, il ClassLoader provveder a cercarlo nel classpath.

Che cos' un thread?

la suddivisione di un processo in pi sottoprocessi, che vengono eseguiti in concorrenza da un sistema di elaborazione monoprocessore o multiprocessore.

In un'applicazione web classica, quando ci si deve occupare dei thread?

(Qui lo becchi subito un impostore, se ti campa per aria una risposta non sa cosa sono i thread. La risposta pi semplice Mai, la pi articolata Ce ne occupiamo solo se dobbiamo scrivere un application server, la pi sistemistica Ce ne occupiamo solo in fase di tuning dell'application server%)

Pagina 10 - 10

Potrebbero piacerti anche