Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр 2D-аркадный рогалик о подземных раскопках! Разрушайте блоки в погоне за сокровищами, улучшайте свой бур и развивайте навыки. Выполняйте задания, соревнуйтесь с друзьями и докажите, что вы — самый лучший искатель сокровищ!

Бурить-Копать!

Аркады, Мидкорные, 2D

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
cherkalexander
cherkalexander

Проваливание промисов⁠⁠

2 года назад

Когда вы передаете в then() что-то отличное от функции (например, промис), это интерпретируется как then(null) и в следующий по цепочке промис «проваливается» результат предыдущего.

Подробнее о промисах в статье "У нас проблемы с промисами".

#interview #frontend #javascript

https://t.me/cherkashindev/131

Проваливание промисов
Показать полностью 1
Кросспостинг Pikabu Publish Bot Interview Frontend Javascript Telegram (ссылка)
0
12
cherkalexander
cherkalexander
Лига программистов

Где проводить live-coding⁠⁠

2 года назад

Если вы время от времени проводите собеседования — то вы наверняка хотите не только поговорить о жизни с кандидатом, но и проверить насколько он хорош в деле. Для этого вам поможет live-кодинг.

Для live-кодинга, вы можете использовать:

1️⃣ Yandex Code
- ✅ Подсветка синтаксиса
- ✅ Совместное написание кода
- ❌ Нет подсветки ошибок
- ❌ Нельзя запускать код

2️⃣ Interview Cups — онлайн редактор от VK
- ✅ Подсветка синтаксиса
- ✅ Совместное написание кода
- ❌ Подсветка ошибок
- ✅ Можно запускать код

3️⃣ Visual Studio Live Share. Позволяет кандидату открыть ваш проект прямо в браузере, после чего вы можете совместно писать код.

А что вы используете для live-кодинга?

https://t.me/cherkashindev/129

Показать полностью
[моё] Кросспостинг Pikabu Publish Bot Interview Текст
3
24
cherkalexander
cherkalexander
Лига программистов

Сборщик мусора в .NET⁠⁠

2 года назад
Сборщик мусора в .NET

Одним из самых популярных на собеседованиях C# разработчиков является вопрос о работе сборщика мусора в .NET. Мне также приходилось рассказывать о нём интервьюерам на моих собесах. Сегодня я хотел бы кратко рассказать о сборщике мусора, заодно и сам вспомню.

🔍 Зачем нужен сборщик мусора?
Сборщик мусора автоматически обеспечивает освобождение памяти, занятой объектами, которые больше не используются. Такой подход предотвращает утечки памяти и снимает с разработчика бремя ручного освобождения памяти (привет С++), что позволяет сосредотачиваться на более важных аспектах программирования.

⏰ Когда вызывается сборщик мусора?
Сборщик мусора активируется автоматически, например, когда одно из поколений заполнено (о поколениях позже). Если вам требуется инициировать сборку мусора вручную, используйте GC.Collect().

🔗 Как определяется, какие объекты больше не используются?
Сборщик мусора опирается на концепцию "GC Roots" (корни сборки мусора):

1. Локальные переменные: Объекты, на которые существуют ссылки в локальных переменных.
2. Статические переменные: Объекты, на которые ссылаются статические переменные классов. Эти корни живут в течение всего времени выполнения приложения.
3. Активные элементы стека: Если во время выполнения функции происходит сборка мусора, то локальная переменная внутри данной функции не будет удалена сборщиком мусора. Такая переменная считается активным корнем, до тех пор пока кадр стека метода не будет разрушен.

Сборщик мусора создаёт граф (фаза маркировки), который содержит все объекты, достижимые из GC Roots. Объекты, на которые нет ссылок из GC Roots, считаются недостижимыми и готовыми для удаления.

🔄 Как работает сборщик мусора?
Сборщик мусора использует концепцию поколений (поколения 0, 1 и 2) для эффективной работы с объектами различной "старости".

- При создании объекты помещаются в поколение 0. Если объект слишком большой (по умолчанию объекты размером больше 85 000 байт), то он будет помещён в Large Object Heap (очищается вместе с поколением 2).
- Когда поколение 0 заполнено — запускается сборка мусора. Неиспользуемые объекты удаляются (недостижимые из GC Roots), оставшиеся перемещаются в поколение 1.
- Аналогично происходит сборка мусора, когда заполнено поколение 1. Все выжившие объекты перемещаются в поколение 2. Затем происходит сборка мусора в поколении 0.
- Когда заполнено поколение 2, происходит полная сборка мусора. Сперва очищается поколение 2, а затем 1 и 0. Если после этого недостаточно места для новых объектов — происходит исключение OutOfMemory.
- В самом конце происходит фаза сжатия, в которой сборщик мусора перемещает живые объекты так, чтобы они располагались в памяти непосредственно друг за другом.

🔄 Для чего нужно разделение на несколько поколений?
- Сборка мусора поколения 0 выполняется чаще и занимается удалением объектов, которые быстро выходят из области видимости.
- С увеличением поколения редкость запуска сборки позволяет более эффективно использовать ресурсы. Поколение 0 очищается чаще всего, поколение 2 очищается реже всего.

🌐 Ещё по теме:
- .NET Memory Management Concepts — очень кратко об основных концепциях сборщика мусора
- Поколения объектов — одна из очень подробного цикла статей о сборщике мусора

https://t.me/cherkashindev/117

Показать полностью 1
[моё] Кросспостинг Pikabu Publish Bot Csharp Dotnet Interview Текст Длиннопост
0
11
cherkalexander
cherkalexander
Типичный программист

Бинарная куча и приоритетная очередь⁠⁠

2 года назад


Последние пару месяцев я решил попрактиковаться в решении задач на алгоритмы и структуры данных и вспомнить всё, что мы проходили в универе. Там, кстати, ни слова не было не только о сложностях алгоритмов, но и о Приоритетных очередях.

❓ Что это такое “Приоритетная очередь”

Приоритетная очередь — это коллекция, в которой, в отличии от обычной очереди, элементы упорядочиваются не на основе того, когда был добавлен элемент, а на основе приоритета, который этот элемент имеет. То есть, первым всегда будет извлекаться элемент с максимальным приоритетом. Также можно настроить очередь, чтобы она работала с наименьшими приоритетами.

Приоритетная очередь поддерживает те же операции, что и обычная очередь.

❓ Что это такое “Бинарная (двоичная) куча”

Бинарная куча – структура данных, позволяющая быстро (за логарифмическое время) добавлять элементы и извлекать элемент с максимальным приоритетом.

Куча представляет собой полное бинарное дерево, в котором каждый элемент не меньше своих потомков. Таким образом, максимальный элемент всегда находится в корне, поэтому доступ к нему происходит за O(1).

Можно сказать, что приоритетная очередь — это интерфейс, а бинарная куча — одна из возможных реализаций интерфейса “приоритетной очереди”.

💡 О том, как происходит добавление и удаление элементов из бинарной кучи описано в статье на хабре Структуры данных: двоичная куча (binary heap)

🧑‍💻 Собеседования

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

Например:

- В .NET 6 появилась встроенная реализация приоритетной очереди, она так и называется PriorityQueue
- А вот в JavaScript из коробки в нет подобной реализации

В таком случае можно быстро реализовать приоритетную очередь с помощью динамического массива:

- Описать класс PriorityQueue, у которого под капотом используется динамический массив
- Метод Enqueue — добавляет элемент в конец динамического массива
- Метод Dequeue — извлекает элемент с наименьшим приоритетом

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

⌨️ Пример задачи с Leetcode

Чтобы понять как и зачем использовать приоритетную очередь можно порешать следующие задачи на Leetcode

1. Top K Frequent Words
2. Top K Frequent Elements

Еще по теме:

- .NET 6: PriorityQueue
- Top K Frequent Words - Priority Queue Approach (LeetCode)

#algorithms #interview

https://t.me/cherkashindev/115

Показать полностью
[моё] Кросспостинг Pikabu Publish Bot Interview Программирование Алгоритм Интервью IT Программист Собеседование Текст
2
6
cherkalexander
cherkalexander
Лига программистов

Задача на знание замыканий в JavaScript⁠⁠

2 года назад


Если вам приходится собеседовать начинающих фронтендеров, то следующая простая задача поможет вам проверить, понимает ли разработчик принцип работы с замыканиями, и может ли он применять их на деле.

Задача на знание замыканий в JavaScript



/**
* Нужно написать функцию, которая принимает число N и возвращает функцию,
* вызов которой первые N раз возвращает 'yes', а потом – 'no'.
*/
function canGetCount(n) {
// code here
}

const getOne = canGetCount(2);

getOne() === 'yes'
getOne() === 'yes'
getOne() === 'no'


#javascript #interview

Показать полностью
[моё] Кросспостинг Pikabu Publish Bot Javascript Interview Текст
30
11
cherkalexander
cherkalexander
Web-технологии

Задачи на собеседовании JavaScript разработчика⁠⁠

2 года назад
Задачи на собеседовании JavaScript разработчика

1. Напишите функция вычисления последовательности фибоначи
function fib(n) {
// TODO: implement
}

fib(5); // [0, 1, 1, 2, 3]
fib(7); // [0, 1, 1, 2, 3, 5, 8]
fib(11);// [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

2. Напишите функцию, которая будет проверять на “глубокое” равенство 2 входящих параметра
function deepEqual(a, b) {
// TODO: implement
}

const source = {a: 1, b: {c: 1}}

const test1 = {a: 1, b: {c: 1}}
const test2 = {a: 1, b: {c: 2}}
const test3 = {a: 1, c: {b: 1}}
const test4 = {a: 1, c: 2}
const test5 = {c: 2, a: 1}
const test6 = {a: 1, b: {c: {d: 5}}}

console.log(deepEqual(source, test1)) // -> true
console.log(deepEqual(source, test2)) // -> false
console.log(deepEqual(source, test3)) // -> false
console.log(deepEqual(source, test4)) // -> false
console.log(deepEqual(source, test5)) // -> false
console.log(deepEqual(source, test6)) // -> false

3. Напишите функцию, которая принимает два аргумента:
- Массив из ЦЕЛЫХ ПОЛОЖИТЕЛЬНЫХ ЧИСЕЛ и сумму в виде целого числа.
- Функция должна вернуть все ПОДПОСЛЕДОВАТЕЛЬНОСТИ чисел массива из аргумента, сумма которых равна числу, которое приходит вторым аргументом.
- Если решения нет, вернуть пустой массив.

function findSum(array, targetSum) {
//TODO: implement
}

array = [1, 5, 4, 1, 11, 1, 10, 9, 1, 9, 6, 4, 10]
targetSum = 10

findSum(array, targetSum)
// [ [ 1, 5, 4 ], [ 5, 4, 1 ], [ 10 ], [ 9, 1 ], [ 1, 9 ], [ 6, 4 ], [ 10 ]]

https://t.me/+vXaKdcP7YFY0NGMy

Показать полностью 1
[моё] Кросспостинг Pikabu Publish Bot Interview Кодирование Текст Собеседование Длиннопост
20
28
DELETED

Давайте кандидатам задачи⁠⁠

3 года назад

Когда только начинал собеседовать - знания проверялись только через тестовые задания. Но на проверку уходило много времени, да и не все хотели их делать. Поэтому на их место пришли вопросы наподобие типов данных в js или что такое замыкание?


После первого кандидата, который ответил идеально на теорию, был нанят, а на деле оказался слабым, добавили простые задачки на кодинг: перевернуть строку, поиск гласных, анаграммы. И да, этот этап оказался узким местом.

Это не были какие-то умные задачи на алгоритмы - печально известный FizzBuzz не мог потянуть каждый 2-ой.


Именно поэтому я пришел к выводу, что такие задачи давать надо!

Если у кандидата не получается их решить, то скорее всего со своей работой он справляться не будет. Это не всегда так, но корреляция высокая.


Также важно понимать, что это не способ найти хорошего программиста.

Это нужно для того, чтобы отсечь потенциально слабого.

Показать полностью
[моё] Программирование IT Программист Собеседование Разработка Задача Софт Interview Javascript Текст
36
yuliabramovaa
yuliabramovaa

ELLE BLINK, БУЗОВА И БЭКХЕМ, ДЕНЬГИ vs УЗНАВАЕМОСТЬ, THE VOICE OF CHINA | КТО ЭТИ ЛЮДИ⁠⁠

3 года назад

Китай - крупнейший рынок музыкальной индустрии с капитализацией в 50 млрд долларов в год практически полностью принадлежит компании Tencent.

Мой гость певица Elle Blink, с которой мы поговорили о музыке в Китае, о том, сколько стоит выступление иностранного ноу-нейм артиста на китайской сцене, зачем Бузова собиралась в Шанхай и каким артистам закрыт въезд в Китай.

Ведущая @yuliabramovaa

Гость @elle_blink

[моё] Интервью Музыка Китай Ольга Бузова Interview Дэвид Бекхэм Singer Певцы Музыкальный конкурс Голос Видео
9
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии