HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>15 дек 2023</li>
2 <ul><li>15 дек 2023</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Чтобы быстрее получить оффер, новичкам стоит осваивать навыки мидл-уровня, считает Агил Гаджиев. Оглашаем весь список.</p>
4 </ul><p>Чтобы быстрее получить оффер, новичкам стоит осваивать навыки мидл-уровня, считает Агил Гаджиев. Оглашаем весь список.</p>
5 <p>Иллюстрация: freepik / rawpixel / Freepik / X Wen / Michal Franczak / Unsplash / Apple Inc / Дима Руденок для Skillbox Media</p>
5 <p>Иллюстрация: freepik / rawpixel / Freepik / X Wen / Michal Franczak / Unsplash / Apple Inc / Дима Руденок для Skillbox Media</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
7 <p><strong>Об эксперте</strong></p>
7 <p><strong>Об эксперте</strong></p>
8 <p>Senior iOS-разработчик в диджитал-студии Kotelov</p>
8 <p>Senior iOS-разработчик в диджитал-студии Kotelov</p>
9 <p>Привет, меня зовут Агил Гаджиев, мне 22 года, я старший iOS-разработчик в компании Kotelov. В этой статье помогу ответить на вопросы джуна, который ищет первую работу в iOS-разработке. Расскажу, как оформить резюме, стоит ли накручивать опыт работы, а главное - на какие темы стоит делать упор при подготовке, чтобы выделиться на фоне других кандидатов.</p>
9 <p>Привет, меня зовут Агил Гаджиев, мне 22 года, я старший iOS-разработчик в компании Kotelov. В этой статье помогу ответить на вопросы джуна, который ищет первую работу в iOS-разработке. Расскажу, как оформить резюме, стоит ли накручивать опыт работы, а главное - на какие темы стоит делать упор при подготовке, чтобы выделиться на фоне других кандидатов.</p>
10 <p>iOS-разработка - это не что-то недосягаемое. Вот что я советую для начала.</p>
10 <p>iOS-разработка - это не что-то недосягаемое. Вот что я советую для начала.</p>
11 <p><strong>Освойте базу.</strong>Не тратьте время на поиск идеального курса или программы - изучить азы можно и по бесплатным ресурсам. Например, для знакомства со Swift хорошо подойдут ролики на канале<a>The Swift Developers</a>, также можно почитать<a>стэнфордские курсы</a>. Не стоит забывать и про документацию Apple - она на английском, но есть хороший перевод на <a>swiftbook.ru</a>.</p>
11 <p><strong>Освойте базу.</strong>Не тратьте время на поиск идеального курса или программы - изучить азы можно и по бесплатным ресурсам. Например, для знакомства со Swift хорошо подойдут ролики на канале<a>The Swift Developers</a>, также можно почитать<a>стэнфордские курсы</a>. Не стоит забывать и про документацию Apple - она на английском, но есть хороший перевод на <a>swiftbook.ru</a>.</p>
12 <p><strong>Создайте пет-проект.</strong>Это поможет разложить знания в голове по полочкам. Можно взять банальную идею в духе трекера задач, парсера новостей или счётчика калорий, можно выдумать что-то своё. В целом на первом проекте можно сильно не оригинальничать, главное - набить руку в написании кода.</p>
12 <p><strong>Создайте пет-проект.</strong>Это поможет разложить знания в голове по полочкам. Можно взять банальную идею в духе трекера задач, парсера новостей или счётчика калорий, можно выдумать что-то своё. В целом на первом проекте можно сильно не оригинальничать, главное - набить руку в написании кода.</p>
13 <p><strong>Изучите теорию.</strong>Под теорией я понимаю темы, которые обязательно будут поднимать на техническом собеседовании и без знания которых в принципе невозможна работа даже на стартовых позициях. Что это за темы и где их изучать, расскажу далее в статье.</p>
13 <p><strong>Изучите теорию.</strong>Под теорией я понимаю темы, которые обязательно будут поднимать на техническом собеседовании и без знания которых в принципе невозможна работа даже на стартовых позициях. Что это за темы и где их изучать, расскажу далее в статье.</p>
14 <p>Готовиться можно самостоятельно, но я советую найти ментора на пару месяцев - это поможет не сбиться с пути и избежать банальных ошибок, которые совершают все джуны. Это не значит, что вы не сможете подготовиться сами, но с ментором обучение пройдёт быстрее и проще.</p>
14 <p>Готовиться можно самостоятельно, но я советую найти ментора на пару месяцев - это поможет не сбиться с пути и избежать банальных ошибок, которые совершают все джуны. Это не значит, что вы не сможете подготовиться сами, но с ментором обучение пройдёт быстрее и проще.</p>
15 <p>Составил список того, что нужно знать начинающему iOS-разработчику, чтобы гарантированно пройти техническое собеседование.</p>
15 <p>Составил список того, что нужно знать начинающему iOS-разработчику, чтобы гарантированно пройти техническое собеседование.</p>
16 <p><strong>Сразу оговоримся</strong>: вы не должны знать всё, что написано ниже, на 100%. Это знания и навыки идеального кандидата в идеальном мире: скорее всего, требования будут меняться в зависимости от заказчика. Но это те темы, благодаря которым вы сможете выделиться среди сотен других джунов.</p>
16 <p><strong>Сразу оговоримся</strong>: вы не должны знать всё, что написано ниже, на 100%. Это знания и навыки идеального кандидата в идеальном мире: скорее всего, требования будут меняться в зависимости от заказчика. Но это те темы, благодаря которым вы сможете выделиться среди сотен других джунов.</p>
17 <p>Управление памятью - частая тема на интервью. Ваша цель - показать, что вы не просто знаете, что это такое, но и умеете применять на практике.</p>
17 <p>Управление памятью - частая тема на интервью. Ваша цель - показать, что вы не просто знаете, что это такое, но и умеете применять на практике.</p>
18 <p>Да, с одной стороны, джун вроде бы не должен знать, что ARC делает под капотом. С другой, понимание моментов, о которых обычно спрашивают только мидлов, поможет продать себя на собеседовании дороже.</p>
18 <p>Да, с одной стороны, джун вроде бы не должен знать, что ARC делает под капотом. С другой, понимание моментов, о которых обычно спрашивают только мидлов, поможет продать себя на собеседовании дороже.</p>
19 <p>Что нужно знать:</p>
19 <p>Что нужно знать:</p>
20 <ul><li><a>виды ссылок</a>: weak, unowned, strong;</li>
20 <ul><li><a>виды ссылок</a>: weak, unowned, strong;</li>
21 <li>как объект<a>держится</a>в памяти, когда он удаляется;</li>
21 <li>как объект<a>держится</a>в памяти, когда он удаляется;</li>
22 <li>что такое<a>счётчик ссылок</a>;</li>
22 <li>что такое<a>счётчик ссылок</a>;</li>
23 <li>как решить проблему retain cycle.</li>
23 <li>как решить проблему retain cycle.</li>
24 </ul><p>Скорее всего, вас спросят про отличие слабых (weak) ссылок от безымянных (unowned). В редких случаях разговор может зайти и про<a>боковые таблицы</a>(side table) - если сможете объяснить, зачем этот механизм добавили в Swift, выгодно себя покажете.</p>
24 </ul><p>Скорее всего, вас спросят про отличие слабых (weak) ссылок от безымянных (unowned). В редких случаях разговор может зайти и про<a>боковые таблицы</a>(side table) - если сможете объяснить, зачем этот механизм добавили в Swift, выгодно себя покажете.</p>
25 <p><strong>Что почитать по теме</strong>: ответы на большую часть вопросов можно найти в <a>этой статье на "Хабре"</a>. Но что-то всё равно придётся погуглить самостоятельно.</p>
25 <p><strong>Что почитать по теме</strong>: ответы на большую часть вопросов можно найти в <a>этой статье на "Хабре"</a>. Но что-то всё равно придётся погуглить самостоятельно.</p>
26 <p>На этой теме можно набрать много дополнительных баллов, а материалов в Сети - предостаточно. Вот вкратце, что нужно знать:</p>
26 <p>На этой теме можно набрать много дополнительных баллов, а материалов в Сети - предостаточно. Вот вкратце, что нужно знать:</p>
27 <ul><li><a>многопоточность</a>, асинхронность, поток, процесс. Насчёт последних двух спрашивают редко, но лучше один раз выучить и больше к этому не возвращаться - к тому же это не очень сложно;</li>
27 <ul><li><a>многопоточность</a>, асинхронность, поток, процесс. Насчёт последних двух спрашивают редко, но лучше один раз выучить и больше к этому не возвращаться - к тому же это не очень сложно;</li>
28 <li><a>очередь в рамках GCD</a>, отличие от потока;</li>
28 <li><a>очередь в рамках GCD</a>, отличие от потока;</li>
29 <li>типы очередей в GCD;</li>
29 <li>типы очередей в GCD;</li>
30 <li>Класс обслуживания качества<a>QoS</a>: понимать, когда и зачем они используются;</li>
30 <li>Класс обслуживания качества<a>QoS</a>: понимать, когда и зачем они используются;</li>
31 <li><a>проблемы многопоточности</a>: их много, но хватит трёх основных - deadlock, race condition и priority inversion. Нужно понимать, когда эти проблемы возникают, и уметь их решать;</li>
31 <li><a>проблемы многопоточности</a>: их много, но хватит трёх основных - deadlock, race condition и priority inversion. Нужно понимать, когда эти проблемы возникают, и уметь их решать;</li>
32 <li><a>потокобезопасность</a>и способы синхронизации в iOS (<a>барьеры</a>,<a>семафоры</a>,<a>мьютексы</a> - их больше, но этого должно хватить);</li>
32 <li><a>потокобезопасность</a>и способы синхронизации в iOS (<a>барьеры</a>,<a>семафоры</a>,<a>мьютексы</a> - их больше, но этого должно хватить);</li>
33 <li><a>DispatchGroup</a>,<a>DispatchWorkItem</a>и зачем они нужны.</li>
33 <li><a>DispatchGroup</a>,<a>DispatchWorkItem</a>и зачем они нужны.</li>
34 </ul><p><strong>Что почитать по теме:</strong>статьи на "Хабре" про многопоточность:<a>часть 1</a>и <a>часть 2</a>.</p>
34 </ul><p><strong>Что почитать по теме:</strong>статьи на "Хабре" про многопоточность:<a>часть 1</a>и <a>часть 2</a>.</p>
35 <p>Несмотря на то что Apple плавно переводит разработку на SwiftUI, большая часть приложений всё ещё использует<a>UIKit</a> - соответственно, и вакансий, где требуется знание этого фреймворка, значительно больше.</p>
35 <p>Несмотря на то что Apple плавно переводит разработку на SwiftUI, большая часть приложений всё ещё использует<a>UIKit</a> - соответственно, и вакансий, где требуется знание этого фреймворка, значительно больше.</p>
36 <p>Вот какие темы следует изучить:</p>
36 <p>Вот какие темы следует изучить:</p>
37 <ul><li><a>жизненный цикл ViewController</a>;</li>
37 <ul><li><a>жизненный цикл ViewController</a>;</li>
38 <li>как работает<a>Auto Layout</a>;</li>
38 <li>как работает<a>Auto Layout</a>;</li>
39 <li>как верстать экраны кодом;</li>
39 <li>как верстать экраны кодом;</li>
40 <li><a>TableView</a>и <a>CollectionView</a>.</li>
40 <li><a>TableView</a>и <a>CollectionView</a>.</li>
41 </ul><ul><li><a><strong>SOLID</strong></a>:<strong></strong>расшифровать, что означает каждая буква, привести примеры.</li>
41 </ul><ul><li><a><strong>SOLID</strong></a>:<strong></strong>расшифровать, что означает каждая буква, привести примеры.</li>
42 </ul><ul><li><a><strong>ООП</strong></a>: рассказать обо всех концепциях, привести примеры.</li>
42 </ul><ul><li><a><strong>ООП</strong></a>: рассказать обо всех концепциях, привести примеры.</li>
43 <li><a><strong>Типы Value vs Reference</strong></a>:<strong></strong>понимать, какие типы относятся к Value, а какие к - Reference; что хранится на куче, а что на стеке, а также уметь приводить примеры исключений из этих правил.</li>
43 <li><a><strong>Типы Value vs Reference</strong></a>:<strong></strong>понимать, какие типы относятся к Value, а какие к - Reference; что хранится на куче, а что на стеке, а также уметь приводить примеры исключений из этих правил.</li>
44 <li><a><strong>Структуры против классов</strong></a>:<strong></strong>уметь называть все различия.</li>
44 <li><a><strong>Структуры против классов</strong></a>:<strong></strong>уметь называть все различия.</li>
45 <li><a><strong>Copy on write</strong></a>: что это, зачем это нужно, какие типы поддерживают по умолчанию и как этот принцип можно реализовать самому.</li>
45 <li><a><strong>Copy on write</strong></a>: что это, зачем это нужно, какие типы поддерживают по умолчанию и как этот принцип можно реализовать самому.</li>
46 <li><a><strong>hitTest</strong></a>:<strong></strong>раньше у джунов не спрашивали про обработку нажатий, но теперь и эта тема начала встречаться на собеседованиях. Нелишним будет разобраться, как работает пропуск нажатий и для чего нужен метод<a>point (inside: with:)</a>.</li>
46 <li><a><strong>hitTest</strong></a>:<strong></strong>раньше у джунов не спрашивали про обработку нажатий, но теперь и эта тема начала встречаться на собеседованиях. Нелишним будет разобраться, как работает пропуск нажатий и для чего нужен метод<a>point (inside: with:)</a>.</li>
47 <li><a><strong>Диспетчеризация</strong></a>: что это, какие виды диспетчеризации есть в Swift.</li>
47 <li><a><strong>Диспетчеризация</strong></a>: что это, какие виды диспетчеризации есть в Swift.</li>
48 <li><strong>Базовые архитектурные</strong><a><strong>паттерны и алгоритмы</strong></a>: понимать, как устроены MVP, MVC, MVVM, уметь называть их сходства и различия.</li>
48 <li><strong>Базовые архитектурные</strong><a><strong>паттерны и алгоритмы</strong></a>: понимать, как устроены MVP, MVC, MVVM, уметь называть их сходства и различия.</li>
49 </ul><p>Не буду поднимать тему правильного оформления резюме - это уже сделали миллион раз до меня, но дам несколько советов.</p>
49 </ul><p>Не буду поднимать тему правильного оформления резюме - это уже сделали миллион раз до меня, но дам несколько советов.</p>
50 <p><strong>Указывайте достижения, а не процесс.</strong>Вместо "делал, разрабатывал, программировал" лучше писать "создал, реализовал, придумал, разработал". Всем важно видеть итоговый результат работы. Идеально, если результат можно изменить в цифрах - например: "Ускорил загрузку экрана на N%".</p>
50 <p><strong>Указывайте достижения, а не процесс.</strong>Вместо "делал, разрабатывал, программировал" лучше писать "создал, реализовал, придумал, разработал". Всем важно видеть итоговый результат работы. Идеально, если результат можно изменить в цифрах - например: "Ускорил загрузку экрана на N%".</p>
51 <p><strong>Рассказывайте о пет-проектах.</strong>Если ищете первую работу, обязательно указывайте ваши пет-проекты, но не оставляйте ссылки на недоделанные работы. Пет-проекты храните на GitHub.</p>
51 <p><strong>Рассказывайте о пет-проектах.</strong>Если ищете первую работу, обязательно указывайте ваши пет-проекты, но не оставляйте ссылки на недоделанные работы. Пет-проекты храните на GitHub.</p>
52 <p><strong>Пишите сопроводительные письма.</strong>Вы же не хотите отсеяться из-за того, что компания рассматривает резюме только с сопроводительными письмами? Но не стоит тратить на это слишком много времени - составьте парочку хороших шаблонов и меняйте 1-2 абзаца для каждой компании.</p>
52 <p><strong>Пишите сопроводительные письма.</strong>Вы же не хотите отсеяться из-за того, что компания рассматривает резюме только с сопроводительными письмами? Но не стоит тратить на это слишком много времени - составьте парочку хороших шаблонов и меняйте 1-2 абзаца для каждой компании.</p>
53 <p>Холиварная тема, поэтому рассмотрим возможные плюсы и минусы.</p>
53 <p>Холиварная тема, поэтому рассмотрим возможные плюсы и минусы.</p>
54 <p>На рынке не так много -вакансий для джуниоров, поэтому многие накручивают или округляют опыт, чтобы привлечь рекрутеров. Не считаю это серьёзным обманом, потому что всё вскроется на этапе собеседования: если вы не подходите, то не пройдёте. А если вас взяли, значит, навыков у вас достаточно, чтобы покрыть недостаток опыта. Поэтому, если вы устали от того, что ваше резюме не замечают, можно добавить немного стажа, а на собеседование прийти суперподготовленным, чтобы подтвердить ваш опыт.</p>
54 <p>На рынке не так много -вакансий для джуниоров, поэтому многие накручивают или округляют опыт, чтобы привлечь рекрутеров. Не считаю это серьёзным обманом, потому что всё вскроется на этапе собеседования: если вы не подходите, то не пройдёте. А если вас взяли, значит, навыков у вас достаточно, чтобы покрыть недостаток опыта. Поэтому, если вы устали от того, что ваше резюме не замечают, можно добавить немного стажа, а на собеседование прийти суперподготовленным, чтобы подтвердить ваш опыт.</p>
55 <p>В теории, если накрутить сразу несколько лет опыта, можно подаваться сразу на мидла. Но я не рекомендую новичкам этого делать, потому что так вы лишаете себя прелестей позиции джуниора, где можно получать опыт, задавать вопросы без страха и лишней ответственности, узнавать новое и расти.</p>
55 <p>В теории, если накрутить сразу несколько лет опыта, можно подаваться сразу на мидла. Но я не рекомендую новичкам этого делать, потому что так вы лишаете себя прелестей позиции джуниора, где можно получать опыт, задавать вопросы без страха и лишней ответственности, узнавать новое и расти.</p>
56 <p>Даже если вы сможете сразу устроиться мидлом, вам придётся пахать по 10 часов в день, чтобы удержаться, - и не факт, что получится. Я советую более спокойный путь, но если вы уверены в себе и у вас уже идёт десятый пет-проект, а вы всё ещё не работаете - то вперёд.</p>
56 <p>Даже если вы сможете сразу устроиться мидлом, вам придётся пахать по 10 часов в день, чтобы удержаться, - и не факт, что получится. Я советую более спокойный путь, но если вы уверены в себе и у вас уже идёт десятый пет-проект, а вы всё ещё не работаете - то вперёд.</p>
57 <p>Если подытожить, не вижу ничего предосудительного в накручивании и округлении опыта до полугода, чтобы привлечь внимание к резюме. Но не советую добавлять несколько лет работы для мидла, чтобы не проскакивать этап джуниора и развиваться спокойно, если у вас есть такая возможность.</p>
57 <p>Если подытожить, не вижу ничего предосудительного в накручивании и округлении опыта до полугода, чтобы привлечь внимание к резюме. Но не советую добавлять несколько лет работы для мидла, чтобы не проскакивать этап джуниора и развиваться спокойно, если у вас есть такая возможность.</p>
58 <p>Ментор нужен не всем: практически любой технологии можно научиться самому, потратив какое-то время. Здесь я лишь расскажу, чем менторство поможет вам на пути к первой работе:</p>
58 <p>Ментор нужен не всем: практически любой технологии можно научиться самому, потратив какое-то время. Здесь я лишь расскажу, чем менторство поможет вам на пути к первой работе:</p>
59 <ul><li><strong>Контроль.</strong>Многим нужен дополнительный пинок, чтобы чем-то заниматься, - ментор с этой функцией идеально справляется.</li>
59 <ul><li><strong>Контроль.</strong>Многим нужен дополнительный пинок, чтобы чем-то заниматься, - ментор с этой функцией идеально справляется.</li>
60 <li><strong>Сокращение времени обучения.</strong>Ментор сможет сразу сказать, что вам нужно учить, а что отложить. Хороший ментор - такой, который не просто скидывает ссылки на материалы, а разбирает вопросы с нуля до уровня собеседования.</li>
60 <li><strong>Сокращение времени обучения.</strong>Ментор сможет сразу сказать, что вам нужно учить, а что отложить. Хороший ментор - такой, который не просто скидывает ссылки на материалы, а разбирает вопросы с нуля до уровня собеседования.</li>
61 <li><strong>Поддержка.</strong>У вас всегда будет человек, к которому можно обратиться за помощью, даже в свободное от занятий время. На первых этапах бывают затыки на несколько часов, которые человек с опытом решил бы за пару минут, - в этом случае можно спросить ментора.</li>
61 <li><strong>Поддержка.</strong>У вас всегда будет человек, к которому можно обратиться за помощью, даже в свободное от занятий время. На первых этапах бывают затыки на несколько часов, которые человек с опытом решил бы за пару минут, - в этом случае можно спросить ментора.</li>
62 <li><strong>Индивидуальный подход.</strong>Менторство подразумевает составление программы именно под ваши нужды, с учётом ваших способностей. Выстроенная таким образом система обучения помогает не забросить занятия при первой же трудности.</li>
62 <li><strong>Индивидуальный подход.</strong>Менторство подразумевает составление программы именно под ваши нужды, с учётом ваших способностей. Выстроенная таким образом система обучения помогает не забросить занятия при первой же трудности.</li>
63 </ul><p>Минус только в том, что чаще всего менторство стоит денег. Но с первой же айтишной зарплаты можно все эти расходы покрыть. Поэтому каждый принимает решение сам: двигаться самостоятельно или обратиться за помощью.</p>
63 </ul><p>Минус только в том, что чаще всего менторство стоит денег. Но с первой же айтишной зарплаты можно все эти расходы покрыть. Поэтому каждый принимает решение сам: двигаться самостоятельно или обратиться за помощью.</p>
64 <p>Если вы дочитали до конца и у вас возникли какие-то вопросы или нужна помощь - пишите мне в Telegram:<a>@gadzhiev_agil</a></p>
64 <p>Если вы дочитали до конца и у вас возникли какие-то вопросы или нужна помощь - пишите мне в Telegram:<a>@gadzhiev_agil</a></p>
65 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
65 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>