Сортировки стоит пару раз увидеть и понять и уже не забыть как они работают
А как на счёт их названий? Слиянием/вставками/выбором, как это всё запомнить? Я помню, что сортировка слиянием вроде бы делит всё "пополам" на "меньше" N и "больше" N, потом рекурсивно ещё пополам, пока не останется 1-2 элемента, потом всё склеивает. А может, это и не она.
Как-то раз хотел написать сортировку пузырьком и не смог o_O Получилась тоже с двумя циклами, но которая меняла не соседние два элемента, а i-й элемент от начала, находя для него наиболее подходящееся значение из оставшихся N-i.
У нас нет команды как таковой. На прошлой работе мы начинали маленькой компанией в три человека, одним из которых был директор, потом выросли до ~40-50 человек, я то делал какие-то интернет-магазины наполовину самописные, то потом перешёл во фронтенд, но всегда работал один, потому что у каждого фронтендера в компании были свои проекты. Крайне редко со мной в пару ставили кого-то ещё, с кем можно было разделить задачи. А бэкендеры работали сами по себе. API в сваггере описали — мне и достаточно. Если есть баги или вопросы — пишу в рабочий чат. В среднем как-то так я работал около 8 лет.
На нынешнем месте я единственный фронтендер, остальные 3 человека пишут на PHP. Недавно их было больше, но сейчас столько. Некому смотреть за моим кодом. Да и у них, если конфликтов нет, то всё идёт на тестовый сервер и там тестируется. Я иногда смотрю в PHP, потому что у нас на самом крупном из проектов — битрикс, всё переплетено, и могу дать обратную связь бэкендеру, который со мной его пишет. Всё же, я знаком с синтаксисом PHP и могу понимать некоторые вещи, которые не связаны с функциями битрикса. Иногда, если сервер выдаёт ошибки, а уже ночь, то я сам могу заняться дебагом и найти причину (то за null не уследили, то в массив ключ не добавили, потому что if не сработал).
Из моих последних достижений — уменьшение размера js+css (два больших файла) с 16 МБ до 3.9 МБ, ещё и с разбивкой на модули, которые загружаются только если нужны. Это всё висело годами, но я наконец решил заняться вопросом и оптимизировать. Настолько всех всё устраивало. Поэтому какой-то неоптимальный код или плохие имена переменных — это вообще не проблема.
Я хотел бы, чтобы кто-то посмотрел мой код и что-нибудь подсказал. Я несколько лет не знал, что в vue есть provide/inject, и занимался просовыванием пропсов и событий туда-обратно через цепочку компонентов. В какие-то моменты даже стал слать события через window.dispatchEvent(). Может, есть что-то ещё, что хорошо было бы узнать.
То есть, настолько глубоко нужно изучать языки? Типа, пока штук 10 учебников не прочитаешь, можно даже не искать работу? А ведь ещё нужно что-то писать, чтобы закреплять знания. А пока их читаешь, уже выйдет новая версия языка, и не одна.
Я с января прошлого года взялся изучать Go, до марта поизучал, в январе этого года решил начать заново, но пропуская большие куски, которые уже прочитал и примерно помню. Так, учебник, который я читаю, уже даёт некоторые устаревшие примеры. Например, vs code мне показывает, что генератор случайных чисел уже не нужно инициализировать. А на хабре видел, что там что-то с замыканиями изменили где-то в версии 1.23 или около того. Чувствую, я так могу никогда не догнать актуальное состояние языка, а ведь я читаю только про поверхностные вещи, там пока что дают по паре функций из каждой библиотеки. Был бы я безработным, насколько всё было бы проще и быстрее…
Понимают те, кто в контексте :) Для меня это до сих пор что-то абстрактное, вроде шаблона страницы, но вроде и не совсем, это может быть и целый компонент. Я с MVC так и не познакомился, как и с MVVM. Аббревиатуры-то написать могу, расшифровку знаю, но осознания не имею.
Так разговор и свёлся к тому, что учебники нужно читать на английском. Но лично у меня, например, скорость чтения английского текста раза в полтора ниже, в нём не могу пробегать абзац глазами, выцепляя слова и достраивая из них общий смысл абзаца. Аналогично не могу искать нужный кусок текста, беря по паре слов из предложения. А вот на русском могу.
После 2-3 просмотров 3D я понял, что уже через 15 минут перестаю обращать на это внимание, но при этом картинка темнее, область зрения чуть сужена очками, а 3D-очки поверх своих очков — это не такая уж удобная штука. Поэтому всегда выбирал 2D, пока в 2020 не перестал ходить в кино. А то до этого каждый четверг ходил на премьеру чего-нибудь.
Да, бывает такое, что не обсуждали. Я за ~10 лет работы, пожалуй, никогда ни с кем не обсуждал свой код. Не потому, что я не хочу, а потому что в рабочее время никому такую задачу не ставят, а в нерабочее кому это надо?
Один только раз после игры в теннис напарник помог мне понять, как разбивать компоненты в vue на более мелкие части. Я тогда только-только постигал это всё. Возможно, что и сейчас не совсем правильно постиг, но кто бы оценил?
А как работает хеш-таблица? Она же или есть в языке (я читал, что в Perl есть), или её нет. Кто её знает, как она там работает? Исходники компилятора/интерпретатора читать? Или речь о чём-то другом?
Понятно, что если в компиляторе смогли сделать, то можно просто руками это сделать. Наверное, про такой случай речь, да?
У нас в компании 4 разработчика, но если мне менеджер поставил задачу, значит это надо, тестирует обычно отдельный человек или сам менеджер (ну, я тоже не сдаю то, что откровенно не работает, и иногда в процессе нахожу косяки), после моего merge request'а оно попадает на прод не знаю какими путями, это не моя сфера, а где там какие серверы, это тоже не моя забота.
Вообще, в русскоязычных книгах, я заметил, такое бывает. Прочитал про обобщённые типы, а на хабре все пишут про какие-то дженерики. Думаю, да когда ж я узнаю, что такое эти дженерики?
Или, вот, читал про сегменты в Go, а во всех статьях пишут про слайсы. Лишь посмотрев код, я понял, что за слайсы такие. Но и то, у меня оставались сомнения, что вдруг слайсы — это особый вид сегментов с собственным поведением.
Выше человек пишет: "Кладёт воркер в очередь фьюекса". Странно, что в очередь, а не "в кьюшку". И то ли это сленг из какой-то очень узкой области, то ли действительно общепринятая в англоязычной литературе терминология. Хотя "кладёт" — это точно сленг, потому что в очередь всё же добавляют.
Конечно, я не хочу людей, которые читали книги на английском, заставить перечитывать русскоязычные переводы, чтобы общаться на одном языке, но по факту имеем ситуацию как с поворотниками на кольце — в автошколе учат всегда сначала включать правый поворотник; но на дороге все, кто не едет направо, сперва включают левый, и даже были случаи, что если при въезде показать правый, а потом ехать дальше по внешнему краю кольца, то люди перестают пропускать и ломятся вперёд, думая, что машина будет съезжать с кольца. Так и приходится перенимать в речь всякие дженерики с локерами.
$lp(x) \le lp(rd(x)), \forall x \notin \mathcal{P}, x>1$
Я хлебушек. Если бы я и смог продраться через подобные выкрутасы, то те времена прошли 20 лет назад. Я даже не уверен, что там понимают под фигурными скобками, массив, множество, или ещё что похлеще. Просто поверю, что такой алгоритм есть, но я крайне сомневаюсь, что сам буду такое писать, и что мне придётся выбирать между разными вариантами. И уж точно я не смогу определить сложность чего-либо, чтобы сравнить их между собой. Я осознаю свой уровень и уровень решаемых мной задач. Внутри того, что я делаю, я могу интуитивно определить, что будет работать быстрее, без явного выведения формул для N.
К слову о деревьях. Я понимаю, что это односвязный граф, где от каждого элемента, идя по "предкам", можно дойти до единственного общего предка. Но что считать отсортированностью в такой структуре, это можно узнать только читая соответствующую литературу. Я, например, не представляю. Односвязные списки, кроме литкода, использовал раз в жизни, ради прикола. Так бы обычным массивом обошёлся, но в него сложно добавлять что-то в середину, а мне нужно было сделать драг-н-дроп внутри списка элементов на странице.
Но я и не претендую на работу в корпорациях.
// Если мне показать пример отсортированного дерева, то я пойму и смогу придумать что-то с поиском.
Вы учились в СССР или в 2000-х? Потому что в девяностых точно не проходили. Если первое, то понятно, почему ругают нынешнее образование, а если второе, то не понятно, почему ругают, если там даже такое проходят. А вообще говоря, вдалбливать школьникам про сложность алгоритмов — это как всем школьникам насаживать умение программировать. Зачем всем, если кто-то из них будет работать мясником, водителем автобуса или точить садовый инвентарь? С той же аргументацией можно всех обучать работать на фрезерном станке и различать номиналы резисторов по полоскам.
Независимо от того, что это может быть полезно и перенастраивает мозги, оно всё равно неминуемо забудется. Я на PHP писал в течение 10 лет, но прошло лет 6, а я уже сомневаюсь, как там в классах переменные создавать, нужно ли писать запятые, точки с запятой, нужен ли знак доллара, писать ли значения через двоеточие или знак равенства, как статические "переменные" задавать (даже не помню, как это называется, свойства что ли?), какие у классов есть магические методы.
человек, считающий себя мидлом, не знающий про О-нотацию и DNS
Это ведь больше про терминологию. Хотя, если знать, что это такое, то знание терминологии неизбежно, но вдруг он интуитивно это всё понимает правильно, просто не изучал. У меня в школе с русским языком так часто было.
Если нужно делать .find для каждого элемента в цикле, то этого всё равно не избежать, даже если сверху будет for().
У меня массивы на единицы, иногда на сотни элементов. Не десятки тысяч, в браузере мне на моей работе (тут делаю акцент) не приходится такие огромные данные перебирать. Запрос данных с сервера всё равно займёт больше времени, чем я буду их перерабатывать, хоть бы даже четырьмя вложенными циклами.
Он мне кажется слишком многословным. Если я буду вместо каждого .filter, .map, .every, .some, .forEach писать for(), то, во-первых, не смогу делать цепочки, а во-вторых, придётся вчитываться в этот for, чтобы понять, что внутри творится, тогда как .every заранее говорит о том, что будет происходить.
Не говоря о том, что для map нужно будет подготовить пустой массив, заполнить его, потом всё переприсвоить.
Правильно или неправильно я понял, что он использовал эту строку для отображения ASCII-арта, а не для запуска кода игры?
А как на счёт их названий? Слиянием/вставками/выбором, как это всё запомнить? Я помню, что сортировка слиянием вроде бы делит всё "пополам" на "меньше" N и "больше" N, потом рекурсивно ещё пополам, пока не останется 1-2 элемента, потом всё склеивает. А может, это и не она.
Как-то раз хотел написать сортировку пузырьком и не смог o_O Получилась тоже с двумя циклами, но которая меняла не соседние два элемента, а i-й элемент от начала, находя для него наиболее подходящееся значение из оставшихся N-i.
У нас нет команды как таковой. На прошлой работе мы начинали маленькой компанией в три человека, одним из которых был директор, потом выросли до ~40-50 человек, я то делал какие-то интернет-магазины наполовину самописные, то потом перешёл во фронтенд, но всегда работал один, потому что у каждого фронтендера в компании были свои проекты. Крайне редко со мной в пару ставили кого-то ещё, с кем можно было разделить задачи. А бэкендеры работали сами по себе. API в сваггере описали — мне и достаточно. Если есть баги или вопросы — пишу в рабочий чат. В среднем как-то так я работал около 8 лет.
На нынешнем месте я единственный фронтендер, остальные 3 человека пишут на PHP. Недавно их было больше, но сейчас столько. Некому смотреть за моим кодом. Да и у них, если конфликтов нет, то всё идёт на тестовый сервер и там тестируется. Я иногда смотрю в PHP, потому что у нас на самом крупном из проектов — битрикс, всё переплетено, и могу дать обратную связь бэкендеру, который со мной его пишет. Всё же, я знаком с синтаксисом PHP и могу понимать некоторые вещи, которые не связаны с функциями битрикса. Иногда, если сервер выдаёт ошибки, а уже ночь, то я сам могу заняться дебагом и найти причину (то за null не уследили, то в массив ключ не добавили, потому что if не сработал).
Из моих последних достижений — уменьшение размера js+css (два больших файла) с 16 МБ до 3.9 МБ, ещё и с разбивкой на модули, которые загружаются только если нужны. Это всё висело годами, но я наконец решил заняться вопросом и оптимизировать. Настолько всех всё устраивало. Поэтому какой-то неоптимальный код или плохие имена переменных — это вообще не проблема.
Я хотел бы, чтобы кто-то посмотрел мой код и что-нибудь подсказал. Я несколько лет не знал, что в vue есть provide/inject, и занимался просовыванием пропсов и событий туда-обратно через цепочку компонентов. В какие-то моменты даже стал слать события через window.dispatchEvent(). Может, есть что-то ещё, что хорошо было бы узнать.
То есть, настолько глубоко нужно изучать языки? Типа, пока штук 10 учебников не прочитаешь, можно даже не искать работу? А ведь ещё нужно что-то писать, чтобы закреплять знания. А пока их читаешь, уже выйдет новая версия языка, и не одна.
Я с января прошлого года взялся изучать Go, до марта поизучал, в январе этого года решил начать заново, но пропуская большие куски, которые уже прочитал и примерно помню. Так, учебник, который я читаю, уже даёт некоторые устаревшие примеры. Например, vs code мне показывает, что генератор случайных чисел уже не нужно инициализировать. А на хабре видел, что там что-то с замыканиями изменили где-то в версии 1.23 или около того. Чувствую, я так могу никогда не догнать актуальное состояние языка, а ведь я читаю только про поверхностные вещи, там пока что дают по паре функций из каждой библиотеки. Был бы я безработным, насколько всё было бы проще и быстрее…
Понимают те, кто в контексте :) Для меня это до сих пор что-то абстрактное, вроде шаблона страницы, но вроде и не совсем, это может быть и целый компонент. Я с MVC так и не познакомился, как и с MVVM. Аббревиатуры-то написать могу, расшифровку знаю, но осознания не имею.
Так разговор и свёлся к тому, что учебники нужно читать на английском. Но лично у меня, например, скорость чтения английского текста раза в полтора ниже, в нём не могу пробегать абзац глазами, выцепляя слова и достраивая из них общий смысл абзаца. Аналогично не могу искать нужный кусок текста, беря по паре слов из предложения. А вот на русском могу.
После 2-3 просмотров 3D я понял, что уже через 15 минут перестаю обращать на это внимание, но при этом картинка темнее, область зрения чуть сужена очками, а 3D-очки поверх своих очков — это не такая уж удобная штука. Поэтому всегда выбирал 2D, пока в 2020 не перестал ходить в кино. А то до этого каждый четверг ходил на премьеру чего-нибудь.
Да, бывает такое, что не обсуждали. Я за ~10 лет работы, пожалуй, никогда ни с кем не обсуждал свой код. Не потому, что я не хочу, а потому что в рабочее время никому такую задачу не ставят, а в нерабочее кому это надо?
Один только раз после игры в теннис напарник помог мне понять, как разбивать компоненты в vue на более мелкие части. Я тогда только-только постигал это всё. Возможно, что и сейчас не совсем правильно постиг, но кто бы оценил?
Вы исходите из того, что собеседующие держат руку на пульсе технологий и задают актуальные вопросы?
А как работает хеш-таблица? Она же или есть в языке (я читал, что в Perl есть), или её нет. Кто её знает, как она там работает? Исходники компилятора/интерпретатора читать? Или речь о чём-то другом?
Понятно, что если в компиляторе смогли сделать, то можно просто руками это сделать. Наверное, про такой случай речь, да?
У нас в компании 4 разработчика, но если мне менеджер поставил задачу, значит это надо, тестирует обычно отдельный человек или сам менеджер (ну, я тоже не сдаю то, что откровенно не работает, и иногда в процессе нахожу косяки), после моего merge request'а оно попадает на прод не знаю какими путями, это не моя сфера, а где там какие серверы, это тоже не моя забота.
Но ведь написано же в бумажной книге!
Вообще, в русскоязычных книгах, я заметил, такое бывает. Прочитал про обобщённые типы, а на хабре все пишут про какие-то дженерики. Думаю, да когда ж я узнаю, что такое эти дженерики?
Или, вот, читал про сегменты в Go, а во всех статьях пишут про слайсы. Лишь посмотрев код, я понял, что за слайсы такие. Но и то, у меня оставались сомнения, что вдруг слайсы — это особый вид сегментов с собственным поведением.
Выше человек пишет: "Кладёт воркер в очередь фьюекса". Странно, что в очередь, а не "в кьюшку". И то ли это сленг из какой-то очень узкой области, то ли действительно общепринятая в англоязычной литературе терминология. Хотя "кладёт" — это точно сленг, потому что в очередь всё же добавляют.
Конечно, я не хочу людей, которые читали книги на английском, заставить перечитывать русскоязычные переводы, чтобы общаться на одном языке, но по факту имеем ситуацию как с поворотниками на кольце — в автошколе учат всегда сначала включать правый поворотник; но на дороге все, кто не едет направо, сперва включают левый, и даже были случаи, что если при въезде показать правый, а потом ехать дальше по внешнему краю кольца, то люди перестают пропускать и ломятся вперёд, думая, что машина будет съезжать с кольца. Так и приходится перенимать в речь всякие дженерики с локерами.
Подделка чего? Перла?
Сходил по ссылке
Я хлебушек. Если бы я и смог продраться через подобные выкрутасы, то те времена прошли 20 лет назад. Я даже не уверен, что там понимают под фигурными скобками, массив, множество, или ещё что похлеще. Просто поверю, что такой алгоритм есть, но я крайне сомневаюсь, что сам буду такое писать, и что мне придётся выбирать между разными вариантами. И уж точно я не смогу определить сложность чего-либо, чтобы сравнить их между собой. Я осознаю свой уровень и уровень решаемых мной задач. Внутри того, что я делаю, я могу интуитивно определить, что будет работать быстрее, без явного выведения формул для N.
Что такое отсечение ветвей? Ветвей чего?
К слову о деревьях. Я понимаю, что это односвязный граф, где от каждого элемента, идя по "предкам", можно дойти до единственного общего предка. Но что считать отсортированностью в такой структуре, это можно узнать только читая соответствующую литературу. Я, например, не представляю. Односвязные списки, кроме литкода, использовал раз в жизни, ради прикола. Так бы обычным массивом обошёлся, но в него сложно добавлять что-то в середину, а мне нужно было сделать драг-н-дроп внутри списка элементов на странице.
Но я и не претендую на работу в корпорациях.
// Если мне показать пример отсортированного дерева, то я пойму и смогу придумать что-то с поиском.
Вы учились в СССР или в 2000-х? Потому что в девяностых точно не проходили. Если первое, то понятно, почему ругают нынешнее образование, а если второе, то не понятно, почему ругают, если там даже такое проходят. А вообще говоря, вдалбливать школьникам про сложность алгоритмов — это как всем школьникам насаживать умение программировать. Зачем всем, если кто-то из них будет работать мясником, водителем автобуса или точить садовый инвентарь? С той же аргументацией можно всех обучать работать на фрезерном станке и различать номиналы резисторов по полоскам.
Независимо от того, что это может быть полезно и перенастраивает мозги, оно всё равно неминуемо забудется. Я на PHP писал в течение 10 лет, но прошло лет 6, а я уже сомневаюсь, как там в классах переменные создавать, нужно ли писать запятые, точки с запятой, нужен ли знак доллара, писать ли значения через двоеточие или знак равенства, как статические "переменные" задавать (даже не помню, как это называется, свойства что ли?), какие у классов есть магические методы.
Это ведь больше про терминологию. Хотя, если знать, что это такое, то знание терминологии неизбежно, но вдруг он интуитивно это всё понимает правильно, просто не изучал. У меня в школе с русским языком так часто было.
Ну, честно, для PHP и JS он же не используется.
Если нужно делать .find для каждого элемента в цикле, то этого всё равно не избежать, даже если сверху будет for().
У меня массивы на единицы, иногда на сотни элементов. Не десятки тысяч, в браузере мне на моей работе (тут делаю акцент) не приходится такие огромные данные перебирать. Запрос данных с сервера всё равно займёт больше времени, чем я буду их перерабатывать, хоть бы даже четырьмя вложенными циклами.
Он мне кажется слишком многословным. Если я буду вместо каждого .filter, .map, .every, .some, .forEach писать for(), то, во-первых, не смогу делать цепочки, а во-вторых, придётся вчитываться в этот for, чтобы понять, что внутри творится, тогда как .every заранее говорит о том, что будет происходить.
Не говоря о том, что для map нужно будет подготовить пустой массив, заполнить его, потом всё переприсвоить.