Задачи для собеседования.
Лично мне вспоминаются такие задания.
[QUOTE=LogyCom]Дана строка S вида "asdfghjkl". Создать её зеркальное отражение (вида "lkjhgfdsa").[/QUOTE]Подсказка. Фирма пишет на Дельфи, отсюда предпочительный язык решения очевиден. Приветствуется учёт в решении низкоуровневых особенностей работы со строками.
[QUOTE=ККБ]Найти в односвязном списке рекурсивно N-й с конца элемент.[/QUOTE]Кошерно решить на Си, хотя если решить задачу на Common Lisp, ничего страшного за это не будет.
P.S. Задачи эти опубликованы отнюдь не для того, чтобы спалить методы отбора в конкретных фирмах. Я открыл тему для коллекционирования задач с тем, чтобы всякий, желающий работать программистом, мог бы потренироваться на кошках и знать, с чем ему придётся столкнуться на собеседовании.
Подсказки, соответственно, тоже не ради спалить конторы, но для представления о том, что решать задачи огульно не всегда приемлемо; некоторые конторы предъявляют специальные требования к решениям.
Кстати о птичках. Обе эти задачи предлагалось решать на бумажке, притом оформление кода тоже учитывалось.
Мне когда-то предлагали написать следующее, цитирую:
на вход поступает текстовый файл, содержащий информацию о многоульниках, являющихся гранями трехмерного тела в следующем виде:
X -222.42 Y -222.42 Z -222.42
X -38.7 Y -38.7 Z -38.7
X 32.01 Y 32.01 Z 32.01
X -151.71 Y -151.71 Z -151.71
X -70.71 Y -70.71 Z -70.71
X -254.42 Y -254.42 Z -254.42
X -183.71 Y -183.71 Z -183.71
X 0 Y 0 Z 0
X 0 Y 0 Z 0
X 32.01 Y 32.01 Z 32.01
X -38.7 Y -38.7 Z -38.7
X -70.71 Y -70.71 Z -70.71
X -183.71 Y -183.71 Z -183.71
X -151.71 Y -151.71 Z -151.71
X 32.01 Y 32.01 Z 32.01
X 0 Y 0 Z 0
X -254.42 Y -254.42 Z -254.42
X -222.42 Y -222.42 Z -222.42
X -151.71 Y -151.71 Z -151.71
X -183.71 Y -183.71 Z -183.71
X -70.71 Y -70.71 Z -70.71
X -38.7 Y -38.7 Z -38.7
X -222.42 Y -222.42 Z -222.42
X -254.42 Y -254.42 Z -254.42
Координаты вершины (X Y Z) перечислены в строгом порядке и разделены между собой пробелами.
Описание каждой вершины находится в отдельной строке.
Вершины грани перечислены в порядке по часовой стрелке. Грани отделены друг от друга пустой строкой.
При выполнении задания необходимо учесть то, что одна из вершин тела находится в точке (0;0;0) и тело может быть повернуто в каждой из трех плоскостей.
Необходимо проанализировать файл и вывести информацию о том является ли данное тело кубом, и если является - вывести объем описанного шара вокруг данного куба.
Пример файла находится в файле пример.txt.
Необходимо предоставить на проверку файл *.exe, а так же исходный код приложения.
Приложение должно предусматривать выбор пользователем входного файла в диалоговом окне.
Написали?
Искали девелопера аль кодера? Лично я бы обиделся если бы мне сказали что я не подхожу потому что не знаю как на нижнем уровне идет робота со строками.
ККБ - я так понимаю конструкторское бюро?
А они не могли лутше пример на рекурсию придумать? Изврат редкосный. Хорошо если с умным собеседуют, а если с глупым, а он напишет всетаки удовлетворяющие их решение через рекурсию, а они его возьмут. Он же потом будет думать что ето нормально так рекурсией извращаться.
Я не так много по собеседованиях ходил но ИМХО столько некомпетентных вопросов задают и так часто смотрят не на умение думать, а на знание того что в гугле за 10 мин ищется.
А вот ето уже похоже на чтото достойно внимания.
Должны быть минимальные познания в области геометрии и мозг
Предлагаю следующий солюшен.
Для каждой грани проверка на квадрат (см. ниже)
У всех квадратов равные стороны.
Далее для всех пар квадратов щитаем сколько вершин у них общие.
Каждий квадрат должен соответствовать следующим требованиям.
1. Есть один квадрат с которым нет общих вершин
2. Есть 4 квадрата с которыми есть по 2 общие вершины
3. Общие вершини должны быть на одной стороне квадрата
Ето все проверка на куб.
С формулой для шара - гугл в руки.
Не забываем про краевые случаи когда сторона квадрата = 0 и куб превращается в точку. :)
ПРОВЕРКА НА КВАДРАТ (
разстояние между парами вершин (0,1) (1,2) (2,3) (0,3) = константа1
--- уже ромб
разстояние между парами вершин (0,2) (1,3) = константа2 = корень с 2 * константа1
--- уже квадрат даже не надо контролировать на одной ли лоскости
)
как можно оптимальнее соединить воедино 2 отсортированых масива, так чтоб результат тоже стал отсортированым.
При етом дали заготовку куда оставалось дописать суто слияние (что щитаю правильным ибо не тратится драгоценное время на то чего и так научишся даже если не умееш).
Деятельность - в основном оутсорсинг проектов очень разной степени сложности.
Я щитаю такое задание приемлемым для отсеивания людей без способности думать но не достаточным для полной оценки.
Также был один вопрос на нестандартное мышление. Щитаю правильным но не критическим (тоесть если не ответил - нестандартное мышление не на высоте, но ето совсем не значит что роботнык не полноценный)
какой?
Он не оч интересный. Я вам лутше вопрос который якобы на Майкрософте задавали.
Почему у канализационных люков круглая форма?
Мне вот предлагали довольно простые задачки, но отвечать нужно было почти сразу, обдумывая вслух:
Эту решил, но не сказать, что прям с легкостью.
Эту не решил, все время тянуло отсортировать массив. Что очень сильно мешало, так это напряженность и волнение. Поэтому задачи казались сложными и лез в дебри, хотя решения на самом деле очень простые. Считаю, что вполне адекватные задачи для юниоров.
Почему у канализационных люков круглая форма?
Не якобы. :) Их действительно задают. Не знаю как в представительствах по СНГ, но в Штатах точно. В инете уже целая коллекция их вопросов собралась. Например здесь и здесь.
Сделайте на странице пользователя нашей соцсети "Статус"
Надо было аналогично как вконтакте статус под именем и фамилией, плюс чтобы в настройках можно было поменять, т.е. показывать картинку, ролик, текст и т.п.
Работодатель: так сказать, товарищество объединенное идеей создания соцсети определенного толка, если можно так сказать :)
P.S. теперь вот тружусь над её доведение до ума и реализацией некоторых функций
Мда, это я чего-то. Это тестовое.
Конкретно на собеседовании было:
Что есть MVC, Spark?
Просили немного рассказать, потом дали посмотреть кусочек кода и рассказать, что он делает
2. Представьте себе, что земной шар обмотали веревкой по экватору. Потом веревку увеличили на 1 метр и расположили так, что любая точка экватора равноудалена от веревки. Сможет ли между веревками пролезть мышь?
3. На склад привезли 100 кг огурцов. Содержание воды в огурцах 99%. Через месяц огурцы подсохли, и содержание воды в них уменьшилось до 98%. Сколько килограммов огурцов на складе?
4. У вас два сосуда и 100 шариков, пятьдесят из которых красные, а вторая половина - синие. В случайном порядке выбираете один из двух сосудов, из которого затем случайно выбирают и достают один шарик. Каким образом распределить шарики по сосудам так, чтобы вероятность достать красный шарик была максимальной? (Все сто шариков нужно положить в сосуды.) Какой будет вероятность случайного выбора красного шарика, если использовать вашу схему?
5. Есть 1000 бутылок вина. известно, что одна бутылка отравлена. Надо узнать какая. Для этого есть 10 кроликов дегустаторов. Яд на кроликов действует даже в микродозах, но действует не сразу, а на 5й - 7й день после приема. Надо за 8 дней найти отравленную бутылку. Кроликов не жалко, количество выпитого ими вина значения не имеет.
Для примера -
1. В стакан положили бактерии. Каждую секунду число бактерий удваивается. Известно, что стакан заполняется полностью за минуту. За какое время стакан наполнится наполовину?
Вестимо, за 59 :)
2. Представьте себе, что земной шар обмотали веревкой по экватору. Потом веревку увеличили на 1 метр и расположили так, что любая точка экватора равноудалена от веревки. Сможет ли между веревками пролезть мышь?
Не только мышь, но и кот пролезет. Просвет там будет 1 метр / 2 Pi.
А они там и помечены как "простые". Те, что "сложные", идут про показатели вариации и показатели ряда. Но когнитивный-то диссонанс местами возникает, ввергая в лёгкую фрустацию даже? :)
Мы вон с мужиками из-за них сегодня чуть не передрались, пока пиво пили :D
Не только мышь, но и кот пролезет. Просвет там будет 1 метр / 2 Pi.
Разве? Я почему-то думал, что длина верёвки равна длине окружности экватора, то есть порядка 4*10^7 метров, поэтому удлинение +1 метр даст приращение длины в 1,000000025 раза (точно). При R = L/2*pi = 4*10^7 / 6,28 = 6369426,75 (приблизительно) радиус удлинённой верёвки составит 6369426,9093 (точнее, 6369426,90923566875) метра, а величина просвета составит 0,15923566875 м, или чуть меньше 16 мм.
В просвет такой высоты не особенно разжиревшая мышка пролезет, а вот коту этого откровенно мало.
Может я чего-то недопонял?:)
В отверстие диаметром 16 мм не особенно разжиревшая мышка пролезет, а вот коту откровенно мало.
Может я чего-то недопонял?:)
Посчитал то ты правильно, но...
Ты предполагаешь, что в метре 100 миллиметров?
Радиус здесь вообще не нужен: приращение длины зависит исключительно от приращения радиуса, причём линейно. 16 сантиметров получим при удлинении на метр любой окружности, будь то длина окружности Колизея или длина ребра пятидесятикопеечной монеты (мы с подругой этот факт как-то проверяли пьяными, измеряя длину ребра тарелки в кафе куском пиццы с грибами :D)
Про зайцев, господа, ещё интереснее. Решение, в принципе, есть в интернетах. Более того, оно засветилось на баше в силу нетривиальности его и самой задачи.
Мы иногда в IRC такие задачки решаем. При этом, чтобы всем было интересно, отправляем задающему в личку. Он отвечает - правильно решено или нет. Наверное и тут не надо в открытую писать решения.
Спрашивается: между какими верёвками? Она же вроде одна. Или имеется ввиду между первой и той, которой удлиняли первую?
Впринципе, верёвку можно расположить перпендикулярно плоскости, в которой лежит экватор, по центру, тогда тоже будет выполняться
никто же не ограничивает каким-то условием "пердставьте себе, что сквозь планету можно провести верёвку" :)
Вообще "равноудалены" вроде можно говорить только относительно двух объектов, причем один из них значительно меньше другого, либо оба точечные.
Правда, относительно последнего могу ошибаться.
В просвет такой высоты не особенно разжиревшая мышка пролезет, а вот коту этого откровенно мало.
Может я чего-то недопонял?:)
0.159 метра это примерно 16 сантиметров. Кот пролезет. При желании даже манул может пролезть, думаю.
Впринципе, верёвку можно расположить перпендикулярно плоскости, в которой лежит экватор, по центру, тогда тоже будет выполняться
никто же не ограничивает каким-то условием "пердставьте себе, что сквозь планету можно провести верёвку" :)
Вообще "равноудалены" вроде можно говорить только относительно двух объектов, причем один из них значительно меньше другого, либо оба точечные.
Правда, относительно последнего могу ошибаться.
Ты рассуждаешь критически/научно. А я просто привел решение, которое запомнилось из Перельмана. Основанное на том, что радиус окружностей здесь не важен, важна лишь разница в их длинах.
Возможно, формулировка тут не удачна, либо рисунок нужен. Чтобы не ввергать в холивар людей.
маловато будет :)
1. Работодатель: фирма занимающаяся совершенствованием и поддержкой разработанной CMS, ну, и внедрением её. Вопросы на должность "Программист C#/ASP.NET"
1. Имеется список объектов, необходимо вывести все элементы в таблицу, и 10-й по счету, выделить другим цветом.
2. Есть две связные таблицы: Cars и Models. На странице два ComboBox'а. Необходимо, чтобы по выбору марки автомобиля в первом, загружались модели во второй. Предложить способы реализации, рассказать чем отличаются, указать недостатки и достоинства.
3. Какие вы использовали коллекции? Расскажите немного о них.
4. В каких случаях нужно создавать статический класс?
5. Вот список заданий и вопросов, ответьте и распишите, что и как? (список где-то из 20 заданий)
Из списка заданий можно выделить достаточно большое количество вопросов по синхронизации потоков и модификаторам доступа, а также жизненном цикле страницы. Прошёл собеседование успешно и на свой и на их взгляд, поступило предложение о работе.
2. Фирма или компания - не знаю, занимаются мониторингом движения транспортных средств. Должность "Программист C#"
1. Что такое .NET Framework?
2. Чем отличается абстрактный класс от интерфейса?
3. Во что компилируется lock?
4. Что есть Box и Unbox?
5. Как с помощью LINQ'а сделать выборку элементов по определенному критерию?
6. Что нужно сделать, чтобы в ответ на запрос выдать строку (MVC)?
7. Какие сессии есть в NHibernate?
8. Что означает protected internal?
9. Использовали ли LINQ2OBJECT? Как сделать выборку по условию на определенное поле?
10. Что такое delegate?
11. Что такое event?
Как-то вот так. Всё не помню. Само собеседование проходило жестко, быстро и нахально.
Скажем так, прошёл собеседование на троечку (я так понял, что завалил, хотя проскочило повторное собеседование). В случае с 4 и 9, если бы я знал, что это так называется, ответил бы - я в терминах не силён :)
А вообще много было вопросов типа: Зачем пришёл? А нафига тебе это? А чем интересуешься? и т.п..
Почему у канализационных люков круглая форма?
:D
Меня тоже это спрашивали. Скажите, как надо было ответить, пожалуйста.
А по поводу вопроса: Фирма занимается ГИС-системами. Вакансия С++ программист.
Попросили написать функцию, переставляющие биты числа в обратном порядке. На входе число типа int, на выходе int.
Меня тоже это спрашивали. Скажите, как надо было ответить, пожалуйста.
http://ru.wikipedia.org/wiki/Крышка_канализационного_люка
В общем, идея в том, что крышку другой формы можно уронить в люк.
Как альтернативный ответ "легко по земле катить" :D
Особенно этот: Сколько роялей в нашем городе?
Вот как на такое реагировать? Я переспросила не шутка ли...а мне: нет, отвечайте и аргументируйте ответ. :D
Вот как на такое реагировать? Я переспросила не шутка ли...а мне: нет, отвечайте и аргументируйте ответ. :D
Ыыыыыы....... Обясните неграмотному что ожидают услишать в ответ.
ЗЫ, Мой ответ однозначен - ХЗ.
Короче, я бы как-нить отбрехался...
Вот как определить сколько людей проезжает в метро в час пик?
Ну отбрехаться на собеседовании то можно, а что потом делать с такими неадекватными руководителями средней ланки.
Мой преподаватель говорил "Вы инженеры. У вас не может быть ошибок в ращетах, а то потом ракета не в тот самолет попадет".
Отсюда мое мнение. Не знаеш - говори "не знаю". Ведь на твой ответ потом будут полагаться люди которые несут ответственнгость побольше чем твоя.
Вот как определить сколько людей проезжает в метро в час пик?
Вопросы "Сколько роялей в нашем городе?" и "Как оценить количество роялей в нашем городе?" принципиально разные.
Вот как определить сколько людей проезжает в метро в час пик?
По данным этих... ну, в которые карточки засовывают.
а если я туда сюда езжу ;) тогда уж по камерам, которые сличают. а вообще в Санкт-Петербурге на некоторых станциях открывают только одну дверь на вход, в таких условиях можно поставить на всех станциях людей, чтоб посчитали :D
upd: а ещё можно просто узнать кол-во работающего населения, воспользоваться какой-нибудь статистикой
а куда собственно торопиться :)
вообще не думаю, что кого либо будет интересовать точное количество людей, кстати, это число точно получить нереально, поэтому надо выбирать быстрое неточное решение.