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>