понедельник, 14 января 2013 г.

Вопросы для собеседования по SharePoint Foundation 2010

Чтобы эффективно писать под SharePoint, нужно знать много всякой всячины. Причем, стандартный тест по ASP.Net тут как раз не поможет! Потому что нужно обязательно знать возможности и особенности платформы, чтобы не терять время на велосипедописание.

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

Несколько важных замечаний:
1. Ни на одном серьезном собеседовании по SharePoint я лично пока не присутствовал, так что никакого плагиата в этих вопросах нет, если совпадения есть, они случайны. Честно!
2. Вопросы не охватывают всю платформу, сосредотачиваясь на более общих знаниях. Написание вопросов - дело довольно долгое, поэтому вопросов по таким важным вещам, как BCS, WorkFlow, и некоторым другим очень важным темам (а также по SharePoint Server) - пока нет :) Возможно, напишу попозже.
3. Вопросы вида "Вам поручили сделать то-то, как вы это реализуете?" предполагают, что собеседуемый должен назвать общий алгоритм решения проблемы, и средства/технологии платформы, которые он при этом будет использовать. Код не надо писать))

Не смею больше томить! Вопросы под катом.

Списки и библиотеки документов

1. Чем List Instance отличается от List Definition?
2. Что такое CAML?
3. В чем отличия между объектами SPQuery и SPSiteDataQuery?
4. Что такое Camlex.Net?
5. Какие вы знаете стандартные веб-части для отображения списков?
6. Вы разрабатываете список "Напоминания" (обычный список SharePoint). Для вас был создан специальный дизайн, позволяющий отображать напоминания в виде карточек. Вам поручено реализовать этот дизайн. При этом важно обеспечить, чтобы все напоминания хранились в одном списке, но чтобы каждый пользователь видел только собственные напоминания и не видел чужие. Как вы выполните это задание?
7. Вы расширяете стандартный список "Контакты", добавляя информацию об отделах и о числе подчиненных сотрудников. Поскольку в списке предполагается большое число записей (больше 20 тыс.), вы хотите, чтобы число подчиненных для каждого начальника предпросчитывалось, меняясь только при приеме сотрудника на работу, увольнении сотрудника или переводе сотрудника в другой отдел. Отделы и департаменты могут быть вложенными друг в друга. Опишите, каким образом вы реализуете такой предпросчет?
8. Вам поручено расширить список "Контакты" полем "Зарплата". При этом, поле "Зарплата" должны видеть только директор и топ-менеджеры. Как вы реализуете условное отображение этого поля?
9. В списке, который вам поручили поддерживать, есть колонка "Процент", имеющая тип "Текст". Вы хотите добавить валидацию к этому полю, так, чтобы корректными для этого поля были только числа от 0 до 100, во всех остальных случаях SharePoint должен выдавать ошибку и не давать сохранить изменяемый элемент списка. Как вы реализуете валидацию поля?
10. Чем отличаются вложения в списках от файлов в библиотеках документов?
11. Как обновить элемент списка таким образом, чтобы поле Modified не изменилось?
12. Как изменить колонку Modified на нужную вам дату?
13. Вы разрабатываете SharePoint-решение, которое содержит доработанный список "Контакты". Ваша компания выпустила версию 1.0 решения и продала несколько копий клиентам. В версии 2.0 в список "Контакты" добавилась колонка "Заместитель". Как вы реализуете обновление списка?
14. Что такое Ghosted и UnGhosted файлы? Какие у них есть преимущества и недостатки? Чем отличается Ghosted от GhostedInLibrary?
15. В списке "Доступ к документам" хранятся записи типа SPUserField. В процессе тестирования этого списка и связанного с ним функционала, в список было добавлено большое количество тестовых записей. Единственное общее во всех тестовых записях - это то, что вместо фамилии пользователя фигурирует строка "Тест". Вам поручено удалить все тестовые записи, как вы это сделаете?
16. Чем отличаются методы SPWeb.GetList и SPWeb.GetListFromUrl?
17. Вам поручено создать Custom Field Type, который бы хранил "ссылку" на другой список в пределах текущего веб-приложения, эта ссылка должна включать Guid'ы SPSite, SPWeb и SPList. Опишите, какие вам предстоит создать классы и xml-файлы, чтобы реализовать описанный тип поля?
18. Что такое SPMetal?
19. Какие вы знаете ID стандартных шаблонов списков? Используются, к примеру, при создании списков или при указании RegistrationId для CustomAction.
20. Какие вы знаете методы и классы для программного управления привилегиями доступа к спискам и их элементам?

Страницы и контролы

1. В какой папке на SharePoint-сервере лежат мастер-страницы?
2. Какие мастер-страницы вы знаете и чем они отличаются?
3. Чем отличается ContentPlaceHolder от SharePoint:DelegateControl?
4. Чем отличается Site Page от Application Page?
5. От какого класса наследуется Application Page?
6. Вы разрабатываете страницу (Application Page) с несколькими кнопками. Вы хотите, чтобы  одна из кнопок была видна только тем пользователям, которые имеют права на управление списками. Как вы это реализуете?
7. Вы хотите добавить к своей странице ссылку на скрипт "/_layouts/MyProject/script.js"? Как вы это сделаете?
8. Чем отличаются контролы CssLink и CssRegistration?
9. Как называется контрол для выбора пользователей или групп?

Sandbox

1. Зачем вообще нужны Sandboxed Solutions в SharePoint'е? В чем их преимущество?
2. Какие основные ограничения существуют для Sandboxed Solutions?
3. Может ли Sandboxed Solution - умышленно или неумышленно, стереть данные пользователя, хранящиеся в списках на сайте?
4. В каком процессе выполняются Sanboxed Solutions (куда при отладке делать Attach to process...)?
5. Как осуществляется развертывание Sandboxed Solutions, какие для этого нужны права?
6. Зачем нужны Full Trusted Proxy?
7. Каким образом Sandboxed Solution может вызвать некий метод из Full Trusted Proxy?
8. Вам поручили разработать Sandboxed Solution, которое, среди прочего, должно запрашивать данные из списка, расположенного в соседней коллекции сайтов. При этом вам гарантировано, что все пользователи решения имеют права на доступ к соседней коллекции сайтов. Как вы реализуете получение данных из такого списка? (использование Full Trusted Proxy не разрешается).

Client Object Model

1. Сколько существует вариаций Client Object Model?
2. В каких вариациях Client Object Model следует использовать асинхронные вызовы, а в каких - синхронные?
3. Как называются элементы для организации условных операций и обработки ошибок на стороне сервера?

Разное

1. Вы разработали интерфейс для обработки большого списка, однако время обработки составляет до 30 секунд. Все это время, пользователь видит белую страницу... Вы хотите сделать интерфейс более дружественным, и отобразить какой-нибудь индикатор выполнения обработки. Как вы это сделаете?
2. Что такое Dispose и IDisposable? Что такое SPDisposeCheck?
3. Что такое TimerJob?
4. Что такое Correlation ID?
5. Что такое Developer Dashboard?
6. Зачем нужен метод SPWeb.EnsureUser?
7. Назовите, какие вы знаете PowerShell-команды для развертывания решений SharePoint (wsp-файлы) и управления возможностями (Feature)?

Просьба ответы на эти вопросы в комментах не писать, как минимум массовые ответы. Вдруг, кто-нибудь из действительных работодателей возьмет на вооружение пару-тройку вопросиков :)

В остальном, интересно следующее:
1. Кто на сколько вопросов смог ответить сходу?
2. Какие вопросы понравились/не понравились?
3. Какие интересные вопросы вам запомнились с других собеседований?
4. Общее мнение?

Источник: http://omlin.blogspot.ru/2011/04/sharepoint-foundation-2010.html

Комментариев нет:

Отправить комментарий