iOS Makes Me Hate
3.94K subscribers
1.16K photos
169 videos
15 files
1.33K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Why You Should Leave Your FAANG Job

В догонку прошлым роликам. Если вы думаете, что из ит-компаний уходят только джуны в курьеры и ролик был спонсирован яндекс доставкой, то вот еще один ролик на основе прошлого поста.

Беседа Далтона Колдуэлла и Майкла Сейбела также поднимает тему почему в большинстве FAANG компаний вы можете встретить разочарование и быть не таким счастливым, если бы работали в стартапе или вообще в другой сфере.
This media is not supported in your browser
VIEW IN TELEGRAM
Бесславные ублюдки — настольная книга вычислять накрутчиков
123
💎 Почему на собеседованиях в FAANG не спрашивают про технологии?

Я всегда считаю, что пока ты молодой — лучше заниматься учебой и не бояться трудных путей, а не бегать за мимолетной выгодой.

Если вы когда-либо проходили интервью в крупных IT-компаниях (Google, Facebook, Amazon и другие), то наверняка заметили, что вместо вопросов о языках программирования и фреймворках кандидаты получают задачи на алгоритмы. Нужно, например, найти кратчайший путь между точками, развернуть бинарное дерево или удалить нули из массива. Но почему именно так?

Компании стремятся к беспристрастной оценке кандидатов. Они считают, что умный инженер сможет освоить любой язык или технологию при необходимости. Опыт, конечно, играет важную роль, но он оценивается в вопросах по проектированию систем (system design) и поведенческому интервью (behavioral interview).

Новые фреймворки появляются чуть ли не каждый день, и Google просто не может адаптировать процесс собеседования под все эти изменения. Вместо этого компания использует систему, оценивающую кандидатов по фундаментальным навыкам: знанию структур данных, умению проектировать системы и навыкам коммуникации. На основе этих параметров определяется уровень инженера. Такой подход позволяет сравнивать кандидатов между собой, но у него есть минус — он не учитывает практический опыт. В результате талантливые разработчики могут не пройти отбор.

На практике алгоритмы редко используются в повседневной работе. Разработчики с многолетним стажем обладают глубокими знаниями и решения бизнес-задач. Однако многие из них не могут быстро решать алгоритмические задачи, потому что в их работе это просто не требуется. Тем не менее, на интервью они часто получают уровень middle, что не всегда справедливо.

Молодые разработчики находятся в идеальном положении для подготовки к таким собеседованиям. Они активно изучают алгоритмы, решают задачи на платформах вроде LeetCode и Codeforces, участвуют в олимпиадах по программированию и глубоко погружаются в структуры данных. Многие мечтают попасть в Google и готовы днями и ночами разбирать книги Таненбаума и Кнута. В этом возрасте проще выделить время на подготовку, а с годами сделать это становится сложнее.

Алгоритмический формат собеседований в крупных IT-компаниях даёт преимущество студентам, у которых есть время и мотивация для подготовки. Опытные разработчики, несмотря на свой богатый практический багаж, могут столкнуться с трудностями из-за нехватки тренировки в решении подобных задач.

Поэтому и мы на канале стараемся разбирать не только знание фреймворков и особенностей платформы, но и базу.
Please open Telegram to view this post
VIEW IN TELEGRAM
103
Разбор читаемости

При решении алгоритмических задач в нашем чате постоянно споры по читаемости. Как мы знаем, тема алгоритмов это не только зубрежка самых популярных ответов из чатгпт или ответов из литкода. Это множество скиллов.

Один из них читаемость. Считается, что лаконичный код — признак сеньора. Давайте проведем опрос какой код более вам приятен на примере задачи:

Дана строка s, состоящая из английских букв в нижнем регистре. Нужно удалить все соседние одинаковые символы, пока в строке не останется повторов.

📌 Если после удаления образовались новые соседние дубликаты, их тоже нужно удалить – процесс повторяется до тех пор, пока в строке
не останется повторяющихся символов.

Вход: s = "abbaca"
Выход: "ca"

Вход: s = "azxxzy"
Выход: "ay"


Сравним два решения

Ссылка на задачу в литкоде
Есть ли в структурах deinit?

Это один из старых вопросов на собесах. Он показывал насколько кандидат разбирается в памяти. Ответ на этот вопрос был: нет. В структурах нет deinit.

Пропозал SE-0390 вводит концепцию структур и enum'ов, которые нельзя скопировать. А вместо этого позволяет использовать один экземпляр во многих местах.

Появляется новый синтаксис ~Copyable, который означает, что тип не может быть скопирован. Все это, вкупе с borrowing & consuming довольно мощные концепции и сильно помогут в работе. Позже разберем детально.

Есть ли в структурах deinit? Бывает.

Подробнее тут:
- WWDC24: Consume noncopyable types in Swift | Apple
- Noncopyable types in documentation
- Copyable

💰 В ноушене сделал обзор на borrowing, consuming и ~Copyable. А также разобрал частые задачи. Они правда топовые.
Please open Telegram to view this post
VIEW IN TELEGRAM
1032
This media is not supported in your browser
VIEW IN TELEGRAM
Ваш главный канал демотивации идти в ит
6
Выгрузил все задачи, которые встречаются в литкоде, что похожие на яндексоидные
295
Media is too big
VIEW IN TELEGRAM
🧬 100 задач по управлению памятью

Составив 100 вопросов по управлении памятью я понял, что теория < практики. Она полезна для оценки понимания, но всегда важнее практика. Так я начал амбициозную задачу составить 100 задач по каждой теме (память, многопоточка и тп).

В этом сборнике первые 10 задач из цикла. Это новый формат, где я вдохновился литкодом и методичками крупных компаний, шаблонам яндекс.практикума (где я был автором нескольких тем). И в компаниях, где помогал улучшению процессов собеседований.

Формат включает себя:
🟣Условие задачи
🟣Уточняющие вопросы
🟣Ожидаемый ответ

Так понятнее не только кандидату для подготовки, но и интервьюеру для прохождения. Со временем дойдем и до 100 задач.

А я потихоньку практикуюсь для будущего видеоконтента. Музон для задротов конференций Apple.

💰 Поддержать или получить доступ к материалам можно в бусти
⭐️ Или в боте трибьюта если вы не из СНГ (рекомендовано, так дешевле)
Please open Telegram to view this post
VIEW IN TELEGRAM
183
Сборка задач с собеседований в Apple
12
🧬 Flow: выход из цикла. Конструктивная жизненная система

Преобразование порядка из хаоса — величайшая черта образования.

Сильнейшей идеей потока оказалась не очевидное и понятное состояние удовольствия от процесса. А куда более глубокая система конструктивных ценностей. Она пронзает множество слоев: от историй государств до семейных отношений. Возможно, эту мысль мне помогла увидеть моя терапия с психологом, но она является ключевой.

Представьте мальчика. Рожденный в этот мир он полон наивности и веры. Но сталкиваясь с трудностями он становится циником.

Обездоленный. Он ищет вину своих неудач в родителях, системе, боге. Такое поведение очень близко особенно в пост-советской культуре.

Его реакция, на пережитую в детстве сильную боль, оказалась деструктивной. Отец заслужил такое поведение и он просто слаб. А я должен разбогатеть. По инерции экстраполируя эту установку на начальника, систему, государство и мир. Только так я выйду из цикла страданий. Но в этой установке нет правды и так мы не исцелимся.

В таких целях мы не найдем счастья. И единственное, что нас накроет — волна хаоса и энтропии. Которая затянет на дно. Ложь на ложь. Месть на месть. Кровь за кровь. Зуб за зуб приводят к бесконечной петли саморазрушения.

Поддаться эмоциям очень просто. Но инерция заведет в ловушку.

Образование — лучшая терапия для менталки. Нужно учиться преобразовывать травмирующие события в цель. А для этого нужно уметь делать порядок из хаоса.

В этом и есть ключевое отличие потока от цикла.
Please open Telegram to view this post
VIEW IN TELEGRAM
12
Тебе не дадут дополнительную ответственность, если ты не выполняешь хорошо основную

Хард скиллы важнее софт скиллов. Софты переоценены. Каким бы ты не был обаятельным и какие бы смешные анекдоты на работе ты не говорил, но тебя всегда оценивают по результату работы твоей функции.

Во многих компаниях есть правило, что только хороший инженер может стать менеджером. Хотя это два абсолютно разных навыка: менеджерить и инженерить.

Почему тогда это важно? Если ты не справляешься со своей прямой ответственностью, то тебе не дадут дополнительную. Ты не компенсируешь плохой результат смежной работой.

Нужно дойти до определенного уровня качества, чтобы получить новую роль: начать писать бэк не дадут, если плохо красишь кнопки; расти в менеджмент тоже. Плохой инженер не станет хорошим менеджером.

Софт скиллы стоит развивать, когда вышел на удовлетворительный уровень хардов. Никто не захочет брать к себе сотрудника, который отлично веселит команду у кулера, но подставляет срывая дедлайны
164
Essential Developer

Если проводить опрос у iOS разработчиков "какой ютуб канал они считают лучшим для технического роста", то большинство ответит про Essential Developer. Пару человек из нашего чата даже купили на их курсы годовую подписку за 2.5к$.

О чем их тема и откуда такой успех? Ребята правда делают крутые разборы с настоящими практиками. Их контент не очередной курс для вката от менторов с 0.1 годами опыта в стартапах, а мощный в бигтехах. Где они разбирают настоящие проблемы, с которыми сталкиваются рядовые инженеры.

Собрал подборку лучших открытых роликов:
1. Рефакторинг большого проекта. Очень похожая секция, которую дают сейчас на рынке.

2. Clean iOS Architecture: UI Design Patterns. Серия роликов с разбором архитектурных паттернов.

3. Топ вопросов на собеседованиях про архитектуры. Тут все по классике. Возможно, некоторые вопросы устарели, но большинство остаются актуальными.

Тема вката всех заебала. Для своего контента я точно много идей заберу себе.
221
квиз
Будет ли тут утечка памяти? Если вызовем в методе функцию loadView
Anonymous Poll
28%
Да
46%
Нет
3%
50/50
3%
По ситуации
20%
Посмотреть ответ
Тестирование и понимание условий при решении алгозадач

Чаще самая сложная работа, чтобы решить задачу, — это понять условие. А написание кода всегда вторичное.

В своей компании, с прошлой пятницы, я начал входить в комитет секции алгоритмов. Мы будем развивать и улучшать процесс. Одной из идей на первом созвоне было пересоздать новую секцию, заменив старую. Которая уже отстает от вызовов рынка. Она будет называться программирование 2.0.

Она не будет учитывать знание ОСОБЫХ АЛГОРИТМОВ (красно-черные деревью, динамическое программирование и тп). Но оставит многое из дисциплины problem solving. В ней будут оценки очень важных скиллов для программиста: умение рассуждать, понимать условия, тестировать и находить пограничные кейсы.

Когда вы проходите алгосекцию, то основная задача интервьюера не только оценить конечное ваше решение. Правильное решение очень важно, но куда важнее КАК вы его написали и какие навыки продемонстрировали во время решения.

Решать задачи в тепличных условиях дома и под ограниченное время перед интервьюером — два разных уровня сложности.

На интервью все в разы сложнее. Поэтому мы в чате рекомендуем такой шаблон:
🟣Ставить таймер на каждую задачу в 20-30 минут
🟣Проговаривать решение вслух. Стараться это делать последовательно
🟣Сдавать максимально проработанное решение. На интервью — как на экзамене. Каждая пересдача неправильного решения это минус балл.
🟣Учитывать все корнер кейсы.

Вот например яндекс дает с одной стороны очень простые задачи, но всегда с бесячим кол-вом пограничных кейсов. В литкоде таких тоже много.

Разберем задачу Simplify Path на скриншотах. Она попадалась в некоторые команды яндекса.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8
ну че, новая тема для контента.
13
Вы думаете что знаете Swift?

Swift становится очень мощным языком и выходит за границы мира iOS. Все больше пишется кроссплатформ и серверов на нем.

Знание языка и владение им на продвинутом уровне — признак скилла разработчика. Я не думаю, что ИИ заменит разработчиков во всем. Люди все равно знают лучше редкие фичи языка, которые будут считаться более качественным кодом.

Вот и в этом видео разбираются интересные и редкие особенности языка:

🟣 работа с опционалам в цикле for
🟣 выход из всех вложенных циклов с помощью outer
🟣closure это не reference type
🟣inout не выделеяет структуру в куче
🟣другие особенности языка

Дьявол, как говорится, в деталях
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1842