en
Feedback
Leetcode KZ

Leetcode KZ

Open in Telegram
884
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
Топ недели снова: Aibar Kuanyshbay @aibark 🏆🥇👏

Топ этой недели: Aibar Kuanyshbay @aibark 🏆🥇👏

С этой недели в группе будет объявляться «Топ недели». Титул «Топ недели» будет присваиваться победителю Weekly Contest. Начиная с этой недели, за решение Weekly Contests не будут даваться призы. Призы от спонсоров есть и будут распределяться по другому, объявим позже. Призы за прошлые нечетные контесты будут разданы в ближайшее время.

2022 stats✊🏻
2022 stats✊🏻

DSA Roadmap .pdf9.53 KB

Победитель Weekly 309 Санжар Токтасын @sanzhar_999 🎊
Победитель Weekly 309 Санжар Токтасын @sanzhar_999 🎊

Как я стала программистом в возрасте далеко за 18 👩‍💼 🦾Мадина работает разработчиков в дублинском офисе Амазона. В прошлом году она получила несколько оферов в MAANG. Мне удалось вместе с ней поработать в Яндексе. Но это не самое главное, что стоит знать про нее. 👨‍👩‍👧Самое интересное, что она начала свою карьеру не со студенческой скамьи как большинство из нас, а намного позже. После 28 лет, с семьей и маленьким ребенком, она решила начать свой путь в IT. История Мадины вдохновляет своим посылом «Никогда не поздно идти за мечтой». Признаюсь, что я только что сам узнал ее бэкграунд и немного был в шоке. 🎙Как-нибудь обязательно организую встречу с ней. А пока можно почитать ее статью на хабре https://habr.com/ru/amp/post/444776/ и подписаться на ее новый канал в телеграмм https://t.me/madina_about_career_and_life. 👩‍💻Канал называется «Женщины и карьера». Тема интересная многим, особенно прекрасной половине человечества, строящим свою карьеру, мамочкам в декрете, желающие заниматься интересным делом и семейным парам, которые хотят увеличить свой доход. 🎁Подписывайтесь и делитесь с теми, кому данная тематика будет интересна.

Победитель Weekly 301 Kuan Bekarys @bake013 🥳
Победитель Weekly 301 Kuan Bekarys @bake013 🥳

Неудачное интервью 😕 - Да как это ты не знаешь, тут же написано Oracle! - воскликнул один из собеседующих, указывая на мое резюме. Я чувствовал себя воришкой, которого поймали с поличным, помню попробовал как-то оправдаться. - Мы Вам перезвоним - сказал второй интервьюер, - Не нужно, я … лучше еще подготовлюсь - помню ответил я. Я вышел с ощущением, что я самый глупый человек на свете, 4ый курс университета, а знаний ноль. Я шел и долго прокручивал весь диалог в голове. Справедливости ради, у меня в резюме были написаны все технологии, которых когда-либо случайно коснулся, поэтому первым делом я выбросил оттуда все, на что элементарно не смог ответить. Я благодарен тому опыту, ведь после этого я начал лучше готовиться, больше изучать и тщательнее выбирать компании. Ощущение самозванца еще долго преследует, но если выгуливать свой страх на собеседованиях и из каждого неудачного интервью делать выводы, то со временем страх проходит, становишься увереннее. Уверенного человека, тяжелее дешево купить. Тут дело даже не в Google или Kaspi или маленький стартап, просто собеседования это всегда продажи. Правильно предоставить свой опыт, правильно «упаковать» резюме, завысить ценник, поторговаться. Вы наверное удивитесь, если скажу в одной и той-же компании, мидлы могут зарабатывать больше, чем сеньоры. «Хардскиллы» - кричали они, «капитализм» - шепнул HR. Я верю, что у человека, который пробовал проходить интервью 100 раз, больше шансов устроиться в хорошую компанию, чем у человека, который решил 1000 литкодовских задач. Выжимка: - Не пишите в резюме все технологии, о которых слышали. Выбирайте те, на которые можете ответить хотя бы легкие/средние вопросы. - Собеседутесь периодически, даже если не собираетесь уходить. записывайте видео или конспектируйте сложные вопросы. После каждого интервью вы должны выходить чуть умнее 🙂 - Не храните рефераллы, используйте их. Найдете новые потом, а опыт уже будет. Завалите пару собеседований в Amazon. - Завышайте свой ценник и торгуйтесь. В лучшем случае придется потом на деле доказать свою ценность. В худшем будет понимание на какую сумму вы можете претендовать. - Вы не самозванец и не обманщик, Вы востребованный специалист. Вы хотите работать в компании, которая Вам нравится и получать деньги, которых достойны, в этом нет ничего постыдного. - Вы никогда не станете абсолютно готовым. Не нужно ждать идеального момента, знания и опыт придут только с практикой.

Первая рок-звезда 💫 🚖Как попасть в команду, которая вытеснила Яндекс.Такси из Европы? Как пройти собеседование по сложности
Первая рок-звезда 💫 🚖Как попасть в команду, которая вытеснила Яндекс.Такси из Европы? Как пройти собеседование по сложности не уступающее топовым технологическим компаниям? 🥳С радостью сообщаю, что начинаю серию стримов, где опытные разработчики делятся своим опытом и отвечают на вопросы. 🧑‍💻Первым нашим спикером будет Диас Абдраимов, Software Engineer в компании Bolt, Таллин, Эстония. В начале этого года эстонский стартап Bolt был оценен инвесторами в 8.4 млрд долларов. Сервис покрывает более 500 городов в 45 странах мира и обслуживает порядка 100 млн пользователей. Большая нагрузка, интересный продукт и амбициозные цели. ⁃ Что отличает Bolt от других компаний? ⁃ Какого это работать в англоговорящей команде? ⁃ Как бороться с волнением на собеседовании? ⁃ На чем нужно фокусироваться молодым инженерам? ⁃ И другие вопросы можно будет задать Диаcу. Также попробуем выпросить у Диаса рефераллы 🙂 ❗️Приглашайте друзей, знакомых и коллег, всем кто интересуется разработкой, собеседованиями и релокацией в другие страны. ❗️Встреча открытая и бесплатная, пожалуйста зарегистрируйтесь по ссылке https://forms.gle/3BVah5A1emAAmraeA. ⌚В субботу, 3 декабря. 19:00-20:00 Алматы (GMT+6) 16:00-17:00 Москва (GMT+3) 15:00-16:00 Таллин (GMT+2) #rockstars

Яндекстағы сұхбат туралы болған алдыңғы жазба 10 күнде 800-ден астам қаралым жинады. Сұраныс болғандықтан жалғасы да болу керек!
/*
urlify функциясын жасау керек, яғни бос орындарды '%20'-ға ауыстыру керек. Қолданушы жеткілікті жад резервлеген. 
*/

std::string s0 = "my url";
s0.reserve(20);
urlify(s0);
assert(s0 == "my%20url");

void urlify(std::string& s) {
    unsigned int d = s.capacity() - s.size();
    s.resize(s.size() + d);
    for(auto it = s.end() - 1; it >= s.begin() + d; it--) {
        *(it) = *(it - d);
    }
    auto cur = s.begin();
    for(auto it = s.begin() + d; it < s.end(); it++) {
        if(*(it) == ' ') {
            *cur = '%';
            cur++;
            *cur = '2';
            cur++;
            *cur = '0';
            cur++;
        }
        else{
            *cur = *id;
            cur++;
        }
    }
    s.resize(cur - s.begin());
}


/*
Әртүрлі қолданушылардың сұраныстары бар, әр сұраныс - осы форматтағы жұп: (time, userId), сұраныстар уақыттары бойынша бірінен кейін бірі келеді.
Осы сұранымға тез жауап беру қажет: "соңғы k секундта >= limit сұраным жасаған қолданушылардың саны".
*/

class UserStatistics {
public:
    queue<pair<int, int>> queries;
    unordered_map<int, int> queries_per_users;
    int ans = 0, k = 0, limit = 0;

    UserStatistics(int k, int limit) {
        this -> k = k;
        this -> limit = limit;
    }

    void updateQueries(int now) {
        while(!queries.empty() && now - queries.front().first >= k) {
            if(queries_per_users[queries.front().second] == limit) {
                ans--;
            }
            queries_per_users[queries.front().second]--;
            if(!queries_per_users[queries.front().second]) {
                queries_per_users.erase(queries.front().second);
            }
            queries.pop();
        };
    }

    void event(int now, int userId) {
        queries.push({now, userId});
        updateQueries(now);
        queries_per_users[userId]++;
        if(queries_per_users[userId] == limit) {
            ans++;
        }
    }

    int robotCount(int now) {
        updateQueries(now);
        return ans;
    }    
};

Repost from IT bilim
IT Bilim Webinar - Parallel & Distributed computing 🪄 Гуглда аға-инженер бағдарламашы боп қызмет атқаратын Жасан ағамыз Параллель және үлестіріп есептеу тақырыбында вебинар жүргізеді. Үлкен процесстерді қалай бөлшектеп басқару жайында әңгіме болады. Бұл тақырыптың өзектілігі соншалық барлық бағдарламаның тез/баяу жұмыс істеуі осы заттарға тікелей байланысты. Вебинарымыз басталуда, сілтеме төменде👇 https://t.me/it_bilimkz?livestream

Жақында @TochkaMikelya Яндекс компаниясына алгоритмдер бойынша сұхбат өткен болатын. Әдеттегідей екі алгоритмикалық есеп келді. Және @TochkaMikelya сол есептермен бізбен бөлісетін болып шешті!!!
Сандардан тұратын бинарлы ағаш берілген. Барлық жапырақтардағы сандардың қосындысын есептейтін функция жазыңыз.
Мысалы: 
    5
   / \
  4   2
 / \   \
1   6   3
       /
      7
Жауабы: 14 = (1 + 6 + 7).

struct Node{
    int val;
    Node *left, *right;
    Node(int val): val(val), left(NULL), right(NULL) {} // nullptr
};

int findSum(Node *cur){
    if(cur == NULL) return 0;
    if(cur->left == NULL && cur->right == NULL){
        return cur->val;
    }
    return findSum(cur->left) + findSum(cur->right);
}

int findSum(){
    return findSum(this.root);
}

-------------------------------
Алфавит және сөз берілген. Берілген сөзде ұзындығы ең аз панграмманы табу қажет, бұл жерде панграмма - алфавиттегі барлық әріптерді қамтитын (алфавитке кірмейтіндері де болуы мүмкін), сөздің, қатарлас тұрған әріптерден құралған, бөлігі.
Мысалы:
A = {a, b, c}
s = "dfagabkaceb"
"bkac" немесе "aceb" жауапқа сәйкес келеді.

string findSeg(string &s, string &a){
    unordered_map<char, int> mp, check;
    for(int i = 0;i < a.size();i++){
        check[a[i]] = 1;
    }
    int last = 0, cnt = 0, ans = s.size() + 1, L = -1, R = -1;
    for(int i = 0;i < s.size();i++){ //[last, i]
        if(!check[s[i]]) continue;
        if(check[s[i]]){
            if(mp[s[i]] == 0) cnt++;
            mp[s[i]]++;
        }
        while(last < i)){
            if(check[s[last]] && mp[s[last]] <= 1) break;
            mp[s[last]]--;
            last++;
        }
        if(cnt == a.size()){
            // ans
            if(i - last + 1 < ans){
                ans = i - last + 1;
                L = last;
                R = i;
            }
        }
    }
    // []
    if(L == -1 || R == -1) return "";
    return s.substr(L, ans);
}

// UPD:  NULL орнына nullptr деп жазған дұрысырақ болады
// UPD2: есептер шығарылған ноутбук өзгеріссіз қалдырылды



Недавно @TochkaMikelya проходил алгоритмическое собеседование в Яндекс. Как и всегда дали две задачи по алгоритмам. И @TochkaMikelya решил поделиться этими задачами с нами!!!
Дано бинарное дерево, значения в нем - числа. Нужно написать функцию, которая возвращает сумму всех узлов дерева,
у которых нет потомков.
Например, для дstерева
    5
   / \
  4   2
 / \   \
1   6   3
       /
      7
Результатом будет число 14 (1 + 6 + 7).

struct Node{
    int val;
    Node *left, *right;
    Node(int val): val(val), left(NULL), right(NULL) {} // nullptr
};

int findSum(Node *cur){
    if(cur == NULL) return 0;
    if(cur->left == NULL && cur->right == NULL){
        return cur->val;
    }
    return findSum(cur->left) + findSum(cur->right);
}

int findSum(){
    return findSum(this.root);
}

---------
Дан некоторый алфавит и строка. Необходимо найти в строке панграмму минимальной длины,
где панграмма - это такая подстрока исходной строки, в которую входят все буквы из алфавита (но не обязательно только они).
Пример:
A = {a, b, c}
s = "dfagabkaceb"
Ответом на пример будут подстроки "bkac" или "aceb".


string findSeg(string &s, string &a){
    unordered_map<char, int> mp, check;
    for(int i = 0;i < a.size();i++){
        check[a[i]] = 1;
    }
    int last = 0, cnt = 0, ans = s.size() + 1, L = -1, R = -1;
    for(int i = 0;i < s.size();i++){ //[last, i]
        if(!check[s[i]]) continue;
        if(check[s[i]]){
            if(mp[s[i]] == 0) cnt++;
            mp[s[i]]++;
        }
        while(last < i)){
            if(check[s[last]] && mp[s[last]] <= 1) break;
            mp[s[last]]--;
            last++;
        }
        if(cnt == a.size()){
            // ans
            if(i - last + 1 < ans){
                ans = i - last + 1;
                L = last;
                R = i;
            }
        }
    }
    // []
    if(L == -1 || R == -1) return "";
    return s.substr(L, ans);
}

// UPD nullptr instead of NULL

Строим свое окружение 🧑‍🏫👩‍💻🧑‍🏭 Все мы понимаем, что рекрутеры крупных компаний редко отзываются на вакансии отправленных через сайт. Я на протяжении нескольких лет периодически отправлял свое резюме через Google Careers, но ни разу не получил даже отказа. Самый быстрый способ быть замеченным, если кто-то изнутри порекомендует тебя. Это и называется рефералами. 🥷Нередкая проблема с рефералами, что человек, который тебя рекомендует, должен знать тебя. То есть для него, ты не можешь быть просто рандомным человеком из LinkedIn. Желательно, чтобы вы имели совместный опыт, учеба, работа или какие-нибудь side проекты. Конечно, не все MAANG компаний такие строгие, некоторые не сильно заморачиваются как кандидат получил рекомендацию. Но мне кажется, что рано или поздно тех гиганты станут более требовательны к своим реферальным программам. Ведь интернет сейчас пестрит разными табличками с контактами инженеров Гугла и это генерирует огромный поток кандидатов не всегда высокого качества. ❓Как получить качественные рефералы? 🧐Как ни странно это работать сегодня с завтрашними инженерами топовых компаний. Это значит при выборе любого нового работодателя, помимо стандартных - зарплаты, технологий, нужно еще обращать внимания на то, как часто оттуда разработчики устраиваются в условный Google. ❓Как вычислять такие компании? Но есть у меня гипотеза, что сильные команды рождают сильных инженеров, а сильные инженеры имеет больше шансов устроится в MAANG. Так вот, нужно стремиться попадать в сильные команды. Вот мои критерии таковых: 1️⃣Во-первых, бизнес должен пройти стадию стартапа и иметь устойчивую экономику. Есть пользователи, есть профит, есть рост, соотвественно есть нагрузка и сопуствующие проблемы, на которых можно вырасти. Продукт кому-то нужен сегодня и завтра он будет нужнее, на таких очень легко расти инженерам. На 10K RPS вы набьете таких шишок, что никакой 100 RPS не даст. 2️⃣Во-вторых, команда разработки не стагнирует, а постоянно эволиционирует. С каждым разом появляются новые практики: дежурства, разбор инцидентов, учет техдолга и так далее. «Здоровые» процессы упрощают работу и позволяют сосредоточиться на главном. Как говорил Беар Гриллс "Импровизируй, адаптируйся, преодолевай" 🐻. 3️⃣В-третьих, количество высогрейдовых разработчиков в команде. Синьоры востребованы и немного заносчивы, в какой-то момент их перестают мотивировать только деньги. Если они остаются, значит их что-то держит помимо зарплаты. Рядом с мощными рано или поздно и сам становишься мощным, такая же логика как и с миллионерами. Общий посыл такой: 🔴Не нужно стремиться окружать себя людьми, которые все время думают как устроиться в Google. 🟢Нужно окружать себя инженерами, при взгляде на которых думаешь, почему они до сих пор не в Google, изи устроились бы.

Ақыры алыпсың ғой)))) енді мына аккаунтты музейге қойсаң болады)))

17.11.21 - Knight 03.11.22 - Guardian✊🏻
17.11.21 - Knight 03.11.22 - Guardian✊🏻

Repost from IT bilim
Барлықтарыңызға сәлем👋 NU ACM студенттік клубы ТАМАША хабармен оралып отыр! Сіздерге NU OPEN бұрынғыдан да қызығырақ және үлкен мүмкіндіктерге толы іс-шара ретінде қайта оралуын хабарлауға қуаныштымыз. NU ACM SC барлықтарыңызды қатысуға және өзіңізді сынап көруге шақырады! NU OPEN – бұл программалау дағдыларын жетілдіру мен сынап көруге арналған Республикалық Программалау Сайысы. Сіз жеке немесе 3 адамнан тұратын команда жинап қатыса аласыз 🤩 Неліктен қатысу керек 🤔? 🤯 Бұл программалау дағдыларын қолдану, көрсету және жетілдірудің таптырмас мүмкіндігі; 🤯 Өнімді жұмыс атмосферасы мен басқа да талапты қатысушылармен байланысу мүмкіндігі; 🤯 Байқау Zapis және Umag сияқты демеушілердің қолдауымен өткізіліп жатыр; 🤯 Керемет сыйлықтар ұтып алу мүмкіндігі!* Дайынсыз ба? Ендеше open.nuacm.kz сайтында тіркеліңіз! 💥 Өтетін күні: 12 қараша 💥 Тіркелудің соңғы күні: 7 қараша 💥 Өтетін орны: Назарбаев Университеті *Жүлдені ұтып алу мүмкіндігі тек офлайн және бакалаврда оқитын қатысушыларда ғана бар