Syleiman
11:29 31-01-2007 Собеседование на архитектора .NET
В пятницу буду собесодовать человека на позицию архитектор .NET (.NET Architect). Ну то, что старший программист (Senior Programmer) будет собеседовать архитектора, это отдельная песня.
Я так понял, что задавать конктерные вопросты по библиотеке классов это бессмысленно, решил нагрузить жизненными задачаками. Хочу проверить, умеет ли человек думать, не теряется ли.

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

Задача 1
Есть СУБД SqlServer. Есть таблица. Есть кластерный индекс. Вопросы:
1. Что такое кластерный индекс?
2. Как кластерный индекс связан с ограничением первичного ключа?
3. Как он связан с ограничением уникальности?
4. Если по полю построен кластерный индекс, то можно ли в это поле заносить неуникальные значения?
5. Дополление к вопросу 4. Значения заносить можно. Проверить можно простейшим скриптом.

create table ttt
(
id int not null primary key nonclustered,
I int
)
create clustered index ttt_i on ttt(I)

insert into ttt (id, I) values(1, 1)
insert into ttt (id, I) values(2, 1)


И это странно. Ведь кластерный индекс определяет физическое расположение записей в таблице. Неуникальность значений говорит о том, что на одном месте физически расположены несколько записей. Это невозможно, но это факт. Как этот парадокс можно объяснить?


Задача 2
Есть БД. Есть две таблицы. Выбираем данные из таблиц посредством внутреннего соединения. От каких факторов зависит скорость выборки? - перечислить и обосновать.


Задача 3
Есть таблица в БД. В таблицу постоянно вносятся изменения. Каждый день в час X (например в 12:00) по таблице строится отчёт (а строится он долго, например час). При этом, должны выполняться два условия:
1. В отчёт должны попасть данные только те данные, что были в таблице на час X.
2. В процессе построения отчёта в таблицу должны беспрепятственно вноситься изменения.
Предложить все возможные решения.

Задача 4
Есть толстый клиент, развёрнутый на удалённой машине.
1. Как его можно обновлять? - все возможные варианты
2. А если он привязан к БД?
3. А если возникнет необходимость откатить изменения?
4. Надо ли защищать канал по которому передаются обновления? Почему?

Задача 5
Есть Web-служба. Есть клиент, работающий с этой службой. У службы есть два метода. Один из них возвращает большой DataSet. Предожить способ создания упакованного канала для передачи результатов работы второго (и только второго!) метода - все возможные варианты.

Задача 6
Есть 2 БД, которые крутятся, в общем случае под различнымы СУБД. Структуры БД также различны, но кореллируются. Периодически в БД2 надо вносить все изменения, которые были произведены в БД1. Про канал передачи изменений неизвестно ничего. Предложить возможные решения.