Для тех, кто хочет побыстрее разобраться как устроен Combine. Наглядно можно потестить как работают различные операторы в формате игры.
https://apps.apple.com/ru/app/combine-operators/id1507756027?l=en
https://apps.apple.com/ru/app/combine-operators/id1507756027?l=en
🔥4
Зачастую, отвечать на вопросы эйчаров или менеджеров о своем опыте, ошибках, достижениях и прочем, сложнее, чем на технические. Практически все разработчики, с кем я общался, уделяют внимание hard skills и пренебрегают, так называемым behavioral interview. Оно нацелено на проверку soft skills. На мой взгляд, это хороший способ проверки именно сеньерности кандидата, и легкий путь вычислить, если он решил накрутить опыт)
Я и сам несколько раз проходил этот этап плохо, особенно на английском языке. Сейчас захотел прокачать свои навыки в прохождении именно этой части и основательно подготовиться.
Собрал первую часть потенциальных вопросов, которые можно услышать на интервью, и попытался подумать, как бы я на них отвечал. Хочу поделиться этим с вами. https://gist.github.com/vadim-chistiakov/d1b1bd251d8727b745d72c321c2e0027
Постараюсь подготовить следующую часть вопросов в ближайшее время.
Несколько инсайтов по теме:
◦ Постарайтесь выделять именно свои достижения, успехи и качества, а не команды/компании
◦ Не отвечайте односложно на все вопросы, старайтесь раскрыть тему, показывайте что рефлексировали и сделали выводы.
◦ Используйте STAR методологию при ответе
◦ При ответе на неудобные вопросы о своих неудачах, недостатках и слабостях старайтесь показать незначительную часть и как вы преодолели, победили и сделали выводы.
◦ Добавляйте названия компаний, проектов, чтобы ответы не выглядели общими и придуманными
Вопросы, предложения, конструктивная обратная связь приветствуется в комментариях или в личку)
Я и сам несколько раз проходил этот этап плохо, особенно на английском языке. Сейчас захотел прокачать свои навыки в прохождении именно этой части и основательно подготовиться.
Собрал первую часть потенциальных вопросов, которые можно услышать на интервью, и попытался подумать, как бы я на них отвечал. Хочу поделиться этим с вами. https://gist.github.com/vadim-chistiakov/d1b1bd251d8727b745d72c321c2e0027
Постараюсь подготовить следующую часть вопросов в ближайшее время.
Несколько инсайтов по теме:
◦ Постарайтесь выделять именно свои достижения, успехи и качества, а не команды/компании
◦ Не отвечайте односложно на все вопросы, старайтесь раскрыть тему, показывайте что рефлексировали и сделали выводы.
◦ Используйте STAR методологию при ответе
◦ При ответе на неудобные вопросы о своих неудачах, недостатках и слабостях старайтесь показать незначительную часть и как вы преодолели, победили и сделали выводы.
◦ Добавляйте названия компаний, проектов, чтобы ответы не выглядели общими и придуманными
Вопросы, предложения, конструктивная обратная связь приветствуется в комментариях или в личку)
Gist
Behavioural questions for software engineer
Behavioural questions for software engineer. GitHub Gist: instantly share code, notes, and snippets.
👍4🔥1
Вторая часть вопросов для поведенческого интервью. Здесь собрал вопросы, которые чаще всего слышал сам на собеседованиях, как в российские компании, так и в зарубежные.
Некоторые из них могут пересекаться с первой частью.
Главное на таких интервью транслировать "флаги" собеседующему. Ваша задача разрекламировать себя со всех сторон, а интервьюеру узнать о вашем позитивном опыте как можно больше.
Я бы рекомендовал каждому, вне зависимости от уровня, составить список из 15-20 вопросов/ответов и готовиться по нему. Если предстоящее интервью кажется особенным, (допустим это компания мечты) можно подогнать ответы под описание вакансии и проекта этой компании.
https://gist.github.com/vadim-chistiakov/7daf45b8ff9819ff799861d54c3891cb
Некоторые из них могут пересекаться с первой частью.
Главное на таких интервью транслировать "флаги" собеседующему. Ваша задача разрекламировать себя со всех сторон, а интервьюеру узнать о вашем позитивном опыте как можно больше.
Я бы рекомендовал каждому, вне зависимости от уровня, составить список из 15-20 вопросов/ответов и готовиться по нему. Если предстоящее интервью кажется особенным, (допустим это компания мечты) можно подогнать ответы под описание вакансии и проекта этой компании.
https://gist.github.com/vadim-chistiakov/7daf45b8ff9819ff799861d54c3891cb
Gist
Behavioural interview. Frequently questions
Behavioural interview. Frequently questions. GitHub Gist: instantly share code, notes, and snippets.
👍1🔥1
Неплохая, на мой взгляд, статья о том, как устроена память. Хорошо разобрана часть о Side Table. По большому счету, прикладного значения я в этом не вижу, но задушнить на интервью вполне могут. Полезна чисто для кругозора и углубленного понимания некоторых аспектов памяти в Свифт
https://habr.com/ru/companies/hh/articles/546856/
https://habr.com/ru/companies/hh/articles/546856/
Хабр
Память в Swift от 0 до 1
В этой статье мы рассмотрим принципы работы памяти в Swift и разберемся, как Swift располагает байты в памяти, как управляет памятью, и что из себя представляет жизненный цикл объектов. Содержание Что...
👍3🔥2❤1
Как составлять "рабочее" резюме?
Я знаю, что многие из вас готовятся к интервью и откликаются на вакансии и знают как часто приходят отказы еще на этапе отклика. Очень важно зацепить рекрутера именно своим резюме.
Хочу порекомендовать сайт https://www.overleaf.com/gallery/tagged/cv с готовыми шаблонами, он помог мне составить резюме.
Оно точно работает, я успел проверить его опытным путем) в РФ и на иностранном рынке труда, в том числе FAANG. Сейчас думаю поменять некоторые пункты, и постараться показать свои достижения и результаты выразительней.
Несколько рекомендаций, которые отмечают по составлению резюме:
1. Только одна страница - must have (Можно больше если вы гуру с 10+ лет опыта)
2. Таймлайн от последнего места работы к первому
3. Убрать нерелевантный или очень короткий опыт
4. Показывать, что получилось достичь, улучшить и к чему это привело тебя или компанию
5. Больше цифр - это все любят! "Улучшил метрику Х на 35%. Изменения Y увеличили Z в 3 раза и тд"
6. Автовыгруженное резюме с HH - red flag🚩 для многих компаний
7. Фото, возраст, пол для иностранных компаний лучше не указывать
Я знаю, что многие из вас готовятся к интервью и откликаются на вакансии и знают как часто приходят отказы еще на этапе отклика. Очень важно зацепить рекрутера именно своим резюме.
Хочу порекомендовать сайт https://www.overleaf.com/gallery/tagged/cv с готовыми шаблонами, он помог мне составить резюме.
Оно точно работает, я успел проверить его опытным путем) в РФ и на иностранном рынке труда, в том числе FAANG. Сейчас думаю поменять некоторые пункты, и постараться показать свои достижения и результаты выразительней.
Несколько рекомендаций, которые отмечают по составлению резюме:
1. Только одна страница - must have (Можно больше если вы гуру с 10+ лет опыта)
2. Таймлайн от последнего места работы к первому
3. Убрать нерелевантный или очень короткий опыт
4. Показывать, что получилось достичь, улучшить и к чему это привело тебя или компанию
5. Больше цифр - это все любят! "Улучшил метрику Х на 35%. Изменения Y увеличили Z в 3 раза и тд"
6. Автовыгруженное резюме с HH - red flag🚩 для многих компаний
7. Фото, возраст, пол для иностранных компаний лучше не указывать
Overleaf
Gallery - Templates, Examples and Articles written in LaTeX
An online LaTeX editor that’s easy to use. No installation, real-time collaboration, version control, hundreds of LaTeX templates, and more.
👍5❤2🔥1🤡1
HR Screening interview
Я уже писал о том, какие неудобные вопросы можно услышать от рекрутера или нанимающего менеджера. Чтобы показать свою вовлеченность в процесс интервью, узнать больше о позиции и понять, насколько вам подходит новая роль, необходимо задавать правильные вопросы и вам.
Подготовил список вопросов, которые я люблю спрашивать на интервью. Упор был сделан на поиск работы за рубежом, так как, на мой взгляд, это перспективней на данный момент. В том числе для меня, как не native speaker, это создает больше трудностей.
1. Is remote work an option for this position? - Это база. Многие мечтают зарабатывать доллары и евро, и чилить на дешевых островах (хотя таких уже и нет).
2. Does the company provide support for relocation and offer visa sponsorship? - Все-таки вы решили забустить карьеру и уехать в Долину.
3. What qualities and skills are you seeking in an ideal candidate for this role? Или What can distinguish a candidate as the most suitable for the company? - Если это первый этап интервью, дальше будет проще выстраивать диалог и подсвечивать нужные качества.
4. Could you walk me through the interview process for this position? - Сразу выясним, будут ли тестовые задания, которые никто не проверит, или 7 этапов душных алгоритмических собеседований.
5. How many employees are currently part of the iOS squad? - Для меня важно, чтобы я был не один в команде разработчик. Иначе у кого учиться и кому передавать свои знания?
6. Is this position newly created, or did someone leave the company? - Может и мне не стоит туда залетать вообще?
7. Why is the company seeking external candidates rather than promoting someone internally? - То же самое, что и предыдущий вопрос, только в другой руке). Больше мэтчится с позициями лидов. На мой взгляд, безопаснее повышать людей, а не нанимать с рынка.
8. What is the development process like at your company? Are there any specific methodologies or tools that the team uses? И туда же How do you ensure code quality and maintainability in development? - Проверить, вообще ли они слышали про процессы разработки или это стартап на коленках. Ответ может сказать много о зрелости и профессионализме команды.
9. Are there any particular challenges or upcoming projects that the team is currently facing? - Пролить чуть больше света на то, чем вам предстоит заниматься в ближайшее время. Может быть, вас зовут писать тесты и фиксить баги после команды говнорей-аутсорсеров.
10. Can you describe the company's approach to testing and releasing apps? - Мне это дает понимание о том, в каком темпе и с каким прессингом со стороны менеджмента команда существует.
11. Are there opportunities for professional growth and skill development within the company? - Наверное, базовый вопрос, больше для формальности, чтобы показать мотивацию и целеустремленность. Ответ в 9 из 10 случаев не соответствует реалиям по итогу.
Вот такой у меня список. Очевидно, что в процессе интервью могут возникнуть еще вопросы, или какие-то вопросы задавать не придется, так как представитель компании уже расскажет об этом. Пользуйтесь и пишите в комментариях, что вам важно узнать на интервью.
Больше статей на тему интервью можно найти на сайте https://www.themuse.com/advice/interviewing
PS: Как спрашивать о зарплате и выторговывать оффер послаще, думаю, написать отдельно."
#interview
Я уже писал о том, какие неудобные вопросы можно услышать от рекрутера или нанимающего менеджера. Чтобы показать свою вовлеченность в процесс интервью, узнать больше о позиции и понять, насколько вам подходит новая роль, необходимо задавать правильные вопросы и вам.
Подготовил список вопросов, которые я люблю спрашивать на интервью. Упор был сделан на поиск работы за рубежом, так как, на мой взгляд, это перспективней на данный момент. В том числе для меня, как не native speaker, это создает больше трудностей.
1. Is remote work an option for this position? - Это база. Многие мечтают зарабатывать доллары и евро, и чилить на дешевых островах (хотя таких уже и нет).
2. Does the company provide support for relocation and offer visa sponsorship? - Все-таки вы решили забустить карьеру и уехать в Долину.
3. What qualities and skills are you seeking in an ideal candidate for this role? Или What can distinguish a candidate as the most suitable for the company? - Если это первый этап интервью, дальше будет проще выстраивать диалог и подсвечивать нужные качества.
4. Could you walk me through the interview process for this position? - Сразу выясним, будут ли тестовые задания, которые никто не проверит, или 7 этапов душных алгоритмических собеседований.
5. How many employees are currently part of the iOS squad? - Для меня важно, чтобы я был не один в команде разработчик. Иначе у кого учиться и кому передавать свои знания?
6. Is this position newly created, or did someone leave the company? - Может и мне не стоит туда залетать вообще?
7. Why is the company seeking external candidates rather than promoting someone internally? - То же самое, что и предыдущий вопрос, только в другой руке). Больше мэтчится с позициями лидов. На мой взгляд, безопаснее повышать людей, а не нанимать с рынка.
8. What is the development process like at your company? Are there any specific methodologies or tools that the team uses? И туда же How do you ensure code quality and maintainability in development? - Проверить, вообще ли они слышали про процессы разработки или это стартап на коленках. Ответ может сказать много о зрелости и профессионализме команды.
9. Are there any particular challenges or upcoming projects that the team is currently facing? - Пролить чуть больше света на то, чем вам предстоит заниматься в ближайшее время. Может быть, вас зовут писать тесты и фиксить баги после команды говнорей-аутсорсеров.
10. Can you describe the company's approach to testing and releasing apps? - Мне это дает понимание о том, в каком темпе и с каким прессингом со стороны менеджмента команда существует.
11. Are there opportunities for professional growth and skill development within the company? - Наверное, базовый вопрос, больше для формальности, чтобы показать мотивацию и целеустремленность. Ответ в 9 из 10 случаев не соответствует реалиям по итогу.
Вот такой у меня список. Очевидно, что в процессе интервью могут возникнуть еще вопросы, или какие-то вопросы задавать не придется, так как представитель компании уже расскажет об этом. Пользуйтесь и пишите в комментариях, что вам важно узнать на интервью.
Больше статей на тему интервью можно найти на сайте https://www.themuse.com/advice/interviewing
PS: Как спрашивать о зарплате и выторговывать оффер послаще, думаю, написать отдельно."
#interview
The Muse
Interviewing
Get tips and tricks for answering tough questions, dressing appropriately, sending the perfect thank you note, and interviewing like a pro.
🔥3👍2👏2❤1
Пригласили рассказать о поиске работы за рубежом. Подкинули вам лайфхаки от экспертов с опытом в разных странах и международных компаниях. Смотрите, ставьте лайки)
https://www.youtube.com/live/EXUqWzDKDeo?feature=share
#interview
https://www.youtube.com/live/EXUqWzDKDeo?feature=share
#interview
YouTube
Как найти работу за границей? | Трудоустройство в международную компанию | AgileFluent + Solvery
#трудоустройство #работазаграницей #IT
Эфир про поиск работы за границей с менторами Solvery из международных компаний и основательницей AgileFluent Дарьей Шульгиной.
В первом эфире феста мок-интервью на английском языке AgileFluent и Solvery поговорим…
Эфир про поиск работы за границей с менторами Solvery из международных компаний и основательницей AgileFluent Дарьей Шульгиной.
В первом эфире феста мок-интервью на английском языке AgileFluent и Solvery поговорим…
🔥3👍1👏1🤡1
Я заметил, что людей прибавилось, и я незнаком со многими лично. Самое время представиться, как следует.
Меня зовут Чистяков Вадим, я занимаюсь iOS разработкой более 6 лет. Сейчас живу в Черногории в городе Будва. На данный момент работаю на позиции iOS Team Lead в компании Prequel.
Немного фактов обо мне:
- Работал в разных компаниях. Рад и очень благодарен этому опыту.
https://www.linkedin.com/in/vadim-chistiakov/
- Люблю развлекаться на литкоде, как душнила)
https://leetcode.com/Titaniys/
- Занимаюсь менторингом. Это одна из причин, почему я завел этот канал. Классно помогает прокачивать свои знания, в особенности soft skills.
https://vadim-chistiakov.github.io/services/
- В свободное время люблю путешествовать и пробовать новое. Побывал в 18 странах.
https://my.flightradar24.com/VadimChistiakov
- Катаюсь на сноуборде зимой, а летом на велике) Да и в целом люблю экстрим и активный отдых. Больше о мире моими глазами тут
https://instagram.com/vadim_chist
Меня зовут Чистяков Вадим, я занимаюсь iOS разработкой более 6 лет. Сейчас живу в Черногории в городе Будва. На данный момент работаю на позиции iOS Team Lead в компании Prequel.
Немного фактов обо мне:
- Работал в разных компаниях. Рад и очень благодарен этому опыту.
https://www.linkedin.com/in/vadim-chistiakov/
- Люблю развлекаться на литкоде, как душнила)
https://leetcode.com/Titaniys/
- Занимаюсь менторингом. Это одна из причин, почему я завел этот канал. Классно помогает прокачивать свои знания, в особенности soft skills.
https://vadim-chistiakov.github.io/services/
- В свободное время люблю путешествовать и пробовать новое. Побывал в 18 странах.
https://my.flightradar24.com/VadimChistiakov
- Катаюсь на сноуборде зимой, а летом на велике) Да и в целом люблю экстрим и активный отдых. Больше о мире моими глазами тут
https://instagram.com/vadim_chist
❤5👍4🔥3
Хочу упростить навигацию по каналу и обозначить темы, о которых мне интересно писать и размышлять.
1. Этот канал создавался, как помощник изучающим #swift и #ios в целом. Постараюсь фокусироваться на шеринг знаний в этих областях, как main stream канала.
2. Многие из вас в активном поиске новой работы или даже первой. Я уверен, что мой опыт в проведении и прохождении технических интервью будет релевантным. Топик - #interview #lookingforjob
3. Я долгое время хотел найти работу за рубежом и больше путешествовать. Поэтому хочу делиться своим опытом, как digital nomad и опытом переезда на постоянку в другую страну #relocate #remote #digitalnomad
4. Думаю, что так или иначе будут проскальзывать общие темы об #it и #programming через призму моего опыта и наблюдений #experience.
5. Все, что не попадет в обозначенные темы, но очень захочется запостить помечу #random
Чтобы получше узнать, что вам вообще интересно, запущу опросы. Не стесняйтесь голосовать они будут анонимны)
1. Этот канал создавался, как помощник изучающим #swift и #ios в целом. Постараюсь фокусироваться на шеринг знаний в этих областях, как main stream канала.
2. Многие из вас в активном поиске новой работы или даже первой. Я уверен, что мой опыт в проведении и прохождении технических интервью будет релевантным. Топик - #interview #lookingforjob
3. Я долгое время хотел найти работу за рубежом и больше путешествовать. Поэтому хочу делиться своим опытом, как digital nomad и опытом переезда на постоянку в другую страну #relocate #remote #digitalnomad
4. Думаю, что так или иначе будут проскальзывать общие темы об #it и #programming через призму моего опыта и наблюдений #experience.
5. Все, что не попадет в обозначенные темы, но очень захочется запостить помечу #random
Чтобы получше узнать, что вам вообще интересно, запущу опросы. Не стесняйтесь голосовать они будут анонимны)
🔥9👍2❤1
Провел mock interview для совместного проекта Solvery и AgileFluent. К сожалению, были проблемы с трансляцией и звук записался в плохом качестве. Ссылку на собес все равно оставлю, но рекомендовать к просмотру не буду)
https://www.youtube.com/live/o6jxnLg6tks?feature=share
Теоретические вопросы, которые успели обсудить, прилагаются. На некоторые можно дать лаконичный ответ, а другие предполагают развернутые ответы в зависимости от уровня кандидата.
Common questions:
• First of all, please, tell me about your background and experience?
• What are you looking for in the next role?
• What is your the greatest achievement as an employee?
Computer science and Algorithm complexity:
• Let discuss SOLID principles. Can you find any examples from standard swift libraries where principles were kept or violated?
• Can you give some examples of where singletons might be a good idea? (Examples from ios UIApplication or URLSession)
• What kind of collections we have in Swift?
• What is the complexity of main operations in them?
• What the difference between Set and OrderedSet?
• How does OrderedSet look like under the hood?
Swift and ios
• How would you explain protocol-oriented programming to a new Swift developer? What is the difference between OOP and POP?
• What steps would you follow to make a network request? (Back to main thread, Combine, Swift type result)
Memory handling
• What is the difference between value type and reference type?
• Why we need unowned if we have weak parameter?
• What is the autorelease and autorelease pool? Use cases?
• What is the side table?
UI layer
• What does view controller life-cycle look like?
• What is the difference between CALayer and UIView?
• Can you name any different CALayer subclasses?
• Why we have three similar methods layoutSubview, layoutIfNeeded and setNeedsLayout?
• How can we establish relationship between two horizontal labels in case when text doesn't fit the screen?
Если какие-то вопросы не понятны, можете спросить в комментариях
#lookingforjob #interview #ios #swift
https://www.youtube.com/live/o6jxnLg6tks?feature=share
Теоретические вопросы, которые успели обсудить, прилагаются. На некоторые можно дать лаконичный ответ, а другие предполагают развернутые ответы в зависимости от уровня кандидата.
Common questions:
• First of all, please, tell me about your background and experience?
• What are you looking for in the next role?
• What is your the greatest achievement as an employee?
Computer science and Algorithm complexity:
• Let discuss SOLID principles. Can you find any examples from standard swift libraries where principles were kept or violated?
• Can you give some examples of where singletons might be a good idea? (Examples from ios UIApplication or URLSession)
• What kind of collections we have in Swift?
• What is the complexity of main operations in them?
• What the difference between Set and OrderedSet?
• How does OrderedSet look like under the hood?
Swift and ios
• How would you explain protocol-oriented programming to a new Swift developer? What is the difference between OOP and POP?
• What steps would you follow to make a network request? (Back to main thread, Combine, Swift type result)
Memory handling
• What is the difference between value type and reference type?
• Why we need unowned if we have weak parameter?
• What is the autorelease and autorelease pool? Use cases?
• What is the side table?
UI layer
• What does view controller life-cycle look like?
• What is the difference between CALayer and UIView?
• Can you name any different CALayer subclasses?
• Why we have three similar methods layoutSubview, layoutIfNeeded and setNeedsLayout?
• How can we establish relationship between two horizontal labels in case when text doesn't fit the screen?
Если какие-то вопросы не понятны, можете спросить в комментариях
#lookingforjob #interview #ios #swift
YouTube
Моковое собеседование на iOS-разработчика в зарубежную компанию | Solvery + AgileFluent
Solvery совместно с AgileFluent и при поддержке сообщества Coffee&Code (https://t.me/coffeeCodeEverywhere) проведёт техническое собеседование на iOS-разработчика в международную компанию в прямом эфире! Присоединяйтесь, поддержите участника и узнайте, как…
🔥6👍3❤2
Stack vs Heap 👨💻
Базовый вопрос на любой уровень кандидата, но часто слышу невнятные ответы. Собрал полный ответ, который зачастую, хотят услышать на интервью:
Stack(Стек):
• Статичная память. Выделение происходит только во время компиляции.
• Стек имеет структуру данных LIFO (последний пришел – первый вышел)
• Очень быстрый доступ
• При вызове функции все локальные экземпляры этой функции помещаются в текущий стек. И как только функция завершит выполнение, все экземпляры будут удалены из стека.
• Данные, хранящиеся в стеке, находятся там только временно, пока функция не завершит работу и не вызовет автоматическое освобождение всей памяти в стеке.
• Каждая область действия (scope) в вашем приложении (например, внутреннее содержимое метода) будет предоставлять необходимый объем памяти.
• Cтек не используется с объектами, которые изменяют размер.
• Каждый поток имеет собственный стек
• В стеках хранятся типы значений(value type), такие как структуры и перечисления, скаляры.
• Если размер вашего типа значения может быть определен во время компиляции или если ваш тип значения не содержит рекурсивно/не содержит ссылочного типа, тогда потребуется выделение стека.
• Value type не увеличивает счетчик ссылок. Но если ваш value type содержит внутренний reference typy, для его копирования потребуется вместо этого увеличить счетчик ссылок его дочерних элементов.
Heap(Куча):
• Динамическое распределение памяти и распределение происходит во время выполнения.
• К значениям можно обращаться в любое время через адрес памяти.
• Нет ограничений на объем памяти
• Доступ к объектам медленнее чем на стеке
• Когда процесс запрашивает определенный объем памяти, куча ищет адрес памяти, удовлетворяющий этому запросу, и возвращает его процессу.
• Когда память больше не используется, процесс должен сказать куче освободить этот раздел памяти.
• Требуется потокобезопасность.
• Куча доступна всем потокам
• Если размер вашего типа значения(value type) не может быть определен во время компиляции (из-за протокола/дженерика) или если ваш value type рекурсивно содержит/содержится внутри ссылочного типа (помните, что замыкания также являются ссылочными типами), тогда потребуется выделение кучи.
• Классы хранятся в динамической памяти.
Выделение кучи медленнее, чем выделение стека, не только из-за более сложной структуры данных — оно также требует безопасности потоков. Каждый поток имеет свой собственный стек, но куча используется совместно всеми, что требует синхронизации.
#interview #ios #swift
Базовый вопрос на любой уровень кандидата, но часто слышу невнятные ответы. Собрал полный ответ, который зачастую, хотят услышать на интервью:
Stack(Стек):
• Статичная память. Выделение происходит только во время компиляции.
• Стек имеет структуру данных LIFO (последний пришел – первый вышел)
• Очень быстрый доступ
• При вызове функции все локальные экземпляры этой функции помещаются в текущий стек. И как только функция завершит выполнение, все экземпляры будут удалены из стека.
• Данные, хранящиеся в стеке, находятся там только временно, пока функция не завершит работу и не вызовет автоматическое освобождение всей памяти в стеке.
• Каждая область действия (scope) в вашем приложении (например, внутреннее содержимое метода) будет предоставлять необходимый объем памяти.
• Cтек не используется с объектами, которые изменяют размер.
• Каждый поток имеет собственный стек
• В стеках хранятся типы значений(value type), такие как структуры и перечисления, скаляры.
• Если размер вашего типа значения может быть определен во время компиляции или если ваш тип значения не содержит рекурсивно/не содержит ссылочного типа, тогда потребуется выделение стека.
• Value type не увеличивает счетчик ссылок. Но если ваш value type содержит внутренний reference typy, для его копирования потребуется вместо этого увеличить счетчик ссылок его дочерних элементов.
Heap(Куча):
• Динамическое распределение памяти и распределение происходит во время выполнения.
• К значениям можно обращаться в любое время через адрес памяти.
• Нет ограничений на объем памяти
• Доступ к объектам медленнее чем на стеке
• Когда процесс запрашивает определенный объем памяти, куча ищет адрес памяти, удовлетворяющий этому запросу, и возвращает его процессу.
• Когда память больше не используется, процесс должен сказать куче освободить этот раздел памяти.
• Требуется потокобезопасность.
• Куча доступна всем потокам
• Если размер вашего типа значения(value type) не может быть определен во время компиляции (из-за протокола/дженерика) или если ваш value type рекурсивно содержит/содержится внутри ссылочного типа (помните, что замыкания также являются ссылочными типами), тогда потребуется выделение кучи.
• Классы хранятся в динамической памяти.
Выделение кучи медленнее, чем выделение стека, не только из-за более сложной структуры данных — оно также требует безопасности потоков. Каждый поток имеет свой собственный стек, но куча используется совместно всеми, что требует синхронизации.
#interview #ios #swift
👍15👏2❤1
Что хотелось бы чаще видеть в канале?
Anonymous Poll
37%
Истории из моего опыта
31%
Поиск работы за рубежом
63%
Разборы вопросов с собесов
42%
Ссылки на интересные статьи об IT/iOS/Swift etc
25%
Разработка и IT в целом
🔥3❤1
❓ OOP vs POP
И так, продолжаю рубрику - батл #versus
Объектно-ориентированное программирование (ООП) и протокольно-ориентированное программирование (POP) представляют различные подходы к структурированию и проектированию кода. Вот некоторые сходства и различия между ними, которые стоит упоминуть, отвечая на такой вопрос:
Сходства:
✅ Оба подхода стремятся к абстракции и моделированию реального мира с помощью объектов и их взаимодействия.
✅ И ООП, и POP позволяют использовать полиморфизм для работы с разными типами данных, обрабатывая их через общий интерфейс.
✅ Оба подхода поддерживают концепцию инкапсуляции, позволяющую скрыть внутренние детали реализации и предоставить доступ только к необходимой функциональности.
Различия:
⚠️ ООП сосредоточено на использовании классов и наследования для организации кода. Классы могут наследовать свойства и методы от других классов и создавать иерархию наследования. В POP используются протоколы вместо классов для определения требований к функциональности.
⚠️ Наследование, может привести к сложным иерархиям классов и проблемам с тесной связностью. В особенности, множественного наследования (отсутствует в Swift). В POP используется композиция, где типы состоят из более специализированных компонентов через соответствие (conform) протоколам, обеспечивая более гибкую и модульную организацию кода.
⚠️ В ООП функциональность определяется внутри классов и их методов. В POP функциональность определяется через протоколы. Протоколы могут иметь требования к методам и свойствам, и типы должны реализовать эти требования.
⚠️ В POP протоколы позволяют использовать расширения протоколов для предоставления реализации методов по умолчанию. Это делает код более гибким и легким для расширения новыми функциями или высичляемыми свойствами. В ООП расширение функциональности класса может быть достигнуто через наследование или создание подклассов.
Какой подход выбрать зависит от требований и конкретной ситуации. В некоторых случаях ООП может быть предпочтительным, особенно если требуется сильная связь между объектами и наследование функциональности. В других случаях POP может предоставить более гибкую и модульную организацию кода с помощью протоколов и композиции. Apple транслирует в своих библиотеках именно POP, поэтому при разработке приложений на Swift он используется чаще.
#interview #swift #ios
И так, продолжаю рубрику - батл #versus
Объектно-ориентированное программирование (ООП) и протокольно-ориентированное программирование (POP) представляют различные подходы к структурированию и проектированию кода. Вот некоторые сходства и различия между ними, которые стоит упоминуть, отвечая на такой вопрос:
Сходства:
✅ Оба подхода стремятся к абстракции и моделированию реального мира с помощью объектов и их взаимодействия.
✅ И ООП, и POP позволяют использовать полиморфизм для работы с разными типами данных, обрабатывая их через общий интерфейс.
✅ Оба подхода поддерживают концепцию инкапсуляции, позволяющую скрыть внутренние детали реализации и предоставить доступ только к необходимой функциональности.
Различия:
⚠️ ООП сосредоточено на использовании классов и наследования для организации кода. Классы могут наследовать свойства и методы от других классов и создавать иерархию наследования. В POP используются протоколы вместо классов для определения требований к функциональности.
⚠️ Наследование, может привести к сложным иерархиям классов и проблемам с тесной связностью. В особенности, множественного наследования (отсутствует в Swift). В POP используется композиция, где типы состоят из более специализированных компонентов через соответствие (conform) протоколам, обеспечивая более гибкую и модульную организацию кода.
⚠️ В ООП функциональность определяется внутри классов и их методов. В POP функциональность определяется через протоколы. Протоколы могут иметь требования к методам и свойствам, и типы должны реализовать эти требования.
⚠️ В POP протоколы позволяют использовать расширения протоколов для предоставления реализации методов по умолчанию. Это делает код более гибким и легким для расширения новыми функциями или высичляемыми свойствами. В ООП расширение функциональности класса может быть достигнуто через наследование или создание подклассов.
Какой подход выбрать зависит от требований и конкретной ситуации. В некоторых случаях ООП может быть предпочтительным, особенно если требуется сильная связь между объектами и наследование функциональности. В других случаях POP может предоставить более гибкую и модульную организацию кода с помощью протоколов и композиции. Apple транслирует в своих библиотеках именно POP, поэтому при разработке приложений на Swift он используется чаще.
#interview #swift #ios
🔥11❤3👌2
Задай свой вопрос!
Мы с коллегой решили запустить канал, где будем публиковать ответы на вопросы по iOS разработке)
Если StackOverflow или ChatGPT не смог вам помочь, то обращайтесь к нам.
https://t.me/iAskiOS
Мы с коллегой решили запустить канал, где будем публиковать ответы на вопросы по iOS разработке)
Если StackOverflow или ChatGPT не смог вам помочь, то обращайтесь к нам.
https://t.me/iAskiOS
🔥5