мысли потребности о моем вопросе об интервью - .NET, c#

Один из вопросов, меня спросили, был то, что у меня есть таблица базы данных со следующими столбцами

pid - unique identifier
orderid - varchar(20)
documentid - int 
documentpath - varchar(250)
currentLocation - varchar(250)
newlocation - varchar(250)
status - varchar(15)

Я должен записать c# приложение, чтобы переместить файлы от currentlocation до newlocation и обновить столбец состояния или как 'УСПЕХ' или как 'ОТКАЗ'.

Это было моим ответом

  1. Создайте Список всех записей с помощью linq

  2. Создайте объект команды, который был бы, выполняют движущиеся файлы

  3. использование foreach, вызовите делегата для перемещения файлов -

  4. используйте endinvoke, чтобы получить любое исключение и обновить дб соответственно

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

Не уверенный, что они искали - В этот день и возраст, сделайте кандидаты сохраняют много информации о голове, поскольку у каждого всегда есть Google, чтобы найти любой ответ и предложить решение.

9
задан Ahmad Mageed 24 March 2010 в 16:15
поделиться

2 ответа

Я вроде как согласен с комментарием Aaronaught выше. При решении подобной проблемы иногда вы можете слишком сильно обдумать ее и попытаться сделать что-то большее, чем вам действительно нужно.

Тем не менее, единственный шаблон GoF, который пришел в голову, был «Итератор». В своем первом заявлении вы сказали, что зачитаете все записи в список. Единственное, что может быть проблематичным, - это если у вас есть миллионы этих записей. Вы, вероятно, захотите обработать их более последовательно, а не зачитывать весь список в память.Шаблон Iterator даст вам возможность перебирать список без необходимости знать базовый механизм хранения / поиска (база данных). Базовая реализация итератора может извлекать одну, десять или сто записей за раз и передавать их бизнес-логике по запросу. Это также даст некоторые преимущества при тестировании, потому что вы можете протестировать свою другую «бизнес-логику», используя другой тип базового хранилища (например, список в памяти), так что ваши модульные тесты будут независимы от базы данных.

3
ответ дан 3 November 2019 в 07:13
поделиться

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

Паттерны в основном связаны с пониманием сил и инкапсулированием вариаций. То есть силы создают определенные виды вариаций, и мы хорошо понимаем способы инкапсуляции этих вариаций. «Шаблон» - это совокупность знаний о том, какие силы приводят к каким видам вариаций и какие методы инкапсуляции лучше всего с ними справляются.

У меня есть друг, который читал курс по шаблонам, и внезапно его осенило, что он может решить данную проблему, «используя» (что означает «реализация техники инкапсуляции») каждого шаблона из своего учебника. Это действительно здорово помогло осознать тот факт, что найти правильную технику важнее, чем знать, как ее применять.

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

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

Anywho ... Я бы порекомендовал Design Patterns Explained Шеллоуэя и Тротта. Вы получите более глубокое понимание того, для чего на самом деле существуют шаблоны и как они помогают вам выполнять свою работу, и, когда в следующий раз они скажут вам, что вы «используете» неправильный шаблон, вы можете просто научить их. Для меня это, кажется, проходит очень хорошо ... примерно в 20% случаев. :)

2
ответ дан 3 November 2019 в 07:13
поделиться