GD Star Rating
loading...

Задачка для интервью по JavaScript: Что тут не так?

document.write(”);

Tagged with →  

51 Responses to Задачка для интервью по JavaScrip

  1. Batsuper:

    о шит, парсер все съел

    document.write(‘<script type=”text/javascript”>myfunc(” + arg1 + ”,’ + arg2 +’)</script>’);

  2. Ovenode:

    за document.write надо сразу нахуй из професии.
    ну а проблема в том что вместо </script> надо писать </s” + “cript> иначе это закрытие тега для браузера

  3. Ovenode:

    а я не прочитал что это для собеседования, тогда единственный правильный ответ:”использование document.write”

  4. Ebahlam:

    : гуглу это скажи.

  5. Batsuper:

    : “использование document.write” – что именно с этим не так?

  6. Batsuper:

    Чуваки, я понимаю что весь интернет кричит “document.write – это bad practice!” то если программер совершенно тупой, то обязательно поймет что-то не так и напортачит с document.write, но видите ли, данный тест чуть хитрее, и к тому же мне обычно, извиняюсь, насрать на то, что в Интернете считается плохой практикой. И вам тоже должно быть. Вобщем речь не о том.

  7. Ebahlam:

    : а ответ про </s’+’cript> тебя чем не устроил?

  8. Batsuper:

    : кстати вот за </s” + “cript> – вон из профессии 🙂

    ближе к программированию вот так: “</script>”

  9. Batsuper:

    : это только для отвода глаз 😉

  10. Ovenode:

    : ну у меня от document.write лютая попаболь с тех пор как я лоадер скриптов для нигмы писал, там очень много ебли было как раз из за 3rd-party любителей document.write. Давай лучше ты мне приведёш пару примеров где ты считаеш его умемсно использовать, а я скажу почему его там не стоит использовать?

  11. Batsuper:

    : дело в том, что у тэга script нет хорошего способа узнать где он сам находится в документе. (Вроде какие-то кривые методы есть, но не уверен насчет их кросс-браузерности) Так если ты хочешь сгенерировать HTML прямо из script-тэга, и чтоб код был компактным, то лучше всего сделать это с document.write. Нет?

  12. Ebahlam:

    : ну я могу предположить про XSS, но откуда берётся arg1 и arg2 ничего неизвестно, может быть они полностью безопасны.
    Ну а еще во времена нетскейпа и IE4 скрипты вставленные из document.write не работали.
    Больше догадок не имею.

  13. Batsuper:

    : спойлер: написанный код эквивалентен такому: myfunc(arg1, arg2), нет? 🙂

  14. TodZero:

    arg1 и arg2 могут иметь такие значения, которые могут привести к синтаксической ошибке – например, строка содержащая символ кавычки.

  15. Ebahlam:

    : ну так то да, с небольшой поправкой– arg1 нужно преобразовать в строку. Но тогда задача имеет тот же смысл что и:

    Вопрос: Что не так в выражении 1 + 2?
    Ответ: Выражение эквивалентно 3.

  16. Batsuper:

    : : это да, но честное слово, делал это только для отвода глаз 🙂 положим один аргумент – безобидная и заискейпленная строка, а другой – всегда число.

  17. Batsuper:

    : да, но если бы это было так же просто как и 1+2=3, то все бы сразу догадались 🙂

  18. Batsuper:

    : а кстати преобразовывать ничего не надо, оно заработает именно так

  19. Ebahlam:

    : что-то ты сильно много сделал для отвода глаз и надеешься что испытуемый сможет с первой попытки угадать что ты на самом деле хотел? 🙂
    А в итоге окажется, что у тебя по принятому code style положено точку с запятой в конце ставить.

  20. Ebahlam:

    : а откуда я знаю что там внутри myfunc? Может быть там проверка что первый аргумент строка?
    Ты же спросил про эквивалентность.

  21. Batsuper:

    : для интервью это всегда хорошо, когда человек рассуждает о вещах, а ты ему говоришь: ладно, а что еще? то есть open-end вопрос.

    Скажем у меня есть еще такой вопрос: где лучше держать JPG файлы, в базе или в файловой системе? Тут на любой аргумент придумывается контр аргумент, и так часами ты можешь раскапывать реальные знания человека о вещах – о СУБД, файловых системах, веб серверах, итд

  22. Gk0nix:

    : нехватает кавычек у arg2?
    вдруг он строка

  23. Xuaapp:

    : блядь, зачем вам всем цдату придумали? Для красоты штоле?

  24. Xuaapp:

    : нет. С хуёв-то?

  25. Batsuper:

    : Chinese Developers Network?

  26. Xuaapp:

    : в приёме на работу отказать.

  27. KoZlo:

    : CDN это не место хранения файлов, если че. это прокси

  28. Xuaapp:

    : прокси? Ну оок, лол.

  29. KoZlo:

    : по крайней мере, Amazon CloudFront работает как reverse-proxy

  30. Gk0nix:

    правильный ответ то какой?

  31. SliLt:

    : Несмотря на все “bad practice”, бывают случаи когда совершенно необходимо вставленный скрипт выполнить синхронно. Например, из-за особенностей скрипта или задачи. Соответственно, скрипт, вставленный через document.write будет выполнен сразу после текущего блока скрипта.

    Я думаю “что не так в этом скрипте” заключается в первую очередь в том, что значения аргументов не экранируются. А вариант с сработает лишь в случае, когда этот скрипт находится в другом блоке скрипт, что неочевидно из условия вопроса.

  32. SliLt:

    : вариант с </s’ + ‘cript> ^

  33. SliLt:

    : Content Delivery Network

  34. Xuaapp:

    : в посте совсем другой вариант.

  35. Xuaapp:

    : как устроен CDN внутри – абсолютно по хуй.

  36. Sisko:

    : а потом ты придешь на собеседование и опа-на – знаешь ответ!

  37. YlfApp:

    : по возможности старайтесь избегать этого

  38. KoZlo:

    : да блять, умник, на Amazon CloudFront не “хранятся” файлы, по крайней мере в том же смысле, в котором они могут храниться на диске или в бд (что можно их туда записать, что они там вечно, если не удалять, и так далее)

  39. Batsuper:

    : “потому что все так говорят” – пиздатая причина

  40. TodZero:

    : причина в другом. если использовать document.write уже после загрузки страницы, то все пойдет по пизде т.к. произойдет document.open и создастся новый документ.

  41. Xuaapp:

    : тебе надо задачу решить или попиздеть?

  42. Batsuper:

    : и это всё? То есть из-за какого-то я извиняюсь идиота, который сделает document.write полсе загрузки страницы, никто ни при каких обстоятельствах не должен вызывать document.write?

  43. TodZero:

    : идиот – тот, кто пишет код, который будет работать только до загурзки старницы 😉

  44. KoZlo:

    : “залить файлы на CDN” это не решение задачи. в общем случае*, на CDN залить файлы нельзя

    * – кажется, существуют комбинированные решения хостинг + CDN, на которые можно “залить файлы”

  45. KoZlo:

    : например, если использовать CloudFront, это решит проблему показа файлов пользователю, но их все равно надо где-то хранить – из этого хранилища их будет брать CloudFront. например: на s3, на своем сервере, в базе данных

    итак, мы по совету прикрутили CDN, но вопрос “где хранить файлы?” остается открытым. спасибо, всезнайка !

  46. Xuaapp:

    : нормальные CDN идут вкупе с файлопомойкой. Сюрприз!

  47. Risin:

    : а нельзя повесить хэндлер на какой-нибудь onDocumentLoad, получить document.body / document.head[0] и добавлять через appendChild? в JSONP так делают. по-моему это самое тру.

  48. Risin:

    : надо писать посты на блогу в блокноте

Добавить комментарий