Комментарии 37
Интересно, как вообще должно выглядеть резюме, чтобы взяли в бигтех? Я пока из таких фирм на собесе был только в Яндексе.
Да как обычно. Желательно 1 страничка, тупо опыт, описание пары самых больших задач + достижения. Везде суй цифры + технологии релевантные, например для го это что-то про микросервисы, Kafka, PostgreSQL, gRPC и тд по списку. В канале в комментах к последнему посту парню резюме прожарили, можешь посмотреть, если интересно)
Везде суй цифры
Все хотят цифры аля "фича X дала прирост Y в количестве Z", вот только откуда эти цифры взять? Разраб делает фичи, а не проводит исследования "насколько фича повлияла на проект". Его это вообще не должно касаться, это должно волновать ПМа
Если ты не можешь даже оценить как твой код повлиял на техдолг, производительность, и делал только что сказали только в том объёме как сказали -- в бигтехе тебе не понравится, так что все хорошо и система работает.
Если ты приходил хоть раз с предложением переехать на новый стек (чтоб пилить фичи в джва рваза бвыстрее) или сделать рефакторинг (чтоб перестать копипастить уже наконец) или пофиксить тесты (которые только падают на них все забили) -- то ты знаешь, что приходить надо с каким-то исследованием, как твоё предложение повляет на проект -- и ты понимаешь о чем речь.
приходить надо с каким-то исследованием, как твоё предложение повляет на проект -- и ты понимаешь о чем речь.
Любой специалист понимает, что в масштабных проектах невозможно точно оценить индивидуальный вклад. Даже если вы предложили идею на миллион долларов это не значит, что этот миллион был заработан лишь благодаря вам. Ни какая работа не делается в одну каску - как минимум ее кто-то должен захотеть, апрувнуть, продать, выделить бюджет и т.п. Результат здесь всегда является следствием синергетического эффекта от работы разных сотрудников на различных уровнях. Поэтому все эти проценты в резюме инженеров по сути должны вызывать либо умиление как детская наивность, либо отвращение как откровенная ложь.
Любой специалист понимает, что в масштабных проектах невозможно точно оценить индивидуальный вклад.
Если есть желание гарантированно измерять индивидуальный вклад, заходите в инфраструктурные команды. Там каждый персональный чих может снизить потреблние цпу, время ответов и прочие метрики так, что прямо на графиках виден этот чих.
А дальше можно в лидов кидаться статьёй от амазона, и если чих напрямую не конвертируется в рубли, то хотя бы обретает неизмеримый, но в то же время существенный вес.
Вы не обязаны кидаться долларами. Я как-то снизил потребление одной функции сру на 15%. Это никак не повлияло на загрузку системы.
Но по метрике "обработано данных" я могу сказать, что это дало 3% буст к общей продуктивности системы.
В доллары это пересчитывать не нужно, так как доллары сиеминутны, а прогресс неумолим :)
Ранвно как и экономия пары петабайт может быть солидно в попугаях, но в процентах тысячные доли...
В российских бигтехах требуются сотрудники очень разных уровней скиллов. Даже формошлёпы. И даже много. Так что не считаю, что им нужно какое-то особое резюме.
И не скажу за всех, но на сеньорских бекендерских должностях ещё очень полезны строчки резюме про то, каких масштабов проекты вы проектировали (сколько данных, сколько юзеров, на каком железе, сколько человек работали над ними), либо какие фичи вы оптимизировали по железу/пингам и т.п., и во сколько рублей эта экономия вылилась.
Да особое резюме как будто бы и не нужно. У меня было дефолтное резюме в несколько строк типа: был такой-то проект на таком-то стеке, делал то-то и то-то. Никаких достижений, цифр и тд. Были приглашения от Сбера, Яндекса, Касперского
Почему пустая структура в Go занимает 0 байт (https://t.me/siliconchannel/64).
Между прочим, ответа на вопрос "почему" по этой ссылке не написано.
Стандарт Си гарантирует, что любые два разных объекта будут иметь разные адреса. Поэтому даже malloc(0) обязан зарезервировать хоть сколько-то байтов памяти.
Зачем это сделано в стандарте, это отдельный вопрос, но оно там есть.
В спецификации же Go таких гарантий нет. Поэтому компилятор вправе "выделять" под struct{} ноль байт и "наслаивать" такие структуры друг на друга.
Так что на вопрос "почему" тут следует ответить, "потому, что может". А может потому, что разработчики Go учли многие ошибки, случившиеся при разработке Си.
Что-то вы путаете. Malloc(0) может вернуть даже NULL.
Или указатель куда-то куда попало.
Если честно, у меня сложилось ощущение, что вы написали что-то не совсем связное, лишь бы поумничать в комментах, получилось не впопад) Пустая структура зачастую весит 0 и в посте расписано как это реализовано. Когда на собесах говорят, что пустая структура весит 0, под капотом подразумевают этот механизм.
Вот смотрите, как работает Си:
#include <stdio.h>
int main() {
struct {} s1;
struct {} s2;
printf("%d, %p\n", (int) sizeof(s1), &s1);
printf("%d, %p\n", (int) sizeof(s2), &s2);
return 0;
}
Печатает:
0, 0x7ffdb4eb4f0e
0, 0x7ffdb4eb4f0f
Обратите внимания, структуры пустые, размер нулевой, а адреса разные. Это то, что гарантирует Си, что у двух разных объектов разные адреса. И он не может никак по-другому это гарантировать, кроме как выделяя под пустую структуру хотя бы один байт адресного пространства.
Теперь аналогичная совершенно программа на Go:
package main
import "unsafe"
func main() {
var s1 struct{}
var s2 struct{}
println(unsafe.Sizeof(s1), &s1)
println(unsafe.Sizeof(s2), &s2)
}
Печатает:
0 0xc000076740
0 0xc000076740
Размер нулевой и адреса одинаковые. Потому что Go не связан сишными гарантиями выдавать разные адреса под разные объекты, поэтому может не выделять под них память, а вернуть "какой-то" условно-валидный указатель.
sizeof(пустая структура) зачастую возвращает 1, а не ноль: https://godbolt.org/z/GnPanhEra
Какой компилятор распечатал?
gcc
А, в режиме Си а не Си++: https://godbolt.org/z/zW39senfe -- sizeof 0 у clang и gcc, а msvc отказывается компилировать.
При этом у gcc -- ОДИНАКОВЫЙ адрес:
Program returned: 0
0, 0x7fffffe539c0
0, 0x7fffffe539c0
Потому что в C пустые структуры на самом деле запрещены. What is the size of an empty struct in C?. Компиляция с опцией -pedantic
выдаёт в gcc: warning: struct has no members
, а в clang: warning: empty struct is a GNU extension
.
Да, я не знал этого нюанса, что malloc(0) может вернуть что угодно. Просто в нормальной программе я б не рискнул позвать malloc с нулевым аргументом, поэтому что там стандарт про это пишет, в голове не держу.
Однако обратите внимание (см ниже), если заводить пустые структуры на стеке, они получают разные адреса.
Кстати, если сделать их static, адреса получатся одинаковыми. Но мне лень уж так далеко копать, чтобы выяснить, ошибка это gcc или в стандарте есть исключение.
Не сказал бы что просмотр решений мешает двигаться в решении алго-задач. Иногда бывают такие задачи до решения которых голова вообще не дойдет, и эти решения глаза открывают)
Как то решал задачу на поиск дубликата с каким то условием, только посмотрев ответ узнал что есть алгоритм с черепахой и зайцем, никогда бы не догадался, но теперь знаю)
из неизвестной линейной последовательности?
интересно, а как подходит уровень про к SVG/XML = XSVGML ) без Skia/Cairo/Boost или уже все всё создали ) что я сейчас вижу частично это комплекс литкодовских задачек ) + подсветил тему интересующимся где можно применить знания )
Совсем недавно на собеседовании по алгоритмам в бигтех я потратил почти всё время, решая не ту задачу, которая была поставлена. Причём сделал это 2 раза. То есть, когда первый раз выяснилось, что я не так понял задачу, я перечитал и опять её не так понял, и стал решать опять не ту. А на третью попытку уже не хватило времени. Так что читайте очень внимательно, переспрашивайте много, пишите тут же, до начала решения, тесты/примеры, которые подтверждают, что вы правильно поняли задачу, и так далее. Кстати, в моем случае два примера в задаче специально были выбраны так, чтобы тестируемый мог понять задачу неверно.
Звучит довольно просто на самом деле. Главное не нужна математика. Ну в том виде в котором она нужна в мл например имею в виду
А у вас есть Telegram-канал? Дайте ссылку.
Ох, я уже боялся не спросите. Держите конечно https://t.me/siliconchannel !
Я постил на Хабре аналогичную статью в 2023 году. Там тоже было и про Go, и про те же компании. Похоже пока ничего особо не изменилось ))
Позволю себе оставить здесь цитату из одной популярной статьи на хабре
Тут что-то написано про leetcode, но я человек ответственный, поэтому к интервью не готовлюсь. Это кстати я не шуткую, реально: если вы ответственный человек, то вы, когда предстаёте перед компанией, отвечаете за то, что вы заявляете как ваши умения. Можно выучить типовые вопросы и даже казаться умнее и опытнее, чем есть, но по факту это переобучение на тестовых заданиях/вопросах. Ребята из ml поймут. Поэтому я гол как сокол и чист как стёклышко или что там ещё блин, если что-то знаю - скажу, что-то не знаю - скажу что не знаю. Таким образом работодатель знает, что он покупает и сколько ещё нужно вложить в меня средств на обучение. Все счастливы.
много умных ребят готовясь к собесам не имеют четкой системы подготовки, и из-за этого заваливают технические собесы в компании
Вы, насколько я понял, тоже не имеете чёткой системы подготовки кроме представления какие есть этапы на собеседовании и что там спрашивают
Умный в гору не пойдёт — умный гору обойдёт!
Дополнил бы про подход к решению задач и вообще подготовку этим роликом, да, очень долгий, если что суть по таймкоду в ссылке. Помогает понять, что в большинстве проблем и сомнений разработки и подготовки ты не один и есть решение, либо взгляд-принятие, с которым проблема уже не является проблемой
Ты решаешь LeetCode неправильно. Как пройти любое собеседование в BigTech?