Top 8 întrebări și răspunsuri importante la interviu de codificare 2022 [Pentru cei proaspăt și cu experiență]
Publicat: 2021-08-25Fundamentele bune ale structurilor de date, cum ar fi matrice, arbori binari, tabele hash și liste legate sunt esențiale. Trebuie să fiți conștienți de algoritmii, metodele esențiale și să aveți o bună stăpânire asupra limbajelor de programare precum Java, mai ales dacă aplicați pentru joburi de programare. Cu siguranță puteți afla răspunsurile la întrebările importante ale interviului de codificare, dar exersarea extensiv a soluțiilor pe cont propriu este foarte recomandată.
Cele mai bune 8 întrebări de interviu de codificare și răspunsurile lor
Să ne uităm la unele dintre cele mai importante întrebări de codificare care sunt puse în interviurile găzduite de companii masive precum Microsoft, IBM, Google etc.
1. Cum poți găsi primul caracter nerepetat dintr-un cuvânt?
Pentru a răspunde la această întrebare, trebuie mai întâi să înțelegeți ce trebuie făcut pentru a promova această funcție. Trebuie scrisă o funcție care acceptă șiruri de caractere și returnează primele caractere nerepetate.
De exemplu, în cuvântul „pasaj”, „p” este primul caracter nerepetat sau în cuvânt „turtle”, „u” este primul caracter nerepetat. Deci, cum rezolvăm această problemă? Putem crea un tabel pentru stocarea repetărilor pentru toate caracterele și apoi selectam primele intrări care nu se repetă.
Pentru a scrie un cod care va returna primele litere nerepetate, putem folosi LinkedHashMap pentru a stoca numărul de caractere. Acest HashMap urmează ordinea inserării și caracterele sunt inițializate în aceeași poziție ca și în șir. Șirul scanat trebuie repetat folosind LinkedHashMap pentru a alege intrarea necesară cu valoarea 1.
O altă modalitate de a aborda această problemă este prin utilizarea firstNonRepeatingChar(String word). Acest lucru permite caracterului nerepetat care apare primul să fie identificat într-o singură trecere. Această abordare a folosit două stocări pentru a înlocui o interacțiune. Această metodă stochează separat caracterele nerepetate și repetate, iar când iterația se termină, caracterul necesar este primul element din listă.
2. Cum puteți elimina duplicatele din matrice?
În primul rând, trebuie să utilizați LinkedHashSet (Set Interface) pentru a păstra ordinea inițială de inserare a elementelor în set. Trebuie să utilizați bucle sau funcții recursive pentru a rezolva aceste tipuri de întrebări de interviu de codificare.
Principalul factor de care trebuie să ținem cont atunci când avem de-a face cu matrice nu sunt elementele care au duplicate. Problema principală aici este eliminarea duplicatelor. Matricele sunt structuri de date statice care au lungime fixă, astfel încât nu pot fi modificate. Deci, pentru a șterge elemente din matrice, trebuie să creați noi matrice și să duplicați conținutul în aceste noi matrice.
Mai întâi, trebuie să convertiți matricele în Arraylists și apoi să creați LinkedHashSets din aceste ArrayLists. Dacă matricele de intrare conțin un număr mai mare de duplicate, atunci poate rezulta mai multe matrice temporare, crescând astfel costul importului conținutului. Această restricție impune să abordăm această problemă într-un mod care necesită mai puțină memorie și putere de procesare.
Trebuie să eliminăm duplicatele, dar să nu le copiam în matricele rezultate, astfel nu ștergând duplicatele în întregime, ci pur și simplu înlocuindu-le cu 0 ca valoare implicită.
3. Cum putem verifica dacă un număr este un număr prim?
Aceasta este una dintre cele mai frecvente întrebări de interviu de codificare care implică aflarea dacă numărul dat este un număr prim sau nu. Aceste tipuri de programe sunt bazele gândirii algoritmice, deoarece trebuie să venim cu soluții care se bazează pe faptul că numerele prime sunt toate numere naturale care nu pot fi împărțite la alte numere pozitive decât 1.
Trebuie să scriem cod pentru a crea bucle care verifică fiecare număr începând de la 1 până la numărul țintă pentru a vedea dacă numărul țintă este divizibil cu orice alt număr pozitiv, altul decât el însuși sau 1.
Această funcție ne va conduce la soluție. Când verificăm un număr care este deosebit de mare, atunci putem pur și simplu să verificăm până la rădăcina pătrată a lui N, N fiind numărul țintă. Nu este nevoie să verificați până la N în cazul unei rădăcini pătrate eligibile.
Dacă numărul nu este divizibil cu 2, nu este nevoie să verificăm dacă este divizibil cu alte numere pare, scăzând astfel timpul necesar găsirii soluției. Aceasta este o versiune optimizată a soluției în care este utilă analiza numărului înainte de a scrie soluția.
4. Cum puteți verifica dacă șirurile conțin doar cifre?
Dacă doriți să scrieți expresii regulate pentru a verifica dacă șirurile sunt doar numere sau dacă conțin caractere fără cifre, trebuie mai întâi să vă familiarizați cu utilizarea seturilor de caractere în expresiile regulate Java. Limbajele de programare precum Java acceptă expresii regulate cu ajutorul clasei java.util.regex.Matcher și java.util.regex.Pattern. Java.util.regex este un pachet dedicat acestui scop.
Pentru a valida existența numai a numerelor folosind expresii regulate, putem folosi cod pentru a analiza dacă șirurile de caractere conțin un număr întreg brut. Vom verifica dacă șirul conține doar cifre între 0 – 9. Chiar dacă șirul conține cifre dar și alte caractere, nu este un simplu șir numeric. Expresiile regulate verifică doar numere întregi și nu iau în considerare caracterele punct (.), astfel încât numerele zecimale și virgulă mobilă eșuează testul.
5. Cum poți inversa cuvintele dintr-o propoziție țintă fără ajutorul metodelor bibliotecii?
Aceasta este, de asemenea, una dintre întrebările frecvente ale interviului de codificare. În primul rând, trebuie să înțelegem cerința și cum să umplem golul din această cerință. Când ne confruntăm cu întrebări ca acestea, trebuie mai întâi să ne concentrăm pe a pune întrebările potrivite. Șirurile nu sunt altceva decât propoziții cu caractere hotărâte care ar putea conține un singur cuvânt sau mai multe cuvinte.
O propoziție poate fi, de asemenea, goală. De exemplu, dacă ni se dă propoziția „Programarea este distractivă”, trebuie să o inversăm la „Distracția este programare”. în mod eficient. Trebuie să folosim expresii regulate în Java pentru a împărți șirurile date în spații, urmate de aplicarea metodei reverse() din clasa de utilitate Collections.
Odată ce puteți împărți șirurile folosind regex'\\s', ca rezultat va fi returnată o matrice de cuvinte. Acest lucru are grijă și de cuvintele separate folosind mai multe spații. De îndată ce matricea este returnată, puteți alege să creați ArrayLists din aceste matrice, urmată de utilizarea metodei Collections.reverse(). Aceasta inversează ArrayLists și fiecare cuvânt va fi reinițializat în ordine inversă.
Acum, tot ce rămâne este să folosiți StringBuilder pentru a concatena mai multe șiruri prin iterația ArrayList. Trebuie să vă asigurați că dimensiunea este specificată, deoarece redimensionarea StringBuilder este un proces costisitor în ceea ce privește puterea de procesare și memorie. Redimensionarea ajunge să creeze noi matrice din copierea conținutului din matricele mai vechi.
6. Cum puteți înlocui sau elimina caractere din șiruri de caractere?
Să presupunem că avem un șir, „Woocommerce” și dorim să înlocuim litera „r” cu „n”, există mai multe metode pentru a realiza acest lucru. Clasele de șiruri în Java oferă mai multe abordări pentru a înlocui caracterele din interiorul șirurilor de caractere folosind CharSequence și subșiruri.
Puteți apela cu ușurință o metodă de înlocuire în interiorul șirului care va sfârși prin a înlocui caracterul țintă și, ca rezultat, va returna caracterul dorit. Șirurile sunt imuabile în limbaje de programare precum Java.
Astfel, de fiecare dată când aceste operațiuni precum eliminarea sau înlocuirea sunt efectuate pe șiruri, sunt generate implicit noi obiecte șir. Există 4 metode supraîncărcate pentru înlocuirea șirurilor de caractere folosind Java:
- înlocuiți(char oldChar, char newChar)
- replaceAll(String regex, șir de înlocuire)
- înlocuiți (țintă CharSequence, înlocuire CharSequence)
- replaceFirst(String regex, șir de înlocuire)
CharSequence este una dintre super-interfețele pentru șiruri, StringBuilder și StringBuffer, permițându-ne să transmitem oricare dintre obiectele din acestea drept argumente pentru această metodă de înlocuire. replaceAll() sfârșește prin a înlocui fiecare potrivire cu șiruri de înlocuire, în timp ce replaceFirst() înlocuiește doar primele potriviri.
Una peste alta, toate acestea sunt metodologii puternice care acceptă expresia regulată. Clasa Java.lang.String permite toate aceste metode supraîncărcate care pot înlocui cu ușurință caractere sau subșiruri individuale în Java.
Este foarte recomandat să utilizați replaceAll() deoarece aceasta înlocuiește fiecare apariție a caracterelor care se potrivesc. Urmărirea acestei abordări ne permite să ne așteptăm la modele de expresie regulată, obținând astfel mai multă putere. Această metodă poate înlocui, de asemenea, fiecare virgulă cu conducte pentru conversia fișierelor separate prin virgulă în șiruri delimitate de grămezi.
Cu toate acestea, dacă cineva dorește să înlocuiască doar un singur caracter, se poate folosi doar metoda replace() care ia în considerare vechiul și noul caracter dat.
Citiți: Întrebări și răspunsuri la interviu Java
7. Cum puteți adăuga texte la fișiere în limbaje de programare precum Java?
Adăugarea este foarte diferită în comparație cu crearea de noi fișiere și scrierea datelor în noile fișiere. În cazul anexării, fișierele există deja și trebuie pur și simplu să adăugăm text la sfârșitul fișierului. Acest lucru este similar cu fișierele jurnal, deoarece sunt actualizate constant cu sistemul.
Fișierele jurnal sunt exemplul perfect de adăugare a textului, deoarece aplicațiile continuă să adauge detalii de jurnal în aceste fișiere. Cadrele de înregistrare nu sunt necesare pentru această problemă, dar trebuie să știți cum să adăugați text în fișierele existente. Pentru a rezolva această problemă, trebuie să fii conștient de clasele de confort pentru a scrie fișiere cu caractere.
Clasa are constructori care presupun acceptabilitatea codării implicite de byte-buffer și caractere. Dacă doriți să specificați singur valorile, puteți construi pur și simplu OutputStreamWriter folosind FileOutputStream. Disponibilitatea fișierelor depinde de platformele subiacente, care determină dacă fișierul poate fi creat sau nu.
Câteva platforme permit inițializarea fișierelor pentru funcții de scriere folosind un singur FileWrite sau mai multe obiecte de scriere a fișierelor. Cu toate acestea, constructorii din această clasă vor eșua odată ce fișierul implicat este deja inițializat. FileWriter este folosit pentru scrierea fluxurilor de caractere, iar FileOutputStream poate scrie fluxuri de octeți bruti.
Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.
8. Cum poți găsi cel mai mare sau cel mai mic număr dintr-o matrice de numere întregi?
Pentru această soluție, trebuie să codificăm o funcție sau o metodă care poate găsi cel mai mare sau cel mai mic număr din matrice care sunt numere întregi cu drepturi depline. Mai întâi trebuie să creăm un fișier sursă în Java folosind numele MaximumMinimumArrayDemo.java și să copiem codul scris aici pentru compilare și execuție.
Putem folosi două variabile pe care le putem numi „cel mai mare” și „cel mai mic” pentru a stoca valorile maxime și, respectiv, minime din matrice. Cel mai mic număr poate fi inițializat folosind integer.MIN_VALUE, iar cel mai mare poate fi inițializat folosind integer.MAX_VALUE.
Cu fiecare iterație a buclelor pe care le-ați inițiat, puteți compara numerele actuale cu „cel mai mare” și „cel mai mic” și să le actualizați în consecință. Matricele nu înlocuiesc metoda toString în Java, așa că puteți utiliza Arrays.toString() pentru a imprima conținutul matricelor țintă.
Puteți folosi această metodă statică pentru a apela direct funcția principală. Apoi, trebuie să treceți tablourile aleatoare prin această metodă pentru a verifica dacă valorile maxime și minime au fost returnate cu acuratețe. De asemenea, puteți alege să automatizați această testare prin teste unitare în IDE-ul dvs.
Checkout: Top 4 abilități de calculator pe care să le introduci în CV-ul tău
Concluzie
Cursurile care sunt axate pe programare nu sunt doar excelente pentru rezolvarea problemelor, ci, de asemenea, vă cresc șansele de a fi selectat atunci când aplicați pentru locuri de muncă. Dacă doriți să aflați mai multe despre programarea Java și despre problemele de codare mai avansate, vă puteți înscrie la un curs cuprinzător, cum ar fi Masterul în Științe Informatice al upGrad sau Cursul de Dezvoltare Full Stack .