Immutable string

0

Hej
Dziś dostałem pytanie na rozmowie rekrutacyjnej na rolę seniora od Pana z Indii czym jest immutable string. Szczerze powiedziawszy nie odpowiedziałem wprost na to pytanie oczekiwaną regułką i poległem :) a po sprawdzeniu w google okazało się, że domysły miałem dobre ale z drugiej strony nie byłem pewien ;) no ale do rzeczy :) zaczęło mnie zastanawiać bardziej co dev rekruter sprawdza w ten sposób zadając takie pytanie, zdolności perf deva lub czy dev nie jest przypadkiem sawantem i zna odpowiedź na jakieś mało istotne kwestie w pracy programisty :) a może się mylę i też macie codziennie rozkminy czy użyć stringa i zaglądacie w IL i rozkminiacie czy coś by tu nie poprawić;)

Pozdro and Happy Friday :)

1

W pytaniu właściwie pojawił się pleonazm, ponieważ klasa String w środowisku .NET jest z góry klasą immutable. Wykonując zmiany w zmiennej tego typu, zawsze tworzony jest nowy String, zamiast modyfikować jego wartość (czego jednak "nie widać na pierwszy rzut oka w kodzie").

Bardziej odpowiednim tego typu pytaniem powinno być, czy String jest klasą immutable, lub na czym polega różnica między właściwością mutable a immutable.

4

No raczej ciężko, żeby senior nie wiedział, że string jest immutable i jakie są tego konsekwencje. To jest banał i nie trzeba zaglądać do IL.

0

zaczęło mnie zastanawiać bardziej co dev rekruter sprawdza w ten sposób zadając takie pytanie, zdolności perf deva lub czy dev nie jest przypadkiem sawantem i zna odpowiedź na jakieś mało istotne kwestie w pracy programisty :)

Niemutowalność zmienia sposób rozumowania. Mając niemutowalną strukturę danych nie robisz defensywnych kopii, bo wiesz że nie musisz. Nikt inny ci zawartości tego np niemutowalnego stringa nie zmieni, nawet jeśli dostałeś go z zewnątrz, a nie tworzyłeś sam. Dodatkowo zawartości niemutowalnych struktur danych nie trzeba synchronizować - skoro nie da się ich zmienić (nie ma zapisu) to nie będzie race condition przy odczycie z innego wątku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1