top 30 programming coding interview questions answers
V tomto výučbe sme vám poskytli najbežnejšie otázky a odpovede týkajúce sa kódovania rozhovorov s programovou logikou a príkladmi kódu, aby ste si mohli programovanie precvičiť:
Všetci si uvedomujeme, že odpoveď na najzákladnejšie otázky týkajúce sa kódovania alebo programovania rozhovoru určuje to, ako si v rozhovore počíname. Rozhovor môže byť pre Java, C ++ alebo požiadavku Javascript, ale základ zostáva rovnaký, to je to, ako silní sme v základoch programovacej logiky.
Aj keď je náš prístup na pohovore pohotový a rafinovaný, pravdepodobnosť výberu je vyššia. Takže čítajte ďalej, aby ste prelomili otázky týkajúce sa programovacieho pohovoru.
Nezabudnite si tieto otázky týkajúce sa programovacieho pohovoru naštudovať a precvičiť si ich skôr, ako sa s nimi stretnete. To nielen zvýši vaše presvedčenie, ale bude tiež užitočné rýchlo na ne odpovedať. Otázky sa budú týkať hlavne predmetov, ako sú polia, reťazce, prepojený zoznam atď.
Vytiahnite ponožky chlapci!
Často kladené otázky týkajúce sa programovania / kódovania
Otázka č. 1) Ako môžete obrátiť povrázok?
Odpoveď: String je obrátený pomocou nasledujúceho algoritmu:
- Zasvätiť
- Reťazec, ktorý sa má obrátiť, je deklarovaný.
- Získajte dĺžku reťazca.
- Spustite slučku a potom vymeňte pozíciu prvkov poľa.
- Vymieňané pozície si nechajte.
- Vytlačte obrátený reťazec.
Otázka 2) Čo je to palindrómový reťazec?
Odpoveď: Po obrátení reťazca, ako je to popísané v Q # 1, musíme uviesť nasledujúcu podmienku:
Fragment kódu:
if(actualtxt.equals(reversetxt)){ return “Palindrome”; else return “Not Palindrome”; }
Palindrómový reťazec je teda ten, ktorý pri cúvaní zostáva rovnaký, napríklad, - ‘madam’ je palindrómová struna.
Otázka č. 3) Ako dostať zodpovedajúce znaky do reťazca?
Odpoveď: Ak chcete získať zodpovedajúce znaky v reťazci, postupujte takto:
- Zoberie sa dátová štruktúra Hash Map, ktorá pracuje s párom kľúč - hodnota.
- Vytvorte reťazce po jednotlivých znakoch a overte, či daný znak reťazca existuje v hašovacej mape alebo nie.
- Ak je výsledok pravdivý, počítadlo znaku v hašovacej mape sa zvýši alebo inak dá počet ako 1.
- Akonáhle slučka skončí, potom sa prejde mapa hash a vytlačí sa znaky s viac ako 1 počtom.
Fragment kódu:
minimálny spanning tree c ++
HashMap mp = new HashMap (); for (int j = 0; j1){ System.out.println(ch+ ' - ' + c); } }
Otázka č. 4) Ako získať nezhodné znaky v reťazci?
Odpoveď: Ak chcete získať nezhodné znaky v reťazci, postupujte takto:
- Zoberie sa dátová štruktúra Hash Map, ktorá pracuje s párom kľúč - hodnota.
- Vytvorte cyklus reťazca po znakoch a overte, či daný znak reťazca existuje v hašovacej mape alebo nie.
- Ak je výsledok pravdivý, počítadlo znaku v hašovacej mape sa zvýši alebo inak dá počet ako 1.
- Akonáhle slučka skončí, potom sa prejde mapa hash a vytlačí sa znaky s počtom rovným 1.
Fragment kódu:
HashMap mp = new HashMap (); for (int j = 0; j Otázka č. 5) Ako vypočítať počet samohlások a spoluhlások v reťazci?
Odpoveď: Pri výpočte počtu samohlások a spoluhlások v reťazci sa postupuje podľa nasledujúcich krokov:
- Získajte reťazec, na ktorom sa má vykonať počet.
- Spustite slučku od 0 do dĺžky reťazca.
- Vezmite po jednom znaku a overte si, či sú súčasťou skupiny samohlások.
- Ak je výsledok pravdivý, zvýšte počet samohlások alebo zvýšte počet spoluhlások.
Fragment kódu:
for (int k = 0; k Otázka č. 6) Ako dokážete, že tieto dva reťazce sú anagramy?
Odpoveď: Dva reťazce sa nazývajú anagramy, ak pojmú podobnú skupinu znakov v rôznom poradí.
Ak chcete skontrolovať, či sú dva reťazce anagramy, postupujte podľa nasledujúcich krokov:
- Inicializujte dva reťazce v dvoch premenných.
- Skontrolujte, či je dĺžka dvoch reťazcov podobná, ak nie, potom tieto reťazce nie sú anagramom.
- Ak je výsledok pravdivý, vezmite dva reťazce a uložte ich do poľa znakov.
- Zoraďte dve polia znakov a potom skontrolujte, či sú si dve zoradené polia podobné.
- Ak je výsledok pravdivý, tieto dva reťazce sú anagramom iným, nie anagramom.
Fragment kódu:
if (str1.length() != str2.length()) { System.out.println(str1 + ' and ' +str2 + ' not anagrams string'); }else{ char() anagram1 = str1.toCharArray(); char() anagram2 = str2.toCharArray(); Arrays.sort(anagram1); Arrays.sort(anagram2); anagrmstat = Arrays.equals(anagram1, anagram2); } if (anagrmstat == true) { System.out.println(str1 + ' and ' +str2 + ' anagrams string'); }else{ System.out.println(str1 + ' and ' +str2 + ' not anagrams string'); } }
Otázka č. 7) Vyhľadajte počet výskytov konkrétneho znaku v reťazci.
Odpoveď: Ak chcete spočítať výskyt konkrétneho znaku v reťazci, postupujte takto:
- Začnite reťazcom a konkrétnym znakom, ktorého výskyt sa bude počítať.
- Začnite slučku od 0 do dĺžky reťazca.
- Porovnajte, ak sa konkrétny znak reťazca rovná znaku, ktorý je hľadaný.
- Ak je výsledok pravdivý, zvýšte hodnotu počítadla.
Fragment kódu:
for (int l=0; l Otázka č. 8) Ako overiť, či sú dva reťazce vzájomne rotované?
Odpoveď: Ak chcete overiť, či sa dva reťazce navzájom otáčajú, postupujte podľa nasledujúcich krokov:
- Inicializujte dva reťazce v dvoch premenných.
- Skontrolujte, či je dĺžka dvoch reťazcov podobná, ak nie, vracajte hodnotu false.
- Pripojte reťazec k sebe.
- Skontrolujte, či sa reťazec, ktorý sa otáča, nachádza v spojenom reťazci.
- Ak je výsledok pravdivý, druhý reťazec je rotáciou prvého reťazca.
Fragment kódu:
String concat = org_string + org_string; if (concat.indexOf (rotat) ! = -1) { return true; }
Otázka č. 9) Ako vypočítať počet číselných znakov v reťazci?
Odpoveď: Pri výpočte počtu číslic v reťazci sa postupuje podľa nasledujúcich krokov:
- Získajte reťazec, na ktorom sa má vykonať počet
- Použite funkciu replaceAll, ktorá nahradí všetky číselné číslice znakom „“.
- Získajte dĺžku reťazca bez číslic.
Fragment kódu:
package introduction; public class GG { public static void main(String() args) { // TODO Auto-generated method stub String str = 'TESTu45'; str=str.replaceAll('\d', ''); int l = str.length(); System.out.println('The length of the string without digit is:' + l); } }
V tomto riešení sa používa regulárny výraz.
Otázka č. 10) Ako vypočítať prvý znak reťazca, ktorý sa neopakuje?
Odpoveď: Pri výpočte prvého znaku reťazca, ktorý sa neopakuje, sa postupuje podľa nasledujúcich krokov:
- Vyberie sa dátová štruktúra Set pre opakujúce sa znaky a zoznam pre neopakujúci sa znak.
- Po oddelení opakovaného a neopakovaného sa na konci iterácie vytlačí prvý prvok zoznamu v konzole.
Fragment kódu:
Set repeated = new HashSet(); List nonRepeated = new ArrayList(); for (int m = 0; m Otázka č. 11) Ako vyhľadať chýbajúce číslo v poli, ktoré obsahuje celé čísla od 1 do 100?
Odpoveď: Ak chcete vyhľadať chýbajúce číslo v poli, ktoré obsahuje celé čísla od 1 do 100, postupujte podľa nasledujúcich krokov:
- Vezmite celé číslo s číslami od 1 do 100.
- Vypočítajte súčet čísel, súčet musí byť = l * (l + 1) / 2, kde l je počet celých čísel.
- Vykonajte odpočítanie chýbajúceho prvku od celkového sčítania čísel.
Otázka č. 12) Ako získať zodpovedajúce prvky v celočíselnom poli?
Odpoveď: Ak chcete získať zhodné prvky v celočíselnom poli, postupujte takto:
- Vytvorte dve slučky.
- V prvej slučke zhromaždite jeden po druhom prvky a spočítajte počet inštancií vybratého prvku.
Fragment kódu:
for (m = 0; m Otázka č. 13) Ako odstrániť opakujúce sa prvky v celočíselnom poli?
Odpoveď: Ak chcete odstrániť opakujúce sa prvky v celočíselnom poli, postupujte takto:
java odstráni prvok z poľa
- Vytvorte hashmapu, ktorá vyberie všetky prvky, ktoré sú prítomné predtým.
- Prelistujte pole a overte, či prvok už existuje v hashovej mape
- Ak je výsledok pravdivý, v prechádzaní poľa sa pokračuje, inak sa prvok vytlačí v konzole.
Fragment kódu:
HashMap m = new HashMap(); for (int j = 0; j Otázka č. 14) Určte najväčší a najmenší prvok poľa, ktoré nie je zoradené.
Odpoveď: Pri určovaní najväčšieho a najmenšieho prvku poľa je potrebné postupovať podľa nasledujúcich krokov:
- Prejdite pole a sledujte doteraz nájdený maximálny prvok, až kým nebudeme na hranici poľa, čím je dosiahnutý najväčší prvok.
- Prejdite pole a sledujte doteraz nájdený minimálny prvok, až kým nebudeme na hranici poľa, čím sa dosiahne najmenší prvok.
Otázka č. 15) Vysvetlite algoritmus triedenia bublín.
Odpoveď: Algoritmus triedenia bublín obsahuje nasledujúce kroky:
- Začnite od prvého prvku a potom vykonajte porovnanie s nasledujúcim prvkom v poli
- Ak je súčasný prvok väčší ako nasledujúci prvok poľa, vymeňte ich polohy.
- Ak je súčasný prvok menší ako nasledujúci prvok poľa, posuňte sa na ďalší prvok a znova zopakujte krok 1.
Fragment kódu:
for(k = 0; k Otázka č. 16) Implementujte algoritmus triedenia vkladania.
Odpoveď: Implementácia triedenia vloženia.
Fragment kódu:
for (m = 1; m 0 && arry(n - 1) > arry(n)) { k = arry(n); arry(n) = arry(n - 1); arry(n - 1) = k; n--; } }
Otázka č. 17) Určte druhý najväčší prvok poľa.
Odpoveď: Druhý najväčší prvok poľa možno vypočítať podľa nasledujúcich krokov:
- Najväčší prvok uveďte ako prvý prvok poľa a druhý najväčší prvok ako druhý prvok poľa.
- Iteráciou cez slučku prechádzajte po poli.
- AK je arry (i) väčšie ako najväčší prvok POTOM
Druhý prvok? najväčší prvok
Najväčší prvok? Arry (i)
AK je druhý prvok menší ako arry (i) POTOM
Druhý prvok? Arry (i)
Fragment kódu:
if(arry(0) > arry(1)) { l = arry(0); s = arry(1); } else { l = arry(1); s = arry(0); } for(i = 2; i Otázka č. 18) Vysvetlite obrátenie poľa.
Odpoveď: Obrátenie poľa sa vykonáva nasledujúcimi spôsobmi:
- Vezmite pole s prvkami.
- Teraz si vymeňte pozíciu prvého prvku s posledným prvkom a podobne druhý prvok s predposledným prvkom.
- Toto bude pokračovať, kým sa neobráti celé pole.
Fragment kódu:
for (t = 0; t Otázka č. 19) Ako odstrániť špeciálne znaky v reťazci, ktorý je malým písmom?
Odpoveď: Špeciálne znaky v reťazci je možné odstrániť pomocou funkcie replaceAll v Jave.
Fragment kódu:
string str = “Testing@” str.replaceAll(“(^a-z0-9)”,””)
V tomto riešení sa používa regulárny výraz.
Otázka č. 20) Ako vykonať zámenu dvoch reťazcov bez použitia tretej premennej?
Odpoveď: Dva reťazce sa zamenia bez pomoci tretej premennej pomocou nasledujúcich krokov:
i) Vezmite dva reťazce i, j, spojte ich a potom uložte do prvého reťazca.
ii) Pomocou metódy podreťazca extrahujte reťazec:
j = substring(0,i.length()-j.length())
iii) Uložte reťazec j do reťazca i
i= subsrtirng(j.length)
Fragment kódu:
string i = “abc”, j =”def”; i = i+j; j = i. substring(0,i.length()-j.length()); i = i.substring(j.length()) System.out.println(i +””+j);
Otázka č. 21) Ako prechádzať do stredu prepojeného zoznamu?
Odpoveď: Pri prechode do stredu prepojeného zoznamu postupujte podľa nasledujúcich krokov:
- Deklarujte dva prvé a druhé ukazovatele, ktoré sú inicializované k hlavičke prepojeného zoznamu.
- Prvý prepojený zoznam sa zvýši o dva uzly a druhý o jeden uzol v každej slučke.
- Zatiaľ čo prvý uzol končí na konci zoznamu, druhý uzol bude smerovať do stredu.
Fragment kódu:
first = second = head; while(first !=null) { first = first.next; if(first != null && first.next != null) { second = second.next; first = first.next; } } return second; }
Otázka č. 22) Implementujte proces obrátenia prepojeného zoznamu.
Odpoveď: Prepojený zoznam je možné obrátiť pomocou nasledujúcich krokov:
- Deklarujte tri uzly predchádzajúce, súčasné a nasledujúce.
- Zatiaľ čo v súčasnom uzle bude predchádzajúci nulový.
- Ak chcete zoznam obrátiť, nechajte predchádzajúci znak present.next.
- V každej slučke sú prítomné a predchádzajúce prírastky o 1.
Fragment kódu:
Node preceding=null; Node following while(present!=null) { following=present.next; present.next=preceding; preceding=present; present=following; } return preceding; }
Otázka č. 23) Aký je proces odstraňovania zhodných prvkov z prepojeného zoznamu, ktorý nie je zoradený.
Odpoveď: Ak chcete vymazať zhodné prvky z prepojeného zoznamu, ktorý nie je zoradený, postupujte podľa nasledujúcich krokov:
- Prejdite od hlavy po koniec prepojeného zoznamu.
- Pre každú hodnotu v prepojenom zozname skontrolujte, či už je uvedená v hašovacej tabuľke.
- Ak je výsledok pravdivý, prvok sa nepridá do hash tabuľky.
Fragment kódu:
HashSet h = new HashSet(); node present = head; node preceding = null; while (present != null) { int presentval = present.value; if (h.contains(presentval)) { preceding.next = present.next; } else { h.add(presentval); preceding = present; } present = present.next; } }
Otázka č. 24) Ako zistiť dĺžku prepojeného zoznamu?
Odpoveď: Pre získanie dĺžky prepojeného zoznamu postupujte podľa nasledujúcich krokov:
c ++ náhodne medzi 0 a 1
- Spustite počítadlo s hodnotou 0 a prezentujte uzol ako hlava.
- Pokiaľ súčasný uzol nemá hodnotu null, vykonajte tieto kroky:
- prítomný = prítomný -> ďalší
- counter = counter + 1
- Vráti sa hodnota počítadla.
Fragment kódu:
{ Node present = head; int c = 0; while (present != null) { c = c + 1; present = present.next; } return c; }
Otázka č. 25) Ako vyhľadávať konkrétnu hodnotu v prepojenom zozname?
Odpoveď: Pri vyhľadávaní konkrétnej hodnoty v prepojenom zozname postupujte podľa nasledujúcich krokov:
- Deklarujte súčasný uzol ako hlavu.
- Pokiaľ súčasný uzol nemá hodnotu null, vykonajte tieto kroky:
- prítomná -> hodnota sa rovná hodnote, ktorá sa hľadá ako návratová hodnota true.
- prítomný = prítomný -> ďalší.
- Ak sa nenájde, vráti sa hodnota false.
Fragment kódu:
Node present = head; while (present != null) { if (present.value == value) return true; present = present.next; } return false; }
Otázka č. 26) Ako overiť, či je číslo prvočíslo alebo nie?
Odpoveď: Pri overovaní, či je číslo prvočíslo alebo nie, sa postupuje podľa nasledujúcich krokov:
- Začnite slučku od hodnoty 2 (k) do (číslo / 2)
- Ak je číslo úplne deliteľné číslom k, potom je číslo neprvoplánové.
- Ak nie je číslo úplne deliteľné okrem 1 a samo osebe, potom je číslo prvočíslo.
Fragment kódu:
for(k = 2; k <= number / 2; k++) { if(number % k == 0) { stat = false; break; } } if (stat) System.out.println('Prime'; else System.out.println('Not prime');
Otázka č. 27) Ako získať tretí uzol prepojeného zoznamu?
Odpoveď: Ak sa chcete dostať do tretieho uzla prepojeného zoznamu, postupujte takto:
- Spustite počítadlo s hodnotou 0.
- Prechádzajte prepojeným zoznamom a postupujte takto:
- Ak je hodnota počítadla 3, vráti sa súčasný uzol.
- Počítadlo sa zvýši o 1.
- Upravte súčasnosť tak, aby znamenala nasledujúcu súčasnosť.
Fragment kódu:
Node present = head; int c = 0; while (c != null) { if (c == 3) return present.val; c = c+1; present = present.next; }
Otázka č. 28) Vypočítajte prvých päť Fibonacciho čísel.
Odpoveď: 0 a 1 sú prvé dve Fibonacciho čísla a všetky čísla za 0 a 1 sú sčítaním dvoch predchádzajúcich čísel.
Fragment kódu:
int num1=0, num2=1,t; for ( int k = 0; k<5,k++) { System.out.println(num1); t = num1 + num2; num1 = num2; num2 = t; }
Otázka č. 29) Ako obrátiť číslo?
Odpoveď: Obrat čísla sa dosiahne v nasledujúcich krokoch:
- Vyberte číslicu napravo od čísla.
- Sčítajte číslicu s novým obráteným číslom.
- Vykonajte násobenie o 10.
- Vydeľte číslo 10.
Otázka č. 30) Určte faktory čísla.
Odpoveď: Faktory čísla sú vyjadrené nasledujúcim útržkom kódu:
int no = 75; for(int j = 1; j <= no; j++) { if (no % j == 0) { System.out.print(j); }
Záver
Dúfame, že veľa odpovedí na vaše otázky týkajúce sa otázok so základným kódovacím pohovorom bolo objasnených.
Väčšina implementácie kódovania, o ktorej sme hovorili, je v jazyku Java, avšak aj keď neviete jazyk, kroky alebo podrobnosti tu uvedeného algoritmu pre väčšinu otázok vám pomôžu pripraviť sa na pohovor.
Tvrdo pracujte na svojich základoch programovania, logiky, dátových štruktúr, zostaňte pokojní a nacvičte si tieto otázky týkajúce sa programovania na pohovore.
Všetko najlepšie pre váš nadchádzajúci rozhovor !!
Odporúčané čítanie
- Dotazy a odpovede na pohovor
- ETL Testovacie otázky a odpovede na pohovor
- Niektoré zložité otázky a odpovede na ručné testovanie
- 30 najčastejších otázok a odpovedí s HTML rozhovormi (ZOZNAM 2021)
- Top 30+ populárnych otázok a odpovedí na rozhovor s uhorkou
- Top 30 otázok a odpovedí na pohovory SAS
- Top 30 otázok a odpovedí na pohovory s DBMS
- Najvyšších 30 otázok a odpovedí na pohovory týkajúce sa testovania bezpečnosti