Wpis z mikrobloga

Przygotowujesz się do rozmowy kwalifikacyjnej w sprawie kodowania? Sytuacja, zadanie, działanie, wynik. Niektóre firmy technologiczne oczekują, że przedstawisz się metodą STAR . Czy wiesz jak to zrobić?

- Wykorzystaj historie, aby udowodnić, że potrafisz rozwiązywać problemy techniczne, problemy nawigacyjne, diagnozować problemy, rozwiązywać problemy ludzi, wspierać ludzi i zarządzać zmianami
- użyj „ja” i powiedz, co zrobiłeś
- bądź szczery w kwestii swojego wkładu i sukcesów
- ale zachowaj pokorę
- opowiadaj historie z liczbami, ludźmi i szczegółami technicznymi

✨ Dowiedz się więcej: https://tomaszs2.medium.com/hired-nail-star-on-the-coding-job-interview-fe0e5c973ac1

#dlaprogramistow #programowanie #programujzwykopem #rekrutacja #pracait
tomaszs - Przygotowujesz się do rozmowy kwalifikacyjnej w sprawie kodowania? Sytuacja...

źródło: sketch1697494159979

Pobierz
  • 23
- opowiadaj historie z liczbami, ludźmi i szczegółami technicznymi


@tomaszs: serio ktos kupi historie w stylu: obniżyłem czasy requesta o 1000% z 10 do 1 sekundy (tak naprawdę wcześniej dałem tam array listę i zrobiłem w niej sporo wyszukiwania, a student 2 roku, praktykant zapytał mnie czemu nie użyłem hash mapy, więc zamieniłem, ale o tym nie wspomnę ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ
@nad__czlowiek: oczywiście że nikt nie kupi takiej historii bo każdy profesjonalista wie że array lista jest szybsza niż hashmapa z wyjątkiem bardzo rzadkich sytuacji gdy przechowuje tysiące elementów :P (ale nawet wtedy często B-drzewo jest szybsze). Po tym można poznać nooba że myśli wyłącznie przez pryzmat złożoności asymptotycznej.
@Krolik: przecież w javie mapa powyżej chyba 16 elementów pod spodem zamienia w buckecie linked-listę na binary-search-tree. Do malej listy nie ma sensu, a duże kolekcje zawsze warto zamienić na mape jeżeli priorytetem jest wyszukiwanie
@Krolik: no przecież napisalem binary-search-tree a nie b-tree, jasno można wyciągnąć z kontekstu że chodzi o inne drzewa. Poza tym drzewo binarne operuje na RAM, a B-tree na pamięci trwałej więc chyba jasno się domyślić które będzie lepsze w przypadku wyszkiwania?
@nad__czlowiek: Ja pisałem o tym, że na ogół w praktyce B-drzewo jest szybszym zamiennikiem tablicy z haszowaniem (dopóki nie masz naprawdę setek tysięcy elementów), a Ty się do tego przyczepiłeś i wyskoczyłeś z jakimś HashMap w Javie, które nawet nie jest wzorcową (sate-of-the-art) implementacją tablicy z haszowaniem i używa pod spodem ultra-niewydajnych struktur jak lista łączona i drzewo binarne, które nijak się mają do B-drzew.

Poza tym drzewo binarne operuje na
@Krolik

ultra-niewydajnych struktur jak lista łączona i drzewo binarne, które nijak się mają do B-drzew


@Krolik: linked lista dla <16 elementów ULTRA NIEWYDAJNA STRUKTURA xDDDDD

Chyba nie zdałeś na studiach algorytmów co? Nawet podstaw nie kumasz
@nad__czlowiek: nie to Ty nie kumasz podstaw a na dodatek masz pewne braki w myśleniu logicznym

Ta tabelka, którą wkleiłeś to stek bzdur pisany przez jakiegoś amatora. Nawet we wzorze na wysokość B-drzewa jest błąd, bo wysokość B-drzewa to log_M(N) a nie log(M * N) co jest dość dużą różnicą. Wysokość B-drzewa jest praktycznie zawsze mniejsza od wysokości drzewa binarnego jeśli N > 2.

To że B-drzewa i B+drzewa są faktycznie
@Krolik: rozmawiamy o javie i wklejasz mi jakieś benchmarki na ruście, którego nawet nigdy nie odpalalem bo wole zarabiać dobrze zarabiać? make sense

Wstaw jeszcze benchmarki z javascripta ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
Wyszukanie elementu w 16-elementowym wektorze intów zrobisz w kilku cyklach CPU.


16 elementowy vektor vs 16 elementowa array lista

@Krolik: różnica 0,00001 ms vs 0,000001 ms jak nie nanosekund, ciekawe czy zdążysz mrugnąć ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)

Jakoś nie chce mi się wierzyć, że do implementacji języka programowania, na którym Oracle zarabia
rozmawiamy o javie


@nad__czlowiek: Nie rozmawiamy o Javie. Nigdzie w poście OP nie ma tagu java.

różnica 0,00001 ms vs 0,000001 ms jak nie nanosekund, ciekawe czy zdążysz mrugnąć


Argument od czapy, bo to jest per jedno wyszukiwanie. Przykładowo jak deserializujesz jakiś dokument JSON to takich wyszukiwań możesz mieć setki, pomnożyć przez tysiąc requestów na sekundę i już się robi nieciekawie.

Jakoś nie chce mi się wierzyć, że do implementacji języka
Ależ skąd. Java była projektowana przed 1995. Ten design ma prawie 30 lat.

Po pierwsze 30 lat temu sprzęt miał inną charakterytykę wydajnościową niż dzisiaj, a po drugie Java nigdy nie była projektowana z myślą o systemach dużej wydajności. Java była projektowana jako język do apek biznesowych, taki Cobol z ładniejszą składnią.


@Krolik: ale składnia i funkcjonalności języka są na bieżąco usprawniane.