Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по C# 
:(
    Опции темы
ptybn8407
Дата 13.1.2014, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



На собеседовании задали несколько вопросов. Получил отказ без пояснений. Хотелось бы узнать точные ответы на них.

1 вопрос.
Пусть есть 2 таблицы
table Table
  TableID int,
  ... 

table TableItem
  TableItemID int,
  TableID int, 
  ... 

Пусть в Table строка с TableID = 1 и в TableItem есть несколько строк с TableID = 1. Необходимо поменять TableID на 2.
  
Я предложил такой вариант решения.
Alter table TableItem add 
foreign key (TableID) REFERENCES Table (TableID) on update cascade


2 вопрос
Что делает этот код, какие плюсы и минусы и как его улучшить?
static int Func( int a, int b, int c )
{
  if ( 1 < c )
    return Func( b, b + a, c - 1 );
  else
    return a;
}


3 вопрос
Что делает этот код, какие плюсы и минусы и как его улучшить(причем тут есть несколько улучшений как мне сказали хотя это просто сортировка пузырьком)?
int[] Sort( int[] arr )
{
  for( int i = 0 ; i < arr.Length ; i ++ )
    for ( int j = 0 ; j < arr.Length - 1 ; j ++ )
      if ( arr[ j ] > arr[ j + 1 ] )
      {
        int t = arr[ j ];
        arr[ j ] = arr[ j + 1 ];
        arr[ j + 1 ] = t;
      }
  return arr;
}

4 вопрос
Найти все возможные проблемы в коде. Необходимо составить пары "Проблема" - "Решение":
[WebMethod]
public Order LoadOrderInfo( string orderCode )
{
  try
  {
    Debug.Assert( null != orderCode && orderCode != "" );
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    lock ( cache )
    {
      if ( cache.ContainsKey( orderCode ) )
      {
        stopWatch.Stop();
        logger.Log( "INFO",
          "Elapsed - {0}", stopWatch.Elapsed );
        return cache[ orderCode ];
      }
    }
    string queryTemplate =
      "SELECT OrderID, CustomerID, TotalMoney" +
      "  FROM dbo.Orders where OrderCode='{0}'";
    string query = string.Format( queryTemplate, orderCode );
    SqlConnection connection =
      new SqlConnection( this.connectionString );
    SqlCommand command =
      new SqlCommand( query, connection );
    connection.Open();
    SqlDataReader reader = command.ExecuteReader();
    if ( reader.Read() )
    {
      Order order = new Order(
        ( string ) reader[ 0 ],
        ( string ) reader[ 1 ],
        ( int ) reader[ 2 ] );
      lock ( cache )
      {
        if ( !cache.ContainsKey( orderCode ) )
          cache[ orderCode ] = order;
      }
      stopWatch.Stop();
      logger.Log( "INFO", "Elapsed - {0}", stopWatch.Elapsed );
      return order;
    }
    stopWatch.Stop();
    logger.Log( "INFO", "Elapsed - {0}", stopWatch.Elapsed );
    return null;
  }
  catch ( SqlException ex )
  {
    logger.Log( "ERROR", ex.Message );
    throw new ApplicationException( "Error" );
  }
}
public IDictionary<string, Order> cache;
PM MAIL   Вверх
jonie
Дата 13.1.2014, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(ptybn8407 @  13.1.2014,  12:03 Найти цитируемый пост)

Пусть в Table строка с TableID = 1 и в TableItem есть несколько строк с TableID = 1. Необходимо поменять TableID на 2.

вас просили Update сделать поди, притом простейший.

Цитата(ptybn8407 @  13.1.2014,  12:03 Найти цитируемый пост)

3 вопрос
Что делает этот код, какие плюсы и минусы и как его улучшить(причем тут есть несколько улучшений как мне сказали хотя это просто сортировка пузырьком)?

это плохая реализация пузырька, самая плохая которую можно сделать.

На остальные - где ваши ответы? Мы-то знаем много чего, но зачем это расписывать - не на собеседовании ж мы.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ptybn8407
Дата 13.1.2014, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



Цитата(jonie @ 13.1.2014,  11:17)
Цитата(ptybn8407 @  13.1.2014,  12:03 Найти цитируемый пост)

Пусть в Table строка с TableID = 1 и в TableItem есть несколько строк с TableID = 1. Необходимо поменять TableID на 2.

вас просили Update сделать поди, притом простейший.

Цитата(ptybn8407 @  13.1.2014,  12:03 Найти цитируемый пост)

3 вопрос
Что делает этот код, какие плюсы и минусы и как его улучшить(причем тут есть несколько улучшений как мне сказали хотя это просто сортировка пузырьком)?

это плохая реализация пузырька, самая плохая которую можно сделать.

На остальные - где ваши ответы? Мы-то знаем много чего, но зачем это расписывать - не на собеседовании ж мы.

По 1-му. Там было указано: "Пусть есть строка с TableID = 1 и несколько TableItem с TableID = 1. Нужно изменить TableItem на 2". Я подумал, что внешний ключ с апдейтом лучшее решение.

По 4-му я указал проблему с блокировками. По 3-му вопросу - я сломал голову, пытаясь получить формулу.

Я попросил подсказать с вопросами, а мне в ответ "Мы-то знаем много чего, но зачем это расписывать - не на собеседовании ж мы". Ну что, спасибо.


PM MAIL   Вверх
jonie
Дата 13.1.2014, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(ptybn8407 @  13.1.2014,  14:56 Найти цитируемый пост)
По 3-му вопросу - я сломал голову, пытаясь получить формулу.

Вас не просили нигде получать фомулу. Вас просили пояснить что делает код.
Цитата(ptybn8407 @  13.1.2014,  14:56 Найти цитируемый пост)

По 4-му я указал проблему с блокировками.

а архитектурные проблемы не видите? А sql injection не? А отсуствие Dispose() вызовов (я уж молчу про вообще закрытие коннешена)? А обработки нормальной ошибок? А то что это впринципе устаревшая методика разработки сервисов Вы тоже не видите? Просто быть может вам стоит подучить C# ?)

Это сообщение отредактировал(а) jonie - 13.1.2014, 15:11


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ptybn8407
Дата 13.1.2014, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



Цитата(jonie @ 13.1.2014,  15:10)
Цитата(ptybn8407 @  13.1.2014,  14:56 Найти цитируемый пост)
По 3-му вопросу - я сломал голову, пытаясь получить формулу.

Вас не просили нигде получать фомулу. Вас просили пояснить что делает код.
Цитата(ptybn8407 @  13.1.2014,  14:56 Найти цитируемый пост)

По 4-му я указал проблему с блокировками.

а архитектурные проблемы не видите? А sql injection не? А отсуствие Dispose() вызовов (я уж молчу про вообще закрытие коннешена)? А обработки нормальной ошибок? А то что это впринципе устаревшая методика разработки сервисов Вы тоже не видите? Просто быть может вам стоит подучить C# ?)

Да, просили указать что делает код. Но еще в задании было "Что делает этот код, какие плюсы и минусы и как его улучшить". Что можно улучшить в такой примитивной рекурсии? А подучить C# - да, стоит. Учится вообще всегда полезно, как я считаю))
PM MAIL   Вверх
jonie
Дата 13.1.2014, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(ptybn8407 @  13.1.2014,  16:33 Найти цитируемый пост)

Да, просили указать что делает код

ну и указали бы что считает что-то вроде (пишу тут пределы лень проверять):
\sum_{0}^{c-1} {x_{i-1} + x_{i-2}}\\
x_{0}=a, x_{1}=b,

Или говоря языком - сумма каждого следующего значения равна сумме двух предыдущих.

ну и соответвественно это считать можно и не рекурсией (вспоминаем школу)...

Это сообщение отредактировал(а) jonie - 13.1.2014, 18:58


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.