@Jano7: Zajimave. Diky za odpoved. Muzu se zeptat kolik mate zkusenosti z javou?
Prvý krát som sa stretol s Javou pred cca 17 rokmi. Ale robil som rôzne veci. V súčasnosti
pôsobím ako lektor Javy/Pythonu, preto mám čas a motiváciu si naštudovať veci do hĺbky, resp. venovať sa novinkám.
Jeste jednou diky. Ale popravde, kdyby diskuze pri pohovoru na danou otazku mela podobne vystupy jako jste psal, mel bych problem kandidata doporucit na roli na svem projektu.
a) Ako prvé som si všimol porovnávanie stringov. Typická školácka chyba, hlavne tých, čo prechádzajú do Javy z iného jazyka. Takto sa to správne nemá robiť, môže dôjsť k NullPointerException. Správne je "wrong".equals(s)
Je skvele kdyz si toho nekdo vsimne. A casto se to nestava. Ale pokud by list opravdu obsahoval null tak vas vlastni kod taky vyhodi NPE.
e.startsWith("wrong"). List vytvoreny pomoci List.of sice nemuze obsahovat null hodnoty, ale pracujeme opravdu vzdy s takovymi listy?
b) Príklad by som upravil tak, že by som použil novinky z Javy 9 a Javy 10. Vytváranie zoznamov v Jave oproti iným jazykom (Python, Ruby) je totiž jedným z nedostatkov Javy, ktoré najviac udrú do očí. To sa mi nikdy nepáčilo.
To je sice pekne, ale List.of(...) vraci nemenitelny list. Tudiz klicova vlastnost puvodniho prikladu a to je modifikace listu behem pruchodu vyhodi
UnsupportedOperationExceptiond) Mne nenapadlo, že dôjde k ConcurrentModificationException.
Zkuseny programator ma z takoveho kodu mrazeni. Nemusi nutne znat konkretni exception, ale musi vedet, ze toto je nebezpecne.