Заметки вкатуна | IT | программирование
رفتن به کانال در Telegram
Использую этот канал для понятного конспектирования новых знаний по программированию. Надеюсь вы найдете тут много полезного 🤓
نمایش بیشتر498
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
Рубрика #лайвкодинг
Задача: придумать алгоритм на поиск пути с максимальным колличеством жертв.
Предлагаем свои решения в комментариях💻
Инкапсуляция - не сокрытие, тогда что это?
В широком смысле слова инкапсуляция это и вправду сокрытие, но на собесе от вас ждут более точечный и конкретный ответ. Да и в целом знать более конкретно что это не будет лишним.
Инкапсуляция - объединение данных и методов в одном классе, где данные защищены и доступны через методы. Инкапсуляция помогает защитить данные от некорректного доступа и изменения извне, она гарантирует, что внутреннее состояние объекта скрыто от внешнего кода и доступно только через соответствующие методы.
Выкладывать ли какие-то заметки по фронту? HTML, CSS, REACT и тд
+1
📝 Шпаргалка по шаблонам проектирования. Она может быть полезна как знатокам, так и джунам в качестве спасательного круга, когда на собесе нечего ответить по паттернам.
Сохраняй себе и делись с друзьями! Версию в исходном качестве скину в комментариях.
Полезные материалы за март 2024
1) Почему джунам не стоит идти на удалёнку?
2) Почему синглтон - антипаттерн?
3) Книга, которую должен прочитать каждый программист
4) Как работает быстрая сортировка?
5) База по структурам данных
Почему singleton это антипаттерн?
Многие знают этот факт как аксиому, которую не нужно доказывать. "Ну антипаттерн и все, на собесах вообще молчим про него"
Но за этой аксиомой кроется несколько интересных деталей, объясняющих почему синглтон это антипаттерн.
1) Синглтон сильно осложняет тестирование, так как Singleton предоставляет глобальную точку доступа к единственному экземпляру класса, его трудно изолировать для тестирования. Тесты должны учитывать влияние других частей системы на этот единственный экземпляр.
2) И самое интересное - singleton нарушает почти все принципы solid(4 из 5).
Остановимся тут поподробнее:
S - Принцип единой ответственности:
Класс синглтона, помимо выполнения своих непосредственных обязанностей, занимается еще и контролированием количества своих экземпляров. Зависимость обычного класса от синглтона не видна в интерфейсе класса.
O — принцип открытости/закрытости: объекты должны быть открыты для расширения, но закрыты для изменения. Синглтон нарушает данный принцип, так как контролирует точку доступа и возвращает только самого себя, а не расширение.
L — принцип подстановки Барбары Лисков: объекты могут быть заменены экземплярами своих подтипов без изменения использующего их кода. Это неверно в случае с синглтоном, потому что наличие нескольких разных версий объекта означает, что это уже не синглтон.
I — принцип разделения интерфейса: много специализированных интерфейсов лучше, чем один универсальный. Это единственный принцип, который синглтон нарушает не напрямую, но лишь потому, что он не позволяет использовать интерфейс.
D — принцип инверсии зависимостей: вы должны зависеть только от абстракций, а не от чего-то конкретного. Синглтон нарушает его, потому что в данном случае зависеть можно только от конкретного экземпляра синглтона.
Джуны и удалёнка.
Удалёнка для джунов это не вариант(по моему субъективному мнению) и вот почему:
Отсутствие живого общения с тимлидом и коллегами. Это сильно замедляет рост начинающему специалисту. Конечно, вы можете возразить "я же могу созваниваться по видеосвязи, я же могу писать за помощью и ТД..."
Нет, это все х***я, когда речь идёт о росте. В офисе, когда все рядом, вы можете просто дёрнуть нужного человека и задать любой вопрос, хоть самый тупой, но вы получите ответ, случится что-то ещё - зададите ещё вопрос. За таким же вопросом вам будет стремно выдергивать человека на целый созвон, текстом писать свой тупой вопрос, от которого, как вам будет казаться, так и веет кринжом, и будете стараться все решать самостоятельно, иначе говоря вариться в собственном соку, от чего нет никакого толка.
Сейчас рынок запихивает сотрудников обратно в офисы, джуны должны этим пользоваться и охапкой черпать опыт, пока дают. Если вам в условиях заявляют о полной удалёнке, лучше отказаться, и искать минимум гибрид.
Джун, который работал год на удалёнке ≠ джун, который год работал из офиса рядом с опытными коллегами.
А что думаете вы?
Настолько БАЗА, что уже даже немного баян.
Тем не менее если вы Джун и у вас проблемы со структурами данных и алгоритмами, то эта книга поможет вам решить их.
В игровой форме с картинками объясняются популярные алгоритмы и структуры данных, а так же смежные с ними определения (big O notation, логарифмы)
Так же все что тут есть вас будут спрашивать на собесах. Про структуры данных, сложность операций с ними, и простенькие алгоритмы сортировки уж точно.
Естественно я знаю, что HTML это не ЯП.
Все это ради рофла, смешно читать как прогеры со 100 процентной вероятностью начинают говниться и люто душнить 😁
Быстрая сортировка (Quick Sort): Один из самых быстрых алгоритмов сортировки. Этот алгоритм относится к группе алгоритмов "разделяй и властвуй". Он выбирает опорный элемент из массива и разделяет массив на две части: элементы, меньшие опорного, и элементы, большие опорного. Затем он рекурсивно сортирует каждую из этих частей. Быстрая сортировка обладает хорошей производительностью и может быть ОЧЕНЬ эффективной на практике. Давайте разберем алгоритм поэтапно.
Всего у этого алгоритма 3 этапа:
1)берем не отсортированный массив [5,2,4,6,1,15]
2)выбираем ”опорный” элемент, от которого будем отталкиваться при разделении, пусть это будет “6”
3)размещаем меньшие значения слева от опорного элемента, а большие - справа, делаем это путем прохода каждого элемента
Итак, получаем [1,4,2,5] - 6 - [15]
Как видим у нас слева и справа от опорного элемента образовалось 2 массива, при том что правый массив сортировать больше не нужно! Так как там один элемент.
Итого у нас остается только левый массив, с которым мы повторяем шаги с 1 по 3.(тут проявляется рекурсивность алгоритма, тут мы выполняем те же действия, а в коде функция вызывает сама себя)
1) берем не отсортированный массив [1,4,2,5]
2)выбираем ”опорный” элемент, от которого будем отталкиваться при разделении, пусть это будет последний элемент “5”
3)размещаем меньшие значения слева от опорного элемента, а большие - справа, делаем это путем прохода каждого элемента
Итак, получаем [1,4,2] - 5 - []
повторяем шаги 1-3 для оставшегося левого массива, опорный элемент в следующем проходе будет “4”
[1,2] - 4
Теперь обьединяем все полученные массивы воедино:
[1 ,2 ,4 ,5 ,6, 15]
PROFIT! Теперь вы знаете рекурсивный алгоритм быстрой сортировки.
Пример реализации на C# выложу в комментариях.
Кто поставил клоуна?
Я тебя по IP вычислю и заставлю продвинутый курс по ассемблеру смотреть
