Wpis z mikrobloga

#anonimowemirkowyznania
Prowadzimy rekrutację na seniora #programista15k. Przypadło mi przeprowadzić pierwszą rozmowę. Przyszło 7 seniorów, każdy dostał zadanie: "zaimplementuj quicksort w dowolnie wybranym języku programowania". Nie zrobił zaden. Czas 45 minut. Gdyby któryś zrobił, spytałbym o złożoność obliczeniową i pamięciową rozwiązania. Polskie IT to dramat.

INB4 "to nie olimpiada informatyczna" - u nas w produkcie mamy sporo "sprytnych" algorytmicznych rozwiązań.

#programowanie #pracait #pracbaza #praca

Kliknij tutaj, aby odpowiedzieć w tym wątku anonimowo
Kliknij tutaj, aby wysłać OPowi anonimową wiadomość prywatną
ID: #5f1706aa83e35d1fc753bfd4
Post dodany za pomocą skryptu AnonimoweMirkoWyznania ( https://mirkowyznania.eu ) Zaakceptował: sokytsinolop
Wesprzyj projekt

[==================......................] 45% (105zł/235zł)
Uzbieraliśmy już na 2 lat działania AMW!
  • 207
  • Odpowiedz
@NiedzielnyMirek: to js, arraye się inicjują defaultowo "puste", więc każde wywołanie n-tego elementu będzie zwracac undefined. Fill właśnie po to jest, żeby zainicjalozować tablicę z elementem neutralnym dla danej operacji matematycznej, inaczej byś dostał NaNy.
  • Odpowiedz
@NiedzielnyMirek: Bo JS jest gópi xD new Array(n) tworzy n-elementową (teoretycznie) tablicę zawierającą nic i zapuszczenie na niej map, forEach czy filter, które iterują po elementach tablicy, nie wywołuje żadnego przebiegu, bo nie ma po czym. Otwórz sobie konsolę przeglądarki i porównaj efekt uruchomienia

new Array(5).forEach((n, i) => console.log('element tablicy o indexie ' + i));
z

new Array(5).fill(0).forEach((n, i) => console.log('element tablicy o indexie '
  • Odpowiedz
@AnonimoweMirkoWyznania: Znałem takiego jednego. Algorytmy wykute na pamięć. Clean code przeczytał milion razy i jak go w nocy obudzisz to recytuje z pamięci a gdy przyszło do napisania jakiejś funkcjonalności w aplikacji od a do z to nic tam się kupy nie trzymało. Na poziomie pojedynczej funkcji dzieło sztuki a po spojrzeniu na całość z góry kupa straszna i generalnie overengenering. Praca komercyjna to nie kółko naukowe na uczelni. Programista
  • Odpowiedz
@motokate: jestem przeciwny pisaniu kodu, który zrozumie tylko ktoś doświadczony w skryptowej javie, kosztem 2 linijek.

Zwłaszcza, że wszystkie przykłady są słabe, bo można to zrobić prościej:
def arr = [];
for (i=1; i<100; i=i+2) {
arr.push(i)
}
  • Odpowiedz
@motokate: Array.fill jest wolniejszy od zwykłego loopa - szczególnie poza implementacjami silnika V8 - jeżeli ktoś by o tym nie wspomniał to u mnie by miał minusa.
  • Odpowiedz
TerminowaKreatura: Przeciez odpowiedzi na takie pytania szuka sie w google i wybiera sie to, ktore jest najszybsze. Jedna-dwie minuty pracy, zamiast 45.

Watpie zeby ktokolwiek bez uprzedniego przygotowania z pamieci dal Ci takie rozwiazanie:

const quicksort = ([head, ...tail]) => head === undefined ? [] :
[...quicksort([...tail.filter(a => a <= head)]), head, ...quicksort([...tail.filter(a => a >
  • Odpowiedz
nabierają się na takiego baita xD


@SmalecAlfa: no faktycznie, o Google było głośno że pyta o odwracanie drzewa binarnego, ale jak gdzieś w januszeksie pytają o quicksort to MUSI być bait, przecież to niemożliwe xD
  • Odpowiedz
via Wykop Mobilny (Android)
  • 2
@rskk: Owszem, a jeszcze szybciej iterować i-- zamiast i++. Tyle że na ogół nie ma to najmniejszego znaczenia. Za to na bardzo duże znaczenie, żeby za pół roku móc przeczytać to, co się kiedyś napisało, bez bólu głowy.
  • Odpowiedz
@motokate: no nie do końca, jak piszesz coś takiego to najczęściej wydzielasz to sobie do zewnętrznego helpera, później ludzie używają go nie sprawdzając co jest pod maską. Zaczną tam wrzucać dziwne rzeczy i performance dostanie po dupie. Dodatkowo ja jestem fanem komentarzy w kodzie do takich "magic numbers".
  • Odpowiedz
via Wykop Mobilny (Android)
  • 14
@rskk: Ja jestem fanką braku magic numbers i magic strings (wszystko leci do stałych) i braku komentarzy - komentarz świadczy o tym, że kod nie jest dość czytelny. Komentarze tylko do objaśniania, dlaczego taka a nie inna logika (rzeczy, których z kodu nie da się wyczytać). Reszta powinna być tak napisana, żeby nie było potrzeby komentować.
  • Odpowiedz