альтернатива физзбаззу
May. 13th, 2013 01:17 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Цитирую из подзамочной записи с разрешения автора, который работает в американской компании и интервьюирует программистов:
Интесная закономерность выявляется. Мы начинаем интервью с того, что просим кандидата прочитать вот такой код, и сказать, что он делает. Как бы он назвал эту функцию?
private static int ok(int a, int b) {
while (a >= b) a -= b;
return a;
}
Пока результаты такие, что после этого вопроса интервью можно заканчивать. Если человек отвечает нормально на этот вопрос, то и дальше отвечает нормально. Если вообще близко не может понять о чем речь, то дальше только хуже.
no subject
Date: 2013-05-13 10:27 am (UTC)У меня есть 3 таких вопроса (рассказывать не буду), которые с точностью 99 % предсказывают результат интервью, причем годный человек отвечает на них мгновенно, а негодный трепыхается по 10 минут на каждом.
А на вопросе о разделении файла на четные и нечетные строчки валится такая дикая толпа народу, что подумать страшно.
no subject
Date: 2013-05-13 11:01 am (UTC)no subject
Date: 2013-05-13 11:25 am (UTC)no subject
Date: 2013-05-13 03:03 pm (UTC)no subject
Date: 2013-05-13 03:20 pm (UTC)no subject
Date: 2013-05-14 08:51 am (UTC)Некоторые грамотные люди после них обижаются, что мы начинаем интервью с такий фигни и этим якобы показываем что мы к ним плохо относимся.
Поверьте пожалуйста, что в них нет особой пищи для мозгов: они элементарны для любого человека, который знает что такое беззнаковое целое и регистр, конструктор, и умеет отличать указатель от того, на что он указывает.
no subject
Date: 2013-05-13 11:05 am (UTC)no subject
Date: 2013-05-13 11:23 am (UTC)Задача:
Написать программу на языке С, которая принимает через командную строку 3 имени файла
и переписывает из первого файла все четные строчки во второй файл, а нечетные - в третий файл соответственно.
Дополнительные требования к задаче:
программа не должна падать.
программа должна работать корректно.
программа должна работать относительно быстро.
Писать надо на бумаге.
Справка ко всем стандартным функциям файлового ввода вывода - на столе.
Заваливаться там действительно негде, а поди ж ты - то у кого-то программа работает только с четным количеством строк(а на нечетном падает), то кто аргц не проверит и соответственно упадет, кто последнюю строчку не выдаст ...
no subject
Date: 2013-05-13 12:57 pm (UTC)Забыли проверить argc - ну окей, это можно понять. Но что за проблемы возникали с последней строкой и как можно падать на четном/нечетном количестве строк мне прямо трудно представить.
Я писал самый-самый тупой вариант:
- проверили аргументы
- открыли файлы
- завели буфер
- завели счетчик с единицы
- цикл пока fgets возвращает не NULL
- если значение счетчика четное - пишем в четный файл, иначе в нечетный
- инкрементим счетчик
- после цикла закрываем файлы
Навскидку в такой реализации есть одна проблема - нужно как-то переписывать чтобы нормально работало на "очень длинных строках".
no subject
Date: 2013-05-13 01:18 pm (UTC)Условие корректной работы не выполнено, увы.
no subject
Date: 2013-05-13 01:26 pm (UTC)А с переполнением счетчика проблем нет - он переполняется, конечно, но четность/нечетность не сбивается ;)
no subject
Date: 2013-05-13 01:31 pm (UTC)А если он просто знаковое целое - то по стандарту если я правильно помню получаем неопределенное поведение.
Я поэтому и написал скорее всего.
no subject
Date: 2013-05-13 01:45 pm (UTC)no subject
Date: 2013-05-13 01:34 pm (UTC)no subject
Date: 2013-05-13 06:19 pm (UTC)проверили аргументы, открыли файлы, проверили, что открылись, потом
odd = true;
вечно циклим:
если odd, читаем и пишем в третий, а если конец строки то еще и odd = false;
если не odd, читаем и пишем во второй, а если конец строки то еще и odd = true;
при чтении и письме проверяем все ли ОК, если нет, break
закрыли файлы
profit
no subject
Date: 2013-05-14 08:54 am (UTC)Если бы вы сумели это обосновать ( а именно найти такую среду где это быстрее чем другие варианты) - прокатило бы.