Articole ‘interviu java’
Interviuri Java: Swing
Lumea fuge in general de Swing pentru ca toti vrem sa lucram pe partea de server. Totusi, poate in anumite conditii, poate fi interesanta si partea de GUI.
Paradoxul face ca industria sa puna un pret bun pe Swing, tocmai pentru ca, desi nu-i cine stie ce, lumea nu face coada la interviuri. Sa vedem in continuare ce ma intereseaza sa stiti la un interviu:
- J2SE / OOP la nivel de detaliu. Pentru ca in Swing se folosesc Inner Classes si Clase Anonime, voi pune mai mult accentul aici. Vezi si vizibilitatea variabilelor ori campurilor (finale) in interiorul claselor inner.
- Multi-Threading. Aplicatiile Swing care lucreaza cu baze de date mari ori cu Servere la distanta, vor folosi dese ori threaduri pentru incarcarea / procesarea datelor. Si asta pentru a evita blocarea aplicatiei la diferite requesturi.
- Event-Driven Programming: e un plus
Desing Patters:
- Observer – este patternul specific Swing. Dar este suficient MVC ca si caz particular de Observer
Pentru cei care au mai lucrat ma intereseaza:
- Cum lucreaza Swingul cu Componentele / Containerele
- Layout Managere
- Tratarea Evenimentelor
- Clase si ierarhii – dar aici la acelasi nivel general, de concepte.
Pentru mine constituie un plus pentru cei care mai stiu SWT sau alte creatoare d’astea de GUIuri.
Java: Intrebari interviu
Sa continuam cu intrebarile pentru interviuri tehnice in Java cu ceva Servlets. Aici si aici mai multe (sa nu va inchipuiti ca pun toate intrebarile astea
)
* Cand spun Servlet mai jos ma refer la HTTP Servlet!
** Raspunsurile pot fi mai largi, intrebarile vor fi mai concrete, aici subliniez doar esenta!
Intrebare: Ce e un HTTP Servlet? Cum opereaza?
Raspuns: Handler de requesturi HTTP, implementarea modelului request-response. Prelucreaza requesturi venite de la client generand apoi response-uri.
Intrebare: Metode din servlet, ce fac ele?
Raspuns:
- init () , destroy () – managementul resurselor folosite de-a lungul vietii unui Servlet (alocare/dezalocare resurse)
- service() primeste requesturi http si le dispatche-uieste spre doXXX()
- doGet(), doPost() – managementul requesturilor de tip GET respectiv POST
- Request de tip PUT (doPut) – uploadul fisierelor pe server
- etc.
Intrebare: Ce contine un request?
Raspuns:
- Informatii generale despre client (IP, cookie-uri etc.)
- Parametrii sumbit-ati in forma
Intrebare: Parameter si Attribute pe request/session, diferenta!
Raspuns: Parametru = Valoare submitata de user si salvata intr-un form, valorile sale nu pot fi alterate.
Atribut = Un Obiect salvat pe request (care nu provine din submitarea unui form HTML) si a carui valoare poate fi alterata.
Intrebare: Diferenta intre salvarea unui obiect pe request/sesiune?
Raspuns: In mare obiectele salvate pe request sunt retinute numai la prima pagina (sau pana cand se primeste response-ul pentru requestul respectiv). Obiectele salvate pe sesiune pot fi folosite atata timp cat sesiunea este activa
Intrebare: Cate instante de servlets se creeaza in general? Cand este creata o instanta a unui Servlet?
Raspuns: Una. Cand porneste serverul sau la primul request care foloseste Servletul respectiv (setabil in descriptor: load-on-startup).
Intrebare: Sunt Servletii threadsafe?
Raspuns: Nu. De aceea trebuie sa sincronizam “manual” metodele cu acces concurent la resurse.
HTML:
Intrebare: Atributele tagului FORM!
Raspuns:
- method: metoda prin care se submite (ie. “GET”, “POST” etc.)
- action: URL-ul folosit pentru procesarea requestului.
JavaScript:
Intrebare: Gaseste un div intr-un fisier HTML si schimba-i textul din interior.
Raspuns: document.getElementById, .innerHTML=”…”
AJAX:
Intrebare: La ce se foloseste?
Raspuns: Submit asincron de requesturi: XML prin HTTP
Intrebare: Cum opereaza, implementare?
Raspuns: Pe client se obtine obiectul XmlHttp, se trimite requestul, stadiul procesarii poate fi urmarit prin intermediul obiectului XmlHttp, se efectueaza update-ul pe client.
JSP/JSTL:
Cu astea o sa revin alta mai pe larg in mare intreb:
Diferenta intre include si import, diferenta intre forward si redirect, cum scriu cod Java in Jsp, taguri JSP, cum ma adresez unui Bean din JSP. Pe partea de JSTL: tipuri de taguri (c, x, sql, fn, fmt) si cum opereaza cateva dintre ele (ie.
Intrebari si raspunsuri pentru interviuri Java
Intrebari pe care le pun la interviurile de Java si raspunsurile mele. Nu ma pretind un cunoscator al adevarului absolut deci, daca imi dati alte raspunsuri le voi evalua ca atare. Daca am strecurat greseli pe undeva va rog sa-mi semnalati.
Este un interviu care contine intrebari pentru toate nivelele, de la junior la senior.
J2SE / OOP
Intrebare: Defineste conceptul de polimorfism.
Raspuns: Acelasi nume se poate referi la metode diferite. Este de 2 feluri: overloading si overriding.
Overriding – metoda cu acceasi semnatura cu o alta din clasa parinte
Overriding – doua sau mai multe metode in aceeasi clasa cu acelasi nume dar semnaturi diferite.
Atentie! Semnatura unei metode nu include tipul returnat.
Intrebare: Ce inseamna incapsulare?
Raspuns: Calitatea obiectelor de a avea proprietati si metode (actiuni)
Intrebarea asta n-o pun la seniori pentru ca se uita.
Intrebare: Ce inseamna mostenire? Ce fel de mostenire avem in Java?
Raspuns: Calitatea unei clase de a contine proprietatile si metodele altei clase (fara a le mai defini o data). In Java avem doar mostenire simpla, o clasa nu poate extinde mai multe clase.
Intrebare doar pentru juniori.
Intrebare: Ce este o clasa abstracta?
Raspuns: O clasa care nu poate fi instantiata. Acest raspuns il consider corect si complet pentru ca restul proprietatilor deriva de aici.
Atentie! Multi imi dau o definitie incorecta: “O clasa care are cel putin o metoda abstracta!” Fals! poate sa nu aiba nici una!
Inca o definitie corecta: “O clasa care se defineste folosind cuvantul cheie abstract!”. Restul proprietatilor deriva de aici! si acum sa vedem proprietatile:
- Poate contine si metode abstracte
- Nu poate fi instantiata
- Clasele neabstracte care extind clasele abstracte trebuie sa le implementeze metodele abstracte
- Clasele abstracte pot sa nu implementeze toate metodele interfetelor pe care le implementeaza
….
mai sunt cateva dar nu-mi vin acum in minte
Intrebare: Ce este o interfata? Ce modificatori de acces au metodele? dar proprietatile?
Raspuns: Interfetele sunt sabloane ale claselor, entitati care definesc unele proprietati si metode ale claselor care le implementeaza.
Metodele sunt numai publice!
Proprietatile sunt constante: publice, statice si finale!
In Java o clasa poate implementa mai multe interfete. Interfetele evident nu pot fi instantiate!
Pe juniori ii mai intreb care sunt modificatorii de acces in java si ce vizibilitate confera ei.
Raspuns: public – peste tot, protected – pachet si subclase din afara, package – pachet, private – doar in clasa.
Cam atat cu OOP. Acum J2SE:
Intrebare: Ce aduce nou java 1.5?
Raspuns: Tipuri generice, foreach, autoboxing/unboxing (conversia automata de la tipuri de baza la wrapper corespondente), Varargs (ca-n C++), static import, annotations, typesafe enums.
Consider raspuns corect enumerarea a 3 diferente cu explicatii. Mai sunt si alte diferente, legate de masina virtuala spre exemplu. Le consider corecte.
Intrebare: Defineste conceptul de serializare. Cum se implementeaza in Java.
Raspuns: Transformarea unui obiect in sir de biti! Orice obiect care are aceasta proprietate poate fi trimis pe fir sau salvat pe disc. In general scopul serializarii este persistenta.
In Java obiectele serializabile trebuie sa implementeze Serializable. Simpla implementare ii “spune” masinii virtuale ca obiectul poate fi pus pe fir. In cazul in care dorim sa definim un mecanism de serializare diferit de cel al masinii virtuale (de exemplu salvarea unui obiect in format XML) trebuie implementata interfata Externalizable. Campurile transiente nu se serializeaza!
Metodele din Serializable care pot fi folosite sunt readObject si writeObject!
Intrebare: Colectii: care este diferenta intre set si list.
Raspuns: In set elementele sunt unice.
Intrebare: Stringuri. Cum se aloca, cum se compara valorile. Proprietati ale clasei String.
Raspuns: Se aloca cu new sau cu =”string”. In primul caz obiectul va fi alocat in memorie in al doilea in String Pool. Compararea valorilor se face cu equals in primul caz, cu equals sau == in cazul alocarii pe Pool. Clasa String (nu poate fi extinsa) e finala si imutabila (schimbarea valorii conduce automat la schimbarea referintei). In plus operatorul + e suprascris pentru aceasta clasa.
Intrebare: Cum se transmit parametrii la metode in Java, prin valoare sau referinta?
Raspuns: Exclusiv prin valoare!
Explicatii: tipurile de baza se transmit prin valoare.
Tipurile Obiect (Referinta): referintele in sine se transmit prin valoare. Valorile continute de acestea se transmit prin referinta (i.e. daca isi schimba valorile in cadrul unei metode modificarile valorilor vor fi vizibile din afara; schimbarea referintei insa nu va fi vizibila)!
Intrebare: Care este superclasa clasei Exception? Cate tipuri de exceptii exista in Java? Diferente.
Raspuns: Throwable care are 2 subclase: Exception si Error. In Java exista exceptii checked si unchecked. Unchecked – erori in program, nu trebuiesc prinse, apar la runtime. Erori care trebuiesc tratate in mod obligatoriu chiar din timpul scrierii codului (try/catch, throws).
Aici uneori mai insist cu intrebari!
Intrebare: Multithreading: cum functioneaza? Ce face synchronized? ce face wait?
Raspuns: Mecanism de acces concurent la o resursa. Primul thread care apeleaza o metoda sincronizata obtine lockul obiectului. Urmatoarele threaduri care apeleaza metode synchronizate vor astepta eliberarea lockului. Un thread elibereaza lockul unui obiect cand termina executia metodei synchronizate sau cand apeleaza wait.
Wait intrerupe executia unui thread care in acest fel este adaugat in thred poolul obiectului, sau clasei daca metoda ce apeleaza wait este statica. Un thread iese din thread pool cand un alt thread apeleaza notify sau notifyAll. Metodele nesynchronizate pot fi apelate de threaduri care nu au lockul obiectului.
Alte consideratii: un thread care apeleaza o metoda synchronizata si nu poate obtine lockul obiectului NU este suspendat (nu ajunge in thread pool). El va astepta eliberarea lockului pentru a executa metoda respectiva. Threadurile din thread pool nu isi vor continua executia chiar daca lockul obiectului va fi eliberat.
Aici e o paine buna de mancat, dar nu am loc mai mult aici ca sa dezvolt. Oricum, daca ai inteles ce scrie mai sus e mai mult sau mai putin de ajuns.
JDBC
Intrebare: Care sunt pasii necesari pentru realizarea unui query?
Raspuns: Connection, Statemet, Exec.
Intrebare: Care sunt tipurile de Statement? Care sunt diferentele?
Raspuns: Statement, PreparedStatement. PreparedStatement este precompilat si permite folosirea caracterelor escape (? poate fi inlocuit cu valori de parametrii)
Intrebare:Cum se apeleaza o metoda stocata?
Raspuns: Callable Statement!
Swing:
Intrebare:Ce este un LayoutManager?
Raspuns: Un mecanism care defineste asezarea componentelor intr-un container (i.e. butoane in ferestre). Exemple: FlowLayout, BorderLayout, GridBagLayout etc.
Intrebare:Mecanismul de tratare a evenimentelor?
Raspuns: Exista 3 concepte: Observable – obiect care poate produce evenimente, Observer (Listener) -obiect care trateaza evenimentele produse pe un obiect observable pe care il “observa” (“asculta”) si eveniment – un obiect creat in anumite conditii. Aici te mai intreb cum se adauga un listener pentru un obiect si cateva detalii de implementare.
Nu trebuie sa le stii pe toate. Cam atat reusesc eu sa acopar in interviu pe partea de Java client. In general discut si alte lucruri pe care le stie lumea dar nu sunt aici.
Voi reveni cu finalul partii de client, partea de server si cea de modelare si analiza.
Interviuri IT
Recent am fost rugat de compania multimationala la care lucrez sa tin cateva interviuri tehnice de angajare in domeniu IT. Pentru ca sunt senior si am destula experienta in Java compania mi-a inmanat o serie de domenii pentru care vor evaluari ale aplicantilor. Prin urmare am inceput sa studiez, sa-mi aduc aminte “teoria” prin care [...]




