что выведтся в консоль
Anonymous Quiz
7%
object 1 -> up <link>, deinit, object 1 -> down <link>
12%
object 1 -> up <link>, object 1 -> down <link>, deinit
13%
object 1 -> up <link>, deinit, object 1 -> down nil
17%
deinit, object 1 -> up <link>, object 1 -> down <link>
14%
object 1 -> up <link>, deinit
30%
ничего
8%
Другое
Знакомьтесь, Серафима. Это уникальная история, где девушка в 22 года получила первую работу в компании мечты.
За счет таланта и упорства. Без накрутки и обмана. Контрибьютив в swift и занимаясь своими проектами. В штат, а не контракт. Занимаясь развитием SwiftUI и Swift Concurrency.
Это как пройти игру на самых сложных настройках раньше всех. Когда Сима зашла в наш чат все мужики ущемились.
В рамках строгого NDA мы обговорили:
Также я уговорил Симу создать свой телеграм канал. Потому что Готэму нужны новые герои.
Подписывайтесь, Сима обещала что будет делиться новостями и фишками про SwiftUI и другими советами прямо из кухни.
Для меня это лучшая мотивирующая история интернета и я очень рад, что именно я не только первым ей поделюсь, но и уговорю сделать свой блог для развития и мотивацию нас.
После общения с такими людьми мотивация творить разрывает.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь перед собой амбициозные цели
Я рад, что мой канал притягивает тех людей, кого я ищу.
Талантливых, целеустремленных, честных, амбициозных. Такие создают самую плодородную почву. Самую вайбовую атмосферу. Они не привыкли обвинять кого-то в своих неудачах и делают работу до конца. Они вдохновляют, помогают, развивают. Верят в свои силы и не видят невыполнимых задач. Их самооценка всегда на высоком уровне, что не позволяет пользоваться грязными приемами. Для них слова честь и репутация не пустой звук для прогревов и манипуляций. Своим уровнем работы над собой создают новые уровни вдохновения.
Именно такой аудитории я всегда хотел. Быть частью ее. С самого детства окружать себя теми, кто своим примером вдохновит тебя. Покажет, что может пройти путь сильных и выполнить любые цели.
С каждой неделей мне пишут все больше людей с благодарностью мотивацию. Их заряжает та работа над собой и то упорство, жажда познаний, любознательность. Кто получает удовольствие от состояния потока в обучении. Они делятся материалами для канала и книги. Благодарю вас за поддержку.
Эта энергия передается и мне. Заряжает и наполняет. Создает четкие границы и фильтры куда нужно смотреть, а на что не стоит тратить время.
С каждой написаной страницей книги я понимаю, что хочу выложиться на 200% и создать не просто книгу с основами языка, а сделать масштабный путеводитель, который расскажет весь путь от начала до развития инженера.
Сделать не просто историю про iOS разработчика, который открыл документацию. А историю инженера. Историю любви и уважению к своей работе. Историю поиска смысла и целей. Истрия благодарности. История о заполнении пустоты. книга с душой, где я оставлю много труда.
Спасибо всем вам. А я буду стараться, чтобы притянуть как можно больше нужных людей в наш факультет.
Я рад, что мой канал притягивает тех людей, кого я ищу.
Талантливых, целеустремленных, честных, амбициозных. Такие создают самую плодородную почву. Самую вайбовую атмосферу. Они не привыкли обвинять кого-то в своих неудачах и делают работу до конца. Они вдохновляют, помогают, развивают. Верят в свои силы и не видят невыполнимых задач. Их самооценка всегда на высоком уровне, что не позволяет пользоваться грязными приемами. Для них слова честь и репутация не пустой звук для прогревов и манипуляций. Своим уровнем работы над собой создают новые уровни вдохновения.
Именно такой аудитории я всегда хотел. Быть частью ее. С самого детства окружать себя теми, кто своим примером вдохновит тебя. Покажет, что может пройти путь сильных и выполнить любые цели.
С каждой неделей мне пишут все больше людей с благодарностью мотивацию. Их заряжает та работа над собой и то упорство, жажда познаний, любознательность. Кто получает удовольствие от состояния потока в обучении. Они делятся материалами для канала и книги. Благодарю вас за поддержку.
Эта энергия передается и мне. Заряжает и наполняет. Создает четкие границы и фильтры куда нужно смотреть, а на что не стоит тратить время.
С каждой написаной страницей книги я понимаю, что хочу выложиться на 200% и создать не просто книгу с основами языка, а сделать масштабный путеводитель, который расскажет весь путь от начала до развития инженера.
Сделать не просто историю про iOS разработчика, который открыл документацию. А историю инженера. Историю любви и уважению к своей работе. Историю поиска смысла и целей. Истрия благодарности. История о заполнении пустоты. книга с душой, где я оставлю много труда.
Спасибо всем вам. А я буду стараться, чтобы притянуть как можно больше нужных людей в наш факультет.
Список задач с объяснением решений
Месяцев 10 назад я находил то ли ролик, то ли пост создателя Neetcode. Там он делился эффективным методом решения алгозадач. Быстрый ликбез: бывший сотрудник гугла создал свою платформу-задачник, который помогает лучше подготовиться к алгосекциями. Платформа дает самые релевантные задачи и создает роадмапы. Проект стал настолько успешным, что его доход приносит ему 1 лям $ в месяц. Очевидно, он ушел из гугла и начал развивать свой проект. Это снова отличный пример, когда страсть к чему-то и потребность рынка можно монетизировать.
Суть же в том, что его подходы помогают быстрее обучаться другим. Один из таких подходов "не запоминай код — запоминай решение". Множество разработчиков, которые ищут быстрые пути, чаще выходят на самые долгие. Они бездумно и без подготовки сразу идут в практику, прорешивают всё без структуры или еще хуже, тупо пытаются запомнить код. Это все ленивые методы, которые в итоге приводят к огромной потери времени на поздних стадиях. Как в стратегиях и мобах, где ты допустил критическую ошибку в прокачке билда, а лейтгейм уже был проигран из-за ошибки на начальных этапах. Фарм опыта чаще важнее, чем голды.
Я решил попробовать этот подход и сделал свою таблицу с решенными задачами, которые часто встречаются для мобильных разработчиков. В них я написал объяснение решений, которые как заметки, лучше отпечатываются в памяти.
Список будет обновляться.
P.S. На днях я также пересмотрел свои подходы к обучению и теперь буду делать больше упор на задачи, а не вопросы.
Месяцев 10 назад я находил то ли ролик, то ли пост создателя Neetcode. Там он делился эффективным методом решения алгозадач. Быстрый ликбез: бывший сотрудник гугла создал свою платформу-задачник, который помогает лучше подготовиться к алгосекциями. Платформа дает самые релевантные задачи и создает роадмапы. Проект стал настолько успешным, что его доход приносит ему 1 лям $ в месяц. Очевидно, он ушел из гугла и начал развивать свой проект. Это снова отличный пример, когда страсть к чему-то и потребность рынка можно монетизировать.
Суть же в том, что его подходы помогают быстрее обучаться другим. Один из таких подходов "не запоминай код — запоминай решение". Множество разработчиков, которые ищут быстрые пути, чаще выходят на самые долгие. Они бездумно и без подготовки сразу идут в практику, прорешивают всё без структуры или еще хуже, тупо пытаются запомнить код. Это все ленивые методы, которые в итоге приводят к огромной потери времени на поздних стадиях. Как в стратегиях и мобах, где ты допустил критическую ошибку в прокачке билда, а лейтгейм уже был проигран из-за ошибки на начальных этапах. Фарм опыта чаще важнее, чем голды.
Я решил попробовать этот подход и сделал свою таблицу с решенными задачами, которые часто встречаются для мобильных разработчиков. В них я написал объяснение решений, которые как заметки, лучше отпечатываются в памяти.
Список будет обновляться.
P.S. На днях я также пересмотрел свои подходы к обучению и теперь буду делать больше упор на задачи, а не вопросы.
Google Docs
Algo
Самая главная тема в управлении памятью — захват ссылок. Нет ни одной другой практической темы. Мне всегда казалось очень странным, что кандидат рассказал про всякие кишки: sidetable, unsafe pointer, WeakObject, жизненный цикл объекта. Но не смог решить простую задачу с захватом ссылок. Прошлый квиз подтвердил, что эта тема требует отдельного разбора.
Лучший формат обучения — задачи с комментариями. Теория, лекции и вопросы — это лишь дополнительная вода, которая помогает усвояемости.
Я уже писал, что собрав 400 вопросов для собеседований понял, что такой подход не поможет эффективному обучению. Зубрежка ответов на теорию — кроссворды на эрудицию. Реальный скилл куется практикой. С этого момента я фокусируюсь только на практических задачах. Где минимум теории и максимум практики.
В этой подборке с ответами и комментариями я собрал:
Please open Telegram to view this post
VIEW IN TELEGRAM
Техники устранения коллизий в разных языках программирования
Разница между кодером и инженером — в понимании "базы". Для кодера многое в работе компьютера — магия. Какие-то гномы крутят колесики в комьютере и наш код чудесным образом выполняется. В этом канале мы не приветствуем этот путь.
Computer Sience — это масштабная и глубокая наука. Она объясняет нам как работают привычные инструменты. Чем шире и глубже кругозор, тем лучше и крепче знания для решения рабочих задач. Даже вчера, созваниваясь со своим менти, он рассказал, что изучив работу управления памятью в Rust'е он лучше стал понимать как работает память в Swift'е.
Вдохновившись этим я решил собрать разные подходы решения одних проблем из разных языков. Начнем с решения коллизий:
Для нас хэштаблицы это магическое место, куда можно складывать элементы и брать оттуда за единицу времени. Есть некая хэш функция, которая вычисляет номер ячейки, но бывает так, что для нескольких разных объектов хэш функция вернет одно и тоже число. Если у вас 100 попугаев и 80 клеток, значит в какой-то клетке будет несколько попугаев. Это и называется коллизия.
🔗 Separate chaining
В данном подходе используется вместо одной ячейки используется двухсвязанный список. Соотвественно когда добавляется элемент, высчитывается номер ячейки, находится соответствующий список и добавляется в конец объект. Такой подход используется во многих языках программирования, в том числе в Java, Go, C++.
Основным минусом данного подхода является то, что если все элементы попадают в один список, то получится длинный связанный список, соотвественно результирующая сложность будет соответствующая.
Посчитает ассимптотику по времени.
🟣 Поиск элемента: в среднем O(1), в худшем случае O(N)
🟣 Добавление элемента: в среднем O(1), в худшем случае O(N)
🟣 Удаление элемента: в среднем O(1), в худшем случае O(N)
В Java есть оптимизация, если список разрастается и становится больше определенного количество элементов, то список превращается в сбалансированное двоичное дерево. Соотвественно сложность уменьшается до O(log N)
📂 Open addressing
Второй подход называется открытая адресация. Подход предполагает, что количество элементов для вставки не больше, чем количество ячеек в таблице. Если при вставке элемента оказывается, что ячейка уже занята, то смотрим на ячейку +1, если свободна то вставляем туда, иначе проверяем +2, +3 и так далее. Есть мини оптимизации, позволяющие не линейно прыгать по ячейкам в поисках свободного слота, а квадратично.
Стоит отметить, что удаление здесь это просто флажок (tombstone), означающий что ячейка свободна. Такой хак позволяет продолжать прыгать по ячейкам при поиске элемента, чтобы не остановиться раньше времени.
Сложность по времени.
🔘 Поиск элемента: в среднем O(1), в худшем случае O(N)
🔘 Добавление элемента: в среднем O(1), в худшем случае O(N)
🔘 Удаление элемента: в среднем O(1), в худшем случае O(N)
Такой подход тоже находит свою реализация в языках программирования, таких как Python, Ruby, Rust.
Разница между кодером и инженером — в понимании "базы". Для кодера многое в работе компьютера — магия. Какие-то гномы крутят колесики в комьютере и наш код чудесным образом выполняется. В этом канале мы не приветствуем этот путь.
Computer Sience — это масштабная и глубокая наука. Она объясняет нам как работают привычные инструменты. Чем шире и глубже кругозор, тем лучше и крепче знания для решения рабочих задач. Даже вчера, созваниваясь со своим менти, он рассказал, что изучив работу управления памятью в Rust'е он лучше стал понимать как работает память в Swift'е.
Вдохновившись этим я решил собрать разные подходы решения одних проблем из разных языков. Начнем с решения коллизий:
Для нас хэштаблицы это магическое место, куда можно складывать элементы и брать оттуда за единицу времени. Есть некая хэш функция, которая вычисляет номер ячейки, но бывает так, что для нескольких разных объектов хэш функция вернет одно и тоже число. Если у вас 100 попугаев и 80 клеток, значит в какой-то клетке будет несколько попугаев. Это и называется коллизия.
В данном подходе используется вместо одной ячейки используется двухсвязанный список. Соотвественно когда добавляется элемент, высчитывается номер ячейки, находится соответствующий список и добавляется в конец объект. Такой подход используется во многих языках программирования, в том числе в Java, Go, C++.
Основным минусом данного подхода является то, что если все элементы попадают в один список, то получится длинный связанный список, соотвественно результирующая сложность будет соответствующая.
Посчитает ассимптотику по времени.
В Java есть оптимизация, если список разрастается и становится больше определенного количество элементов, то список превращается в сбалансированное двоичное дерево. Соотвественно сложность уменьшается до O(log N)
Второй подход называется открытая адресация. Подход предполагает, что количество элементов для вставки не больше, чем количество ячеек в таблице. Если при вставке элемента оказывается, что ячейка уже занята, то смотрим на ячейку +1, если свободна то вставляем туда, иначе проверяем +2, +3 и так далее. Есть мини оптимизации, позволяющие не линейно прыгать по ячейкам в поисках свободного слота, а квадратично.
Стоит отметить, что удаление здесь это просто флажок (tombstone), означающий что ячейка свободна. Такой хак позволяет продолжать прыгать по ячейкам при поиске элемента, чтобы не остановиться раньше времени.
Сложность по времени.
Такой подход тоже находит свою реализация в языках программирования, таких как Python, Ruby, Rust.
Please open Telegram to view this post
VIEW IN TELEGRAM
GeeksforGeeks
Separate Chaining Collision Handling Technique in Hashing - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
Software Developer vs Software Engineer: Ты не настоящий программист
В ИТ нижние и верхние планки не стоят на месте. С каждым годом все легче войти в ит, но все сложнее взять ту самую "сеньорность". В российской ит культуре иногда много срачей кто такой настоящий инженер. Мне кажется, это из-за языкового барьера. В западной культуре уже давно определились с терминами кто есть кто.
software engineer - это тот, кто строит ресторан и описывает меню, а software developer - это те, кто готовят блюда из этого меню.
Software Engineer обычно получает больше, чем Software Developer.
В русском языке мы не предаем такого значения этой разнице. Мы все-таки чаще используем слово «разработчик» как для developer, так и для engineer, хотя можно найти вакансии «программиста-инженера» или уже грейды в групных компаний, как software engineer.
В ИТ нижние и верхние планки не стоят на месте. С каждым годом все легче войти в ит, но все сложнее взять ту самую "сеньорность". В российской ит культуре иногда много срачей кто такой настоящий инженер. Мне кажется, это из-за языкового барьера. В западной культуре уже давно определились с терминами кто есть кто.
Software Developer - если очень просто, это программист, который специализируется на одном языке программирования или фреймворке. Поэтому чаще всего к названию приписывается название технологии: SwiftUI кнопкокрас, React/TCA developer. Считается, что такой разраб, который кроме кода, может допом и тесты писать, и документацию, и проектировать решения. Но он ограничен рамками одного языка.
Software Engineer - это эксперт, который обладает набором навыком и знаний, чтобы проектировать и создавать системы на разных уровнях. Инженер также пишет код. Можно сказать, что Software Development это подветка Software Engineering. Только инженер не привязывается к одному языку программирования. В зависимости от требований он может сменить стэк.
software engineer - это тот, кто строит ресторан и описывает меню, а software developer - это те, кто готовят блюда из этого меню.
Software Engineer обычно получает больше, чем Software Developer.
В русском языке мы не предаем такого значения этой разнице. Мы все-таки чаще используем слово «разработчик» как для developer, так и для engineer, хотя можно найти вакансии «программиста-инженера» или уже грейды в групных компаний, как software engineer.
Coursera
Software Developer vs. Software Engineer: Differences + More
How do software developer duties differ from those of ...
Меня уже за неделю человек 5 попросили выложить контент главного современника и амбассадора базы
База программиста от Влад Тен
@tenfoundation
https://youtu.be/fW_imcrTA_c?si=KU0S22DZzgvLN9Dd
Computer Systems
https://www.youtube.com/watch?v=Keducx5bp-g&list=PL0j-r-omG7i0-mnsxN5T4UcVS1Di0isqf&index=17
https://www.nand2tetris.org
OS
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://pages.cs.wisc.edu/~remzi/Classes/537/Fall2021/
https://pdos.csail.mit.edu/6.S081/2021/schedule.html
Algo
https://www.youtube.com/watch?v=oFVYVzlvk9c&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=13
https://boosty.to/vladtenishe/purchase/2940916?ssource=DIRECT&share=subscription_link
Math
https://www.3blue1brown.com/#lessons
https://ocw.mit.edu/course-lists/scholar-courses/
https://www.khanacademy.org
https://mathacademy.com/adult-students
Networking
https://gaia.cs.umass.edu/kurose_ross/wireshark.php
https://www.youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS
DB
https://15445.courses.cs.cmu.edu/fall2024/assignments.html
https://www.youtube.com/watch?v=niLwbfE3V9Q&list=PLSE8ODhjZXjYDBpQnSymaectKjxCy6BYq&index=20
Distributed Systems
https://pdos.csail.mit.edu/6.824/schedule.html
https://www.youtube.com/watch?v=UEAMfLPZZhE&list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
Security
https://web.stanford.edu/class/cs253/
https://61600.csail.mit.edu/2023/
База программиста от Влад Тен
@tenfoundation
https://youtu.be/fW_imcrTA_c?si=KU0S22DZzgvLN9Dd
Computer Systems
https://www.youtube.com/watch?v=Keducx5bp-g&list=PL0j-r-omG7i0-mnsxN5T4UcVS1Di0isqf&index=17
https://www.nand2tetris.org
OS
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://pages.cs.wisc.edu/~remzi/Classes/537/Fall2021/
https://pdos.csail.mit.edu/6.S081/2021/schedule.html
Algo
https://www.youtube.com/watch?v=oFVYVzlvk9c&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=13
https://boosty.to/vladtenishe/purchase/2940916?ssource=DIRECT&share=subscription_link
Math
https://www.3blue1brown.com/#lessons
https://ocw.mit.edu/course-lists/scholar-courses/
https://www.khanacademy.org
https://mathacademy.com/adult-students
Networking
https://gaia.cs.umass.edu/kurose_ross/wireshark.php
https://www.youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS
DB
https://15445.courses.cs.cmu.edu/fall2024/assignments.html
https://www.youtube.com/watch?v=niLwbfE3V9Q&list=PLSE8ODhjZXjYDBpQnSymaectKjxCy6BYq&index=20
Distributed Systems
https://pdos.csail.mit.edu/6.824/schedule.html
https://www.youtube.com/watch?v=UEAMfLPZZhE&list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
Security
https://web.stanford.edu/class/cs253/
https://61600.csail.mit.edu/2023/
YouTube
База Программиста БЕСПЛАТНО | Влад Тен
Ресурсы для становления базированным разработчиком понимающим фундаментальные принципы Computer Science Влад Тен | База Программиста БЕСПЛАТНО | Влад Тен
Полезные ссылки про хэштаблицы:
1. Hash Tables - CS50 Shorts
2. HashTable.swift
3. Hashable Doc
4. Hasher
5. How Hashable works in Swift
6. Hashable Enhancements
7. Swift Example HashTable Impl 1
8. Hash Functions in Swift
9. Hash Table
10. Hashing in Computer Science
1. Hash Tables - CS50 Shorts
2. HashTable.swift
3. Hashable Doc
4. Hasher
5. How Hashable works in Swift
6. Hashable Enhancements
7. Swift Example HashTable Impl 1
8. Hash Functions in Swift
9. Hash Table
10. Hashing in Computer Science
Для чего и как работает хештаблица спрашивают почти на любом собеседовании. Если вы этого не знаете, то многие не оценят вас выше джуниор разработчика. А сеньор должен глубоко понимать как устроена это базовая структура данных.
Я вычитал все платные статьи в медиуме, все хабр статьи, книги, доку и исходники, чтобы сделать эту статью. В ней мы разберемся:
Эта инфа точно пригодится вам в работе и на собеседованиях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Иван Воробей про будущее iOS в России, джунов и рынок рекламы / ЧТУК
Это не реклама и мне никто не платил
Это первое интервью за долгие годы, которое я посмотрел полностью. Ваня и Леша два человека за чьим контентом интересно следить, с крутыми установками и майндсетом. Их интервью вышло насыщенным и вайбовым, хоть минимально про техничку.
В нем обсуждают как сделать свое приложение, монетизацию, про джунов, собесы, кроссплатформу, SwiftUI, Астемира, как Иван заколлабился с Apple и всякие другие разные темы.
В следующем году на канале мы начнем тему монетизаций приложения и поэтому советую посмотреть этот видос.
Отдельно понравилась тема, что половина проектов, которые надо было переписывать от заказчиков на аутсорсе — были на SwiftUI и кроссплатформе. Это отличная демонстрация, что обещанные плюсы от технологий чаще становятся минусами
Очень разделяю любовь Ивана к продуктам Apple и прям присоединяюсь к словам напутствия джунам. Лучше и не скажешь
Это не реклама и мне никто не платил
Это первое интервью за долгие годы, которое я посмотрел полностью. Ваня и Леша два человека за чьим контентом интересно следить, с крутыми установками и майндсетом. Их интервью вышло насыщенным и вайбовым, хоть минимально про техничку.
В нем обсуждают как сделать свое приложение, монетизацию, про джунов, собесы, кроссплатформу, SwiftUI, Астемира, как Иван заколлабился с Apple и всякие другие разные темы.
В следующем году на канале мы начнем тему монетизаций приложения и поэтому советую посмотреть этот видос.
Отдельно понравилась тема, что половина проектов, которые надо было переписывать от заказчиков на аутсорсе — были на SwiftUI и кроссплатформе. Это отличная демонстрация, что обещанные плюсы от технологий чаще становятся минусами
Очень разделяю любовь Ивана к продуктам Apple и прям присоединяюсь к словам напутствия джунам. Лучше и не скажешь
YouTube
Иван Воробей про будущее iOS в России, джунов и рынок рекламы / ЧТУК
Полная версия видео
https://boosty.to/mobiledev/posts/8c6711a9-6dbc-405b-a983-11f241916efb?share=post_link
Apple удаляет iOS приложения из сторов, iOS-разработчиков массово увольняют из разных компаний, а по рынку ходят слухи, что все переходят на кроссплатформу.…
https://boosty.to/mobiledev/posts/8c6711a9-6dbc-405b-a983-11f241916efb?share=post_link
Apple удаляет iOS приложения из сторов, iOS-разработчиков массово увольняют из разных компаний, а по рынку ходят слухи, что все переходят на кроссплатформу.…
кста, главный навык, который я открыл для себя с чатгпт — это чтение чужого кода. Особенно это помогает с чтением открытых библиотек или исходников Apple.
Ты просто скидываешь ссылку на код и просишь объяснить что и за что отвечает. Очень удобно для понимания.
Понятное дело, что есть ошибки, но общая картина выстраивается хорошо
Ты просто скидываешь ссылку на код и просишь объяснить что и за что отвечает. Очень удобно для понимания.
Понятное дело, что есть ошибки, но общая картина выстраивается хорошо
Большая подборка вопросов и задач на хештаблицы
В догонку, большой статье с разбором кишков и не только про хештаблицы в Swift, сделал подборку вопросов и задач на эту тему. Гораздо лучше отталкиваться от практики и понимать для чего нужно знать всю эту на первый взгляд ненужную теорию
В подборке:
🟣 Какие структуры данных в Swift используют хештаблицы
🟣 Как Swift помогает решить проблему коллизий: Hashable, Equatable, hasher, hashValue
🟣 Решение задач в реальной практике и на собесах
🟣 Как сделать кастомную хештаблицу
💎 Получить доступ можно на бусти и в телеграмм.
В догонку, большой статье с разбором кишков и не только про хештаблицы в Swift, сделал подборку вопросов и задач на эту тему. Гораздо лучше отталкиваться от практики и понимать для чего нужно знать всю эту на первый взгляд ненужную теорию
В подборке:
Please open Telegram to view this post
VIEW IN TELEGRAM
Сертификаты после прохождения курсов — вредят
Составлять резюме и рассказывать о своем опыте — отдельный навык. Я против наглого обмана, но избавляться от лишнего и подчеркивать нужное — очень важно. Это как навыки конспектирования или презентации.
Мы это как-нибудь пройдем отдельно для подготовки к книге, возьмем даже интервью . Так как даже у меня было не мало ситуаций, когда я, менти или коллеги отлично проходили техничку, но слабо рассказывали о своем опыте. Вот и резюме это не только бумага для продажи рекрутеру, но и менеджеру.
В статье рассказывается:
- указание сертификатов после курсов снижает конверсию откликов
- образование Computer Sience дисциплине повышает
- рекрутеры смотрят на твою родословную и опыт в крупных компаниях сильно помогает в устройстве
Все это довольно очевидно, что многие смотрят на реальный опыт, а не суррогатный.
Составлять резюме и рассказывать о своем опыте — отдельный навык. Я против наглого обмана, но избавляться от лишнего и подчеркивать нужное — очень важно. Это как навыки конспектирования или презентации.
Мы это как-нибудь пройдем отдельно для подготовки к книге, возьмем даже интервью . Так как даже у меня было не мало ситуаций, когда я, менти или коллеги отлично проходили техничку, но слабо рассказывали о своем опыте. Вот и резюме это не только бумага для продажи рекрутеру, но и менеджеру.
В статье рассказывается:
- указание сертификатов после курсов снижает конверсию откликов
- образование Computer Sience дисциплине повышает
- рекрутеры смотрят на твою родословную и опыт в крупных компаниях сильно помогает в устройстве
Все это довольно очевидно, что многие смотрят на реальный опыт, а не суррогатный.
interviewing.io
Why you shouldn’t list certifications on LinkedIn
We ran the numbers, and they’re a clear negative signal. They’re also bad for the industry as a whole.
Сосредоточьтесь не на задаче, а на проблеме, стоящей за задачей
Мы продолжаем копать в сторону Software Engineer'инга.
Bruno Rocha из Spotify поднял популярную тему постановки задач. Как найти виноватого между инженером и продактом?
Многие неопытные или начинающие инженеры наивно думают, что каждая их задача должна быть идеально описана менеджером, тимлидом, старшим коллегой. А его роль только сделать так, как ему сказали.
Очевидно, что такие разработчики первые кандидаты на сокращения или на замену ИИ. Это критическая ошибка, которая никогда не позволит вырости до самостоятельного спеца высокого уровня.
Хороший инженер должен понимать проблему, которая стоит за задачей. И только после предлагать техническое решение. Почти все хорошие современные собесы сейчас оценивают этот навык:
🔘 в алгоритмах инженер должен найти спрятанные корнер кейсы
🔘 в систем дизайне собрать максимально требования перед проектированием
Хороший инженер должен быть не просто кодером, но и консультантом, который подсветит неэффективные решения.
Мы продолжаем копать в сторону Software Engineer'инга.
Bruno Rocha из Spotify поднял популярную тему постановки задач. Как найти виноватого между инженером и продактом?
Многие неопытные или начинающие инженеры наивно думают, что каждая их задача должна быть идеально описана менеджером, тимлидом, старшим коллегой. А его роль только сделать так, как ему сказали.
Очевидно, что такие разработчики первые кандидаты на сокращения или на замену ИИ. Это критическая ошибка, которая никогда не позволит вырости до самостоятельного спеца высокого уровня.
Хороший инженер должен понимать проблему, которая стоит за задачей. И только после предлагать техническое решение. Почти все хорошие современные собесы сейчас оценивают этот навык:
Хороший инженер должен быть не просто кодером, но и консультантом, который подсветит неэффективные решения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Новые форматы собесов System Design. Что не так с текущими собесами в снг?
Мы часто обсуждаем собесы в бигтехи и не только в чате. Спрашиваем у разрабов гугла, эпл, наших снг компаний. Сейчас жертвой стали популярные форматы system design'а и архитектуры на снг пространстве. В прошлом году их много кто ввел, отказываясь от теории и других задач, которые легко хакаются с чатгпт. Например, т-банк и альфа, вк, озон. Но в этом посте мы разберем почему текущий формат систем дизайна также легко хакается.
Сейчас многие процессы собесов выглядят так:
- созвон с рекрутером
- опциональный скрининг
- дают задачу на лайфкодинг, рефакторинг и проектирование
- финал
Прошел почти год и можно сказать об эффективности этого подхода. На мой взгляд(спойлер следующих интервью: не только на мой) в этой формуле много проблем:
🟣 систем дизайн не показывает все навыки. Есть множество очень сильных разработчиков с узкой специализацией, которые не понимают такой формат интервью. Они пишут компиляторы, изучают глубоко многопоточку, занимаются перфомансом. Ставить систем дизайн или рефакторинг, как обязательный навык для всех — ошибка, если хотите взять эксперта под конкретную функцию.
🟣 систем дизайн должен проводить сеньор. Судя по отзывам тех, кто проходил собесы в банки, огромная проблема текущего процесса — собесы проводят джуны или мидлы. Или эксперты, в чьем портфолио и насмотренности только пара проектов и знания одного языка. Скорее всего, у многих есть методичка или бадди, которые должны обучать проведению собесам. Но на практике это никогда не спасало от субьективных оценок и культурного разрыва опытного разраба с тем, кто только по слухам и пересказам работал с обсуждаемой темой.
🟣 текущий формат легко хакается. все эти рисования диаграм и кубиков с пояснениями запоминать еще проще, чем решать десяток задач. Достаточно пару человек, кто получил оффер и его модель уже будут копировать и повторять. Каждый собес должен хоть чем-то, но отличаться от предыдущего.
🟣 на систем дизайне нужно кодить. мне нравится подход в некоторых компаниях, где помимо рисования кубиков и стрелочек, нужно писать код ключевых сервисов и решать сложные задачи. Например, если это чат, то после верхнеуровневой схемы можно перейти к написанию кода для сервиса с синхронизацией сообщений. Здесь мы оцениваем также практическое владение инструментом, а не только теоретическое. Реальный разработчик должен много кодить для роста, а не только пересказывать статьи и записанные мок собесы.
🟣 задач должно быть больше. У некоторых компаний всего 3-4 задачи в базе, которые легко опять же сливаются всякими паровозиками и разбираются рейдами буквально за пару недель. Добавьте в базу 10-15 задач
🟣 минимализация повторов. В каждой задаче должно быть по 2-3 варианта для вариативности. Так сложнее зазубрить. Яндекс и FAANG'и также делает с алгоритмами. Вроде задача из литкода, но немного изменена. Это очень эффективная защита.
Мое же мнение такое: систем дизайн должен даваться также как раньше — только кандидатам на высокие грейды. Многие ушли от такой практики, потому что затянет процесс найма с поиском слотов для эксперта и отпугнет на дополнительные этапы. Но как я всегда говорю, что чем больше я смотрю на FAANG процессы, тем лучше понимаю их степень зрелости. Они просто не контрятся по эффективности и экономности.
Сливы им не страшны, где в базе лежит 1000 задач, которые рандомно даются. Если задача была замечена слитой, то ее резко заменяют. Не нужно много сил и энергии тратить на поддержку шаблонов, обучения инженеров и поиск специальных экспертов. Задачи а-ля литкод выполняют задачу найма лучше всего. Я уверен, что потихоньку мы тоже придем к таким собесам.
Ну а если вам не нравится подход и хочется изобрести велосипед, то нужно этот велосипед постоянно поддерживать. А не разок создать процесс и забыть о нем на год, два или три.
Мы часто обсуждаем собесы в бигтехи и не только в чате. Спрашиваем у разрабов гугла, эпл, наших снг компаний. Сейчас жертвой стали популярные форматы system design'а и архитектуры на снг пространстве. В прошлом году их много кто ввел, отказываясь от теории и других задач, которые легко хакаются с чатгпт. Например, т-банк и альфа, вк, озон. Но в этом посте мы разберем почему текущий формат систем дизайна также легко хакается.
Сейчас многие процессы собесов выглядят так:
- созвон с рекрутером
- опциональный скрининг
- дают задачу на лайфкодинг, рефакторинг и проектирование
- финал
Прошел почти год и можно сказать об эффективности этого подхода. На мой взгляд
Мое же мнение такое: систем дизайн должен даваться также как раньше — только кандидатам на высокие грейды. Многие ушли от такой практики, потому что затянет процесс найма с поиском слотов для эксперта и отпугнет на дополнительные этапы. Но как я всегда говорю, что чем больше я смотрю на FAANG процессы, тем лучше понимаю их степень зрелости. Они просто не контрятся по эффективности и экономности.
Сливы им не страшны, где в базе лежит 1000 задач, которые рандомно даются. Если задача была замечена слитой, то ее резко заменяют. Не нужно много сил и энергии тратить на поддержку шаблонов, обучения инженеров и поиск специальных экспертов. Задачи а-ля литкод выполняют задачу найма лучше всего. Я уверен, что потихоньку мы тоже придем к таким собесам.
Ну а если вам не нравится подход и хочется изобрести велосипед, то нужно этот велосипед постоянно поддерживать. А не разок создать процесс и забыть о нем на год, два или три.
Please open Telegram to view this post
VIEW IN TELEGRAM