Тимур Тибеев | BigTechDream – Telegram
Тимур Тибеев | BigTechDream
2.15K subscribers
99 photos
5 videos
1 file
337 links
Senior Backend Engineer @ Canva
Бывший Яндексоид

🧑🏻‍💻Пишу про карьерный рост в IT
📚Делюсь советами, как пройти собеседования в MAANG
👨‍🏫Обучаю алгоритмам и структурам данных

👋Новопришедшие, читайте закрепленный пост
Download Telegram
🧩 Задача 3/200

https://leetcode.com/problems/two-sum/
Сложность: Легкая, Процент успешных попыток 49.1%

⛔️ Задача классическая и встречается в реальных собеседованиях.

🤓 Условие на русском:
Есть массив целых чисел nums и целое число target, нужно найти два индекса в массиве nums, так чтобы сумма этих элементов была равна target.
Гарантируется, что для каждых входных данных, есть как минимум одно решение. И нельзя использовать один и тот же элемент дважды.
Ответ можно возвращать в любом порядке.

Ввод: nums = [2,7,11,15], target = 9
Результат: [0,1]
Объяснение: чтобы получить 9, мы должны сложить nums[0] + nums[1], поэтому возвращаем индексы [0, 1]

Удачи 🙂
👍1🤯1
🤔 Что общего между алгоритмическими задачками и обычной работой разработчика?

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

Но общее все таки есть - это подход. Ведь каждая задача на интервью это тех задание от руководства в миниатюре. Сейчас объясню.

💻 Давайте вспомним, через какие круги ада этапы проходит разработчик, когда получает задачу от тимлида/аналитика/манагера:
1️⃣ Уточняем требования, задаем вопросы. Примеры: какого цвета должна быть кнопка? какая будет нагрузка на сервис? какие сроки? и так далее
2️⃣ Предлагаем решения, обсуждаем архитектуру и трудозатраты. Типичный пример: можем так за неделю или нормально за 6 месяцев (угадайте что выберут🙂)
3️⃣ Реализуем решение - пишем код
4️⃣ Проверяем, тестируем - автотесты, регрессионное тестирование, MVP, клянемся что все работало локально
5️⃣ Выкатываем в продакшн - говорим об успешное реализации проекта, если/когда будут баги, то чиним/хотфиксим

👩‍🏫 Теперь если взглянем на этапы, которые проходит кандидат при собеседовании, окажется что они точно такие же:
1️⃣ Уточняем требования - какого размер массив, могут ли быть цифры или только буквы, метод используется одним потоком или многими и так далее
2️⃣ Предлагаем решения - можем решить за один проход по массиву, но придется создать кучу объектов в памяти или алгоритм будет долго работать, но зато никаких дополнительных структур данных
3️⃣ Реализуем решение - пишем код
4️⃣ Проверяем - самостоятельно дебажим свой код на примерах - это кстати плюс в копилку кандидата
5️⃣ Сдаем решение интервьюеру - если он видит проблему, то находим и исправляем

✔️ То есть цель собеседующего оценить не только навыки программирования и знания структур данных, но и еще и сам подход к решению. Как хорошо кандидат справится с маленькой задачей можно спрогнозировать, как хорошо разработчик будет справляться с техническими задачами на работе.

🏄‍♂️ Для меня это долгое время было неочевидно, на собеседованиях я торопился приступить к написанию кода. Я думал, что время является важным, если не важнейшим критерием при оценки моей кандидатуры. Сказалось прошлое спортивного программиста 👀. Ошибку осознал, когда стал сам проводить интервью.

☝️ Поэтому хороший способ сдать успешно интервью - это относится к задаче как к обычной задаче из трекера. Уточнить, обсудить, действовать. Но и про время конечно не забываем
🔥4
🧩 Задача 4/200

https://leetcode.com/problems/longest-continuous-increasing-subsequence/
Сложность: Легкая, Процент успешных попыток 49.0%

🤓 Условие на русском:
Дается массив целых чисел nums, найдите максиммальную длину подмассива, где все элементы расположены в возрастающей последовательности. Подпоследовательность должна быть строго возрастающей.

Более формальное условие. Дается массив nums, найдите такие l и r (`0 <= l <= r < length(nums)`), чтобы выполнялось условие nums[i] < nums[i + 1] для l <= i < r. Верните разницу l и r.

Вход: nums = [1,3,5,4,7]
Результат: 3
Объяснение: Самая длинный подмассив подряд возрастающих чисел это [1, 3, 5], поэтому ответ 3. Есть еще подпоследовательность [1, 3, 5, 7] но так как эти числа идут неподряд, то не считаем за ответ.

Сегодня будет решение на Javanoscript (почти что Java)

#problemoftheday
👍3
Hiring freeze in MAANG

❄️ Наступили непростые времена в MAANG (Meta, Amazon, Apple, Netflix, Google).
Google объявил заморозку найма в июле, Facebook еще раньше в мае. Apple планирует ограничит найм в 23 году. Amazon начинает частично фризит найм. Увольнения, банкротства, сокращения инвестиций. Судя по опросам кандидатов внутри платформы interviewing.io, компании сейчас больше концентрируются на кандитатах высокого грейда.

😱 Что делать сейчас?
☝️Первый вариант - обратить внимания на компании поменьше, которые продолжают расти и нанимать. У маленьких компаний обычно не такой раздутый штат и нет огромного хвоста из неприбыльных продуктов и полуживых MVP.

✌️ Второй вариант - укрепить свои позиции на рынке труда. Плохие времена пройдут, а профиль в линкедин останется. Сейчас нужно максимально подготовиться "отморзке" найма, решать задачки, повышать свой уровень, ведь спрос на разработчиков никуда не изчезнет 🙆‍♂️
👍2😢1
👁‍🗨 Каковы шансы устроиться в Google?

🥵 Каждый год в Гугл приходят порядка 3 млн откликов по ваканисиям, из них компания нанимает только 20 тысяч кандидатов. Вероятность получить оффер 0.67%!!! Статистически больше шансов поступить в Harvard или Stanford, чем устроится в Google.

🧑‍🏫 Прежде, чем допустить к system design и googlyness интервью, кандидата несколько раз пропустят через фильтр problem solving. Поэтому этот этап является ключевым. Если кандидат не проходит его или проходит неубедительно - это красный флаг .

🎥 Поэтому в пятницу будет первый стрим, посвященный теме "Что хочет услышать интервьюер?"
Разберем следующие темы:
- ⛹️ На каких платформах можно тренироваться
- 👩‍💻 Как решать, куда нажимать
- 🙅 Методология по алгоритмической секции: как не провалить собеседование
- 🙋‍♀️ Еще проведем пару пробных интервью на желающих

🗓 Время: 14 октября, 20:00 по Астане

🤍Лайки, репосты привествуются 🙂

☝️Добавляйте событие в календарь, чтобы не пропустить.
https://calendar.google.com/event?action=TEMPLATE&tmeid=NmE5dHRnYnNsNm9sNzB1c2JyZW5pamhobmIgNzI5ZjQ1NzUwNjg3MTU0NGJhZTQ2M2Q1YWQxZjM2ZTUwOGViNTQ0MmU5Y2Y0MjliZGJkYjk0OWQzZjYyNjZkZEBn&tmsrc=729f457506871544bae463d5ad1f36e508eb5442e9cf429bdbdb949d3f6266dd%40group.calendar.google.com
👏5👍1
🧩 Задача 7/200

Задача на геометрию, сколько точек лежат внутри круга?
Не очень люблю такие задачи, потому что требуют не логики, а знаний конкретных формул. Но кто сказал, что они не могут попасться на интервью 🥲
https://leetcode.com/problems/queries-on-number-of-points-inside-a-circle/
Сложность: Средняя, Процент успешных попыток 86.5%

#problemoftheday
👍2
😎 Если вы целитесь на уровень выше middle, то практически в любой компании будут вопросы по дизайну систем.

🏚 Если вы не сталкивались с такими, то вот вам пример - "придумайте архитектуру мессенджера".

🛠 Требуется обосновать выбор технологий и протоколов, нагрузку и узкие горлышки. Вопросы открытые и как правило на них нет "правильных" ответов.

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

🪜 Хорошим начальным курсом будет материал от educative. Покрывает основные понятия и разбирает наиболее частые вопросы, аля задизайнить "Twitter" или "Instagram".
https://www.educative.io/courses/grokking-the-system-design-interview
👍2👌1
🧩 Задача 9/200

Сегодня интересная задача, довольно больше похожа на архитектурную секцию. 👷
Нужно реализовать класс, который может кодировать строку в короткую ссылку, а также уметь возвращать обратно изначальную строку.
https://leetcode.com/problems/encode-and-decode-tinyurl/
Сложность: Средняя, Процент успешных попыток 85.7%

#problemoftheday
🔥3
Тимур Тибеев | BigTechDream
👁‍🗨 Каковы шансы устроиться в Google? 🥵 Каждый год в Гугл приходят порядка 3 млн откликов по ваканисиям, из них компания нанимает только 20 тысяч кандидатов. Вероятность получить оффер 0.67%!!! Статистически больше шансов поступить в Harvard или Stanford…
Всем привет! 👋

🤳 Напоминаю, что сегодня в 20:00 по Астане будем стрим, пройдемся по темам:
- ⛹️ На каких платформах можно тренироваться
- 👩‍💻 Как решать, куда нажимать
- 🙅 Методология по алгоритмической секции: как не провалить собеседование
- 🙋‍♀️ Еще проведем пару пробных интервью на желающих

Ссылку на звонок скину чуть позже.
🍾2👍1
Доброй пятницы 🍺
Пришла новость, в Astana Hub запускается программа Beta Career для помощи трудоустройства в IT отрасли. Пишут, что и готовят в FAANG👨‍💻.

📨 Выжимка из письма:

Beta Career - это комплексная онлайн программа, которая поможет Вам успешно пройти собеседование и другие этапы оценки кандидатов, а также расскажет о том, как начать и построить успешную карьеру в IT.

Курс подходит для студентов, выпускников колледжей/вузов и начинающих IT-специалистов.

На курсе собраны самые важные и актуальные инсайты, советы и рекомендации от ведущих отраслевых экспертов!


Кому интерсно, вот ссылка. Если кто будет участвовать, пожалуйста поделитесь фидбеком потом 🙂.
https://astanahub.com/l/betacareer2022
🙏1
👋 Всем доброго понедельника. На стриме предложили хорошую идею, каждую неделю посвещать определенной теме.
Эта неделя будет про строки. Пока элементарные операции над строками, со временем усложним на более продвинутые алгоритмы.

🧩 Задача 11/200

https://leetcode.com/problems/rotate-string/
Сложность: Легкая, Процент успешных попыток 54.0%

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

#problemoftheday
🔥2
💣String

Частой ошибкой является предположение, что операции над строками ничего не стоят:
- конкатинация строк это тоже самое что сложение двух чисел
- или проверка на вхождение подстроки, тоже самое что и хэштаблицах
- или сравнение строк делается за единицу времени 😅

👍 Но стоит относится к строкам больше как к массивам из символов (чем они по сути и являются), соотвественно они наследуют все плюсы и минусы массивов. То, что приведу ниже относится больше к java, но скорее всего в других ЯП примерно также.

1️⃣ Доступ к элементу: s.charAt(i), s[i]
Время O(1).
Тоже самое, что и для массива. Есть указатель на начало массиво, который смещается на i символов вправо, это довольно быстрая операция для процессора.

2️⃣ Добавление символа к строке: s = s + 'a'
Время O(N), Память O(N).
Нужно выделить память под новую строку, проитерироваться по всем символам и скопировать их.

3️⃣ Конкатинация двух строк: s = t + w
Время O(N + M), Память O(N + M).
Тоже самое, что и добавление символа, выделяем память равную сумме длинн. Копируем все символы из первой, потом из второй строки.

4️⃣ Проверка на содержание подстроки: s.contains(t), s.indexOf(t)
Время O(N * M).
Возможно в продвинутых языках используется более быстрая проверка на вхождение строки, но в большинство случаев используется посимвольное сравнение, два вложенных цикла.

5️⃣ Разворот строки: s = t.reverse()
Время O(N), Память O(N).
Выделяем память, вставляем символы в обратном порядке.

6️⃣ Сравнение строк: s.equals(t), s == t
Время O(N).
Посимвольно сравниваем строки.
👍6🥱1
🧩 Задача 12/200

https://leetcode.com/problems/string-to-integer-atoi/
Сложность: Средняя, Процент успешных попыток 16.6%

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

#problemoftheday
1
Public Chat

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

Поэтому создал отдельную группу, добавляйтесь 👋

Задавайте вопросы, скидывайте мемы, делитесь материалами 😸

https://news.1rj.ru/str/bigtechdreampublic
👍1