02.07.2011, 20:06
|
Интересующийся
|
|
Регистрация: 02.07.2011
Сообщений: 16
|
|
Сообщение от mycoding
|
Про ВО ни разу не спросили.
Хотя в вакансиях пишут, что желательно.
Вообще, если есть знания и без ВО можно работать.
Например V~Vladi вроде без ВО, а работает в очень серьезной фирме
ВО нужно для формирования личности, фундамента знаний, знакомства с очень интересными людьми, выбора пути в жизни и много то, что просто не рассказать.
Все профессиональные знания получаются на работе в реальных условиях бизнеса. Либо самим человеком при чтении книг, блогов и прочего.
Про собеседование:
Я общался с Федором Голубевым и еще одним человеком.
Вопросы были вроде тех, что вот здесь
http://company.yandex.ru/job/vacanci..._developer.xml
http://company.yandex.ru/job/vacanci...dia_search.xml
Мне на собеседовании очень понравилось)))
Длилось где-то два часа.
Я не помню уже всего о чем спрашивали.
Вот что запомнилось
1 - Что такое JSONP
2 - Реализации ООП в js(примеры)
3 - Про замыкания, классический пример с массивом
Больше ничего не запомнилось)))
Собеседование проходило в кабинете с надписью "Пятая колонна"
Было очень дружелюбно.
На прощанье дали папочку с надписью "Яндекс")))
|
Понятно, спасибо!
Не подскажешь как правильно ответить на этот вопрос:
Дан код:
var rx1 = RegExp(/regular/ + /expression/);
var rx2 = /regularexpression/;
Что нужно добавить в начало программы, чтобы rx1 и rx2 стали идентичными? Сами строчки трогать нельзя.
|
|
02.07.2011, 20:09
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
Сообщение от DrStrangelove
|
Понятно, спасибо!
Не подскажешь как правильно ответить на этот вопрос:
Дан код:
var rx1 = RegExp(/regular/ + /expression/);
var rx2 = /regularexpression/;
Что нужно добавить в начало программы, чтобы rx1 и rx2 стали идентичными? Сами строчки трогать нельзя.
|
Вот этот пример я до сих пор не знаю как правильно сделать)))
Это же для Яндекс бар, возможно там что-то из EcmaScript 5, вроде
use strict.
|
|
02.07.2011, 20:30
|
Интересующийся
|
|
Регистрация: 02.07.2011
Сообщений: 16
|
|
Сообщение от mycoding
|
Вот этот пример я до сих пор не знаю как правильно сделать)))
Это же для Яндекс бар, возможно там что-то из EcmaScript 5, вроде
use strict.
|
Яндекс потом не раскрывает правильных ответов для соискателей??
|
|
02.07.2011, 20:32
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Скажем, это:
// OLD
var rx1 = RegExp(/regular/ + /expression/);
var rx2 = /regularexpression/;
alert([rx1, rx2])
alert([rx1.test('regularexpression'), rx2.test('regularexpression')]) // false, true T_T
// NEW
var oldToString = RegExp.prototype.toString;
RegExp.prototype.toString = function(){
var value = oldToString.call(this);
return value.replace(/\//g, '')
}
var rx1 = RegExp(/regular/ + /expression/);
var rx2 = /regularexpression/;
alert([rx1, rx2])
alert([rx1.test('regularexpression'), rx2.test('regularexpression')]) // true, true! ^_^
Последний раз редактировалось B@rmaley.e><e, 02.07.2011 в 20:42.
|
|
02.07.2011, 21:13
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
__________________
.ня
|
|
02.07.2011, 21:14
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
B@rmaley.e><e, у регекспов есть замечательное свойство source
__________________
.ня
|
|
02.07.2011, 21:20
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
tenshi, спасибо, забыл о существовании такового. Лучше, конечно, использовать его, чем костыль с toString.
|
|
02.07.2011, 21:46
|
Интересующийся
|
|
Регистрация: 02.07.2011
Сообщений: 16
|
|
Сообщение от B@rmaley.e><e
|
// NEW
var oldToString = RegExp.prototype.toString;
RegExp.prototype.toString = function(){
var value = oldToString.call(this);
return value.replace(/\//g, '')
}
|
Поясни, плиз, к чему применяется oldToString.call(this); и что попадает в
value??
|
|
02.07.2011, 21:54
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Переопределяется метод toString для регэкспов, который вызывается, например, в случае /regexp1/ + /regexp2/, так, чтобы возвращать свое значение не в виде / regexp/flags (флаги в текущей версии не предусмотрены), а просто в виде regexp. Тогда конкатенация /regexp1/ + /regexp2/ даст regexp1regexp2, которая, будучи переданной аргументом RegExp, станет /regexp1regexp2/.
oldToString используется для получения строкового представления регэкспа. В value попадает как раз содержание регэкспа.
Но с учетом поправки, корректный код будет выглядеть так:
// OLD
var rx1 = RegExp(/regular/ + /expression/);
var rx2 = /regularexpression/;
alert([rx1, rx2])
alert([rx1.test('regularexpression'), rx2.test('regularexpression')]) // false, true T_T
// NEW
RegExp.prototype.toString = function(){
return this.source;
}
var rx1 = RegExp(/regular/ + /expression/);
var rx2 = /regularexpression/;
alert([rx1, rx2])
alert([rx1.test('regularexpression'), rx2.test('regularexpression')]) // true, true! ^_^
|
|
|
|