Вопросы для собеседования.

Разговоры на любые темы
Fanga
Сообщения: 2
Зарегистрирован: Вт окт 13, 2015 6:02 pm

Re: Вопросы для собеседования.

Сообщение Fanga »

arxont писал(а):Активно тут рассылаю резюме на разные вакансии связанные с удалённкой по C#. Одно из заданий -
Напишите программу, которая будет имитировать процедуру automerge в системах контроля исходников.
В чем суть: имеется исходный файл (допустим, программный код), над которым затем поработали 2 программиста, каждый сам по себе. Получилось 2 варианта измененного исходника. Нужно выполнить слияние изменений. Те изменения, которые можно разрулить автоматически, нужно разрулить. Те изменения, которые конфликтуют между собой, нужно проигнорировать, просто поставить пометку «Конфликт» (в реальных системах разработчик конфликтующие изменения разруливает вручную в редакторе, но нам это не нужно).
Пример изменения, которое можно разрулить автоматически: один разработчик добавил функцию, второй в этом месте ничего не изменил.
Пример изменения, которое автоматом нельзя разрулить: оба разработчика изменили одну и ту же строку, но изменили ее по-разному. Соответственно, нельзя однозначно объединить эти два изменения – требуется ручное вмешательство.
Список примеров неполный – остальное предлагается домыслить вам. При этом учитывайте следующие начальные условия:
• Если два изменения разруливаются автоматом, не нужно заморачиваться, будет ли это реально корректно работать. Например, если внутри цикла один разработчик в одном месте добавил строку, другой – добавил свою строку в другом месте, то такое изменение можно разрулить однозначно (добавить обе строки). То, что при этом программа может поломаться, мы в задании не учитываем. Другими словами, никакой проверки синтаксиса не нужно.
• Если один программист удалил строку, а второй с ней ничего не сделал, то мы принимаем это удаление как корректное (т.е. выполняем). Т.е. мы доверяем этому изменению.
Строки считаются равными, если в них совпадают все символы, кроме отступов в начале и конце строки.
Писать на C#, версия фреймворка непринципиальна. Делать как консольное приложение или оконное – неважно, выбираете сами.
На входе: исходный файл; его измененный вариант 1-м программистом; его измененный вариант 2-м программистом.
На выходе: файл с объединенными изменениями.
Если беретесь, то оцените предварительно срок решения и сообщите оценку сразу (вместе с подтверждением).
Постарайтесь не пользоваться чужими наработками. Мы знаем, что чаще всего нет смысла изобретать велосипед, но нам интересно посмотреть на ваш код, а не на чужой.
Просьба решение присылать в виде двух архивов: с исполняемыми файлами и с исходниками.

Получил вчера такое же задание. Оно же не имеет адекватного решения. Если нам даны просто 3 текстовых исходника, где нет никаких параметров и т.д. То даже не учитывая синтаксис мы не можем никаким способом проанализировать редактирование. Какой принцип вы использовали при решении этой задачи? Просто это маразм.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

Fanga писал(а):Получил вчера такое же задание. Оно же не имеет адекватного решения. Если нам даны просто 3 текстовых исходника, где нет никаких параметров и т.д. То даже не учитывая синтаксис мы не можем никаким способом проанализировать редактирование. Какой принцип вы использовали при решении этой задачи? Просто это маразм.
Ну параметры у нас есть :) Какой файл был исходным :) https://en.wikipedia.org/wiki/Merge_(ve ... -way_merge

Вот ещё две статьи - http://www.guiffy.com/SureMergeWP.html и http://stackoverflow.com/questions/1203 ... s-for-text

В качестве проверки корректности работы можете программу diff3 использовать.

PS: Правильные запросы в гугл будут "merge three algorithm", "three way merge algorithm", "diff3 algorithm". "Ищите и обрящете"

PS2: Если нет запрета на использование сторонних библиотек и не надо самому матан делать (мне надо было :( ), то проще взять готовые библиотеки - тот же diff3
Киберпанк не умер. Он просто наступил.

Fanga
Сообщения: 2
Зарегистрирован: Вт окт 13, 2015 6:02 pm

Re: Вопросы для собеседования.

Сообщение Fanga »

Спасибо! Я сделал крайне простой вариант, но, вижу, что поспешил)

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

Задание для претендентов на должность инженера-программиста

Дано:
В некой БД имеются три таблицы (рисунок 1):
- таблица «Связи» (связь между idparent и idchild имеет название linkname);
- таблица «Объекты» (объект с идентификатором равным id имеет тип type и обозначение
(название объекта) product);
- таблица «Атрибуты» (объект с идентификатором равным id имеет атрибут name со
значением value).
Модель данных, зашифрованная в этих таблицах, описывает иерархическую структуру данных
(пример на рис.1).

Необходимо:
Разработать программный модуль, который выполняет следующие функции:
- Отображение в компоненте типа TreeView данных из указанной выше БД;
- Добавление и удаление элементов;
- Сохранение изменений обратно в БД.

Требования:
1. СУБД. Microsoft SQL Server или Microsoft Access.
2. Поставщик данных. ADO или ADO.NET.
3. Язык реализации. Delphi, C#.

Как будет оцениваться результат выполнения задания:
1. Результативность. Задание выполнено в срок и в полном объеме.
2. Общий подход к решению. Возможность построения общего решения, а не решения «в лоб».
3. Уровень использования готовых решений и библиотек.
4. Уровень и целесообразность применения ООП/ООД.
5. Стиль кодирования.

Срок выполнения задания не более 4 дней.
Задание для инженера-программиста.png
Киберпанк не умер. Он просто наступил.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

Упаковать (не заархивировать) файлы в архив. Распаковать потом. Что будет с каталогами. Чем похожее на tar - тем лучше.
Киберпанк не умер. Он просто наступил.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

Найдите наименьшее натуральное число, содержащее в своей десятичной записи все двухзначные числа.
PS: Был запущен LinqPad (студию нельзя было) и прямо в нём нужно было решать. Срок давался - 20 минут. Гуглить запрещалось. Удалённо через TeamViewer был подключен потенциальный тимлид и смотрел как и что я делаю.
Киберпанк не умер. Он просто наступил.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

Даны два изображения (одинаковое разрешение, формат bmp, одинаковая палитра). На изображении есть несколько различий (различий произвольное количество, может не быть вообще). Написать программа которой на вход подаётся два файла, в ответ она генерирует файл "сложения" картинок + места где файлы различны выделены, так чтобы их можно было заметить. PS: Различия размером 2х2 пикселя и меньше не замечать.
Киберпанк не умер. Он просто наступил.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

Отличия класса и структуры.
Чем отличаются треды и таски?
Почему статический класс не является синглтоном?
Почему статический класс является синглтоном?
Плюсы и минусы WPF? WinForms?
Что лучше использовать - TryParse или просто Parse
Киберпанк не умер. Он просто наступил.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

В вакансии было обязательное требование - умение работать с Excel (парсинг, OLE, генерация)
Написать приложение которое получает на вход графический файл в формате jpeg и генерирует на выходе файл excel в котором нарисована "Excel-артом" картинка из файла. (ячейки сделать квадратными и заливать - получается каждая ячейка пиксель)
Киберпанк не умер. Он просто наступил.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: Вопросы для собеседования.

Сообщение arxont »

Необходимо создать программу, которая будет получать на вход две ссылки на википедию (одного языка) и искать кротчайший путь между ними. Нельзя использовать меню, поиск, категории, только ссылки внутри вики-статьи.
Киберпанк не умер. Он просто наступил.

Ответить