• Ломаем паттерн проектирования — Singleton в PHP
    –1
    Удаленный комментарий
  • Вы не сможете решить эту задачу на собеседовании
    0
    А в unit тесте — как проверит?)
  • Вы не сможете решить эту задачу на собеседовании
    +2
    Отнесся бы положительно и спросил бы о вашем опыте, когда результат был неочевиден, поделился бы своим.
  • Вы не сможете решить эту задачу на собеседовании
    +2
    У того же Лодаша — есть целыз 3 ф-и для проверки на объект, и только одна из них обрабатывает ваш кейс.
    isObject — нет
    isObjectLike — нет
    isPlainObject — да
  • Вы не сможете решить эту задачу на собеседовании
    –28
    Спасибо за комментарий, отвечу вам.

    Порой (очень часто) на собеседования приходят молодые люди, претендующие на позицию (и зарплату) сеньера, не имеющие за своими плечами многолетнего багажа опыта — пара курсов, пара стартапов, пофрилансил, потом еще стартап и все, сеньер! Нет, не сеньер!

    Я повторюсь — понятие джун/миллди/сеньер — субъективное. В этом комментарии — я говорю о своем восприятии.

    Чуть отвлекусь на тему typeof null — нету в js нормального способа проверить является ли значение переменной объектом. Или юзать готовые решения, либо писать функцию самому. Вот оптимальная реализация:

    function isObject (value) {
        return value && typeof value === 'object' && value.constructor === Object;
    }
    


    И вот здесь и кроется ответ на вопрос: зачем я спрашиваю про typeof null на собеседовании — typeof null === 'object'!

    Вот не будет завтра lodash, отрубит нам РКН интернет или еще какой катаклизм случится. Как этот молодой и талантливый специалист будет проверять что ему бекенд вернул? Как проверит, что другой молодой и талантливый не передал в его функцию невалидное значение? Никак, если не будет знать об этой маленькой особенности стандарта. Для меня — это основа основ, которую обязан знать каждый. Не знаешь — иди читай книги, проходи курсы, что угодно, но будь любезен — умей проверять переменные на валидность!

    Что касается сеньеров — еще более субъективно, мне кажется, что сеньеру было бы интересно знать, почему это работает именно так, а не как-то иначе, вот и все.

    Сможет ли он пройти собеседование и не пасть позорно до джуниора споткнувшись на собственных же вопросах двухлетней давности?


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

    Искренне надеюсь, что смог донести до вас свою мысль.
  • Вы не сможете решить эту задачу на собеседовании
    –17

    Простите, я вас, вероятно, неправильно понял. Вы на собеседованиях отказываетесь отвечать на теоретические вопросы и решать небольшие задачки?


    Многие не знают, кто они: "Джун, мидл или кто-то еще", это нормально, границы очень условны и размыты, однако в вакансии в 90% случаев указано Junior/Middle/Senior, а значит кандидат, если приходит собеседование сопоставляет свой уровень с указанным.

  • Вы не сможете решить эту задачу на собеседовании
    –2

    С ходу — нет, каждый случай "неочевидного поведения" может быть поводом еще раз заглянуть в спецификацию. А уж там, следуя шаг за шагом, можно выяснить причины этого поведения.

  • Вы не сможете решить эту задачу на собеседовании
    0

    Абсолютно с вами согласен. Спасибо за ссылку.

  • Вы не сможете решить эту задачу на собеседовании
    +2

    Я немного ввел в заблуждение, простите. Речь идет не о букве "Ё", а о сочетании 2х символов Юникода u{0415}(Е) и u{0308}("̈), которые идя друг за другом образуют последовательность юникода и мы видим букву "Ё" на экране.


    \u{0415}\u{0308}' === 'Ё' // false
    
  • О дженериках в PHP и о том, зачем они нам нужны
    +1
    Неуверенность в содержимом массива и влиянии разбросанности кода на производительность и удобство сопровождения, а также неудобство написания дополнительных проверок заставили меня долго искать решение получше.


    На мой взгляд «Неуверенность в содержимом массива» — основной признак говнокода…
  • Разбор задач первого этапа отбора в школу программистов HeadHunter 2016
    0
    Все, понял. Спасибо.
  • Разбор задач первого этапа отбора в школу программистов HeadHunter 2016
    0
    Но ведь в замечательном числе все цифры являются частями последовательностей, разве я не прав?
  • Разбор задач первого этапа отбора в школу программистов HeadHunter 2016
    0
    Немного не понял решение 6-ой задачи. Ведь если речь идет о последовательностях, то достаточно начать складывать все цифры числа — если на каком-то шаге у нас будет сумма больше 10 — то это не замечательное число, а если же на последнем шаге итерации у нас сумма 10 — то число замечательное.

    foo = function(n) {
    	n = n.toString();
    	n = n.slice('');
    
    	for(var i = 0, sum = 0; i<n.length; i++) {
    		sum += parseFloat(n[i], 10);
    
    		if(sum==10 && i == (n.length-1)) {
    			return true;
    		}
    
    		if(sum>10) {
    			return false;
    		}
    
    		else {
    			if(sum==10) {
    				sum = 0;
    			}
    		}
    	}
    	return false;
    }