[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопросы кандидатам на собеседовании
Страницы: 1, 2, 3
chee
Был у меня один списочек с вопросами, но его унёс кандидат, а цифровая копия не осталась. sad.gif . Пропали вопросики. Сейчас решил новый составить.

Цитата

Jquery

Базовый уровень

1. Выбрать все элементы с классом basic;
2. Выбрать элемент с идентификатором maincategory;
3. Выбрать строку в таблице, у которой есть ячейка с идентификатором status;
4. Добавить событие на все ссылки, которое будет показывать стандартный алерт с сообщением «Hello, world»;
5. Вызвать событие, которое вы навесили в пункте 4, программным путем;
6. Удалить событие, которое вы добавили в пункте 4;
7. Получить значение галочки из input с типом checkbox;
8. Отправить форму с идентификатором EditView программным путем;
9. Установить полю name с типом text, значение «I am god of jquery»
10. Есть страница (ajax.php?call=myfirstservice на сервере, которая  принимает POST запрос с непустыми полями name и age, а затем отдает json в ответ. Получите данные у этого сервиса, полученные данные выведите в консоль.

Расширенный уровень

11. Есть div с идентификатором container, внутри него находится поля ввода (input) с типом текст (text). Содержимое div с идентификатором container, может быть динамически обновлено. Добавьте события для полей ввода, так что бы при перезагрузке содержимого, события оставались работоспособными;
12. Навешать событие на отправку формы, событие должно сначала останавливать отправку формы, затем проверять заполнено ли поле из пункта 9, если заполнено то отправлять форму, подсвечивать поле из пункта 9 рамкой из красного цвета;
13. Что такое промисы (promise)? Покажите пример.

Javascript

1. Что такое замыкания? Покажите пример;
2. Что такое модульный подход? Покажите пример;
3. Как получить родительский window из popup?
4. Как получить родительский window из iframe?
5. Можно ли закачать файл на сервер через XMLHttpRequest?
6. Область видимость, как объявить приватные свойства, функции у объектов?
7. Базовые принципе работы с прототипами. Установка прототипов, вызов функций, взаимодействие со свойствами.
8. Локальное хранилище в браузере. Его название, базовые методы и принципы работы.
9. WebSocket, что такое, основные принципы работы.

Дополнительно

1. Приходилось ли использовать backbone? Если да, то расскажите базовые архитектурные принципы этого фреймворка.
2. Приходилось ли использовать angular? Если да, то расскажите базовые архитектурные принципы этого фреймворка.
3. Приходилось ли использовать js шаблонизаторы, если да, то какие?
4. Если в js стандарты кодирования и инструменты для обеспечения соблюдения этих стандартов, если да, то какие?


Если есть замечания к формулировкам, буду рад услышать ваши предложения.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
inpost
Скажу сразу, я от JS ооочень далёк, даже слишком, но всё же однажды пришлось поработать popup/iframe и родителями. Этот синтаксис загуглился за 1 минуту и был написан код, а сейчас я даже не могу вспомнить как сделать это, но я уверен, что гугл даст результат снова же за 1 минуту.

Мне кажется, что для таким и подобных этому вопросу надо давать свободный доступ в интернет и оставить на Х времени. Если человек не умеет, то он потратит уйму времени, а знающий сделает с гуглом почти моментально. Не думаю, что в данном случае уместна память человека и его заучивания.

А вот разработку под мобильные устройства ни слова. Неужели ваша фирма этим не занимается?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
sergeiss
Цитата (inpost @ 26.04.2015 - 01:09)
Если человек не умеет, то он потратит уйму времени, а знающий сделает с гуглом почти моментально.

Если человек не знает хотя бы четверть из озвученного списка вопросов, то он нифига не программист JS smile.gif Потому что при работе с JS/jQuery почти вся эта лабуда будет постоянно использоваться.
И знать их надо наизусть, дабы не делать грабли по ходу работы.

Я бы еще добавил к этим вопросам общие, по алгоритмам. Чтобы оценить, насколько человек может соображать. И не важно, решит ли он задачу. Важно то, как он будет это делать.

Также имеет смысл написать код с какими-нибудь ошибками и предложить его отладить средствами браузера. Ошибки должны быть логические, чтобы браузер не давал подсказок никаких. Ну, например, неверный селектор в jQuery или в ИФе поставлено отрицание там, где оно не нужно. Или используемая переменная подразумевается локальной для функции, а она "оказывается" глобальной... То есть нечто такое, поиск чего не займет много времени у опытного разработчика.

И да... Ты все эти вопросы задаешь кандидату или часть из них?

PS. Если у него есть свои наработки, то пусть что-то покажет и объяснит, что там и для чего. А ты, по ходу дела, оценишь его код. Это может дать существенно больше инфы, чем задавание кучи вопросов.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
inpost
Как по мне, так более важно знать процесс разработки, как находит ошибки, как правит ошибки, как тестирует приложение. Да на самом простом, выпадающий список сделать, а потом, чтобы он продемонстрировал момент, как именно проверяет код на работоспособность.
Основная проблема молодежи - не умеют тестировать код.

sergeiss
Я согласен уходить с работы на 2 минуты позже, но эти 2 минуты тратить на гугление дефолтных функций. Если я их буду использовать максимально корректно, я всё равно буду плохим программистом из-за того, что забыл 2 функции? Я уверен, что я и тебя могу завалить на знание ВСЕХ функций на PHP.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
chee
Цитата (inpost @ 26.04.2015 - 01:09)
Не думаю, что в данном случае уместна память человека и его заучивания.

Память для программиста очень важный ресурс. Если не будет хорошей долгосрочной памяти, не будет и хранилища для опыта.

Цитата (inpost @ 26.04.2015 - 01:09)

А вот разработку под мобильные устройства ни слова. Неужели ваша фирма этим не занимается?

мы разрабатываем бизнес-логику, а это в основном отчеты, формы, списки и прочая "скучная" приблуда. Конечно у нас есть мобильные клиенты, но они на backbone. Но мобильные клиенты, как то не весело продаются sad.gif.

Цитата (sergeiss @ 26.04.2015 - 01:38)
И да... Ты все эти вопросы задаешь кандидату или часть из них?

В зависимости сколько времени он отвечает и как отвечает, если начинает заваливаться на базовом уровне, то конечно же я ему не задам расширенный. Если человек придет на тимлида или ведущего, я жду от него как минимум 90% правильных ответов из списка по js/jquery, с затрагиванием дополнительных вопросов.


Цитата (sergeiss @ 26.04.2015 - 01:38)
Также имеет смысл написать код с какими-нибудь ошибками и предложить его отладить средствами браузера.

Я думаю это излишне, как в плане времени, так и в плане смысла. У нас в основном пишется серверсайд на PHP, а фронтэнд затрагивается не часта и не сильно. Но в тех предалах, по котороым составлены эти не сложные вопросы.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
промисы реально используете? покажи пример из практики, а то сколько не читал статьи про них, так и не понял, в чем профит. Впрочем, у меня есть свой "фреймворк", в котором решаются 95% задач и скорее всего я просто юзаю какие-то альтернативы, поэтому и нет в них необходимости

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

S.Chushkin
Цитата (chee @ 26.04.2015 - 00:48)
...а цифровая копия не осталась.

Показатель wink.gif

Цитата
Если есть замечания к формулировкам, буду рад услышать ваши предложения.

Jquery:
1,2 можно/нужно объединить.
9 уточнить описание.
10 исправить.
11,12 переписать. (описание условий некорректны)

Я, например, не знаю что такое promise? А оно надо, чтобы знать/помнить его?

Javascript:
6 - у объектов нет функций smile.gif
7 - откорректировать.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
sergeiss
Цитата (inpost @ 26.04.2015 - 03:20)
sergeiss
Я уверен, что я и тебя могу завалить на знание ВСЕХ функций на PHP.

Либо я неправильно выразился, либо ты меня не правильно понял. Но если человек не знает "основы основ", то он не программист.
На примере того же ПХП. Если кандидат в программисты скажет, что ему надо посмотреть в гугле, что означает знак "доллар" перед словом, а также как использовать цикл for, то сразу будет понятно, что его дальше о чем-то спрашивать не имеет смысла.
Так и тут, касательно JS/jQuery. Одно дело, что человек может не помнить названия всех свойств/методов какого-нибудь сложного объекта, и совсем другое дело, что он вообще не понимает, что означают понятия "свойство" или "метод", как их объявить и как использовать. Или, например, если не может без гугла "Выбрать все элементы с классом basic", то он вообще не знает jQuery.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
inpost
sergeiss
А часто приходится работать с iframe ? Что ты его сравнил с знаком доллар или циклами?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
sergeiss
Цитата (inpost @ 26.04.2015 - 11:46)
А часто приходится работать с iframe ?

Часто или не часто, это другой вопрос. Но вопрос не в этом. А в том, чтобы узнать, что кандидат знает (в т.ч. по вопросам про айфрейм) и, второе, как он мыслит.
Если ты хоть раз поработал с айфреймом, что-то передавал из него и в него, то запомнишь smile.gif Там потому что ну очень небольшая специфика, по сравнению с обычной работой JS.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
stump
Собеседование обычно начинается с вопроса: "расскажите о себе!?".

_____________
Трус не играет в хокей
chee
Цитата (S.Chushkin @ 26.04.2015 - 11:11)
Я, например, не знаю что такое promise? А оно надо, чтобы знать/помнить его?

Да, надо, есть ли вы не писали, что-то серьезное с использованием промисов, то скорей всего делали это с ипользованием калбеков, что в свою очередь приводило к костылям или обильнейшему говнокоду.

Цитата (Invis1ble @ 26.04.2015 - 04:56)
покажи пример из практики


(function () {
SUGAR.AjaxForm = function () {
var ajaxform = this;

this.formName = 'ajaxform';
this.width = 'auto';
this.form = null;
this.table = null;
this.dialog = null;
this.title = 'ajaxform';
this.module = 'Home';
this.target = {
module: this.module
};

this.getTarget = function () {
return $.extend(ajaxform.target, {
form_name: this.formName,
form: this.formName
});
};

this.buttons = {
'Ок': function () {
ajaxform.form.dialog('close');
},
'Отмена': function () {
ajaxform.form.dialog('close');
}
}
;

this.include = function (path) {
$.getScript(path);
};

this.includeJavascriptForm = function () {
ajaxform.include('include/SugarFields/Fields/Datetimecombo/Datetimecombo.js');
ajaxform.include(ajaxform.getUrl() + '&target[only_js]=true');
};

this.getUrl = function () {
return 'index.php?' + $.param({
module: this.module,
action: 'ajaxform',
target: ajaxform.getTarget()
});
};

this.callEvent = function (eventName) {
$(ajaxform).trigger(eventName, ajaxform);
};

this.showDialog = function () {
ajaxform.callEvent('before_open_dialog');
ajaxform.dialog = ajaxform.form.dialog({
modal: true,
title: ajaxform.title,
width: ajaxform.width,
open: function () {
ajaxform.includeJavascriptForm();

ajaxform.callEvent('after_open_dialog');
},
close: function () {
ajaxform.table.remove();
ajaxform.form.remove();

ajaxform.callEvent('after_close_dialog');
},
buttons: ajaxform.buttons
});
};

this.loadForm = function () {
var dfd = new $.Deferred();

ajaxform.callEvent('before_load_form');

$.ajax({
url: ajaxform.getUrl(),
dataType: 'html',
success: function (html) {
ajaxform.form = $('<form>');
ajaxform.table = $('<table>');

ajaxform.form.attr({
name: ajaxform.formName,
id: ajaxform.formName
});

ajaxform.table.append($(html).find('tr.panel-row'));
ajaxform.form.append(ajaxform.table);

ajaxform.callEvent('after_load_form');

dfd.resolve();
}
}
);

return dfd.promise();
};

this.init = function () {
ajaxform.loadForm().done(function () {
ajaxform.showDialog();
});
};
}
}
());

Самый простой пример, который нашел. Можно было сделать с использованием каллбека, но с промисом кажежтся удобней.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.